Folgen Sie uns auf LinkedIn für News.

Installationsanleitung gPlugM mit Tasmota

Die folgenden Informationen können Sie bei der Installation und Inbetriebnahme Ihres gPlugM unterstützen.

Initiale Inbetriebnahme im Wifi Netz

Initial müssen Sie Ihren gPlugM in Ihr lokales Wifi-Netzwerk (2.4 GHz) einbinden.

Für die erste Inbetriebnahme empfehlen wird, den gPlugM mit einem üblichen USB-C Ladegerät (z.B. von einem Smartphone) mit Energie zu versorgen. Die Verbindung via RJ12 Kabel zum SM wird noch nicht benötigt.

Der gPlugM wird nun einen eigenen Wifi-Zugangspunkt (AP für Access Point) mit der SSID gPlugM anbieten. Der gPlugM wird auch immer einen eigenen AP anbieten, wenn er nicht mit dem konfigurierten Wifi Netz verbinden kann (dieses Verhalten lässt sich jedoch auch abschalten).

Verbinden Sie nun einen Wifi-Client (ein Notebook oder Smartphone) mit dieser SSID gPlugM. Meistens wird automatisch die Konfigurationsseite in einem Webbrowser mit der lokalen IP-Adresse http://192.168.4.1/ des AP mit der SSID gPlugM angezeigt.

Sie können nun Ihre Zugangsdaten zu Ihrem eigenen, lokalen Wifi-Netz eintragen. Nach dem Speichern wird sich der gPlugM mit Ihrem Wifi-Netz verbinden und erhält von Ihrem Wifi-Router eine IP Adresse zugewiesen (via DHCP).

Der gPlugM sollte nun in Ihrem lokalen Netz auch unter dem Namen gPlugM.local erreichbar sein (dank mDNS).

Alle weiteren Konfigurationen können Sie über das WebUI des gPlugM vornehmen. Sie können z.B. das Web-UI mit einem Passwort schützen. Die Tasmota Dokumentation für alle Commands, die via Konsole eingegeben werden können, ist hier verfügbar.
 
Unter Einstellungen->Sonstige Konfigurationen kann der Zugang zum WebUI ebenfalls mit einem Passwort geschützt werden.

gPlugM mit der M-Bus CII des SM verbinden:

Jetzt können Sie den gPlugM durch das mitgelieferte Kabel mit der RJ12 Buchse der M-Bus-Kundenschnittstelle Ihres L+G SM verbinden. Der gPlugM benötigt normalerweise keine zusätzliche Energieversorgung via seine USB Buchse.

Die LED sollte dann grün blinken.

LED Blinkcodes:

  • Led blinkt 1x rot/grün/blau:  Start des gPlugM wird so angezeigt
  • Led blinkt 1x grün:     Daten vom Zähler werden empfangen und erfolgreich verarbeitet
  • Led blinkt 1x rot:        Keine Verbindung zum lokalen WiFi. Der gPlugM bietet erneut einen Access Point mit der SSID gPlugM an.

Falls etwas nicht wie erwartet funktioniert, hilft es manchmal, den „Reset-Button“ kurz zu drücken. Dadurch startet der gPlugM neu. Falls alles ok ist, können Sie die Hinweise in der folgenden Box überspringen.

Falls die LED gar nicht leuchtet, ist:

  • entweder die CII des L+G SM von Ihrem VNB noch nicht aktiviert worden
    (Die Voraussetzung Nr 2 gemäss Produktbeschreibung ist nicht erfüllt).
  • oder das interne Kabel für den M-Bus ist im L+G SM drin nicht korrekt mit der RJ12 Buchse verbunden worden.
  • oder das interne Kabel ist verkehrt herum angeschlossen worden (falsche Polarität).

_
Falls der M-Bus des L+G SM verkehrt (+/-) angeschlossen worden ist, können Sie die Polarität durch Öffnen des Deckels des gPlugM umkehren (siehe Bild).

Ob die CII aktiviert worden und das interne Kabel korrekt angeschlossen ist, können Sie überprüfen, indem Sie die Spannung am M-Bus mit einem Multimeter messen. Die Spannung sollte >26 V betragen und periodisch alle 5 Sekunden auf ca. 18 V reduziert werden (wenn Daten übertragen werden). Sofern Sie keine Spannung messen, kontaktieren Sie Ihren VNB.

Konfigurationsscript

Ein Universal-Script für L+G E450 SM ist auf dem gPlugM vorinstalliert. Kunden von Romande-Energie können das vorinstallierte durch dieses Skript direkt ersetzen. Der VSE arbeitet an einer Empfehlung für die Zukunft. Sofern diese von den VSE Mitgliedern beschlossen ist, wird ein entsprechendes Skript dafür hier publiziert werden.

Ihr VNB muss Ihnen mitteilen (StromVV Art 8a, Abs 1bis), welche Werte (bezeichnet durch einen OBIS-Code) und in welchem Format und mit welcher Skalierung, diese von Ihrem SM ausgegeben werden. 

Falls Ihr VNB die Daten verschlüsselt ausgibt, müssen Sie den 32 Zeichen langen Schlüssel (16 Bytes in HEX) für die Entschlüsselung ebenfalls von Ihrem VNB erhalten und diesen im Script in der Variablen „dKEY“ eintragen.

Damit die von Ihrem VNB konfigurierten und von Ihrem SM übertragenen Energiedaten erkannt und auf dem Web-UI angezeigt werden, muss das Script mit den korrekten Definitionen für Ihr SM aktiviert sein. Sie können die Meter-Metriken im Skript selbst anpassen. Die Tasmota-Dokumentation dazu befindet sich hier.

Möglicherweise müssen Sie im Script Anpassungen vornehmen. Sie können z.B. Zeilen mit Meter-Metriken entfernen, sofern Ihr VNB diese OBIS Werte nicht liefert oder andere hinzu fügen, oder diejenigen entfernen, die Sie nicht interessieren.

Ob die Werte sofort oder erst zur Teleperiod via MQTT übermittelt werden, lässt sich ebenfalls einstellen (letzter Wert Precision um +16 erhöhen bedeutet zusätzlich sofort beim Empfang weiterleiten). Die Teleperiod ist auf 10 Sekunden voreingestellt.

				
					>D 35
; gPlugM Tasmota 14.6.0 HDLC/DLMS (25.5.25)
upH=0
sr=0
ss=0

rBlink=0
d=750
noWifi=0

; set your decryption key (len 32), if encrypted
;dKEY="12345678123456781234567812345678"
dKEY=""

; shared var within local network
g:Pi=0
g:Po=0

; define Pins of colored LEDs
redP=1
blueP=3
greenP=4
; butA=9
; rxPin=7

>B
; disable publishing at MQTT teleperiod, on boot
smlj=0

; activate data parsing
-> sensor53 r

; enable pin 4 (green LED) to indicate serial activity
-> sensor53 l4

>BS
; enable mDNS
-> setOption55 1

; MQTT frequenyc is set to 1/10 Hz
-> teleperiod 10

; dynamic wifi Tx power
-> wifipower 0

; reduce power consumption
; See https://tasmota.github.io/docs/Dynamic-Sleep/
-> setOption127 OFF
-> sleep 50

; For low RSSI: Keep wifi in no-sleep mode to avoid outages
; -> setOption127 ON

; referrer check
-> SetOption128 ON

; show CPU temperature in webUI
; -> SetOption146 1

; configure LED pins
spinm(blueP O)
spinm(greenP O)
spinm(redP O)

; lightshow at startup
spin(redP 1)
delay(d)
spin(redP 0)
spin(greenP 1)
delay(d)
spin(greenP 0)
spin(blueP 1)
delay(d)
spin(blueP 0)


>M 1
; rx Pin 7, raw 8E1, Baudrate 2400
+1,7,rE1,0,2400,z

; invert HW serial (4) && disable pullup (8)
1,=so2,0C

; set input buffer size (may be increased)
1,=so3,600

; your 32 char HEX Key from var dKEY is set
; 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)

; some DSO use 96.1.1. instead
1,pm(96.1.0)@#),*,,SMid,0

; P=Power, i=in, o=out, V=Voltage, I=Current, E=Energy
1,=h<h4>Real Power In & Out<h4/>
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<hr/>
1,=h<h4>Instant Phase Power In & Out<h4/>
1,pm(21.7.0)@1000,Pi1 ___ 21.7.0,W,Pi1,3
1,pm(41.7.0)@1000,Pi2 ___ 41.7.0,W,Pi2,3
1,pm(61.7.0)@1000,Pi3 ___ 61.7.0,W,Pi3,3
;
1,pm(22.7.0)@1000,Po1 ___ 22.7.0,W,Po1,3
1,pm(42.7.0)@1000,Po2 ___ 42.7.0,W,Po2,3
1,pm(62.7.0)@1000,Po3 ___ 62.7.0,W,Po3,3

1,=h<hr/>
1,=h<h4>Instant Phase Voltage<h4/>
1,pm(32.7.0)@10,U1 ___ 32.7.0,V,U1,1
1,pm(52.7.0)@10,U2 ___ 52.7.0,V,U2,1
1,pm(72.7.0)@10,U3 ___ 72.7.0,V,U3,1

1,=h<hr/>
1,=h<h4>Instant Phase Currents<h4/>
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<hr/>
1,=h<h4>Real Energy Counters <h4/>

1,pm(1.8.0)@1000,Ei ___ 1.8.0,kWh,Ei,3
1,pm(2.8.0)@1000,Eo ___ 2.8.0,kWh,Eo,3

1,=h_
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

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

1,=h<hr/>
1,=h<h4>Reactive Energy Counters<h4/>

1,pm(5.8.0)@1000,Q5 ___ 5.8.0,kVArh,Q5,3
1,pm(6.8.0)@1000,Q6 ___ 6.8.0,kVArh,Q6,3
1,pm(7.8.0)@1000,Q7 ___ 7.8.0,kVArh,Q7,3
1,pm(8.8.0)@1000,Q8 ___ 8.8.0,kVArh,Q8,3
1,=h_
1,pm(5.8.1)@1000,Q51 ___ 5_8_1,kVArh,Q51,3
1,pm(5.8.2)@1000,Q52 ___ 5_8_2,kVArh,Q52,3

1,pm(6.8.1)@1000,Q61 ___ 6_8_1,kVArh,Q61,3
1,pm(6.8.2)@1000,Q62 ___ 6_8_2,kVArh,Q62,3

1,pm(7.8.1)@1000,Q71 ___ 7_8_1,kVArh,Q71,3
1,pm(7.8.2)@1000,Q72 ___ 7_8_2,kVArh,Q72,3

1,pm(8.8.1)@1000,Q81 ___ 8_8_1,kVArh,Q81,3
1,pm(8.8.2)@1000,Q82 ___ 8_8_2,kVArh,Q82,3
#

>S
; every second
upH=uptime/60
sr=sunrise/60
ss=sunset/60

; enable MQTT 15 seconds after boot
if upsecs>15 {
 smlj|=1
}

; update values of global vars
Pi=sml[2]
Po=sml[3]

; if no wifi connection after 10 sec, blink red
if wifis==0 {
  noWifi+=1
}
if noWifi>10 {
  rBlink=2
}

>F
; every 100 ms

; blink red
if rBlink>0 {
  spin(redP 1)
  rBlink-=1
  noWifi=0
} else {
  spin(redP 0)
}

; blink green on data reception
; if smlv[2]==1 {
;   spin(greenP 1)
;   smlv[0]
; } else {
;   spin(greenP 0)
; }

>W
@<style>h4{margin-block-end: 0;color: cyan}td th{font-weight: normal;}tr th:first-child{text-align: left;}tr td:nth-child(2){text-align: right;color: lime;font-weight:normal;}table{width:100\%;}</style>
@<table><tbody>
 <tr><th>L+G E450, data freq. (counters 1/60 Hz)</th>1/5 Hz<td></td></tr>
 <tr><th>SM-ID</th><td>%smls[1]%</td></tr>
 <tr><th>Date \& Time</th><td>%tstamp%</td></tr>
 <tr><th>Uptime</th><td> %1upH% h</td></tr>
</tbody></table>

				
			
				
					>D 35
; gPlugM Tasmota 14.6.0 HDLC/DLMS Romande Energie (25.5.25)
upH=0
sr=0
ss=0

rBlink=0
d=750
noWifi=0

; set your decryption key (len 32), if encrypted
;dKEY="12345678123456781234567812345678"
dKEY=""

; shared var within local network
g:Pi=0
g:Po=0

; define Pins of colored LEDs
redP=1
blueP=3
greenP=4
; butA=9
; rxPin=7

>B
;disable publishing at MQTT teleperiod, on boot
smlj=0

; activate data parsing
-> sensor53 r

; enable pin 4 (green LED ) to indicate serial activity
-> sensor53 l4

>BS
; enable mDNS
-> setOption55 1

; dynamic wifi Tx power
-> wifipower 0

; MQTT rate 1/10 Hz
-> teleperiod 10

; reduce power consumption
; See https://tasmota.github.io/docs/Dynamic-Sleep/
-> setOption127 OFF
-> sleep 50

; For low RSSI: Keep wifi in no-sleep mode to avoid outages
; -> setOption127 ON

; referrer check
-> SetOption128 ON

; show CPU temperature in webUI
; -> setOption146 1

; configure LED pins
spinm(blueP O)
spinm(greenP O)
spinm(redP O)

; lightshow at startup
spin(redP 1)
delay(d)
spin(redP 0)
spin(greenP 1)
delay(d)
spin(greenP 0)
spin(blueP 1)
delay(d)
spin(blueP 0)


>M 1
; rx Pin 7, raw 8E1, Baudrate 2400
+1,7,rE1,0,2400,z

; invert HW serial (4) && disable pullup (8)
1,=so2,0C

; set input buffer size
1,=so3,600

; your 32 char HEX Key from var dKEY is set
; 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)

; some DSO use 96.1.1. instead
1,pm(96.1.0)@#),*,,SMid,0

; P=Power, i=in, o=out, V=Voltage, I=Current, E=Energy
1,=h<h4>Instant Real Power In & Out<h4/>
1,pm(1.7.0)@1000,Pi ___ 1_7,kW,Pi,3
1,pm(2.7.0)@1000,Po ___ 2_7,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<hr/>
1,=h<h4>Instant Currents <h4/>
1,pm(31.7.0)@1000,I1 ___ 31_7,A,I1,3
1,pm(51.7.0)@1000,I2 ___ 51_7,A,I2,3
1,pm(71.7.0)@1000,I3 ___ 51_7,A,I3,3

1,=h<hr/>
1,=h<h4>Instant Voltage <h4/>
1,pm(32.7.0)@1000,U1 ___ I1 32_7,V,U1,3
1,pm(52.7.0)@1000,U2 ___ I2 52_7,V,U2,3
1,pm(72.7.0)@1000,U3 ___ I3 52_7,V,U3,3

1,=h<hr/>
1,=h<h4>Real Energy Counters<h4/>

1,pm(1.8.0)@1000,Ei ___ 1_8,kWh,Ei,3
1,pm(2.8.0)@1000,Eo ___ 2_8,kWh,Eo,3

1,=h_
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

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

if upsecs>9 {
 smlj|=1
}

; update values of global vars
Pi=sml[2]
Po=sml[3]

; if no wifi connection after 10 sec, blink red
if wifis==0 {
  noWifi+=1
}
if noWifi>10 {
  rBlink=2
}

>F
; every 100 ms

if rBlink>0 {
  spin(redP 1)
  rBlink-=1
  noWifi=0
} else {
  spin(redP 0)
}

; blink green on data reception
; if smlv[2]==1 {
;   spin(greenP 1)
;   smlv[0]
; } else {
;   spin(greenP 0)
; }

>W
@<style>h4{margin-block-end: 0;color: cyan}td th{font-weight: normal;}tr th:first-child{text-align: left;}tr td:nth-child(2){text-align: right;color: lime;font-weight:normal;}table{width:100\%;}</style>
@<table><tbody>
 <tr><th>L+G E450 RE, data freq. (counters 1/60 Hz)</th><td>1/5 Hz</td></tr>
 <tr><th>SM-ID</th><td>%smls[1]%</td></tr>
 <tr><th>Date \& Time</th><td>%tstamp%</td></tr>
 <tr><th>Uptime</th><td> %1upH% h</td></tr>
</tbody></table>

				
			
				
					Bitte senden Sie uns eine Email.
				
			

Konfiguration von MQTT

Um die vom gPlugM empfangenen Daten an einen MQTT Broker weiter zu leiten, muss unter Einstellung->Sonstige Einstellungen noch MQTT aktiviert werden. Zudem kann der MQTT-Host, die Zugangsdaten, das Topic,  etc. im neu vorhandenen Menu unter Einstellungen->MQTT noch eingerichtet werden.

Einbindung in Drittsysteme

Die Visualisierung der Energiedaten kann z.B. mit 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. ioBroker, Homeassistant, etc.) übergeben werden.

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.

Die öffentlichen Schlüssel der Zertifizierungsstellen für die Server Zertifikate von AWS, und LetsEnscript sind in der Firmware bereits enthalten.

Elektronik und Bedienelemente

Der A-Button hat für den Betrieb mit Tasmota aktuell keine Funktion. Im Script könnte für seine Zustandsänderung eine Aktion programmiert werden.

Die GPIO Pins welche für die LED verwendet werden, sind aus dem Script ersichtlich.

Die Energiedaten könnten auch via USB-CDC Serial ausgelesen werden. Wie das klappt, haben wir in einem Blogbeitrag gPlug via USB steuern dokumentiert.

Update der Tasmota Firmware

Der gPlugM 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 Smart Meter Funktionen führen. Die Standard-Firmware Versionen von Tasmota haben die Script-Funktion nicht mit an Board.

Sollten Sie die vorinstallierte Tasmota Firmware verloren haben und Ihren gPlugM wieder damit ausrüsten wollen, können Sie diese per Email-Anfrage von uns erhalten.

Es ist möglich, die Tasmota-Firmware selbst zu kompilieren und das Scripting sowie das Smartmeter Modul hinzuzufügen. Zudem müsste das Script mit den Meter-Metriken möglicherweise angepasst werden. Es ist auch möglich, eine eigene, ganz andere Firmware oder die norwegische Firmware amsReader auf dem gPlugM zu installieren.

Für andere als die vorinstallierte Firmware kann das gPlug-Team leider keinen Support anbieten.

Noch Fragen?

Welche Daten werden vom Smart Meter und in welcher Form übertragen? Lesen Sie mehr dazu in unserem Blogbeitrag Smart Meter Daten prüfen. Falls bei Ihnen keine Daten angezeigt werden, erstellen Sie bitte eine Aufzeichnung der von Ihrem SM ausgegebene Rohdaten (mit Debug Level 4) und senden Sie uns eine Aufzeichnung davon per Email. Die Tasmota Konsole lässt sich auch via die USB Buchse des gPlugM erreichen. Wie das klappt, haben wir in einem Blogbeitrag gPlug via USB steuern dokumentiert. Weitere Informationen finden Sie auch in unseren FAQ sowie in unseren Blogbeiträgen und solchen, die von unseren Kunden verfasst worden sind.

Gerne dürfen Sie uns bei Fragen oder technischen Problemen per Email an info@gPlug.ch kontaktieren.

Warteliste für L&G E450 kompatiblen gPlug

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.