Forum: Haus & Smart Home Smartmeter SML Tasmota negative Momentanleistung


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.

von Chris (milzchris)


Lesenswert?

Kai schrieb:
> 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 :)

@Kai: kannst du das Skript von Tasmota noch hier einpflegen? Oder Link?
Mir fehlt das optionale setzen des Minus-Zeichen für die 
Momentan-Leistung
...
1,77070100100700ff@0.1,Current Consumption,W,current_power,0
...

von Simon F. (simon_f967)


Lesenswert?

Hi,

Gibt es Neuigkeiten bezüglich des Scripts ? Kann das mal jemand posten 
oder den Link dahin geben ?

Ich stehe grade vor dem gleichen Problem mit einem EHZ Smartmeter bei 
dem ich gerne erkennen würde ob Verbrauch/Einspeisung.

von Henning P. (henning_p)


Lesenswert?

Hallo,
mich würde auch die Lösung des Problemes sehr interessieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.