Forum: Haus & Smart Home Smartmeter SML Tasmota negative Momentanleistung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Kai (Gast)


Lesenswert?

Hallo zusammen,

ich versuche aktuell meinen Smartmeter (Honeywell AS2020) über SML 
auszulesen.
Das klappt auch soweit schon sehr gut, auch die Anbindung zu Home 
Assistant läuft bereits. Doch leider wird die Momentanleistung immer nur 
positiv von Tasmota zurück gegeben.

Das ganze mache ich aktuell mit folgendem Script:

```
>D
>B
->sensor53 r

>M 1
+1,3,s,0,9600,,1
1,77070100600100ff@#,Server-ID,,server_id,0
1,77070100010800ff@1000,Total Consumed,kWh,total_consumed_kwh,1
1,77070100020800ff@1000,Total Delivered,kWh,total_delivered_kwh,1
1,77070100100700ff@0.1,Current Consumption,W,current_power,0
#
```

Nun bin ich auch soweit gekommen, das ich im Dump der SML Daten auch den 
unterschied erkennen konnte, wann der Wert positiv oder negativ ist.
Und zwar ist es zu erkennen an der 62/63:
```
77 07 01 00 10 07 00 ff 01 01 62 1e 52 ff 62 15 01 => -21W
77 07 01 00 10 07 00 ff 01 01 62 1e 52 ff 63 02 e3 01 => 739W
```

Hat einer von euch vlt. eine Idee, wie ich diesen Wert auslesen und 
korrigieren könnte, sodass über Tasmota und auch MQTT der richtige Wert 
ausgegeben wird?

Gruß
Kai

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Kai schrieb:
> Nun bin ich auch soweit gekommen, das ich im Dump der SML Daten auch den
> unterschied erkennen konnte, wann der Wert positiv oder negativ ist.
> Und zwar ist es zu erkennen an der 62/63:

Ich fürchte nein.

Die 62 bzw. 63 sind das Type-Length-Field.
- die 6 bedeutet, dass es sich Datentyp unsigned handelt (also keine 
Vorzeicheninfo enthalten ist)
- die 2 bzw. 3 bedeutet, dass der Eintrag insgesamt 2 bzw. 3 Bytes groß 
ist.

"62 15" steht für den unsigned8 Wert 21 (hex 15)
"63 02 3e" steht für den unsigned16 Wert 739 (hex 023e)

Die Zahlenwerte 21 und 739 passen also zu dem, was du schreibst. Aber 
die Vorzeicheninfo ist trotzdem nicht enthalten. Dafür bräuchte es einen 
signed-Wert (5x im Type-Length-Field).

Ich muss aber gestehen, dass ich die Interpretation deines Hex-Dumps 
nicht schlüssig hinkriege. Denn der OBIS-Code 16.7.0 in deinem Dump 
steht zwar für "Sum Active Instantaneous Power" (also Momentanwert der 
Gesamtwirkleistung). Aber die Einheit im Eintrag wäre nach meiner 
Interpretation Wh, was für eine Wirkleistungsangabe keinen Sinn ergibt.

Bist du sicher, dass der HEX-Dump korrekt ist (und nichts 
durcheinandergekommen ist)? Falls ja, kann entweder ich die Nachricht 
nicht korrekt dekodieren, oder sie ist "seltsam" kodiert. Die 
wahrscheinlichere Variante ist, dass ich mit dem Dekodieren nicht klar 
komme ;-)

von Kai (Gast)



Lesenswert?

Ja, du hast recht. Da hab ich mich wohl zu früh gefreut :D

Hab hier nochmal ganz frisch die Zeile für den Wert, also bin mir 
ziemlich sicher das nichts durcheinander gekommen bin:
```
77 07 01 00 10 07 00 ff 01 01 62 1e 52 ff 63 02 7d 01
```

Hab auch mal die Anleitung vom Zähler sowie zusätzlich mal ein 
Ausschnitt aus der Anleitung wo auch nochmal steht das es W sein sollte. 
Interessanter weise steht dort auch das eigentlich ein Vorzeichen 
vorhanden sein sollte.

Eigentlich denke ich, das Tasmota das doch eigentlich richtig dekodieren 
sollte. Oder hast du eine andere Software für den ESP8266 im Sinn, was 
ich mal ausprobieren sollte um einfach mal ein paar Daten zu sammeln.

von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

Kai schrieb:
> Hab hier nochmal ganz frisch die Zeile für den Wert, also bin mir
> ziemlich sicher das nichts durcheinander gekommen bin:
> ```
> 77 07 01 00 10 07 00 ff 01 01 62 1e 52 ff 63 02 7d 01

Ergibt nach meiner Dekodierung wieder die Wertekombination 637*10-1*Wh - 
was nicht zum OBIS-Code passt. Dann ist es wohl so, und die Kodierung 
deines Geräts und meine Dekodierung passen nicht zusammen.

Nach den von dir gezeigten Ausschnitten aus der Bedienungsanleitung 
würde ich auch erwarten, dass der Wert mit Vorzeichen ausgegeben wird. 
Nur finde ich halt das Vorzeichen nicht ;-)

Die unterschiedlich langen Werte (62 bzw. 63 in den ersten HEX-Dumps) 
ergeben sich daraus, dass die Leistung ohne führende Nullen ausgegeben 
wird. Bei kleinen Leistungen reicht 62, bei größeren muss es 63 sein. 
Wenigstens das passt.

Auf Seite 16 deiner Bedienungsanleitung wird beschrieben, dass im 
Display nur der Betrag der Wirkleistung angezeigt wird, das Vorzeichen 
müsse aus der Statusinformation der Energierichtung abgelesen werden. 
Vielleicht färbt diese Displayausgabe auch auf die SML-Ausgabe ab. 
Findest du im SML-Telegramm vielleicht eine Angabe zum Instantaneous 
power factor (OBIS-Code 13.7.0 bzw in hex 0D 07 00). Evtl. hilft dessen 
Vorzeichen weiter.

Kai schrieb:
> Oder hast du eine andere Software für den ESP8266 im Sinn, was
> ich mal ausprobieren sollte um einfach mal ein paar Daten zu sammeln.

Sorry, damit kann ich nicht dienen. Die Dekodierung deiner kurzen 
Schnippsel habe ich von Hand gemacht.

von Kai (Gast)


Angehängte Dateien:

Lesenswert?

So, hab hier mal alles was er so ausgibt:

```
21:03:10.165 : 77 07 01 00 60 32 01 01 01 01 01 01 04 45 4c 53 01
21:03:10.190 : 77 07 01 00 60 01 00 ff 01 01 01 01 0b 0a 01 45 4c 53 00 
02 71 b7 f6 01
21:03:10.214 : 77 07 01 00 01 08 00 ff 64 1c 01 04 01 62 1e 52 ff 65 0c 
aa b2 4a 01
21:03:10.233 : 77 07 01 00 02 08 00 ff 01 01 62 1e 52 ff 63 ca 8b 01
21:03:10.252 : 77 07 01 00 10 07 00 ff 01 01 62 1e 52 ff 63 01 9f 01
21:03:10.272 : 77 07 01 00 01 08 01 ff 01 01 62 1e 52 ff 65 0c aa b2 4a 
01
21:03:10.291 : 77 07 01 00 01 08 02 ff 01 01 62 1e 52 ff 62 00 01
21:03:10.308 : 77 07 01 00 02 08 01 ff 01 01 62 1e 52 ff 63 ca 8b 01
21:03:11.260 : 77 07 01 00 02 08 02 ff 01 01 62 1e 52 ff 62 00 01 01 01 
63 14 d7 00 76 08 01 3b 01 3b 43 3b 02 62 01 62 00 72 63 02 01
21:03:11.263 : 77 01 0b 0a 01 45 4c 53 00 02 71 b7 f6 07 01 00 62 0a ff 
ff 72 62 01 65 07 17 d7 c1 79
```

Das mit der Statusinformation ist gar kein schlechter Gedanke, in der 
Anleitung auf Seite 24/25 ist das Statuswort beschrieben und Bit 11 
scheint dort die Energierichtung zu sein. Was auch recht interessant 
ist, das wohl das Statuswort beim Wert für Zählerstand enthalten sein 
soll (siehe Anhang)

Korrigiere mich, wenn ich falsch liege aber könnte das bei OBIS 2.8.2 
(02 08 02) mit versteckt sein, weil die mir auffällig lang erscheint.

Beitrag #7109093 wurde vom Autor gelöscht.
von Achim S. (Gast)


Angehängte Dateien:

Lesenswert?

ich denke es findet sich bei 1.8.0 (siehe Anhang..)

von Achim S. (Gast)


Lesenswert?

Achim S. schrieb:
> ich denke es findet sich bei 1.8.0 (siehe Anhang..)

noch ein Nachtrag: mit dem letzten HEX-Dump scheint es mir immer 
wahrscheinlicher, dass die Einträge für Einheit und Scaler bei dir 
tatsächlich falsch ausgegeben werden.

Die Einheit ist bei allen elektrischen Messgröße Wh (1e) - egal ob es um 
Leistungsgrößen oder Energiegrößen geht.
Der Skalierungsfaktor ist bei allen elektrischen Messgrößen 10^-1 (ff).

Im Fall von 1.8.0 passt die Einheit sogar. Aber wenn der 
Skalierungsfaktor stimmen sollte, dann müsste dein Zähler bei 1.8.0 auf 
dem Display einen Wert von 21251335421,2 Wh bzw. 21251335,4212 kWh 
anzeigen.

Mehr als 20 GWh bekommt man auf einem privaten Zähler eher selten zu 
sehen, das Komma dürfte um ein paar Stellen verrutscht sein. Der 
korrekte Skalierungsfaktor hätte wohl eher 10^-4 (fc) lauten sollen 
(oder etwas in dem Bereich).

von Kai (Gast)


Lesenswert?

Ja, das könnte sich tatsächlich decken.

1c 01 04 => 00011100 00000001 00000100

Wenn ich das mit den Bits in der Anleitung vergleiche kommen alle 
eigentlich ganz gut hin. Bit 11 ist aktuell 0, heißt es wird aus dem 
Netz entnommen was ja in dem Fall passt. Jetzt muss ich nur noch warten 
auf die Sonne das ich das Mal abgleichen kann wie es aussieht wenn er 
einspeist.

von Kai (Gast)


Lesenswert?

Achim S. schrieb:
> Im Fall von 1.8.0 passt die Einheit sogar. Aber wenn der
> Skalierungsfaktor stimmen sollte, dann müsste dein Zähler bei 1.8.0 auf
> dem Display einen Wert von 21251335421,2 Wh bzw. 21251335,4212 kWh
> anzeigen.

So hoch ist der Wert in der Realität zum Glück nicht :)

Es sind 21251 kWh, deshalb wird im Tasmota Script auch bei 1.8.0 und 
2.8.0 um den Faktor 1000 skaliert um dort den richtigen Wert auszugeben.

von Achim S. (Gast)


Lesenswert?

Kai schrieb:
> um den Faktor 1000 skaliert

und der Skalierungsfaktor hätte halt eigentlich schon im SML-Telegramm 
stehen müssen. Aber statt 10^-4 (fc) steht dort nur 10^-1 (ff), so dass 
das Skript willkürlich nochmal einen Faktor 1000 draufschlagen muss.

Kai schrieb:
> Jetzt muss ich nur noch warten
> auf die Sonne das ich das Mal abgleichen kann wie es aussieht wenn er
> einspeist.

ich bin gespannt...

von Kai (Gast)


Lesenswert?

Die ausbeute ist heute zwar nicht so gut, sehr bewölkt aber ich hab doch 
den einen oder anderen Einspeisepunkt erwischen können.

Dabei konnte ich nun sehen, das er zwischen diesen Werten pendelt:

```
1c 49 04 => Bit 11 = 1 (Einspeisung gesamt), Bit 14 = 1 (Einspeisung auf 
L3)
1c 41 04 => Bit 11 = 0 (keine Einspeisung gesamt), Bit 14 = 1 
(Einspeisung auf L3)
```

Ich glaube, damit haben wir das Telegram richtig entschlüsseln können.
Werde aber die Tage nochmal Berichten, sobald das Wetter noch besser ist 
und es eindeutiger ist.

von Achim S. (Gast)


Lesenswert?

sieht gut aus...

von Kai (Gast)


Lesenswert?

Vielen Dank Achim für deine Hilfe, dank der Entschlüsselungsarbeit 
konnte ich Tasmota insofern anpassen, das er nun anhand des Statusworts 
das richtige Vorzeichen ausgibt. Klappt wunderbar.

Werde jetzt noch nen PR bei Tasmota erstellen, die docs aktualisieren 
und dann stehen die nächsten mit dem gleichen Zähler dann nicht mehr vor 
dem selben Problem :)

von Achim S. (Gast)


Lesenswert?

Kai schrieb:
> Klappt wunderbar.
>
> Werde jetzt noch nen PR bei Tasmota erstellen, die docs aktualisieren
> und dann stehen die nächsten mit dem gleichen Zähler dann nicht mehr vor
> dem selben Problem :)

Prima, und danke für die Rückmeldung.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.