NEWS
iobroker stellt keine Systemvariablen dar
-
Hallo Hormoran,
vielen Dank für Deinen Hinweis. Leider führte er nicht zur Lösung des Problems.
Variablen fehlen komplett unter hm-rega.0, sowohl im iobroker im Docker auf meiner Synology als auch auf einer frisch aufgesetzten Raspi-Variante.
Weiterhin fehlen auch alle Räume.Anbei die Screenshots sowie das Log.
Die CCU2 läuft unter 2.47.20.
RPC-Config:
Rega-Config:
Rega-Synceinstellungen
HM-Rega neu gestartet führt zu
Hier das Log dazu.Vielen Dank!
Thomas
iobroker-log.txt -
Ergänzung:
CCU-Log weist einen Script-Fehler aus
ccu-log.txt -
@Homoran : Habe jetzt meine CCU2 mit FW 2.47.20 mit Factory Reset zurückgesetzt und nur noch XML-API 1.19 installiert. Variablen werden trotzdem nicht synchronisiert
Das Log weist stattdessen Fehler aus (Cannot Parse... - siehe Anlage)
Hat wirklich niemand eine Lösung für das Problem?
iobroker2020-01-11log.txt -
@Thomas06308 sagte in iobroker stellt keine Systemvariablen dar:
und nur noch XML-API 1.19 installiert.
Du brauchst diese API nicht.
@Thomas06308 sagte in iobroker stellt keine Systemvariablen dar:
mit Factory Reset zurückgesetzt
und wahrscheinlich auch die Firewall wieder auf Grundeinstellungen?
-
@Thomas06308 anscheinend wird kein valides JSON geliefert ich schaue mal rein sobald ich am Rechner bin.
-
@Homoran Nein, hatte in der FW Vollzugriff gegeben, um von dieser Seite jegliche Probleme auszuschliessen.!
CCU hat 192.168.30.200, also genau in diesem Netz.
ccu2-firewall.jpg -
@Thomas06308 ne ne Verbindung passt schon.
-
@foxriver76 Danke! Wenn Du weitere Infos, Logs etc benötigst, jederzeit gern.
-
Das Problem ist folgendes.. es wird mittels
dom.GetObject(40).Value()
die Anzahl an Servicemeldungen der CCU als Variable ins JSON geschrieben. Irgendwie klappt das bei dir nicht, der Wert bleibt leer und somit ist es keine valide JSON Struktur mehr.Du kannst mal
Write(dom.GetObject(40).Value())
via Skript testen auf der CCU ausführen und schauen was da bei rum kommt. -
@foxriver76 sagte in iobroker stellt keine Systemvariablen dar:
Write(dom.GetObject(40).Value())
Hab ich getestet, Ausgabe:0
-
@Thomas06308 Passt eigentlich.
Führe mal das kompeltte Skript aus und poste mal die Ausgabe
!# variablesInv.fn 0.1 !# !# Dieses Script gibt die Systemvariablen (inklusive unsichtbarer) als JSON String aus !# !# 7'2019 foxriver76 https://github.com/foxriver76 [basierend auf variables.fn (hobbyquaker)] !# object oSysVar; string sSysVarId; string sValueType; string sValue; boolean bFirst = true; Write('{'); !# due to the fact that service messages can be automatically acknowledged, we have to loop over all and check var servs = dom.GetObject(ID_SERVICES); string id; integer serviceMessages = 0; foreach(id, servs.EnumIDs()) { var service = dom.GetObject(id); if(service) { if(service.IsTypeOf(OT_ALARMDP) && (service.Used() == true) && (service.Enabled() == true) && (service.AlState() == asOncoming)) { serviceMessages = serviceMessages + 1; } } } WriteLine('"40":{"Name":"Alarmmeldungen","TypeName":"VARDP","DPInfo":"Anzahl%20Alarmmeldungen","Value":' # dom.GetObject(40).Value() # ',"ValueMin":0,"ValueMax":65000,"ValueUnit":"","ValueType":16,"ValueSubType":0,"ValueList":""},'); Write('"41":{"Name":"Servicemeldungen","TypeName":"VARDP","DPInfo":"Anzahl%20Servicemeldungen","Value":' # serviceMessages # ',"ValueMin":0,"ValueMax":65000,"ValueUnit":"","ValueType":16,"ValueSubType":0,"ValueList":""}'); foreach (sSysVarId, dom.GetObject(ID_SYSTEM_VARIABLES).EnumIDs()) { WriteLine(','); oSysVar = dom.GetObject(sSysVarId); sValueType = oSysVar.ValueType(); Write('"' # sSysVarId # '":{"Name":"'); WriteURL(oSysVar.Name()); Write('","TypeName":"' # oSysVar.TypeName()); Write('","DPInfo":"'); WriteURL(oSysVar.DPInfo()); Write('","Value":'); if (sValueType == 20) { Write('"'); WriteURL(oSysVar.Value()); Write('"'); } else { sValue = oSysVar.Value(); if (sValueType == 2) { if (sValue) { Write("true"); } else { Write("false"); } } else { if (sValue == "") { Write("0"); } else { Write(sValue); } } } string sValueMin = oSysVar.ValueMin(); if (sValueMin == '') { sValueMin = 'null'; } string sValueMax = oSysVar.ValueMax(); if (sValueMax == '') { sValueMax = 'null'; } Write(',"Timestamp":"' # oSysVar.Timestamp()); Write('","ValueMin":' # sValueMin # ',"ValueMax":' # sValueMax # ',"ValueUnit":"'); WriteURL(oSysVar.ValueUnit()); Write('","ValueType":' # sValueType # ',"ValueSubType":' # oSysVar.ValueSubType()); if (sValueType == 2) { Write(',"ValueList":"'); WriteURL(oSysVar.ValueName0() # ';' # oSysVar.ValueName1()); } else { Write(',"ValueList":"'); WriteURL(oSysVar.ValueList()); } Write('"}'); } Write('}');
-
@foxriver76 Im Script Executor kommt Invalid JSON, wie von Dir vermutet.
Direkt auf der CCU kommt die Ausgabe lt. Anlage. Beides allerdings schon wieder mit der Produktivkonfiguration. Von der resetteten CCU kann ich es aber auch liefern wenn benötigt.Scriptausgabe1.txt -
@Thomas06308 sagte in iobroker stellt keine Systemvariablen dar:
Scriptausgabe1.txtAlso das ist die Ausgabe wenn das Skript auf der CCU ausgeführt wird? Das passt und ist valide. Genau dieses Skript führt der Rega Adapter auf der CCU aus - merkwürdig die Ergebnisse dürften sich nicht unterscheiden. Und rega Adapter ist auf 2.5.2?
-
@foxriver76 Genau, der Rega-Adapter ist auf 2.5.2 und die Script-Ausgabe stammt aus "Skript ausführen" direkt auf der CCU.
-
@Thomas06308 Sau merkwürdig..
Wir können mal noch folgendes probieren - importiere das angehängte Javascript Skript in ioBroker mit und poste davon mal die Ausgabe.
-
@foxriver76 ja, sau merkwürdig. Ich hoffe, ich habe es richtig gemacht: unter Scripte importiert.
Scriptausgabe2.txt -
@Thomas06308 Jop, passt so und da ist auch alles da. Puh also sau komisch.. wir können mal noch die Datei anschauen die bei dir lokal liegt. Und mach einmal sicherheitshalber
iob u hm-rega
auf der Konsole und starte mal neu.Falls das nicht hilft, (du sagst ja es läuft auf keinem deiner Systeme)
cat /opt/iobroker/node_modules/iobroker.hm-rega/regascripts/variablesInv.fn
im Terminal ausführen. -
@foxriver76 sagte in iobroker stellt keine Systemvariablen dar:
cat /opt/iobroker/node_modules/iobroker.hm-rega/regascripts/variablesInv.fn
Irgendwas mache ich falsch: bei cat /opt/iobroker/node_modules/iobroker.hm-rega/regascripts/variablesInv.fn wird mir Dein Script angezeigt.
Zwischenzeitlich habe ich mal meine alte CCU1 rausgekramt - dort werden die Variablen angezeigt!!
Vielen Dank für Deine engagierte Unterstützung!!! -
@Thomas06308 sagte in iobroker stellt keine Systemvariablen dar:
@foxriver76 sagte in iobroker stellt keine Systemvariablen dar:
cat /opt/iobroker/node_modules/iobroker.hm-rega/regascripts/variablesInv.fn
Irgendwas mache ich falsch: bei cat /opt/iobroker/node_modules/iobroker.hm-rega/regascripts/variablesInv.fn wird mir Dein Script angezeigt.
Ne, das passt. Wollte wissen ob es 1 zu 1 übereinstimmt. Kannst es ja mal hier rein kopieren. Allerdings scheint das Verhalten ja eher durch die CCU2 verursacht zu werden. Ist die Firmware da die aktuellste?
-
@foxriver76 Anbei die Ausgabe der Kommandozeile.
Auf meiner CCU2 ist nicht die aktuellste Firmware, aber die vorletzte Version, die bei mir sehr stabil läuft. Aufgefallen ist mir das Problem nur, weil ich meine iobroker-Installation auf einem anderen System neu aufgesetzt und nur die Visualisierungen importiert habe. Möglicherweise besteht es tatsächlich schon länger und ist nur nicht aufgefallen, weil ich keine neuen Variablen angelegt habe. Eigenartigerweise funktioniert auch die Visualisierung von Datenpunkten, die auf Variablen basieren, nur werden sie im iobroker eben nicht angezeigt und können damit auch nicht in sql übernommen werden.
Sehr mysteriös !
Ich werde mal auf die aktuellste CCU-Firmware aktualisieren und melde mich in den nächsten Tagen nochmal.
Vielen Dank für´s erste !!!