Forum: Haus & Smart Home [gelöst] MQTT Restartprobelm bei Tasmota Script für Stromzähler


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 Paul K. (klingelpaul)


Lesenswert?

Hallo,
ich habe mir den SLK mit einem ESP8266 aus dem folgenden Heiseartikel 
zugelegt um meinen Stromzähler auszulesen: 
https://www.heise.de/tests/Ausprobiert-Guenstiger-IR-Lesekopf-fuer-Smart-Meter-mit-Tastmota-Firmware-7065559.html
Das zugehörige Script habe ich mir zusammengegoogelt, dabei noch den 
Zählerbug korrigiert und den MQTT Versand hinzugefügt.
1
>D
2
e=0
3
p=0
4
min=0
5
>T
6
e=DVS74#energy
7
p=DVS74#power
8
>B
9
=>sensor53 r
10
>S
11
if p<0
12
then
13
  p=p+655.36
14
endif
15
=>publish %topic% %e%;%p%
16
>M 1
17
+1,3,s,16,9600,DVS74
18
1,77070100010800ff@1000,Energie,KWh,energy,2
19
1,77070100100700ff@1,Leistung,W,power,3
20
#

Das funktioniert alles wie gewollt wenn MQTT entsprechend konfiguriert 
ist, ich das Script in den Script Editor kopiere, 'Script enable' 
anwähle und den 'Save' button drücke. Sofort kommen die Daten beim 
Broker /(Raspberry PI mit mosquitto_sub) an. Ändere ich das Script und 
speichere es klappt auch das. Mache ich einen 'Restart' ist der Haken 
bei 'Script enable' danach weg und es kommen keine Daten, setzen ich 
dann den Haken wieder kommen die Daten, kommentiere ich die '=>publish' 
Zeile aus geht der Haken beim Restart nicht verloren. Ich vermute die 
Synchronisation zwischen dem SLK und dem MQTT Broker scheitert beim 
Restart. Nun ist es zwar nicht so, daß die Stromversorgung des SLK 
unsicher ist, es wäre mir jedoch lieber ein Restart würde ohne 
anschließende Reaktivierung des Scripts erfolgen. Wenn jemand einen Tipp 
hat wäre ich dankbar.

[Lösung]
Ich verschicke das Telegramm erst wenn der Wert für die Energie > 0 ist, 
dann klappt auch der Restart.

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

https://tasmota.github.io/docs/Smart-Meter-Interface/

Man kann MQTT auch abschalten/ deaktivieren beim Boot steht in der Doku


Martin

von Christian (Gast)


Lesenswert?

Hey Paul wird bei für der Wert bei tasmota schon richtig angezeigt oder 
erst wenn du es über mqtt verschickt hast?
MFG Christian

von CI- T. (ci_t)


Lesenswert?

Hallo Paul,
ich habe heute deinen Artikel vom 13.05 22 auf microcontroller.net 
gelesen. Ich habe zur Zeit das gleiche Problem, dass der Haken bei 
"enable Skript" einfach verschwindet. Ich weiß nicht warum. Ich sehe es 
nur im Browser, wenn ich die Tasmota-Seite ohne die Werte sehe. Du hast 
es ja gelöst, indem du checkst, ob die Leistung mehr als 0W beträgt. Bei 
mir ist es etwas anders, ich habe einen Zweirichtungszähler, er zählt 
die Leistung und den Verbrauch einer PV-Anlage. Die erzeugte Energie 
wird mit einem Minuszeichen angezeigt wird. Nachts verbraucht der 
Wechselrichter 2 bis 3 Watt (dann ohne minus). Ich stelle mir vor, dass 
deine Lösung mit dem ungleich Null Watt bei mir nicht funktioniert, weil 
vermutlich 0 Watt so gut wie nie vorkommen. Es ist auch so, dass ich den 
Fehler schon mitten an einem sonnigen Tag mehrmals festgestellt habe. Da 
war die Leistung auf keinen Fall bei Null? Außerdem ist meine Lösung 
etwas anderes, nämlich so wie in diversen Youtube-Videos beschrieben. Da 
gibt es für viele Zähler ein vorgefertigtes Skript, das kopiert man 
einfach ein und aktiviert das Häkchen. Hast du da noch eine Idee, was 
das bei mir sein könnte? Merkwürdigerweise hat der ESP ein halbes Jahr 
ohne diesen Fehler funktioniert. Am Script wurde nichts geändert. In 
meinen Skript gibt es auch keinen Befehl publish. Das macht Tasmota 
automatisch. wenn man die Werte für den Broker eingestellt hat. Am 
Anfang war der Abstand zwischen zwei Übertragungen zu lang. Man kann das 
auf der Konsole mit einem Befehl einstellen, aber minimal sind es 10 
Sekunden. Wenn ich mir dein Skript ansehe, ist es wohl so, dass bei dir 
jedes Mal gesendet wird, wenn der publish Befehl an der Reihe ist. Ich 
habe wenig Ahnung vom Programmieren. Mir sind ein paar kleine Sachen in 
deinen Skript aufgefallen. Die Variable "min" gibt es zwar, die wird auf 
Null gesetzt, aber ich kann sie dann im ganzen Skript nicht mehr finden. 
Was bewirkt die? Und was bedeutet die Addition der Leistung um 655,36? 
Ich hoffe, dass du noch im Forum unterwegs bist und meine Frage 
bemerkst. Es wäre sehr schön, wenn du mir antworten würdest. Auch wenn 
du keine Lösung für meinen Fall hast. Dein Beitrag ist der einzige zu 
dem Problem, den ich gefunden habe.

Mit freundlichen Grüßen
Michael

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.