Die folgenden Informationen können Sie bei der Installation und Inbetriebnahme Ihres gPlugD unterstützen.
Auf dem gPlugD ist eine spezifische Firmware Version der Tasmota Software installiert.
Wenn der gPlugD zum ersten Mal via seine USB-Buchse mit Energie versorgt wird, wird er einen offenen WiFi-Access Point mit einem eigenen SSID Namen („gPlugD“) bereit stellen.
Verbinden Sie sich nun mit einem Webbrowser Ihres Wifi-Client (z.B. einem Notebook oder Smartphone) mit diesem Wifi-AP (192.168.4.1). Über das Web-UI des gPlugD können Sie Ihre Zugangsdaten zu Ihrem eigenen, lokalen Wifi-Netz eintragen. Nach dem „Speichern“ wird sich der gPlugD mit diesem Wifi-Netz verbinden und erhält von Ihrem Wifi-Router eine IP Adresse zugewiesen. Um auf das Web-UI Ihres gPlugD zu gelangen, können Sie – dank dem Service mDNS – in Ihrem Webbrowser einfach „http://gPlugD.local/“ anstelle der IP Adresse eingeben.
Alle weiteren Konfigurationen können Sie via das web-UI des gPlugD vornehmen. Sie können nun auch ein zweites (Not-) WiFi-Netz (z.B. Ihren Handy Hotspot) konfigurieren oder das Web-UI mit einem Passwort [1] schützen.
Anschliessend kann der gPlugD durch das mitgelieferte Kabel mit der RJ12 Buchse der Smartmeter-Kundenschnittstelle verbunden werden. Sie können den gPlugD ohne [2] USB Energieversorgung direkt via das RJ12 Kabel mit Ihrem Smartmeter verbinden.
[1] Unter Einstellungen->Sonstige Konfigurationen kann der Zugang zum WebUI mit einem Passwort geschützt werden
[2] Einige VNB installieren ihren Kunden leider ISKRA AM550 SM ohne Energieversorgung durch die Kundenschnittstelle.
Damit die von Ihrem Smart Meter (SM) übertragenen Energiedaten erkannt und auf dem Web-UI angezeigt werden, muss das Script mit den korrekten Definitionen des SM aktiviert sein.
Ein Script für SM mit einer P1-DSMR Schnittstelle (ASCII, Mode-D) – wie beim ELSTER AS3000 – ist auf dem gPlugD vorinstalliert. Es kann ebenfalls für SM der Marke Ensor und Sagemcom sowie de, E360 von L+G oder den NES Gen-5 von Primeo verwendet werden.
Für ISKRA AM550 SM müssen Sie evtl. das Script des gPlugD via Web-UI->Werkzeuge->Skript anders konfigurieren.
Das ISKRA-EXT Script extrahiert die Werte aus einem binär übertragenen HDCL/DLMS Datentelegramm.
Die M+C Flexy SM liefern die Daten im HDLC/DLMS Format und können ebenfalls das ISKRA-EXT Script verwenden.
Ihr VNB muss Ihnen gemäss StromVV auch mitteilen, welche Werte und in welchem Format, diese von Ihrem SM ausgegeben werden.
Möglicherweise müssen Sie im Script Anpassungen vornehmen. Sie können zum Beispiel Zeilen entfernen, sofern Ihr VNB diese OBIS Werte nicht liefert oder andere hinzu fügen oder die Zahlen der OBIS-Codes an diejenigen anpassen, die Sie von Ihrem VNB mitgeteilt erhalten haben oder die Anzahl Kommastellen oder die Skalierung der Werte anpassen.
>D
; gPlugD v1.11 DSMR Tasmota 14.6.0 (26.4.25)
upH=0
sr=0
ss=0
rBlink=0
d=750
; bu=0
noWifi=0
; define pins
rL=6
gL=5
bL=7
; butA=9
; rxP = 4
; shared var within local network
g:Pi=0
g:Po=0
>B
; at boot
; disable publishing at MQTT teleperiod, on boot
smlj=0
; activate data parsing
->sensor53 r
; show data receive with green led (pin 5)
->Sensor53 l5
;configure GPIO
spinm(rL O)
spinm(gL O)
spinm(bL O)
spinm(butA P)
>BS
; enable mDNS
->setOption55 1
; referrer check
->SetOption128 ON
; MQTT publish rate 1/10 Hz
->teleperiod 10
; dynamic wifi Tx power (Tasmota >14.x)
->wifipower 0
; set WIFI_NO_SLEEP
; Keep wifi in no-sleep mode to avoid outages with low RSSI
-> SetOption127 ON
; reduce power consumption
;->Sleep 50
; show CPU temperature in webUI
; -> SetOption146 1
; lightshow at startup
spin(rL 1)
delay(d)
spin(gL 1)
; r + g = y
delay(d)
spin(rL 0)
delay(d)
spin(gL 0)
spin(bL 1)
delay(d)
spin(bL 0)
>M 1
; rxPin=4, obis=o
+1,4,o,0,115200,z
1,0-0:96.1.1(@1,*,,SMid,0
; OBIS Codes (IEC 62056-61):
; See https://cdn.standards.iteh.ai/samples/104764/8356233bf80942e9ba6d5ac9cbdf3af0/IEC-62056-6-1-2023.pdf
; media: abstract=0, electricity=1, heat=6, gas=7, water=8)
; "-" channel: =0 (if not more than 1 available)
; ":" physical unit (in=1, out=2,
; phase current=31,51,71, voltage=31,51,71,
; phase power in=21,41,61, out=22,42,62)
; "." measurement type (instant=7, counter=8, peak-hold=6)
; "." tarif (0=total, 1=day, 2=night)
; P=Power, i=in, o=out, V=Voltage, I=Current, E=Energy
1,=h
1,=hReal Power In & Out
1,1-0:1.7.0(@1,Pi ___ 1.7.0,kW,Pi,3
1,1-0:2.7.0(@1,Po ___ 2.7.0,kW,Po,3
; Note: adding +16 to the last value (precision)
; will generate an immediate MQTT telegram
1,=h
1,=hPhase Power In & Out
; sml[4]
1,1-0:21.7.0(@0.001,P1i ___ 21.7.0,W,P1i,0
1,1-0:41.7.0(@0.001,P2i ___ 41.7.0,W,P2i,0
1,1-0:61.7.0(@0.001,P3i ___ 61.7.0,W,P3i,0
; sml[7]
1,1-0:22.7.0(@0.001,P1o ___ 22.7.0,W,P1o,0
1,1-0:42.7.0(@0.001,P2o ___ 42.7.0,W,P2o,0
1,1-0:62.7.0(@0.001,P3o ___ 62.7.0,W,P3o,0
1,=h
1,=hPhase Voltage & Current
; sml[10]
1,1-0:32.7.0(@1,V1 ___ 32.7.0,V,V1,1
1,1-0:52.7.0(@1,V2 ___ 52.7.0,V,V2,1
1,1-0:72.7.0(@1,V3 ___ 72.7.0,V,V3,1
; sml[13]
1,1-0:31.7.0(@1,I1 ___ 31.7.0,A,I1,0
1,1-0:51.7.0(@1,I2 ___ 51.7.0,A,I2,0
1,1-0:71.7.0(@1,I3 ___ 71.7.0,A,I3,0
1,=h
1,=hReal Energy Counters
; sml[16]
1,1-0:1.8.0(@1,Ei ___ 1_8_0,kWh,Ei,3
1,1-0:1.8.1(@1,Ei1 ___ 1_8_1,kWh,Ei1,3
1,1-0:1.8.2(@1,Ei2 ___ 1_8_2,kWh,Ei2,3
; sml[18]
1,1-0:2.8.0(@1,Eo ___ 2_8_0,kWh,Eo,3
1,1-0:2.8.1(@1,Eo1 ___ 2_8_1,kWh,Eo1,3
1,1-0:2.8.2(@1,Eo2 ___ 2_8_2,kWh,Eo2,3
#
>S
; every second
sr=sunrise/60
ss=sunset/60
upH=uptime/60
; share latest Pi & Po
Pi=sml[2]
Po=sml[3]
; enable MQTT after grace period after boot
if upsecs>9 {
smlj|=1
}
; if no wifi connection after 10 sec, blink red
if wifis==0 {
noWifi+=1
}
if noWifi>10 {
rBlink=3
}
; if pin[butA]==0 {
; bu+=1
; }
; if bu>2 {
; rBlink=1
; bu=0
; }
>F
; every 100 ms
if rBlink>0 {
spin(rL 1)
rBlink-=1
noWifi=0
} else {
spin(rL 0)
}
; blink green on (1_7_0) reception
; if smlv[2]==1 {
; spin(gL 1)
; smlv[0]
; } else {
; spin(gL 0)
; }
>W
@
@
Date \& Time %tstamp%
Uptime %1upH%h
>D
; gPlugD v1.11 DSMR Tasmota 14.6.0 (26.4.25)
upH=0
sr=0
ss=0
; define LED pins green, red, blue
gL=5
rL=6
bL=7
; butA=9
; rxPin=4
; state vars
noWifi=0
rBlink=0
d=750
; bu=0
; set your decryption key (len 32), if encrypted
;dKEY="12345678123456781234567812345678"
dKEY=""
; shared var within local network
g:Pi=0
g:Po=0
>B
; at boot
; disable publishing at MQTT teleperiod, on boot
smlj=0
; activate data parsing
->sensor53 r
; show data receive with green led (pin 5)
->Sensor53 l5
;configure GPIO
spinm(rL O)
spinm(gL O)
spinm(bL O)
; spinm(butA P)
>BS
; enable mDNS
->setOption55 1
; MQTT rate 1/10 Hz
->teleperiod 10
; dynamic wifi Tx power
->wifipower 0
; set WIFI_NO_SLEEP
; Keep wifi in no-sleep mode to avoid outages with low RSSI
-> SetOption127 ON
; reduce power consumption
;->Sleep 50
; referrer check
->SetOption128 ON
; show CPU temperature in webUI
; SetOption146 1
; lightshow at startup
spin(rL 1)
delay(d)
spin(gL 1)
; r + g = y
delay(d)
spin(rL 0)
delay(d)
spin(gL 0)
spin(bL 1)
delay(d)
spin(bL 0)
>M 1
; rxPin=4, raw=r
+1,4,r,0,115200,z
; your 32 char HEX Key from var dKEY is set here
; if data is not encrypted, "1,=so4," is set
;1,=so4,DECR-KEY
1,=so4,%dKEY%
; OBIS Codes (IEC 62056-61):
; See https://cdn.standards.iteh.ai/samples/104764/8356233bf80942e9ba6d5ac9cbdf3af0/IEC-62056-6-1-2023.pdf
; media: abstract=0, electricity=1, heat=6, gas=7, water=8)
; "-" channel: =0 (if not more than 1 available)
; ":" physical unit (in=1, out=2,
; phase current=31,51,71, voltage=31,51,71,
; phase power in=21,41,61, out=22,42,62)
; "." measurement type (instant=7, counter=8, peak-hold=6)
; "." tarif (0=total, 1=day, 2=night)
1,=h
; only one string (@#) can be decoded per meter
1,pm(96.1.0)@#,*,,SMid,0
; P=Power, i=in, o=out, V=Voltage, I=Current, E=Energy
1,=h
1,=hReal Power In & Out
1,pm(1.7.0)@1000,Pi ___ 1.7.0,kW,Pi,3
1,pm(2.7.0)@1000,Po ___ 2.7.0,kW,Po,3
; Note: adding +16 to the last value (precision)
; will generate an immediate MQTT telegram
;1,=h
;1,=hPhase Power In & Out
; not provided by RE
; sml[4]
;1,pm(21.7.0)@1,P1i ___ 21.7.0,W,P1i,0
;1,pm(41.7.0)@1,P2i ___ 41.7.0,W,P2i,0
;1,pm(61.7.0)@1,P3i ___ 61.7.0,W,P3i,0
;
;1,pm(22.7.0)@1,P1o ___ 22.7.0,W,P1o,0
;1,pm(42.7.0)@1,P2o ___ 42.7.0,W,P2o,0
;1,pm(62.7.0)@1,P3o ___ 62.7.0,W,P3o,0
1,=h
1,=hPhase Voltage & Current
; sml[4]
1,pm(32.7.0)@10,V1 ___ 32.7.0,V,V1,1
1,pm(52.7.0)@10,V2 ___ 52.7.0,V,V2,1
1,pm(72.7.0)@10,V3 ___ 72.7.0,V,V3,1
;
1,pm(31.7.0)@100,I1 ___ 31.7.0,A,I1,2
1,pm(51.7.0)@100,I2 ___ 51.7.0,A,I2,2
1,pm(71.7.0)@100,I3 ___ 71.7.0,A,I3,2
1,=h
1,=hReal Energy Counters
; sml[10]
1,pm(1.8.0)@1000,Ei ___ 1.8.0,kWh,Ei,3
1,pm(1.8.1)@1000,Ei1 ___ 1.8.1,kWh,Ei1,3
1,pm(1.8.2)@1000,Ei2 ___ 1..8.2,kWh,Ei2,3
; out
1,pm(2.8.0)@1000,Eo ___ 2.8.0,kWh,Eo,3
1,pm(2.8.1)@1000,Eo1 ___ 2.8.1,kWh,Eo1,3
1,pm(2.8.2)@1000,Eo2 ___ 2.8.2,kWh,Eo2,3
>S
; every second
upH=uptime/60
sr=sunrise/60
ss=sunset/60
; share latest Pi & Po
Pi=sml[2]
Po=sml[3]
; enable MQTT after grace period after boot
if upsecs>9 {
smlj|=1
}
; if no wifi connection after 10 sec, blink red
if wifis==0 {
noWifi+=1
}
if noWifi>10 {
rBlink=3
}
; if pin[butA]==0 {
; bu+=1
; }
; if bu>2 {
; rBlink=1
; bu=0
; }
>F
; every 100 ms
if rBlink>0 {
spin(rL 1)
rBlink-=1
noWifi=0
} else {
spin(rL 0)
}
; blink green on (1_7_0) reception
; if smlv[2]==1 {
; spin(gL 1)
; smlv[0]
; } else {
; spin(gL 0)
; }
>W
@ISKRA HDLC/DLMS Romande Energie, data frequency 1/5 Hz
@
@
ISKRA HDLC/DLMS RE, data freq: 1/5 Hz
SM-ID %smls[1]%
Date \& Time %tstamp%
Uptime %1upH%h
Bitte senden Sie uns eine Email.
In diesem Script können auch selbst Anpassungen – z.B. an der Darstellung oder den angezeigten Werten – vorgenommen werden.
Anbei sehen Sie ein Beispiel einer von einem gPlugD mit dem durch das Script erzeugten Webseite, auf der die vom Smart Meter ausgegebenen Daten angezeigt werden.
Die OBIS Codes können Sie im normalen Script anpassen, sofern Ihr Smart Meter andere Daten ausgibt. Die Tasmota Dokumentation für die Konfiguration der Smart Meter CII finden Sie hier.
Mit der etwas kryptischen Script-Sprache lässt sich der gPlugD auch programmieren. Z.B. für die Berechnung und Anzeige vom Energieverbrauch pro Stunde, Tag oder Monat oder für eine Laststeuerung (Boiler, Wallbox, etc).
Für den gPlugD steht zusätzlich auch die leistungsfähigere Berry-Script Sprache zur Verfügung.
Wenn die vom gPlugD empfangenen Daten an einen externen MQTT Broker weiter geleitet werden sollen, muss unter Einstellung->Sonstige Einstellungen noch MQTT aktiviert werden. Zudem muss im neu vorhandenen Menu unter Einstellungen->MQTT die IP Adresse (oder dessen DNS Name) des MQTT-Brokers, das Topic, etc. noch eingerichtet werden.
Falls Sie noch keinen eigene MQTT Broker haben, können Sie für Tests auch einen der zum Testen verfügbaren MQTT Broker in der Cloud verwenden. Zum Beispiel den HiveMQ Public Broker.
Die Visualisierung der Energiedaten kann via MQTT, InfluxDB und Grafana auf einem externen System erfolgen. Alternativ können die Daten via MQTT auch in eines der vielen Home-Automation Systeme (z.B. openHAB, ioBroker, Homeassistant, etc.) übergeben werden. Auch die Integration mit Loxone ist möglich. Lesen Sie in den Blogbeiträgen, wie dies andere Kunden gelöst haben.
MQTT Cloud Dienste
Es ist auch möglich, die Daten über MQTT mit TLS verschlüsselt an einen MQTT Service in der Cloud zu senden. Dazu empfehlen wir die einfache Fingerprint Validierung des MQTT Broker Zertifikats einzusetzen. Das Verfahren ist hier dokumentiert. Mit dem Command “SetOption132 1” kann die Fingerprint Validierung aktiviert werden.
Durch Eingabe in der Konsole eines Null-Fingerprints mit dem Command “MqttFingerprint1 00 00 …” (20 x 00 Byte) kann Tasmota den Fingerprint selbst aus dem vom MQTT Broker präsentierten Server-Zertifikat herauslesen und lernen.
Der gPlugD wird mit einer spezifisch kompilierten Tasmota Firmware ausgeliefert. Ein Over-the-Air-Update (OTA) der Firmware mit einer Version von der Tasmota Webseite sollte nicht durchgeführt werden. Dies würde zu einem Verlust der erforderlichen Funktionen führen. Die Standard-Firmware Versionen von Tasmota haben die Script- und Smartmeter-Funktion nicht mit an Board.
Es ist jedoch möglich, die Tasmota-Firmware selbst zu kompilieren und das Scripting sowie das Smartmeter Modul hinzuzufügen. Der SerialBuffer (Rx) ist im Standardfall zu klein bemessen. Um die Energiedaten mit 115’200 Baud rechtzeitig empfangen & verarbeiten zu können, muss der Buffer min. 576 Bytes gross sein, damit er Daten für 50 ms zwischenspeichern kann. Wir empfehlen eine Grösse von 600 – 1200 bytes.
Sollten Sie die ausgelieferte Tasmota Firmware verloren haben und Ihren gPlug wieder damit ausrüsten wollen, können Sie diese per Emailanfrage von uns erhalten.
Der Button-A ist mit GPIO-9 verbunden. Er hat für den Betrieb jedoch keine wesentliche Funktion. Im Script könnte für seine Zustandsänderung eine Aktion programmiert werden.
Die Tasmota Konsole lässt sich auch via die USB Buchse des gPlugD erreichen. Wie das klappt, haben wir in einem Blogbeitrag gPlug via USB steuern dokumentiert.
Welche Daten werden vom Smart Meter und in welcher Form übertragen? Lesen Sie mehr dazu in unserem Blogbeitrag Smart Meter Daten prüfen.
Die Spezifikation der P1-DSMR Schnittstelle ist hier verfügbar. Gerne dürfen Sie uns bei Fragen oder technischen Problemen per Mail an info@gplug.ch kontaktieren.
Wir arbeiten derzeit an einem gPlug für den L&G SM E450 Smart Meter. Gerne dürfen Sie uns Ihre E-Mail Adresse hinterlassen und wir benachrichtigen Sie, sobald ein entsprechender gPlug zur Verfügung steht.