NEWS
Homematic RPC und Gerätebeschreibungen
-
Ich weiß nicht, was in den letzten Tagen durch verschiedene Updates in meiner CCU3 passiert ist, aber ich war mir ziemlich sicher, dass vor einer Woche in den Datenpunkten Homematic-RPC-Adapter des ioBrokers die Beschreibungen der Objekte abgelegt waren. Ich habe ein Skript, das über alle Zustände iteriert und wenn sich ein Objekt nicht mehr seit einer gewissen Zeit gemeldet hat, bekomme ich eine Push-Nachricht. Das Skript machte etwa dieses:
const description = obj?.common?.name || `Keine Beschreibung für ${device}`; sendNotification(`${description} nicht erreichbar`, `Das Gerät ${description} sendete seit ` + timeoutMillis/3600000 + " Stunden kein Signal mehr.");
Und in der Nachricht stand dann definitiv sowas wie "Fensterkontakt Wohnzimmer". Sonst wäre die Nachricht ja relativ sinnlos. Aber jetzt bekomme ich statt der Beschreibung die Seriennummer geliefert, also z. B. "REQ0123456". Was ziemlich unpraktisch ist. Beim ReGaHSS-Adapter ist noch alle sin Ordnung, da stehen die Beschreibungen an den Objekten dran.
Weiß jemand, was und wo sich da etwas geändert hat und am besten, wie ich den alten Zustand wieder hinbekomme? Ich hab XML-RPC mal von 2.3 wieder auf 2.1 zurückgedreht, aber das half nicht.
Adapter ist Version 2.0.2.
-
@smartstuffcoyote sagte: Das Skript machte etwa dieses:
Das kann nur ein Auszug aus dem Skript sein. Was sollen die Fragezeichen in obj?.common?.name?
Wie sehen die Gerätenamen im Tab "Objekte" aus?
Hast du die hm-rpc-Instanz neu gestartet mit dem Haken bei "Geräte neu einlesen"? Die in der CCU vergebenen Namen werden von der hm-rega-Instanz verwaltet. -
@paul53 Na logisch ist das nur ein Auszug, ich wollte nur zeigen, wie ich an die Informationen aus den Datenpunkten kam. Das Skript selber spielt bei der Frage, warum die Datenpunkte die Namen nicht haben, nun wirklich keine Rolle.
Die Fragezeichen sind optional chaining, so eine Art impliziter Null-Check. Wenn es eine Property nicht gibt, ist der Wert halt "undefined" anstatt dass dir das Skript um die Ohren fliegt.
Danke für den Hinweis mit dem Rega-Adapter. Ich habe da unter "Synchonisiere" sichergestellt, dass "Namen" aktiviert ist und den Adapter neu gestartet. Danach hab ich (nochmal) im hm-rpc.0 sichergestellt, dass "Geräte bei Adapterstart nicht löschen" deaktiviert und "Geräte neu einlesen " aktiviert ist und hab ihn gespeichert und neu gestartet. Brachte aber nichts. Im Datenbaum steht in der Spalte Name für z. B. Objekt hm-rpc.0.QED0123456 "QED0123456". hm.rpc.0.BidCoS-RF heißt "BidCoS-RF". hm-rega.0.14668 heißt dagegen "System_Duty Cycle".
ABER:
im Log sehe ich eine Meldung "Cannot parse answer for devices: {"QED0123456":{"Name":"BM%20Au%DFen","Interface":"BidCos-RF"}..." vom Rega-Adapter. Das betrifft glaube ich die HmIP-Geräte. Mal schauen, was passiert, wenn ich die beim Rega-Adapter rausnehme.Edit: nix passiert. Der Fehler kommt trotzdem. Ich hab mal das 'ß' aus dem Namen des Bewegungsmelders (und seines einen Kanals) genommen. Ändert aber nichts (außer dass kein %DF mehr im Text auftaucht), das kann nicht das Problem gewesen sein. Wenn ich das JSON validiere, scheint das Problem eine fehlende letzte geschweifte Klammer zu sein.
hm-rega.0 2025-01-04 22:00:30.053 error Cannot parse answer for devices: {"QED0123456":{"Name":"BM%20Aussen","Interface":"BidCos-RF"}, "QED0123456:0":{"Name":"BM%20Aussen%3A0","Interface":"BidCos-RF"}, "QED0123456:1":{"Name":"BM%20Aussen%3A1","Interface":"BidCos-RF"}, "BidCoS-RF":{"Name":"CCU3","Interface":"BidCos-RF"}, "BidCoS-RF:0":{"Name":"CCU3%3A0","Interface":"BidCos-RF"}, "BidCoS-RF:1":{"Name":"Heizungsschalter%3A1","Interface":"BidCos-RF"}, "BidCoS-RF:2":{"Name":"HM-RCV-50%20BidCoS-RF%3A2","Interface":"BidCos-RF"}, "BidCoS-RF:3":{"Name":"HM-RCV-50%20BidCoS-RF%3A3","Interface":"BidCos-RF"}, "BidCoS-RF:4":{"Name":"HM-RCV-50%20BidCoS-RF%3A4","Interface":"BidCos-RF"}, "BidCoS-RF:5":{"Name":"HM-RCV-50%20BidCoS-RF%3A5","Interface":"BidCos-RF"}, "BidCoS-RF:6":{"Name":"HM-RCV-50%20BidCoS-RF%3A6","Interface":"BidCos-RF"}, "BidCoS-RF:7":{"Name":"HM-RCV-50%20BidCoS-RF%3A7","Interface":"BidCos-RF"}, "BidCoS-RF:8":{"Name":"HM-RCV-50%20BidCoS-RF%3A8","Interface":"BidCos-RF"}, "BidCoS-RF:9":{"Name":"HM-RCV-50%20BidCoS-RF%3A9","Interface":"BidCos-RF"}, "BidCoS-RF:10":{"Name":"HM-RCV-50%20BidCoS-RF%3A10","Interface":"BidCos-RF"}, "BidCoS-RF:11":{"Name":"HM-RCV-50%20BidCoS-RF%3A11","Interface":"BidCos-RF"}, "BidCoS-RF:12":{"Name":"HM-RCV-50%20BidCoS-RF%3A12","Interface":"BidCos-RF"}, "BidCoS-RF:13":{"Name":"HM-RCV-50%20BidCoS-RF%3A13","Interface":"BidCos-RF"}, "BidCoS-RF:14":{"Name":"HM-RCV-50%20BidCoS-RF%3A14","Interface":"BidCos-RF"}, "BidCoS-RF:15":{"Name":"HM-RCV-50%20BidCoS-RF%3A15","Interface":"BidCos-RF"}, "BidCoS-RF:16":{"Name":"HM-RCV-50%20BidCoS-RF%3A16","Interface":"BidCos-RF"}, "BidCoS-RF:17":{"Name":"HM-RCV-50%20BidCoS-RF%3A17","Interface":"BidCos-RF"}, "BidCoS-RF:18":{"Name":"HM-RCV-50%20BidCoS-RF%3A18","Interface":"BidCos-RF"}, "BidCoS-RF:19":{"Name":"HM-RCV-50%20BidCoS-RF%3A19","Interface":"BidCos-RF"}, "BidCoS-RF:20":{"Name":"HM-RCV-50%20BidCoS-RF%3A20","Interface":"BidCos-RF"}, "BidCoS-RF:21":{"Name":"HM-RCV-50%20BidCoS-RF%3A21","Interface":"BidCos-RF"}, "BidCoS-RF:22":{"Name":"HM-RCV-50%20BidCoS-RF%3A22","Interface":"BidCos-RF"}, "BidCoS-RF:23":{"Name":"HM-RCV-50%20BidCoS-RF%3A23","Interface":"BidCos-RF"}, "BidCoS-RF:24":{"Name":"HM-RCV-50%20BidCoS-RF%3A24","Interface":"BidCos-RF"}, "BidCoS-RF:25":{"Name":"HM-RCV-50%20BidCoS-RF%3A25","Interface":"BidCos-RF"}, "BidCoS-RF:26":{"Name":"HM-RCV-50%20BidCoS-RF%3A26","Interface":"BidCos-RF"}, "BidCoS-RF:27":{"Name":"HM-RCV-50%20BidCoS-RF%3A27","Interface":"BidCos-RF"}, "BidCoS-RF:28":{"Name":"HM-RCV-50%20BidCoS-RF%3A28","Interface":"BidCos-RF"}, "BidCoS-RF:29":{"Name":"HM-RCV-50%20BidCoS-RF%3A29","Interface":"BidCos-RF"}, "BidCoS-RF:30":{"Name":"HM-RCV-50%20BidCoS-RF%3A30","Interface":"BidCos-RF"}, "BidCoS-RF:31":{"Name":"HM-RCV-50%20BidCoS-RF%3A31","Interface":"BidCos-RF"}, "BidCoS-RF:32":{"Name":"HM-RCV-50%20BidCoS-RF%3A32","Interface":"BidCos-RF"}, "BidCoS-RF:33":{"Name":"HM-RCV-50%20BidCoS-RF%3A33","Interface":"BidCos-RF"}, "BidCoS-RF:34":{"Name":"HM-RCV-50%20BidCoS-RF%3A34","Interface":"BidCos-RF"}, "BidCoS-RF:35":{"Name":"HM-RCV-50%20BidCoS-RF%3A35","Interface":"BidCos-RF"}, "BidCoS-RF:36":{"Name":"HM-RCV-50%20BidCoS-RF%3A36","Interface":"BidCos-RF"}, "BidCoS-RF:37":{"Name":"HM-RCV-50%20BidCoS-RF%3A37","Interface":"BidCos-RF"}, "BidCoS-RF:38":{"Name":"HM-RCV-50%20BidCoS-RF%3A38","Interface":"BidCos-RF"}, "BidCoS-RF:39":{"Name":"HM-RCV-50%20BidCoS-RF%3A39","Interface":"BidCos-RF"}, "BidCoS-RF:40":{"Name":"HM-RCV-50%20BidCoS-RF%3A40","Interface":"BidCos-RF"}, "BidCoS-RF:41":{"Name":"HM-RCV-50%20BidCoS-RF%3A41","Interface":"BidCos-RF"}, "BidCoS-RF:42":{"Name":"HM-RCV-50%20BidCoS-RF%3A42","Interface":"BidCos-RF"}, "BidCoS-RF:43":{"Name":"HM-RCV-50%20BidCoS-RF%3A43","Interface":"BidCos-RF"}, "BidCoS-RF:44":{"Name":"HM-RCV-50%20BidCoS-RF%3A44","Interface":"BidCos-RF"}, "BidCoS-RF:45":{"Name":"HM-RCV-50%20BidCoS-RF%3A45","Interface":"BidCos-RF"}, "BidCoS-RF:46":{"Name":"HM-RCV-50%20BidCoS-RF%3A46","Interface":"BidCos-RF"}, "BidCoS-RF:47":{"Name":"HM-RCV-50%20BidCoS-RF%3A47","Interface":"BidCos-RF"}, "BidCoS-RF:48":{"Name":"HM-RCV-50%20BidCoS-RF%3A48","Interface":"BidCos-RF"}, "BidCoS-RF:49":{"Name":"HM-RCV-50%20BidCoS-RF%3A49","Interface":"BidCos-RF"}, "BidCoS-RF:50":{"Name":"HM-RCV-50%20BidCoS-RF%3A50","Interface":"BidCos-RF"}, "HmIP-RCV-1":{"Name":"CCU3%20(HmIP)","Interface":"HmIP-RF"}, "HmIP-RCV-1:0":{"Name":"CCU3%20(HmIP)%3A0","Interface":"HmIP-RF"}, "HmIP-RCV-1:1":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A1","Interface":"HmIP-RF"}, "HmIP-RCV-1:2":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A2","Interface":"HmIP-RF"}, "HmIP-RCV-1:3":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A3","Interface":"HmIP-RF"}, "HmIP-RCV-1:4":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A4","Interface":"HmIP-RF"}, "HmIP-RCV-1:5":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A5","Interface":"HmIP-RF"}, "HmIP-RCV-1:6":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A6","Interface":"HmIP-RF"}, "HmIP-RCV-1:7":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A7","Interface":"HmIP-RF"}, "HmIP-RCV-1:8":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A8","Interface":"HmIP-RF"}, "HmIP-RCV-1:9":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A9","Interface":"HmIP-RF"}, "HmIP-RCV-1:10":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A10","Interface":"HmIP-RF"}, "HmIP-RCV-1:11":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A11","Interface":"HmIP-RF"}, "HmIP-RCV-1:12":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A12","Interface":"HmIP-RF"}, "HmIP-RCV-1:13":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A13","Interface":"HmIP-RF"}, "HmIP-RCV-1:14":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A14","Interface":"HmIP-RF"}, "HmIP-RCV-1:15":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A15","Interface":"HmIP-RF"}, "HmIP-RCV-1:16":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A16","Interface":"HmIP-RF"}, "HmIP-RCV-1:17":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A17","Interface":"HmIP-RF"}, "HmIP-RCV-1:18":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A18","Interface":"HmIP-RF"}, "HmIP-RCV-1:19":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A19","Interface":"HmIP-RF"}, "HmIP-RCV-1:20":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A20","Interface":"HmIP-RF"}, "HmIP-RCV-1:21":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A21","Interface":"HmIP-RF"}, "HmIP-RCV-1:22":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A22","Interface":"HmIP-RF"}, "HmIP-RCV-1:23":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A23","Interface":"HmIP-RF"}, "HmIP-RCV-1:24":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A24","Interface":"HmIP-RF"}, "HmIP-RCV-1:25":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A25","Interface":"HmIP-RF"}, "HmIP-RCV-1:26":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A26","Interface":"HmIP-RF"}, "HmIP-RCV-1:27":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A27","Interface":"HmIP-RF"}, "HmIP-RCV-1:28":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A28","Interface":"HmIP-RF"}, "HmIP-RCV-1:29":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A29","Interface":"HmIP-RF"}, "HmIP-RCV-1:30":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A30","Interface":"HmIP-RF"}, "HmIP-RCV-1:31":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A31","Interface":"HmIP-RF"}, "HmIP-RCV-1:32":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A32","Interface":"HmIP-RF"}, "HmIP-RCV-1:33":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A33","Interface":"HmIP-RF"}, "HmIP-RCV-1:34":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A34","Interface":"HmIP-RF"}, "HmIP-RCV-1:35":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A35","Interface":"HmIP-RF"}, "HmIP-RCV-1:36":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A36","Interface":"HmIP-RF"}, "HmIP-RCV-1:37":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A37","Interface":"HmIP-RF"}, "HmIP-RCV-1:38":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A38","Interface":"HmIP-RF"}, "HmIP-RCV-1:39":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A39","Interface":"HmIP-RF"}, "HmIP-RCV-1:40":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A40","Interface":"HmIP-RF"}, "HmIP-RCV-1:41":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A41","Interface":"HmIP-RF"}, "HmIP-RCV-1:42":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A42","Interface":"HmIP-RF"}, "HmIP-RCV-1:43":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A43","Interface":"HmIP-RF"}, "HmIP-RCV-1:44":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A44","Interface":"HmIP-RF"}, "HmIP-RCV-1:45":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A45","Interface":"HmIP-RF"}, "HmIP-RCV-1:46":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A46","Interface":"HmIP-RF"}, "HmIP-RCV-1:47":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A47","Interface":"HmIP-RF"}, "HmIP-RCV-1:48":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A48","Interface":"HmIP-RF"}, "HmIP-RCV-1:49":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A49","Interface":"HmIP-RF"}, "HmIP-RCV-1:50":{"Name":"HmIP-RCV-50%20HmIP-RCV-1%3A50","Interface":"HmIP-RF"} hm-rega.0 2025-01-04 22:00:26.400 info time difference local-ccu 0s
Die fehlende '}' ist definitiv kein Kopierfehler. Kann höchstens sein, dass das nicht mitprotokolliert wird. Ich habe jetzt mal das FW-Update der CCU3 zurückgedreht. Wenn es an der fehlenden Klammer liegt, muss es ja von Sender-Seite kommen. Änderte aber auch nichts.
Auch die Batteriewarnung, die der ioBroker ja jetzt seit einiger Zeit ausspuckt, nennt nur noch "QED0123456", nicht mehr den Namen.
-
Es wird noch spannender. Ich hab jetzt mal in die Tiefen des Objektbaums geschaut: da gibts Datenpunkte, die es "früher" nicht gab - und die haben die richtigen Namen. Alle anderen Datenpunkte haben den falschen Namen.
Auch die falschen wurden von "hm-rega" gesetzt.
Ich hab jetzt einfach mal die Kanäle 0 und 1 des HM-Sec-SCo vom Bad gelöscht. Nach einem Neustart von hm-rpc.0 mit Neuladen der Objekte sah es wieder sauber aus (nur die Namen waren weiterhin die Geräte-IDs). Nach einem Neustart des hm-rega kamen die "*_ALARM"-Datenpunkte zurück. Diesmal allerdings auch mit der Geräte-ID im Namen, also statt "FK Bad:0.CONFIG_PENDING" nun "QED0123456:0.CONFIG_PENDING".
Das muss in der Tat irgendwas mit dem hm-rega zu tun haben. Oder eben mit der CCU3.
-
@smartstuffcoyote sagte in Homematic RPC und Gerätebeschreibungen:
scheint das Problem eine fehlende letzte geschweifte Klammer zu sein.
und der Rest ist vollständig?
oder bricht das JSON vor einem unzulässigen Zeichen ab und der gesamte Rest incl. schließender Klammer fehlt? -
@Homoran Naja, woher soll.ich wissen, ob da noch was kommen sollte? Das JSON wird valide, wenn ich eine geschweifte Klammer hinzufüge, und wenn da noch was fehlt, müsste das nächste Zeichen Whitespace oder ein Komma sein, ansonsten wäre die JSON-Erstellung schrott.
-
@smartstuffcoyote sagte in Homematic RPC und Gerätebeschreibungen:
müsste das nächste Zeichen Whitespace oder ein Komma sein, ansonsten wäre die JSON-Erstellung schrott.
und genau das ist möglicherweise passiert.
@smartstuffcoyote sagte in Homematic RPC und Gerätebeschreibungen:
woher soll.ich wissen, ob da noch was kommen sollte?
gute Frage!
ich weiß jetzt nicht in welcher Reihenfolge die Elemente sind.
Vielleicht lässt sich daran erkennen was als nächstes kommen müsste -
@homoran Als nächstes käme in der Geräteliste ein HM-Sec-SCo namens "FK Bad" bzw. "FK Bad:1" (fängt auch mit BM Außen an und dann dir CCU-Komponenten). Ich vermute immer mehr, so wie du vermutlich auch, dass der Fehler irgendwo CCU-seitig ist und der Rega deswegen auf die Nase fällt.
Vielleicht finde ich in den Logs auf der CCU irgendwas.
-
@smartstuffcoyote sagte in Homematic RPC und Gerätebeschreibungen:
du vermutlich auch, dass der Fehler irgendwo CCU-seitig ist
ja, und wenn es da ein nicht zulässiges Zeichen in irgendeiner Bezeichnung ist.
-
@homoran Ich hab keine Geräte umbenannt oder neue installiert. Auch der "BM außen" hieß schon immer so. Ansonsten hab ich Umlaute in den Namen, aber das wars.
Mal schauen, was.die Logs sagen. Bin grad unterwegs.
-
In den Logs sehe ich jetzt nichts auffälliges. Außer der Beschwerde darüber, dass der Aufruf vom hm-rega so lange zu beantworten dauert (7-9 Sekunden blockierter Thread). Das dürfte aber okay sein und verschwindet dann irgendwann.
Das Debug-Logging vom hm-rega-Adapter zeigt auch bei den Rohdaten, dass das JSON einfach aufhört. Einen Weg, den Call des Adapters nachzuvollziehen, hab ich noch nicht gefunden - kennt den jemand? Ich mag grad nicht versuchen, den Quellcode des Adapters zu verstehen. Ich hab da eh keine Ahnung von.
Ich hab jetzt auf Raspberrymatic umgestellt. Das Verhalten ist unverändert. WTF.