-
Notifications
You must be signed in to change notification settings - Fork 204
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
adapt watt.py to changed status response starting Tasmota 14.x #2840
Conversation
@okaegi |
@benderl Die meisten meiner SmartHome Geräte haben mehr als einen Schaltaktor und daher ist auch über die Ausgabe des "Status" bei Power nicht direkt mit Originalskript "watt.py" auszuwerten gewesen. Aus diesem Dezimalwert für Power ist nun in der Version 14 ein Stringwert mit der binären Darstellung der Relais-Status geworden. Wenn ich hier bei Tests oder Dokumentationen helfen kann bin ich dazu gerne bereit. |
"adapt watt.py to changed status response starting Tasmota 14.x" Regarding concerns of backward compatibility of this script to older versions of Tasmota the URL has been reverted to the previously one used and the evaluation of the relais status has been adopted to serve Tasmota pre version 14.x as well as newer versions.
Rework of commit "adapt watt.py to changed status response starting Tasmota 14.x" Regarding concerns of backward compatibility of this script to older versions of Tasmota see attached file watt.py.txt as a replacement of the original PullRequest |
"Abwärtskompatibilität" bedeutet in diesem Zusammenhang, dass durch den Commit alle bisher unterstützten Versionen weiterhin funktionieren müssen. Da sich die URL (vorher) geändert hat, hatte ich Bedenken deswegen. Jetzt sollte es ohne Benutzereingriff auch für bestehende Installationen weiter funktionieren. |
Was es hatte ein Tasmoto version wo kein on und off Status kam, sondern nur die aktuelle Leistungsaufnahme. Das wurde mit diesem coding erreicht, was ich nun nicht mehr sehe. |
@okaegi Warum dann ausgerechnet ein Wert größer 50? Könnte doch auch 100 oder 1000 sein?? Edit: |
Es war ein Firmwareversion von tasmota die keinen Status geliefert hat. Wie häufig die ist weiss ich nicht. Der hat tatsächlichen keinen Status sondern nur Leistunggsmessung geliefert (gibt es bei Shellies häufiger).Bei shellies die nur zur Leistungsmessung verwendet werden (typ kein Gerät) hab ich diese Funktion derweilen ins openwb gezogen. Dort kann derweilen natürlich auch die entsprechende Grenze für Tasmota eingeben werden, aber wann der Shelly als eingeschaltet geführt wird. So gesehen braucht es das coding nicht mehr, aber kommt dein coding klar wenn es keinen on Status hat ? Kommt dann nur die Leidtungsaufnahme ?Gruss OliverAm 06.06.2024 17:43 schrieb hawa-lc4 ***@***.***>:
@okaegi
Der Sinn der genannten Code-Zeile if (aktpower > 50) or (r_status == 1): hat sich mir nie erschlossen.
Wenn ein Tasmota device korrekt arbeitet dann sollte immer ein korrekter Status für den Zustand des Relais (Power) abzufragen sein. Andernfalls kann auch den Werten im "Status 8" nicht vertraut werden, oder doch?
Ist das device nicht erreichbar läuft das Programm bei der Abfrage der "answer" in die exception Routine und der Status "relais" wird auf 0 gesetzt. Etwas anderes macht für mich keinen Sinn denn im Grunde ist jeder Wert hier reine Hypothese.
Warum dann ausgerechnet ein Wert größer 50? Könnte doch auch 100 oder 1000 sein??
Wenn das Tasmota device einen Stromsensor hat und der nicht absolut korrekt kalibriert ist kommt auch im ausgeschalteten Zustand oft eine Leistung größer 50Watt zur Anzeige, was defakto Unsinn ist. Solche Falschmeldungen können bei Störungen im Netz auch nur temporär auftreten.
Warum in dieser Situation also nicht dem Abfragewert "Power" im Status vertrauen sondern dann den Zustand eingeschaltet annehmen nur weil u.U. nur kurzzeitig eine Leistung größer 50Watt gemeldet wird?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Ich habe testweise die Firmware im Archiv von Tasmota zurück bis zur Version 7.2.0 installiert und alle zeigen bezüglich der hier relevanten Parameter das selbe Ausgabeformat wir die Version 13.x. Shellys die mit Tasmota geflasht sind (auch solche habe ich in Betrieb) betrachte ich als Tasmota device, nicht mehr als Shelly. Meine Geräte haben alle die Leistungsmessung im Gerät integriert, genauso wie die Schaltfunktion. Ein besonderer Punkt ist noch die Konfiguration für Geräte mit separater Leistungsmessung. |
HalloEin besonderer Punkt ist noch die Konfiguration für Geräte mit separater LeistungsmessungHier wird dann einfach der watt.py noch mal separat mit der zweiten ip adresse aufgerufen. Und es werden die akruelle Leistung und der Zähler übernommen.Gruss OliverAm 07.06.2024 12:19 schrieb hawa-lc4 ***@***.***>:
Ich habe testweise die Firmware im Archiv von Tasmota zurück bis zur Version 7.2.0 installiert und alle zeigen bezüglich der hier relevanten Parameter das selbe Ausgabeformat wir die Version 13.x.
Alle diese Versionen sollten mit dem Skript keine Probleme haben.
Die noch älteren Versionen mit der Bezeichnung (von Theo Arends) Sonoff und den Versionen 6.7.1 und 5.14.0 habe ich auf die Schnelle nicht zum laufen bekommen und daher nicht weiter verfolgt. Ob also Versionen älter als die 7.2.0 ein solches Verhalten aufweisen kann ich nicht sagen bzw. werde es nicht weiter untersuchen. Sollte das ein k.o. Kriterium sein, dann ist das eben so.
(siehe Migration Information)
Die Änderung im Ausgabeformat wurde erst mit der V14.x implementiert.
Shellys die mit Tasmota geflasht sind (auch solche habe ich in Betrieb) betrachte ich als Tasmota device, nicht mehr als Shelly.
Shellys mit Original-Firmware habe in openWB ein eigenes Modul mit eigenem Python Code. An dem ist nicht vorgesehen das etwas geändert werden soll.
Meine Geräte haben alle die Leistungsmessung im Gerät integriert, genauso wie die Schaltfunktion.
Wenn ich also Daten vom Gerät bekomme dann alles, oder das Gerät ist nicht erreichbar (oder vom Netz getrennt, o.ä.) dann bekomme ich gar nichts und das Skript nimmt den Zustand "ausgeschaltet" an.
Wenn die Daten (z.B. wegen eines Gerätedefekts) beschädigt oder verstümmelt (=Müll) geliefert werden dann sollte das alles durch die Exception Routine abgefangen werden und das Gerät ebenfalls aus "ausgeschaltet" angenommen werden.
Ein besonderer Punkt ist noch die Konfiguration für Geräte mit separater Leistungsmessung.
Hier wird im entsprechenden SmartHome Gerät von openWB noch eine zweite Geräte-Instanz mit eigener IP-Adresse hinzugefügt. Da kenne ich jetzt den vor dem Modul Code (on.py, off.py, watt.py) liegenden Code nicht welche Informationen dann über die IP des Schaltaktor-Device und welche über die des Leistungsmessungs-Device geholt werden.
Die Möglichkeit der Situationen wird dann durchaus komplex.
Wenn das Schaltaktor-Device eingeschaltet ist aber nicht erreichbar kann das Leistungsmessungs-Device durchaus noch gültige Werte liefern.
Tja, was nun? Ich hatte jetzt nicht vor den gesamten Code von openWB bezüglich SmartHome Devices durchzuarbeiten. ;)
Wie immer im coding: 90% sind Fehlerbehandlung und nur 10% sind die Funktion.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you were mentioned.Message ID: ***@***.***>
|
Wie ich schon früher schrieb: dann den Code an dieser Stelle lassen wie er ist. |
Please refer to issue #2839. |
Since Tasmota version 14.x the json reporting is changed and it seems to be the case this beeing the new standard there.
The documentation regarding this however seems to be weak.
For smarthome devices based on Tasmota the actual power and power state is requested in "watt.py" by using the response of the Status command.
The response for "Status" changed regarding the power state from an integer value (e.g. ...,"Power":3,.....) representing the power state of all configured relais to a string value showing each relais in a bitwise state (e.g. ...,"Power":"011",.....).
As a result the script "watt.py" is no longer able to determine the power state correctly.
My working solution is as attached file watt.py and has an addition to report also the consumed energy.
This works for Tasmota version 12.x/13.x and 14.x as well, assuming the primary relais controlled by openWB is always the first (or only) relais and is reported as "POWER" or "POWER1" by "Status 11" command.