Seite 1 von 1

Smarthome MQTT

Verfasst: Fr Sep 06, 2024 10:29 am
von Eckhard
Hallo zusammen,

ich habe heute die ersten Versuche im Smarthome-Bereich mit MQTT gemacht. Ich habe ein erstes MQTT-Device in Smarthome angelegt und manuell per MQTT das Topic openWB/set/LegacySmartHome/Devices/1/Aktpower auf 100 gesetzt. Ich konnte sehen, dass der Wert auf der openWB-Oberfläche angezeigt wurde.

Als ich das automatisch gemacht habe, sah ich keine Veränderungen mehr, die Daten kamen nicht an. Im Log fand ich folgende Meldung:

Code: Alles auswählen

2024-09-06 12:02:02,383 - Traceback (most recent call last):
  File "/var/www/html/openWB/packages/modules/smarthome/mqtt/watt.py", line 60, in <module>
    client.loop()
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1120, in loop
    return self._loop(timeout)
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1164, in _loop
    rc = self.loop_read()
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 1556, in loop_read
    rc = self._packet_read()
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 2439, in _packet_read
    rc = self._packet_handle()
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3033, in _packet_handle
    return self._handle_publish()
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3327, in _handle_publish
    self._handle_on_message(message)
  File "/home/openwb/.local/lib/python3.9/site-packages/paho/mqtt/client.py", line 3570, in _handle_on_message
    on_message(self, self._userdata, message)
  File "/var/www/html/openWB/packages/modules/smarthome/mqtt/watt.py", line 30, in on_message
    powerc = int(msg.payload)
ValueError: invalid literal for int() with base 10: b'1.0'
Es deutet also darauf hin, dass er mit float-Zahlen nicht umgehen kann. Also habe ich das manuell nochmal mit 100 getestet, aber auch da funktioniert es nun nicht mehr. Egal, ob ich Powerc oder Aktpower setze, es kommt immer die gleiche Fehlermeldung. Ist das ein Bug oder mache ich was falsch?

Viele Grüße,
Eckhard

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 11:19 am
von Eckhard
Nachtrag: Ich sehe im MQTT Explorer, dass die Werte für Aktpower und Powerc ankommen (in openWB/LegacySmartHome/Devices/1/).

Ist der Wert ganzzahlig, wird Aktpower angezeigt, ein Zählerstand oder Verbrauch jedoch nicht.

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 3:33 pm
von okaegi
Den Wert musst du ganzzahlig liefern. Zählerstand kannst du rechnen lassen, dazum
Musst du powerc mit 0 liefern.
Gruss Oliver

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 3:36 pm
von Eckhard
okaegi hat geschrieben: Fr Sep 06, 2024 3:33 pm Den Wert musst du ganzzahlig liefern. Zählerstand kannst du rechnen lassen, dazum
Musst du powerc mit 0 liefern.
Gruss Oliver
Warum sollte ich einen Zählerstand von 0 liefern, wenn ich einen realen habe? Und was ist der Grund, nur ganze Zahlen zu akzeptieren?

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 4:23 pm
von openWB
Und was ist der Grund, nur ganze Zahlen zu akzeptieren?
Die Angabe ist in Wh.
Einen Zählerstand mit milli Wh zu übertragen macht schlicht keinen Sinn.

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 4:30 pm
von Eckhard
okay, gekauft, habs für beide schon gerundet. Trotzdem wird der Zählerstand nicht verwendet.

Re: Smarthome MQTT

Verfasst: Fr Sep 06, 2024 5:05 pm
von okaegi
Ah wenn du einen zählerstand hast dann den hier abliefern. /Powerc Auch nur ganzzahlig. Ein tag warten, dann sollte der Tagesverbrauch gerechnet werden.
Gruss Oliver

Re: Smarthome MQTT

Verfasst: Sa Sep 07, 2024 10:30 am
von Eckhard
okaegi hat geschrieben: Fr Sep 06, 2024 5:05 pm Ah wenn du einen zählerstand hast dann den hier abliefern. /Powerc Auch nur ganzzahlig. Ein tag warten, dann sollte der Tagesverbrauch gerechnet werden.
Gruss Oliver
Okay, ich war nur zu ungeduldig, jetzt funktioniert es. Vielleicht könntet ihr die Rundung auf ganze Zahlen einbauen, wenn das so gewollt ist, statt dass es nicht funktioniert, wenn gebrochene Zahlen geliefert werden.