Ich habe seit einiger Zeit Probleme, wenn ich den Fensterstatus WINDOW_STATE
in meinen Wandthermostaten HmIP-WTH(2) programmatisch per Node-RED setze möchte. Ich erhalte sporadisch die Fehlermeldung:
rpc > HmIP-RF setValue ["0003156990B941:1","WINDOW_STATE",0] < Error: XML-RPC fault: Generic error
Da das Setzen bis vor ein paar Monaten problemlos möglich war, vermute ich eine Ungereimtheit in der CCU-Firmware oder den Wandthermostaten. Thermostate, die mit HmIP-Sensoren per Direktverknüpfung arbeiten, sind nicht betroffen. Nach einem CCU*-Neustart funktioniert es dann ein paar Tage auch wieder ohne Auffälligkeiten.
Inhalt
Mögliche Ursachen
Sucht man nach diesem Fehler, kommen verschiedene Ursachen in Betracht:
- zu viele Funkpakete, so dass es zu Kollisionen kommt, falls man viele Geräte auf einmal anspricht
- hohe Auslastung auf der CCU, so dass es zu einem Timeout kommt,
- falscher Zusammenbau der NodeRED-Nachricht,
- schlechte Spannungsversorgung, wenn man einen Rasperry PI nutzt
Lösungswege
- Falls man viele Geräte mit einmal ansprechen möchte, so kann man eine zufällige Verzögerung mittels delay-Node einbauen.
- Kommt das Nachrichtenobjekt bereits von einem anderen CCU-Gerät, so enthält es viele Daten, die beim Zielgerät unerwünschtes Verhalten provozieren. Abhilfe schafft ein Filter, der nur den gewünschten Payload setzt. Realisierbar ist das über ein function-Node, der als einzige Zeile den Payload setzt, bspw.
return {payload: destinationStatus}
- Austausch des Netzteils gegen ein RPi*-Netzteil mit 5,1V und benötigter Stromstärke. Ladegeräte sind ungeeignet für den Betrieb eines RPis, da sie keine stabile Ausgangsspannung liefern.
- Kontrolle der Spannungsversorgung der Wandthermostate*. Eine zu niedrige Spannung kann auch eine Ursache sein. Vor allem, wenn Akkus eingesetzt werden.
- Reduzierung der Kommunikation des Wandthermostats, um den Duty Cycle gering zu halten. Dazu habe ich die zyklische Statusmeldung deaktiviert. Ebenso bei den angeschlossenen Heizkörperthermostaten.
Workaround
Leider waren alle oben vorgeschlagenen Lösungen bei mir wenig von Erfolg gekrönt. Was ich außerdem noch probiert habe:
- Ich habe die Thermostate und auch ein HmIP-WTH gegen eine HmIP-WTH-2 ausgetauscht.
- Die Funkhardware wurde gewechselt: das eingesetzte HM-RF-MOD mit externer Antenne habe ich gegen den HmIP-RFUSB*-Stick an einer USB-Verlängerung getauscht.
- Ein neuer RPi 4* 2GB hat den bisher verwendeten RPi* 3B abgelöst. Leider traten auch hier nach wenigen Tagen die selben Symptome auf.
- Ein Programm in der CCU half leider in dem Fall auch nicht:
Da der Fehler bei mir leider immer wieder auftritt, habe ich es programmatisch gelöst, indem ich den Status solange an das Thermostat übermittele, bis er gesetzt wurde. Ich habe beobachtet, dass ein zwischenzeitliches Setzen auf den entgegen gesetzten Status (der zweite Auslöser nach 10s) in vielen Fällen hilft.
Fazit
Ich hoffe, dass ich der wirklichen Ursache irgendwann auf die Schliche komme. Hast Du evtl. einen Tipp, was es sein könnte?
Updates
- 02.03.2022: Erweiterter Workaround