1. Rohdaten betrachten (Teil1)
Es gibt zu diesem Thema bereits viele Beiträge im Netz. Die meisten beziehen sich auf eine fertige Tasmota-Lösung. Der Nachteil ist, dass man die Daten über MQTT nur alle 10 Sekunden erhält, was für die Regelung eines Wechselrichters wie z.B. Soyosource nicht wirklich funktioniert. Ziel ist es die Daten im Sekundentakt zu erhalten.
Zunächst lesen wir die Rohdaten des IR-Lesekopfes über ein TTL-USB Modul in Hterm oder Putty ein. Das TTL-USB Modul ist ein AZDelivery UART-TTL USB Adapter mit CH340G. Der macht die wenigsten Probleme mit den COM-Treibern. Man kann natürlich auch ein USB zu TTL Serielles Adapterkabel verwenden. Die Boudrate muss bei meinem Zweirichtungszähler (Typ mMe4.0) auf 9600 eingestellt werden.
Hier nun der Komplette Datensatz. Die für uns wichtigen Sequenzen habe ich markiert.
Ich habe mir die Daten in einen Texteditor kopiert um sie dann so darzustellen, dass man einen Überblick bekommt. Daten wie Herstellerkennung, Zähler-ID usw. haben mich nicht interessiert.
Hilfreich ist auch diese Web-Seite (https://tasmota.github.io/docs/Smart-Meter-Interface/#emh-ehzm-sml).
Hier findet man schon mal die SML-Sequenzen für die Verbrauchsdatensätze der unterschiedlichen Zählertypen.
Start Datensatz
1B 1B 1B 1B 01 01 01 01 76 05 02 CC 9D 94 62 00 62 00 72 63 01 01 76 01 07 FF FF FF FF FF FF 05 00 EE DF 32 0B 0A 01 45 4D 48 00 00 BF AF 6E 72 62 01 65 00 EE E0 9E 62 01 63 36 2E 00 76 05 02 CC 9D 95 62 00 62 00 72 63 07 01 77 07 FF FF FF FF FF FF 0B 0A 01 45 4D 48 00 00 BF AF 6E 07 01 00 62 0A FF FF 72 62 01 65 00 EE E0 9E 78 77 07 01 00 60 32 01 01 01 01 01 01 04 45 4D 48 01 77 07 01 00 60 01 00 FF 01 01 01 01 0B 0A 01 45 4D 48 00 00 BF AF 6E 01
Datensatz Verbrauch Wert= 65277384 kWh
77 07 01 00 01 08 00 FF 64 1C 01 04 72 62 01 65 00 EE E0 9E 62 1E 52 FF 69 00 00 00 00 03 E4 0D C8 01
Datensatz Einspeisung Wert= 32638675 kWh
77 07 01 00 02 08 00 FF 01 72 62 01 65 00 EE E0 9E 62 1E 52 FF 69 00 00 00 00 32 63 86 75 01
Datensatz Phase 1 Wert= 105 Watt
77 07 01 00 24 07 00 FF 01 72 62 01 65 00 EE E0 9E 62 1B 52 00 55 00 00 00 0F 01
Datensatz Phase 2 Wert= 0 Watt
77 07 01 00 38 07 00 FF 01 72 62 01 65 00 EE E0 9E 62 1B 52 00 55 00 00 00 00 01
Datensatz Phase 3 Wert= -102 Watt
77 07 01 00 4C 07 00 FF 01 72 62 01 65 00 EE E0 9E 62 1B 52 00 55 00 00 00 9A 01
Aktueller Verbrauch Wert= -3 Watt
77 07 01 00 10 07 00 FF 01 72 62 01 65 00 EE E0 9E 62 1B 52 00 55 00 00 FF FD 01
01 01 63 27 31 00 76 05 02 CC 9D 96 62 00 62 00 72 63 02 01 71 01 63 1E 5C 00 00 00 1B
Ende Datensatz
1B 1B 1B 1A 02 57 B5 (Datensatzlänge= 360)
Die Daten vom Verbrauch und Einspeisung müssen durch 1000 dividiert werden.
Bei diesem Beispiel wird auf Phase1+2 verbraucht und auf Phase3 eingespeist. Bitte jetzt keine Diskussionen ob man das darf, ist nur ein Beispiel, um auch negative Werte anzuzeigen.
Teil 2: Code für ESP32
