Seite 24 von 28

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 4:47 am
von Meth
rleidner hat geschrieben: Mo Apr 21, 2025 5:05 pm Zum MQTT:
Bei mir funktionieren die neuen Topics seit Version 2025-04-17 07:56:49 +0200 [80efeb8dd].

Eine "Falle" lauert auf den Einstellungsseiten für die MQTT-Komponenten.
Wenn man das "Topic kopieren" Icon benutzt landet in der Zwischenablage das Topic mit angehängtem Leerzeichen.
Je nach Smarthome-System, das auf das Topic senden soll, kann das Leerzeichen zu Problemen führen.
Wenn man z.B. mit MQTT-Explorer das gesendete Topic sucht, sieht man das dann zweimal, das das Leerzeichen am Ende nicht zu sehen ist.
Bei mir geht das immer noch nicht .
Mit oder ohne Leerzeichen .
Immer das gleiche
NonType usw.
Hat wer noch das gleiche Problem ?

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 1:55 pm
von rleidner
Meth hat geschrieben: Do Apr 24, 2025 4:47 am Bei mir geht das immer noch nicht .
Mit oder ohne Leerzeichen .
Immer das gleiche
NonType usw.
Hat wer noch das gleiche Problem ?
Ohne Details bzw. Beispiele der Fehler ist Dir nicht zu helfen.

Das Problem der trailing Leerzeichen ist im aktuellen master gefixt.

Eine weitere generelle "Eigenschaft" der neuen mqtt Topics:
openWB propagiert ja Werte aus openWB/mqtt/typ/id/... Topics in die entsprechenden Topics in openWB/typ/id/....
Wenn diese Topics im mqtt Bereich nicht gesetzt sind, werden die Topics in openWB/typ/id/... mit null Values versorgt.
Einige dieser null Values sind dann in der weiteren Verarbeitung der Grund für Fehler.

Weiter ist zu sehen, dass der gesamte Bereich openWB/mqtt/# beim Neustart gelöscht wird.

Abhilfe kann man schaffen, indem alle notwendigen Topics ( d.h. die Fehler in main.log erzeugen) in openWB/mqtt/typ/id/... mit sinnvollen Werten gepublished werden.

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 3:38 pm
von Meth
rleidner hat geschrieben: Do Apr 24, 2025 1:55 pm
Meth hat geschrieben: Do Apr 24, 2025 4:47 am Bei mir geht das immer noch nicht .
Mit oder ohne Leerzeichen .
Immer das gleiche
NonType usw.
Hat wer noch das gleiche Problem ?
Ohne Details bzw. Beispiele der Fehler ist Dir nicht zu helfen.

Das Problem der trailing Leerzeichen ist im aktuellen master gefixt.

Eine weitere generelle "Eigenschaft" der neuen mqtt Topics:
openWB propagiert ja Werte aus openWB/mqtt/typ/id/... Topics in die entsprechenden Topics in openWB/typ/id/....
Wenn diese Topics im mqtt Bereich nicht gesetzt sind, werden die Topics in openWB/typ/id/... mit null Values versorgt.
Einige dieser null Values sind dann in der weiteren Verarbeitung der Grund für Fehler.

Weiter ist zu sehen, dass der gesamte Bereich openWB/mqtt/# beim Neustart gelöscht wird.

Abhilfe kann man schaffen, indem alle notwendigen Topics ( d.h. die Fehler in main.log erzeugen) in openWB/mqtt/typ/id/... mit sinnvollen Werten gepublished werden.
Hallo ,

sobald ich ein Topic in die neuen Topic´s ändere in NodeRed kommt in allen Modulen folgende Meldung
Modulmeldung: <class 'TypeError'> ('must be real number, not NoneType',)
Obwohgl ich das nur einem Datenpunkt eine Moduls geändert habe .

Hier das Mqtt Log
https://paste.openwb.de/eTgnJb5s5gk9HfB

Und das Main Log
https://paste.openwb.de/2hYzl4SrpQS3V6p


Wenn ich das wieder auf das Alte Topic ändere passiert nichts !
Nur wenn ich ein Backup einspiele und den Topic wieder ändere geht wieder .

Ich hoffe das ist nun genug Input .
War nur in der Arbeit und konnte nicht drauf zugreifen .


Ich finde in dem Log nur immer z.b

2025-04-24 17:35:51,552 - {modules.common.fault_state:49} - {ERROR:device0} - BYD HVS 30,6 kWh Garage: FaultState FaultStateLevel.ERROR, FaultStr <class 'TypeError'> ('must be real number, not NoneType',), Traceback:
Traceback (most recent call last):
File "/var/www/html/openWB/packages/modules/common/configurable_device.py", line 39, in __call__
self.__updater(components_list)
File "/var/www/html/openWB/packages/modules/devices/generic/mqtt/device.py", line 41, in update_components
component.update(received_topics)
File "/var/www/html/openWB/packages/modules/devices/generic/mqtt/counter.py", line 39, in update
imported, exported = self.sim_counter.sim_count(power)
File "/var/www/html/openWB/packages/modules/common/simcount/_simcounter.py", line 14, in sim_count
self.data = sim_count(power, self.topic, self.data, self.prefix)
File "/var/www/html/openWB/packages/modules/common/simcount/_simcount.py", line 34, in sim_count
if math.isnan(power_present):
TypeError: must be real number, not NoneType



2025-04-24 17:16:33,540 - {control.prepare:39} - {ERROR:MainThread} - Fehler im Prepare-Modul

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 4:24 pm
von rleidner
Meth hat geschrieben: Do Apr 24, 2025 3:38 pm sobald ich ein Topic in die neuen Topic´s ändere in NodeRed kommt in allen Modulen folgende Meldung
Modulmeldung: <class 'TypeError'> ('must be real number, not NoneType',)
Obwohgl ich das nur einem Datenpunkt eine Moduls geändert habe .
Ich habe (eher zufällig) ALLE Datenpunkte eines Gerätes in einem Rutsch umgestellt (Topic-Prefix als var in NodeRed).
Teils alte und teils neue Topics dürfte nicht funktionieren.
Im Code (z.B. modules/devices/generic/mqtt/counter.py) wird bei Empfang eines Datenpunktes des Zählers aus openWB/mqtt/... der gesamte Datensatz dort erwartet und propagiert.

Code: Alles auswählen

    def update(self, received_topics: Dict) -> None:
        currents = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/currents")
        power = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power")
        frequency = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/frequency")
        power_factors = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power_factors")
        powers = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/powers")
        voltages = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/voltages")
        if (received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported") and
                received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")):
            imported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported")
            exported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")
        else:
            imported, exported = self.sim_counter.sim_count(power)

        counter_state = CounterState(
            currents=currents,
            imported=imported,
            exported=exported,
            power=power,
            frequency=frequency,
            power_factors=power_factors,
            powers=powers,
            voltages=voltages
        )
        self.store.set(counter_state)
Also versuch mal "alles oder nichts".

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 4:28 pm
von Meth
Ich versuche es mal .
Stimmt kann sein das ich nicht immer alle (sind ja doch bestimmt 50) geändert habe bevor ich deploy gerückt habe :-D

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 4:51 pm
von Meth
rleidner hat geschrieben: Do Apr 24, 2025 4:24 pm
Meth hat geschrieben: Do Apr 24, 2025 3:38 pm sobald ich ein Topic in die neuen Topic´s ändere in NodeRed kommt in allen Modulen folgende Meldung
Modulmeldung: <class 'TypeError'> ('must be real number, not NoneType',)
Obwohgl ich das nur einem Datenpunkt eine Moduls geändert habe .
Ich habe (eher zufällig) ALLE Datenpunkte eines Gerätes in einem Rutsch umgestellt (Topic-Prefix als var in NodeRed).
Teils alte und teils neue Topics dürfte nicht funktionieren.
Im Code (z.B. modules/devices/generic/mqtt/counter.py) wird bei Empfang eines Datenpunktes des Zählers aus openWB/mqtt/... der gesamte Datensatz dort erwartet und propagiert.

Code: Alles auswählen

    def update(self, received_topics: Dict) -> None:
        currents = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/currents")
        power = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power")
        frequency = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/frequency")
        power_factors = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power_factors")
        powers = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/powers")
        voltages = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/voltages")
        if (received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported") and
                received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")):
            imported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported")
            exported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")
        else:
            imported, exported = self.sim_counter.sim_count(power)

        counter_state = CounterState(
            currents=currents,
            imported=imported,
            exported=exported,
            power=power,
            frequency=frequency,
            power_factors=power_factors,
            powers=powers,
            voltages=voltages
        )
        self.store.set(counter_state)
Also versuch mal "alles oder nichts".
Genau das gleiche .

Im Mqtt Browser kommen aber alle Topics schön an
Nur übernommen werden sie Anscheinen nicht

Hier die Logs
Main
https://paste.openwb.de/v9By4pPFwL7v1JI

Mqtt
https://paste.openwb.de/EDFIWzU8Y8djksy

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 5:53 pm
von rleidner
Das scheint mit den IO Modul/Dimmkit zusammenzuhängen.
Da bin ich leider raus.

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 6:06 pm
von Meth
Ok danke !
Ich habe das mal rauskonfiguriert .
Bringt auch nix

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 6:37 pm
von Meth
rleidner hat geschrieben: Do Apr 24, 2025 4:24 pm
Meth hat geschrieben: Do Apr 24, 2025 3:38 pm sobald ich ein Topic in die neuen Topic´s ändere in NodeRed kommt in allen Modulen folgende Meldung
Modulmeldung: <class 'TypeError'> ('must be real number, not NoneType',)
Obwohgl ich das nur einem Datenpunkt eine Moduls geändert habe .
Ich habe (eher zufällig) ALLE Datenpunkte eines Gerätes in einem Rutsch umgestellt (Topic-Prefix als var in NodeRed).
Teils alte und teils neue Topics dürfte nicht funktionieren.
Im Code (z.B. modules/devices/generic/mqtt/counter.py) wird bei Empfang eines Datenpunktes des Zählers aus openWB/mqtt/... der gesamte Datensatz dort erwartet und propagiert.

Code: Alles auswählen

    def update(self, received_topics: Dict) -> None:
        currents = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/currents")
        power = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power")
        frequency = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/frequency")
        power_factors = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/power_factors")
        powers = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/powers")
        voltages = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/voltages")
        if (received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported") and
                received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")):
            imported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/imported")
            exported = received_topics.get(f"openWB/mqtt/counter/{self.component_config.id}/get/exported")
        else:
            imported, exported = self.sim_counter.sim_count(power)

        counter_state = CounterState(
            currents=currents,
            imported=imported,
            exported=exported,
            power=power,
            frequency=frequency,
            power_factors=power_factors,
            powers=powers,
            voltages=voltages
        )
        self.store.set(counter_state)
Also versuch mal "alles oder nichts".
Weil du schreibst "alles oder nichts"
Bei einem "Hausverbrauchtszähler" per Mqtt gebe ich ja nur die
openWB/set/mqtt/counter/1/get/power
Den Rest nicht .
Und denn ich en Konfiguriere kommt die Fehlermeldung bei alle Modulen

Re: Rückmeldungen software2 2.1.8-Alpha.1

Verfasst: Do Apr 24, 2025 7:17 pm
von rleidner
Nach dem code des mqtt Counter Moduls werden auch die anderen Werte benötigt.
Nur imported, exported sind optional; wenn nicht vorhanden, dann sim-counter.

Ich habe im Testsystem 2 mqtt Ladepunkte, die von der "produktiven" openWB per NR übernommen werden.
Da hatte ich auch einige Fehler bis ich alle Datenpunkte mit sinnvollen Werten beschrieben hatte.
Da wo ich keine Werte hatte, habe ich 0 geschrieben.