NEWS
Homematic RPC und Gerätebeschreibungen
-
@jojo58 sagte: in hm-rega ist bei HM IP die hm-rpc.1 eingetragen
... und im Tab "SYNCHRONISIERE" ist Namen angehakt?
-
Jau...
-
Das ist bei mir auch angehakt. Ab sogar abgehakt und was anderes (Räume) angehakt, alles neu geladen (seitdem hab ich die Räume wieder) und dann wieder zurückgedreht und die Synchronisation der Namen wieder gesetzt.
Hast du auch die Fehlermeldung in den Protokollen?
-
Ich habe gestern bei mir einige Geräte anderen Räumen zugewiesen und andere Namen vergeben.
Danach den RPC und Rega neu gestartet. Zu Beginn waren auch nur die IDs der Geräte da, hat ca. 5 Minuten gedauert und dann kamen nach und nach die Namen im iob an.
@JoJo58 was für ein Gerät wurde denn wie zugefügt? Namen, Gewerk usw.
-
Guten Morgen, ich habe Abends selten Zeit mich an den PC zu setzen, daher erst jetzt die Antwort.
Ich hatte eine Fehlermeldung vom hm-rega wegen einem Gerät:
hm-rega.0 2025-01-08 09:06:50.012 info update favorites to enum.favorites hm-rega.0 2025-01-08 09:06:50.000 info added/updated 1 objects hm-rega.0 2025-01-08 09:06:49.901 info Updated all datapoints hm-rega.0 2025-01-08 09:06:48.615 info request state values hm-rega.0 2025-01-08 09:06:48.614 error Cannot parse answer for devices: {"0008DD47B328D6":{"Name":"DA-Buero","Interface":"HmIP-RF"}, "0008DD47B328D6:0":{"Name":"DA-Buero%3A0","Interface":"HmIP-RF"}, "0008DD47B328D6:1":{"Name":"DA-Buero%3A1","Interface":"HmIP-RF"}, "0008DD47B328D6:2":{"Name":"DA-Buero%3A2","Interface":"HmIP-RF"}, "0008DD47B328D6:3":{"Name":"DA-Buero%3A3","Interface":"HmIP-RF"}, "0008DD47B328D6:4":{"Name":"DA-Buero%3A4","Interface":"HmIP-RF"}, "0008DD47B328D6:5":{"Name":"DA-Buero%3A5","Interface":"HmIP-RF"}, "0008DD47B328D6:6":{"Name":"DA-Buero%3A6","Interface":"HmIP-RF"}, "0008DD47B328D6:7":{"Name":"DA-Buero%3A7","Interface":"HmIP-RF"} hm-rega.0 2025-01-08 09:06:48.301 info time difference local-ccu 0s hm-rega.0 2025-01-08 09:06:48.241 info ReGaHSS 192.168.1.10 up hm-rega.0 2025-01-08 09:06:48.115 info subscribe hm-rpc.0.BidCoS-RF.50.PRESS_SHORT hm-rega.0 2025-01-08 09:06:47.543 info starting. Version 5.1.0 in /opt/iobroker/node_modules/iobroker.hm-rega, node: v20.18.1, js-controller: 7.0.6 hm-rega.0 2025-01-08 09:06:43.283 info terminating hm-rega.0 2025-01-08 09:06:42.796 info Terminated (ADAPTER_REQUESTED_TERMINATION): Without reason hm-rega.0 2025-01-08 09:06:42.795 info terminating hm-rega.0 2025-01-08 09:06:42.781 info Got terminate signal TERMINATE_YOURSELF
Zuerst dachte ich an den Umlaut, also in der CCU3 umbenannt, gleiches Problem, nur etwas andere Meldung.
Dann war ich eben mal mutig und habe das Gerät aus der CCU3 gelöscht und auf Werkseinstellungen setzen lassen. Der HM-RPC hat das auch sofort mitbekommen und das Gerät aus den Objekten gelöscht. Dann die Instanzen wieder neu gestartet und vorher den Haken bei "Geräte neu einlösen" gesetzt, aber es kamen keine Namen.
Jetzt kommt aber eine andere Meldung:hm-rega.0 2025-01-08 09:24:54.017 error Cannot parse answer for devices: {
Auch hier hört die Meldung nach der geschweiften Klammer auf, wie @SmartStuffCoyote schon geschrieben hatte.
Also das Gerät wieder neu angelernt und konfiguriert, die Instanzen neu gestartet und das Gerät ist wieder in den Objekten zu sehen und ich kann es über den IOB steuern. Aber eben alles ohne Namen.
@wendy2702 Ich hatte gestern nur eine HmIP-PSM-2 Steckdose mit Namen "SD-22" hinzugefügt. Raum ist "Bad" und Gewerk "Energiemanagement". Also alles Standards.
-
Eigentlich gibt es in meinen Augen nur zwei Möglichkeiten: entweder liest der Adapter den Datenstrom falsch aus und kappt das letzte Zeichen weg, oder CCU-seitig ist irgendetwas kaputtgegangen was das JSON nicht richtig sendet - und keiner bemerkt es, weil man die Änderung ja doch nur eher zufällig mitbekommt (wenn an einen ioBroker o. ä. einsetzt und wenn sich für die Namen der Geräte interessiert und wenn es dabei irgendwo eine Änderung gab).
-
@smartstuffcoyote sagte in Homematic RPC und Gerätebeschreibungen:
Eigentlich gibt es in meinen Augen nur zwei Möglichkeiten:...
Sehe ich auch so, auf meinem 2. IoB sind auch alle Namen noch da, bis auf das neue Gerät von gestern und nun auch dem neu angelernten Dimmer von heute.
Wer kann denn da weiterhelfen? Ich glaube nämlich nicht, das wir beide die einzigen bleiben werden. -
-
Ich hab die original CCU3 mit der Firmware 3.79.6. Im Log der CCU ist nichts auffälliges zu sehen, nur die Standardmeldungen.
Ich hab die Geräte nochmal neu einlesen lassen und dann den Zeitpunkt der Fehlermeldung von hm-rega mit der CCU abgeglichen und es gibt nichts auf der CCU dazu. -
@jojo58 sagte in Homematic RPC und Gerätebeschreibungen:
Im Log der CCU ist nichts auffälliges zu sehen, nur die Standardmeldungen.
welche Einstellungen hast du da?
"alles loggen"? -
Nicht alles:
-
Das steht in den Logs der CCU, wenn ich die Geräte neu einlese:
2025-01-08 17:16:17,207 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-1] (un)registerCallback on LegacyServiceHandler called from url: http://192.168.1.14:42010 2025-01-08 17:16:17,208 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-1] Removed InterfaceId: vm-iobroker:hm-rpc.1:102bbe7a908a5aedbdd8e90fda48f5f1 2025-01-08 17:16:23,416 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-4] (un)registerCallback on LegacyServiceHandler called from url: http://192.168.1.14:42010 2025-01-08 17:16:23,419 de.eq3.cbcs.legacy.bidcos.rpc.internal.LegacyBackendNotificationHandler INFO [vm-iobroker:hm-rpc.1:5353a4e9980d1140e891af317a25bf8b_WorkerPool-0] SYSTEM: LegacyBackendNotificationHandler Verticle or Worker started 2025-01-08 17:16:23,420 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vm-iobroker:hm-rpc.1:5353a4e9980d1140e891af317a25bf8b_WorkerPool-0] init finished 2025-01-08 17:16:23,421 de.eq3.cbcs.legacy.bidcos.rpc.internal.InterfaceInitializer INFO [vert.x-worker-thread-2] Added InterfaceId: vm-iobroker:hm-rpc.1:5353a4e9980d1140e891af317a25bf8b 2025-01-08 17:16:23,757 de.eq3.cbcs.legacy.bidcos.rpc.internal.DeviceUtil INFO [vert.x-worker-thread-2] updateDevicesForClient vm-iobroker:hm-rpc.1:5353a4e9980d1140e891af317a25bf8b -> 263 device addresses will be added 2025-01-08 17:16:30,390 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-1] (un)registerCallback on LegacyServiceHandler called from url: http://192.168.1.14:42010 2025-01-08 17:16:30,394 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-1] Removed InterfaceId: vm-iobroker:hm-rpc.1:5353a4e9980d1140e891af317a25bf8b 2025-01-08 17:16:37,179 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vert.x-worker-thread-4] (un)registerCallback on LegacyServiceHandler called from url: http://192.168.1.14:42010 2025-01-08 17:16:37,182 de.eq3.cbcs.legacy.bidcos.rpc.internal.LegacyBackendNotificationHandler INFO [vm-iobroker:hm-rpc.1:c3e9105816d5953462f53e348e2811c9_WorkerPool-0] SYSTEM: LegacyBackendNotificationHandler Verticle or Worker started 2025-01-08 17:16:37,183 de.eq3.cbcs.legacy.bidcos.rpc.LegacyServiceHandler INFO [vm-iobroker:hm-rpc.1:c3e9105816d5953462f53e348e2811c9_WorkerPool-0] init finished 2025-01-08 17:16:37,184 de.eq3.cbcs.legacy.bidcos.rpc.internal.InterfaceInitializer INFO [vert.x-worker-thread-2] Added InterfaceId: vm-iobroker:hm-rpc.1:c3e9105816d5953462f53e348e2811c9 2025-01-08 17:16:37,502 de.eq3.cbcs.legacy.bidcos.rpc.internal.DeviceUtil INFO [vert.x-worker-thread-2] updateDevicesForClient vm-iobroker:hm-rpc.1:c3e9105816d5953462f53e348e2811c9 -> 263 device addresses will be added
Ich bin jetzt kein Profi was das Lesen der Logs angeht, aber ich sehe da kein Problem, oder?
-
@jojo58 sagte: wenn ich die Geräte neu einlese:
Das Einlesen der Geräte funktionierte auch bisher. Interessanter ist das Einlesen der Namen durch Neustart von hm-rega.0.
-
Jetzt die hm-rega.0 neu gestartet und gleichzeitig zum Fehler im IOB taucht das auf der CCU auf:
Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: recvd 1535 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /rega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 72 0x0048 [1] 0 0x0000 [2] 7 0x0007 [3] 0 0x0000 [4] 16 0x0010 [ExecError():iseESPexec.cpp:12906] Jan 8 17:36:26 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: !# devices.fn 1.4 !# !# Dieses Homematic-Script gibt eine Liste aller Geraete/Kanaele als JSON String aus !# !# 3'2013-7'2013 hobbyquaker https://github.com/hobbyquaker !# string sDevId; string sChnId; Write('{'); boolean dFirst = true; foreach (sDevId, root.Devices().EnumUsedIDs()) { object oDevice = dom.GetObject(sDevId); boolean bDevReady = oDevice.ReadyConfig(); string sDevInterfaceId = oDevice.Interface(); string sDevInterface = dom.GetObject(sDevInterfaceId).Name(); if (bDevReady) { if (dFirst) { dFirst = false; } else { WriteLine(','); } Write('"' # oDevice.Address() # '":{"Name":"'); WriteURL(oDevice.Name()); Write('","Interface":"' # sDevInterface # '"}'); foreach(sChnId, oDevice.Channels()) { object oChannel = dom.GetObject(sChnId); WriteLine(','); Write('"' # oChannel.Address() # '":{"Name": Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 65 0x0041 [1] 0 0x0000 [2] 58 0x003a [3] 0 0x0000 [4] 59 0x003b [ExecError():iseESPexec.cpp:12906] Jan 8 17:36:26 ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: !# devices.fn 1.4 !# !# Dieses Homematic-Script gibt eine Liste aller Geraete/Kanaele als JSON String aus !# !# 3'2013-7'2013 hobbyquaker https://github.com/hobbyquaker !# string sDevId; string sChnId; Write('{'); boolean dFirst = true; foreach (sDevId, root.Devices().EnumUsedIDs()) { object oDevice = dom.GetObject(sDevId); boolean bDevReady = oDevice.ReadyConfig(); string sDevInterfaceId = oDevice.Interface(); string sDevInterface = dom.GetObject(sDevInterfaceId).Name(); if (bDevReady) { if (dFirst) { dFirst = false; } else { WriteLine(','); } Write('"' # oDevice.Address() # '":{"Name":"'); WriteURL(oDevice.Name()); Write('","Interface":"' # sDevInterface # '"}'); foreach(sChnId, oDevice.Channels()) { object oChannel = dom.GetObject(sChnId); WriteLine(','); Write('"' # oChannel.Address() # '":{"Name": Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: recvd 1535 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /rega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: recvd 845 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /esp/system.htm?sid=@XPttkNFWGP@&action=UpdateUI [GetSessionId():iseSession.cpp:185] Jan 8 17:36:26 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: recvd 62 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /tclrega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: recvd 774 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /rega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: command '/bin/sh -c 'echo "load tclrpc.so; puts [xmlrpc http://127.0.0.1:2001/ listBidcosInterfaces ]" | /bin/tclsh'' returned 0 [ExecProcess():iseDOMpersist.cpp:438] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: recvd 1478 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /rega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: command 'cat /VERSION | grep VERSION | tr -d VERSION=[:space:]' returned 0 [ExecProcess():iseDOMpersist.cpp:438] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: recvd 1535 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /rega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:27 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093] Jan 8 17:36:28 ccu3-webui local0.info ReGaHss: Info: start web processing, worker thread #0 {"HTTP-Listener"} [spawnNewProcess():httpListener.cpp:208] Jan 8 17:36:28 ccu3-webui local0.info ReGaHss: Info: recvd 326 bytes by web server #1 [ThreadFunction():httpServer.cpp:797] Jan 8 17:36:28 ccu3-webui local0.info ReGaHss: Info: IseSession GetSessionId from URL: /tclrega.exe [GetSessionId():iseSession.cpp:185] Jan 8 17:36:28 ccu3-webui local0.info ReGaHss: Info: http id #1 sends parsed file [ParseFileAndSendWebResponse():httpServer.cpp:2093]
Ich habe aber keine Ahnung was das jetzt heißt?
EDIT:
Am Ende der beiden ERROR Zeilen fehlt doch definitiv noch was, oder sehe ich das falsch?
-
@jojo58 Die sind halbt abgeschnitten. Aber ich habe die gleichen Symptome:
/var/log/messagesJan 8 20:30:18 ccu3 local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 72 0x0048 [1] 0 0x0000 [2] 7 0x0007 [3] 0 0x0000 [4] 16 0x0010 [ExecError():iseESPexec.cpp:12945] Jan 8 20:30:18 ccu3 local0.err ReGaHss: ERROR: ScriptRuntimeError: !# devices.fn 1.4 !# !# Dieses Homematic-Script gibt eine Liste aller Geraete/Kanaele als JSON String aus !# !# 3'2013-7'2013 hobbyquaker https://github.com/hobbyquaker !# string sDevId; string sChnId; Write('{'); boolean dFirst = true; foreach (sDevId, root.Devices().EnumUsedIDs()) { object oDevice = dom.GetObject(sDevId); boolean bDevReady = oDevice.ReadyConfig(); string sDevInterfaceId = oDevice.Interface(); string sDevInterface = dom.GetObject(sDevInterfaceId).Name(); if (bDevReady) { if (dFirst) { dFirst = false; } else { WriteLine(','); } Write('"' # oDevice.Address() # '":{"Name":"'); WriteURL(oDevice.Name()); Write('","Interface":"' # sDevInterface # '"}'); foreach(sChnId, oDevice.Channels()) { object oChannel = dom.GetObject(sChnId); WriteLine(','); Write('"' # oChannel.Address() # '":{"Name": Jan 8 20:30:18 ccu3 local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 65 0x0041 [1] 0 0x0000 [2] 58 0x003a [3] 0 0x0000 [4] 59 0x003b [ExecError():iseESPexec.cpp:12945] Jan 8 20:30:18 ccu3 local0.err ReGaHss: ERROR: ScriptRuntimeError: !# devices.fn 1.4 !# !# Dieses Homematic-Script gibt eine Liste aller Geraete/Kanaele als JSON String aus !# !# 3'2013-7'2013 hobbyquaker https://github.com/hobbyquaker !# string sDevId; string sChnId; Write('{'); boolean dFirst = true; foreach (sDevId, root.Devices().EnumUsedIDs()) { object oDevice = dom.GetObject(sDevId); boolean bDevReady = oDevice.ReadyConfig(); string sDevInterfaceId = oDevice.Interface(); string sDevInterface = dom.GetObject(sDevInterfaceId).Name(); if (bDevReady) { if (dFirst) { dFirst = false; } else { WriteLine(','); } Write('"' # oDevice.Address() # '":{"Name":"'); WriteURL(oDevice.Name()); Write('","Interface":"' # sDevInterface # '"}'); foreach(sChnId, oDevice.Channels()) { object oChannel = dom.GetObject(sChnId); WriteLine(','); Write('"' # oChannel.Address() # '":{"Name": Jan 8 20:30:23 ccu3 local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 72 0x0048 [1] 0 0x0000 [2] 65 0x0041 [3] 0 0x0000 [4] 58 0x003a [ExecError():iseESPexec.cpp:12945] Jan 8 20:30:23 ccu3 local0.err ReGaHss: ERROR: ScriptRuntimeError: !# functions.fn 1.3 !# !# Dieses Script gibt eine Liste der Gewerke als JSON String aus !# !# 6'2013-7'2014 bluefox, hobbyquaker !# object oFunction; string sFunctionId; string sChannelId; object oChannel; boolean bFirst = true; boolean bFirstSecond = true; Write("{"); foreach (sFunctionId, dom.GetObject(ID_FUNCTIONS).EnumUsedIDs()) { if (bFirst == false) { WriteLine(','); } else { bFirst = false; } oFunction = dom.GetObject(sFunctionId); Write('"' # sFunctionId # '": '); Write('{"Name": "'); WriteURL(oFunction.Name()); Write('","TypeName":"' # oFunction.TypeName() # '_FUNCTIONS'); Write('", "EnumInfo": "'); WriteURL(oFunction.EnumInfo()); Write('", "Channels": ['); bFirstSecond = true; foreach(sChannelId, oFunction.EnumUsedIDs()) { oChannel = dom.GetObject(sChannelId); ! Objekt ueberspringen, falls nicht vom Typ CHANNEL (33) if (oChannel.Type() != 33) { conti Jan 8 20:30:23 ccu3 local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 65 0x0041 [1] 0 0x0000 [2] 58 0x003a [3] 0 0x0000 [4] 59 0x003b [ExecError():iseESPexec.cpp:12945] Jan 8 20:30:23 ccu3 local0.err ReGaHss: ERROR: ScriptRuntimeError: !# functions.fn 1.3 !# !# Dieses Script gibt eine Liste der Gewerke als JSON String aus !# !# 6'2013-7'2014 bluefox, hobbyquaker !# object oFunction; string sFunctionId; string sChannelId; object oChannel; boolean bFirst = true; boolean bFirstSecond = true; Write("{"); foreach (sFunctionId, dom.GetObject(ID_FUNCTIONS).EnumUsedIDs()) { if (bFirst == false) { WriteLine(','); } else { bFirst = false; } oFunction = dom.GetObject(sFunctionId); Write('"' # sFunctionId # '": '); Write('{"Name": "'); WriteURL(oFunction.Name()); Write('","TypeName":"' # oFunction.TypeName() # '_FUNCTIONS'); Write('", "EnumInfo": "'); WriteURL(oFunction.EnumInfo()); Write('", "Channels": ['); bFirstSecond = true; foreach(sChannelId, oFunction.EnumUsedIDs()) { oChannel = dom.GetObject(sChannelId); ! Objekt ueberspringen, falls nicht vom Typ CHANNEL (33) if (oChannel.Type() != 33) { conti Jan 8 20:30:23 ccu3 local0.info ReGaHss: Info: ScriptRuntimeError: Stack trace: [-1] 0 0x0000 [0] 65 0x0041 [1] 0 0x0000 [2] 58 0x003a [3] 0 0x0000 [4] 59 0x003b [ExecError():iseESPexec.cpp:12945] Jan 8 20:30:23 ccu3 local0.err ReGaHss: ERROR: ScriptRuntimeError: !# functions.fn 1.3 !# !# Dieses Script gibt eine Liste der Gewerke als JSON String aus !# !# 6'2013-7'2014 bluefox, hobbyquaker !# object oFunction; string sFunctionId; string sChannelId; object oChannel; boolean bFirst = true; boolean bFirstSecond = true; Write("{"); foreach (sFunctionId, dom.GetObject(ID_FUNCTIONS).EnumUsedIDs()) { if (bFirst == false) { WriteLine(','); } else { bFirst = false; } oFunction = dom.GetObject(sFunctionId); Write('"' # sFunctionId # '": '); Write('{"Name": "'); WriteURL(oFunction.Name()); Write('","TypeName":"' # oFunction.TypeName() # '_FUNCTIONS'); Write('", "EnumInfo": "'); WriteURL(oFunction.EnumInfo()); Write('", "Channels": ['); bFirstSecond = true; foreach(sChannelId, oFunction.EnumUsedIDs()) { oChannel = dom.GetObject(sChannelId); ! Objekt ueberspringen, falls nicht vom Typ CHANNEL (33) if (oChannel.Type() != 33) { conti
/var/log/hmserver.log zeigt dieses:
2025-01-06 20:48:28,362 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getDeviceDescription called for address null! 2025-01-06 20:48:28,381 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getParamset: VirtualDevice not found for address :0 2025-01-06 20:51:02,888 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getDeviceDescription called for address null! 2025-01-06 20:51:02,894 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getParamset: VirtualDevice not found for address :0 2025-01-06 20:52:51,735 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getDeviceDescription called for address null! 2025-01-06 20:52:51,738 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getParamset: VirtualDevice not found for address :0 2025-01-07 17:02:42,535 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getDeviceDescription called for address null! 2025-01-07 17:02:42,539 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getParamset: VirtualDevice not found for address :0 2025-01-08 08:11:46,140 de.eq3.lib.measurement.MeasurementService ERROR [Timer-0] Could not retrieve unhandled events java.util.ConcurrentModificationException: null at java.util.ArrayList$Itr.checkForComodification(Unknown Source) ~[?:?] at java.util.ArrayList$Itr.next(Unknown Source) ~[?:?] at de.eq3.lib.measurement.MeasurementService.writeLogValues(MeasurementService.java:835) ~[HMIPServer.jar:?] at de.eq3.lib.measurement.MeasurementService$EventTimerTask.run(MeasurementService.java:121) ~[HMIPServer.jar:?] at java.util.TimerThread.mainLoop(Unknown Source) ~[?:?] at java.util.TimerThread.run(Unknown Source) ~[?:?] 2025-01-08 13:14:26,728 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getDeviceDescription called for address null! 2025-01-08 13:14:26,732 de.eq3.ccu.virtualdevice.service.internal.rega.VirtualDeviceHandlerRega ERROR [vert.x-eventloop-thread-0] getParamset: VirtualDevice not found for address :0
lighttpd-error.log hat die letzten Einträge vom 05.01. lighttpd-access.log hat um den Zeitraum die Rega-Aufrufe verzeichnet, aber nur Statuscodes HTTP 200, also alles in Ordnung.
Für die Fehelrmeldungen habe ich zwei Infos gefunden, beide ein paar Jahre alt:
- das mit dem null kommt, wenn die CCU3 Konfigurationsänderungen nicht übertragen kann. Das deckt sich mit meinen aktuellen Einstellungsänderungen an den Heizgruppen.
- die Exception kommt möglicherweise, wenn man GetObject-Aufrufe schachtelt. Das war ein Post von 2017 oder so und so einen Quatsch mache ich nicht.
Firmware 3.79.6, dann Downgrade auf 3.77.6, dann wieder Upgrade auf 3.79.6, dann Wechsel zu Raspberrymatic3.79.6.20241122. XML-API 2.3, dann Downgrade auf 2.1 und wieder zurück auf 2.3.