Smar­ter Stromzähler

Seit dem Früh­jahr hat mir der Strom­ver­sor­ger einen elek­tro­ni­schen Strom­zäh­ler vom Typ Easy­m­e­ter Q3MA ein­ge­baut. Die Inte­gra­ti­on ins Smar­thome lief eigent­lich schon wenig spä­ter, aber nach einem Feh­ler beim Firm­ware-Upgrade der NodeM­CU muss­te ich sie neu aufsetzen.

Was mir ent­fal­len war: die Smart­me­ter-Unter­stüt­zung, oder bes­ser gesagt das SML-Pro­to­koll, ist nicht Bestand­teil der vor­kom­pi­lier­ten Images, son­dern muss über die Tas­mo­ta-Datei user_config_override.h akti­viert und mit Plat­for­mIO selbst kom­pi­liert wer­den. Das klingt aber kom­pli­zier­ter, als es letzt­lich ist, wobei ein wenig Erfah­rung mit Visu­al Stu­dio Code (vscode) nicht scha­den kann.

Alter­na­tiv kann auch Plat­for­mIO im Atom Edi­tor oder von der Kom­man­do­zei­le oder sogar ein online-Dienst benutzt wer­den. Aus­führ­lich ist das Kom­pi­lie­ren hier beschrieben.

Easy­m­e­ter Q3M

Als Hard­ware nut­ze ich übri­gens eine bil­li­ges NodeM­CU-kom­pa­ti­bles Board aus Chi­na. Der opti­sche Tast­kopf wird als Bau­satz von einem Mit­glied des Pho­to­vol­ta­ik­fo­rums ange­bo­ten. Am NodeM­CU-Board wird er an 3.3V (3V), GND (G) und GPIO13 (D7) ange­schlos­sen (Pin 1,2,6 von hin­ten links gesehen).

NodeM­CU-Board

Tas­mo­ta muss dann mit die­sen Schrit­ten kom­pi­liert werden:

  • Wenn nicht schon vor­han­den, vscode installieren
  • Wenn nicht schon vor­han­den, Plat­for­mIO Exten­si­on installieren
  • Aktu­el­le Tas­mo­ta-Quel­len von https://​git​hub​.com/​a​r​e​n​d​s​t​/​T​a​s​m​ota down­loa­den und im vscode direc­to­ry auspacken
  • Fol­der in vscode öffnen
  • platformio.ini edi­tie­ren
    • upload port ein­tra­gen (bei mir: /dev/ttyUSB0)
    • Spra­che aus­kom­men­tie­ren (bei mir: DE)
  • tasmota/user_config_override.h edi­tie­ren
    • WLAN SSID/Passwort eintragen
    • MQTT Server/Port/User/Password eintragen
    • fol­gen­des an die Datei anhän­gen:
      #ifndef USE_SCRIPT
      #define USE_SCRIPT
      #endif
      #ifndef USE_SML_M
      #define USE_SML_M
      #endif
      #ifdef USE_RULES
      #undef USE_RULES
      #endif
      #define SML_MAX_VARS 20
  • Alle Files speichern
  • Mit Ctrl + Alt + U oder (Fuß­zei­le) kom­pi­lie­ren und hochladen
  • bei Erfolg wird am Ende fol­gen­des ausgegeben:
Environment   Status   Duration
------------- -------- ------------
tasmota-DE    SUCCESS  00:01:08.758
  • Im Tas­mo­ta-Web-Inter­face bei EinstellungenGerät Konfigurieren den Modul­typ Generic (0) auswählen
  • Kei­ne Modu­le bei den GPI­Os aus­wäh­len! (alles auf None belas­sen); der Port wird unten im Script definiert.
  • unter EinstellungenSkript konfigurieren den Haken bei Skript aktivieren setzen
  • fol­gen­des Skript eingeben
   >D
   >B
   ->sensor53 r
   tper=10
   >M
   +1,13,s,1,9600,SML
   1,77070100010800ff@1000,Verbrauch,KWh,Power_in,1
   1,77070100020800ff@1000,Einspeisung,KWh,Power_out,1
   1,77070100100700ff@1,Akt. Verbrauch,W,Power_act,1
   1,77070100240700ff@1,Wirkleistung L1,W,Power_p1,1
   1,77070100380700ff@1,Wirkleistung L2,W,Power_p2,1
   1,770701004c0700ff@1,Wirkleistung L3,W,Power_p3,1
   # 
  • Spei­chern
  • Das Ergeb­nis sieht dann so aus:

Die Ver­brauchs­wer­te ste­hen bei jedem Zäh­ler­mo­dell an etwas ande­rer Stel­le. Die Adres­sen für mei­nen Q3M kann man aus fol­gen­der Tabel­le ablesen:

Easy­m­e­ter Q3M

OBIS-Kenn­zahlBezei­chungKanal­typAuf­lö­sungHin­weis
1-0:1.8.0*255Zäh­ler­stand BezugEl. Ener­gie (Zäh­ler­stän­de)1000
1-0:1.8.1*255Zäh­ler­stand BezugEl. Ener­gie (Zäh­ler­stän­de)1000Tarif 1
1-0:1.8.2*255Zäh­ler­stand BezugEl. Ener­gie (Zäh­ler­stän­de)1000Tarif 2
1-0:2.8.0*255Zäh­ler­stand LieferungEl. Ener­gie (Zäh­ler­stän­de)1000
1-0:16.7.0*255Leis­tung (Momen­tan)El. Ener­gie (Leis­tungs­wer­te)Sum­me aus P_L1, P_L2, P_L3
1-0:36.7.0*255Leis­tung an L1 (Momen­tan)El. Ener­gie (Leis­tungs­wer­te)
1-0:56.7.0*255Leis­tung an L2 (Momen­tan)El. Ener­gie (Leis­tungs­wer­te)
1-0:76.7.0*255Leis­tung an L3 (Momen­tan)El. Ener­gie (Leis­tungs­wer­te)

Aus der Obis-Kenn­zahl 1-0:1.8.0*255 inter­es­siert nur die 1.8.0*255, die in Hex umge­wan­delt 010800ff und an 77070100 ange­hängt zu 77070100010800ff wird. @1000 defi­niert die Ska­lie­rung. Es fol­gen Label, Ein­heit, Varia­blen­na­me und Nach­kom­ma­stel­len. Wer es genau wis­sen will, kann in den ange­häng­ten Quel­len weiterlesen.

Quel­len

https://​tas​mo​ta​.git​hub​.io/​d​o​c​s​/​S​m​a​r​t​-​M​e​t​e​r​-​I​n​t​e​r​f​a​ce/

https://forum.iobroker.net/topic/27999/stromz%C3%A4hler-per-sonoff-esp8266-auslesen

https://​wiki​.volks​za​eh​ler​.org/​s​o​f​t​w​a​r​e​/​o​bis

2 Kommentare

  1. Moin!
    Super Beitrag.
    Kur­ze Frage;
    Bei volks­za­eh­ler steht das ohne pin nur ohne Nach­kom­ma­stel­len aus­ge­ge­ben wird.

    Hast du die Pin ein­ge­ge­ben bzw. Im Script aktiviert.
    Mir ist lei­der auch nicht klar ob das eine ein­mal Ein­ga­be oder eine wie­der­ho­len­de Inter­val­ein­ga­be ist.

    https://​wiki​.volks​za​eh​ler​.org/​h​a​r​d​w​a​r​e​/​c​h​a​n​n​e​l​s​/​m​e​t​e​r​s​/​p​o​w​e​r​/​e​d​l​-​e​h​z​/​e​a​s​y​m​e​t​e​r​_​q3m

    Grüs­se
    Chris

  2. Hal­lo Chris,
    ja, die Pin muss ein­ge­ge­ben bzw. gemorst, d.h. als Blink­s­i­gnal per Taschen­lam­pe ein­ge­ge­ben wer­den. Erfreu­li­cher­wei­se merkt sich das der Zäh­ler, die Pin muss also nur ein mal ein­ge­ge­ben werden.
    Gruß
    Jörg

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

neunzehn + zehn =