Die folgenden Informationen können Sie bei der Installation und Inbetriebnahme Ihres gPlugD-E unterstützen.
Auf dem gPlugD-E ist eine spezifische Version der open-source Tasmota Software installiert und konfiguriert.
Sie können den gPlugD-E entweder über seine USB Buchse mit Energie versorgen oder ihn via das mitgelieferte Kabel mit der RJ12 Buchse Ihres Smart Meters verbinden.
Wenn Sie den gPlugD-E mit einem Ethernetkabel mit Ihrem bestehenden lokalen Netzwerk verbinden, wird ihm von Ihrem Router eine IP Adresse zugewiesen (via DHCP). Dank mDNS können Sie Ihren gPlugD-E auch unter dem Namen gPlugDE.local mit einem Webbrowser in Ihrem lokalen Netz erreichen. Alle weiteren Konfigurationen können Sie nun via das Web-UI des gPlugD-E mit Ihrem Webbrowser vornehmen. Sie können das Web-UI z.B. nun auch mit einem Passwort schützen.
Damit der gPlugD-E vom Smart Meter genügend Energie für den Betrieb seines Ethernetanschluss zur Verfügung hat, wird das ebenfalls vorhandene Wifi beim Start jeweils ausgeschaltet und Bluetooth wird nicht verwendet. Sie können den gPlugD-E ohne USB Energieversorgung [1], nur via das RJ12 Kabel mit Ihrem Smartmeter verbinden.
[1] Einige VNB installieren ihren Kunden leider ISKRA AM550 SM ohne Energieversorgung durch die Kundenschnittstelle.
Damit die von Ihrem Smart Meter übertragenen Energiedaten auf dem Web-UI angezeigt werden, muss das Script mit den korrekten Definitionen des Smart Meters aktiviert sein.
Ein Script für SM mit einer P1-DSMR Standard Schnittstelle – wie z.B. für einen ELSTER AS3000 SM – ist auf dem gPlugD-E vorinstalliert. Es kann ebenfalls für SM der Marke Ensor, Sagemcom, den E360 von L&G sowie die NES Gen-5 (83335) des VNB Primeo verwendet werden.
Für ISKRA AM550 SM müssen Sie evtl. das Script des gPlugD-E via Web-UI->Konsolen->Skript konfigurieren.
Das P1-HDLC/DLMS Script extrahiert die Werte aus einem binäre übertragenen Datentelegramm.
Kunden mit einem FLEXY SM von M+C können ab der gPlugD-E Firmware Version 14.6.0 ebenfalls das P1-HDLC/DLMS Script verwenden.
Ihr VNB muss Ihnen gemäss StromVV auch mitteilen, welche Werte und in welchem Format, diese von Ihrem SM ausgegeben werden.
>D 25
; gPlugD-E P1-DSRM (19.1.26)
upH=0
sr=0
ss=0
d=750
; for SMID conversion
SMID=""
idx=0
smID=""
; define pins
rL=5
gL=6
bL=7
; butA=9
; rxPin=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
; indicate serial activity (pin 6)
-> sensor53 l6
>BS
; enable mDNS
-> setOption55 1
; disable Wifi, use Ethernet instead
-> Wifi OFF
; reduce CPU freq from 160 to 80 MHz saves 1/3 power
sf(80)
; MQTT publish rate 1/10 Hz
-> teleperiod 10
; dynamic sleep: reduce power consumption
; See https://tasmota.github.io/docs/Dynamic-Sleep/
-> setOption127 OFF
-> sleep 50
; referrer check
-> setOption128 ON
; setup native discovery for Home Assistant
; See https://tasmota.github.io/docs/Home-Assistant/#tasmota-integration
; -> SetOption19 0
; show CPU temperature in webUI
; -> setOption146 1
; configure GPIO
spinm(rL O)
spinm(gL O)
spinm(bL O)
; spinm(butA P)
; 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
; DSMR rxPin=4, o=obis
+1,4,o,0,115200,z
; 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,0-0:1.0.0(@#),SM-Time,S,TS,16
1,0-0:96.1.1(@#),*,,SMid,0
; 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
; See https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-metrics
1,=h
1,=hPhase Power In & Out
1,=hPhase Voltage & Current
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
;
1,1-0:31.7.0(@100,I1 ___ 31.7.0,A,I1,2
1,1-0:51.7.0(@100,I2 ___ 51.7.0,A,I2,2
1,1-0:71.7.0(@100,I3 ___ 71.7.0,A,I3,2
1,=h
1,=hReal Energy Counters
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
;
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
#
>T
SMID=z#SMid
Pi=z#Pi
Po=z#Po
>S
; every sec
upH=uptime/60
sr=sunrise/60
ss=sunset/60
; enable MQTT 10 seconds after boot
if upsecs>9 {
smlj|=1
}
; convert SMID to smID only once at startup
if smlj>0
and sl(smID)<5 {
smID=""
for idx 1 sl(SMID) 2
smID+=sb(SMID idx 1)
; print idx = %0idx% smID = %smID%
next
}
; share latest Pi & Po (replaced by >T)
; Pi=sml[2]
; Po=sml[3]
>F
; every 100 ms
; blink green on (1_7_0) reception
; if smlv[2]==1 {
; spin(gL 1)
; smlv[0]
; } else {
; spin(gL 0)
; }
>W
@
@
P1-DSMR, data freq. 1/10 Hz
SMid (%SMID%) %smID%
Date \& Time %tstamp%
Uptime %1upH% h
>D
; gPlugD-E v1.0 P1-HDLC/DLMS RE, (19.1.26)
; {ISKRA AM550, M+C FLEXY, L+G E360 EKS}
; set your decryption key (len 32 hex char), if encrypted
;dKEY="12345678123456781234567812345678"
dKEY=""
upH=0
sr=0
ss=0
d=750
; define pins
rL=5
gL=6
bL=7
; butA=9
; rxPin=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
; indicate serial activity (pin 6)
-> sensor53 l6
;configure GPIO
spinm(rL O)
spinm(gL O)
spinm(bL O)
; spinm(butA P)
>BS
; enable mDNS
-> setOption55 1
; use Ethernet instead
-> Wifi OFF
; reduce CPU freq from 160 to 80 MHz saves 1/3 power
sf(80)
; MQTT rate 1/10 Hz
-> teleperiod 10
; dynamic wifi Tx power
; -> wifipower 0
; dynamic-sleepp: reduce power consumption
; See https://tasmota.github.io/docs/Dynamic-Sleep/
-> setOption127 OFF
-> sleep 50
; setup native discovery for Home Assistant
; See https://tasmota.github.io/docs/Home-Assistant/#tasmota-integration
; -> SetOption19 0
; 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%
; EKS E360 might need larger rxBuf to hold a whole frame
; 1,=so3,750
; 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)
; 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
; See https://tasmota.github.io/docs/Smart-Meter-Interface/#meter-metrics
;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
}
>F
; every 100 ms
; blink green on (1_7_0) reception
; if smlv[2]==1 {
; spin(gL 1)
; smlv[0]
; } else {
; spin(gL 0)
; }
>W
@
@
HDLC/DLMS (ISKRA, FLEXY) RE, data freq: 1/5 Hz
SM-ID %smls[1]%
Date \& Time %tstamp%
Uptime %1upH%h
Die Meter-Metriken können leicht gemäss dem VSE Branchendokument [*] Tabellen 1 + 2 angepasst werden, falls der SM Ihres VNB die Daten in dieser Form via die CII ausgibt.
[*] https://www.strom.ch/de/media/15467/download
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-E mit dem Script erzeugten Webseite, auf der die vom Smart Meter ausgegebenen Daten angezeigt werden.
Die OBIS Codes können Sie im Script („Meter-Metrics„) anpassen, sofern Ihr Smart Meter andere Daten ausgibt. Die Tasmota Dokumentation für die Konfiguration der Smart Meter CII finden Sie hier.
Mit einer etwas kryptischen Script Sprache lässt sich der gPlug auch programmieren. Z.B. für eine Steuerung oder die Berechnung und Anzeige von Daten.
Für den gPlugD-E steht zusätzlich auch die leistungsfähigere Berry-Script Sprache zur Verfügung.
Wenn die vom gPlugD-E empfangenen Daten an einen externen MQTT Broker weiter geleitet werden sollen, muss unter Einstellung->Sonstige Einstellungen noch MQTT aktiviert werden. Zudem muss der MQTT-Host etc. im neu vorhandenen Menu unter Einstellungen->MQTT noch eingerichtet werden.
Unter Einstellungen->Sonstige Konfigurationen kann auch der Zugang zum WebUI mit einem Passwort geschützt 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.
Ein Over-the-Air-Update (OTA) der Tasmota-Software sollte besser unterlassen werden, ausser es wird eine selbst kompilierte Version (mit Scripting Modul) dafür bereit gestellt. 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. 600 Bytes gross sein, damit die empfangenen Daten für ca. 50 ms zwischengespeichert werden können.
Sollten Sie die ausgelieferte Tasmota Firmware verloren haben und Ihren gPlugD-E 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 weiteren GPIO Zuweisungen sind aus dem Script ersichtlich.
Wenn in der Tasmota Konsole das Command template eingegeben wird, sollte folgende Antwort angezeigt werden:
RESULT = {„NAME“:“IoT-Adapter“,“GPIO“:[736,672,5536,704,0,0,0,0,5600,0,5568,0,0,0,0,0,0,0,0,0,0,0],“FLAG“:0,“BASE“:1}
Die Zahlen konfiguriern die benötigten Funktionen („Components„) der verwendeten GPIO für die SPI Ansteuerung des Ethernet (Bsp: 704 = „SPI MOSI1“)
Welche Daten werden vom Smart Meter und in welcher Form übertragen? Lesen Sie mehr dazu in unserem Blogbeitrag Smart Meter Daten prüfen. Die Tasmota Konsole lässt sich auch via die USB Buchse des gPlugE erreichen. Wie das klappt, haben wir auch in einem Blogbeitrag gPlug via USB steuern dokumentiert. Die Spezifikation der P1-DSMR Schnittstelle ist hier verfügbar. Weitere Informationen finden Sie auch in unseren FAQ sowie in unseren Blogbeiträgen und solchen, die von unseren Kunden verfasst worden sind.
Bei Fragen oder technischen Problemen können Sie uns 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.