NEWS
Selector greift nicht nach Umstellung auf redis?
-
Hallo zusammen,
ich scheine irgendwo einen Denkfehler zu haben... Seit einiger Zeit läuft auf meinem ioBroker ein Javascript, welches auf Änderung des DP hm-rega.0.maintenance angestoßen wird. Es sammelt eigentlich über zwei Selektoren zwei Objekte, die dann in einer each()-Schleife abgefragt werden. Also kein Hexenwerk und das Script lief einwandfrei. Hier das Script:
/* ** ** Homematic CCU3 Servicemeldungen zählen und einlesen ** */ var dpCCU3State = 'hm-rega.0.maintenance'; var dpServiceCount = '0_userdata.0.HmIP.Service.Count'; var dpServiceMessages = '0_userdata.0.HmIP.Service.Messages'; var selLowBat = $('channel[state.id=hm-rpc.*.LOW_BAT_ALARM]'); var selUnreach = $('channel[state.id=hm-rpc.*.UNREACH_ALARM]'); var mCount = 0; var mText = ''; // // Create Datapoints // createState(dpServiceCount, 0, { name: 'HmIP Servicemeldungen Anzahl', desc: 'HmIP Servicemeldungen Anzahl', type: 'number' }); createState(dpServiceMessages, '', { name: 'HmIP Servicemeldungen Text', desc: 'HmIP Servicemeldungen Text', type: 'string' }); // // Functions // function getHmIPDetail(objID, objText) { var aStatus = getState(objID).val; if(aStatus === 1) { var nameParts = getObject(objID).common.name.split(':'); toLog('CCU3: Gerät ' + nameParts[0] + ' meldet ' + objText); mText = mText + '<span class="hmlistRow">Gerät <span class="hmlistDevice">' + nameParts[0] + '</span> meldet <span class="hmlistType">' + objText + '</span></span><br>'; mCount++; } } function getHmIPData() { mCount = 0; mText = ''; selLowBat.each( function (objID) { getHmIPDetail(objID, 'niedrigen Batteriestand'); }); selUnreach.each( function (objID) { getHmIPDetail(objID, 'nicht erreichbar'); }); if(mCount < 1) mText = '<span class="hmlistRow">Keine Servicemeldungen vorhanden</span>'; setState(dpServiceCount, mCount, true); setState(dpServiceMessages, mText, true); } // // Subscriptions // getHmIPData(); on ({ id: dpCCU3State }, function () { getHmIPData(); });
Heute habe ich nun die ioBroker-Installation (alles aktuell) per "ioBroker custom" auf redis für die States umgestellt, die States nicht migriert und danach einen kompletten reboot durchgeführt. Das funktionierte alles ohne Probleme, alle Instanzen laufen wie ein Glöckchen und der Host (VM auf Synology) rennt wie Sau (Load unter 0.1 - vorher >1.0).
Einzig mein Script schmeißt mir nun die folgenden Warnings heraus:
javascript.0 2021-01-17 14:43:45.234 warn (2038) at script.js.common.Info_CCU3:52:1 javascript.0 2021-01-17 14:43:45.234 warn (2038) at getHmIPData (script.js.common.Info_CCU3:43:16) javascript.0 2021-01-17 14:43:45.234 warn (2038) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29) javascript.0 2021-01-17 14:43:45.233 warn (2038) at script.js.common.Info_CCU3:43:41 javascript.0 2021-01-17 14:43:45.233 warn (2038) at getHmIPDetail (script.js.common.Info_CCU3:28:19) javascript.0 2021-01-17 14:43:45.231 warn (2038) getState "hm-rpc.0.OEQ1902678.0.UNREACH_ALARM" not found (3) states[id]=null javascript.0 2021-01-17 14:43:45.231 warn (2038) at script.js.common.Info_CCU3:52:1 javascript.0 2021-01-17 14:43:45.231 warn (2038) at getHmIPData (script.js.common.Info_CCU3:43:16) javascript.0 2021-01-17 14:43:45.231 warn (2038) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29) javascript.0 2021-01-17 14:43:45.230 warn (2038) at script.js.common.Info_CCU3:43:41 javascript.0 2021-01-17 14:43:45.230 warn (2038) at getHmIPDetail (script.js.common.Info_CCU3:28:19) javascript.0 2021-01-17 14:43:45.228 warn (2038) getState "hm-rpc.0.00131709AE355A.0.UNREACH_ALARM" not found (3) states[id]=null javascript.0 2021-01-17 14:43:45.228 warn (2038) at script.js.common.Info_CCU3:52:1 javascript.0 2021-01-17 14:43:45.228 warn (2038) at getHmIPData (script.js.common.Info_CCU3:43:16) javascript.0 2021-01-17 14:43:45.227 warn (2038) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29) javascript.0 2021-01-17 14:43:45.227 warn (2038) at script.js.common.Info_CCU3:43:41 javascript.0 2021-01-17 14:43:45.224 warn (2038) at getHmIPDetail (script.js.common.Info_CCU3:28:19) javascript.0 2021-01-17 14:43:45.207 warn (2038) getState "hm-rpc.0.001158A98B2B4C.0.UNREACH_ALARM" not found (3) states[id]=null javascript.0 2021-01-17 14:43:45.207 warn (2038) at script.js.common.Info_CCU3:52:1
Kann mir da vielleicht jemand mal einen Tip geben? Die States werden doch abstrakt zur Verfügung gestellt, egal ob file oder redis, oder?
Vielen Dank
Levy -
@levyko said in Selector greift nicht nach Umstellung auf redis?:
Einzig mein Script schmeißt mir nun die folgenden Warnings heraus:
ich kann zwwar kein js, aber der Fehler kam früher, die warn zeigen nur an wo sich der (hier nicht sichtbare, weil abgeschnittene) Fehler verbirgt.
z.B.
@levyko said in Selector greift nicht nach Umstellung auf redis?:at script.js.common.Info_CCU3:52:1
in der Zeile 52 des genannten skripts
beim holen des Wertes von:
@levyko said in Selector greift nicht nach Umstellung auf redis?:
getState "hm-rpc.0.001158A98B2B4C.0.UNREACH_ALARM" not found (3) states[id]=null
er findet den Datenpunkt nicht
existiert dieser? -
@homoran
Oh mann... Tatsächlich hatte er in der hm-rpc.0-Instanz noch Geräte drin, die gar nicht mehr existieren. Ich habe nun die entsprechenden Objekte gelöscht, die Geräte neu einlesen lassen, die Javascript-Instanz neu gestartet und siehe da: Keine Warnings oder Fehler mehrVielen Dank! und +1
-
@levyko said in Selector greift nicht nach Umstellung auf redis?:
Vielen Dank! und +1
Gern geschehen - und das als js-Legastheniker
Mich würde nur noch die "echte" ERROR-Meldung, die vor den warn kam, interessieren
-
@homoran
Da gab es keineDas machte mich ja so stutzig. Über den Objektbaum bzw. den Selektor konnte man den Datenpunkt finden, aber das Script konnte nicht darauf zugreifen. Er hat lediglich für die nicht ansprechbaren Datenpunkte die 6 Zeilen geloggt:
javascript.0 2021-01-17 14:43:45.228 warn (2038) at script.js.common.Info_CCU3:52:1 javascript.0 2021-01-17 14:43:45.228 warn (2038) at getHmIPData (script.js.common.Info_CCU3:43:16) javascript.0 2021-01-17 14:43:45.227 warn (2038) at Object.result.each (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:785:29) javascript.0 2021-01-17 14:43:45.227 warn (2038) at script.js.common.Info_CCU3:43:41 javascript.0 2021-01-17 14:43:45.224 warn (2038) at getHmIPDetail (script.js.common.Info_CCU3:28:19) javascript.0 2021-01-17 14:43:45.207 warn (2038) getState "hm-rpc.0.001158A98B2B4C.0.UNREACH_ALARM" not found (3) states[id]=null
Beim nächsten Element in der Selektor-Kollektion wieder von vorne.
-
@levyko said in Selector greift nicht nach Umstellung auf redis?:
Da gab es keine
zeitlich vor der
14:43:45.207 warn
gab es nichts?Danke!
-
@homoran
Die erste "Warn"-Zeile fing mit einer "getState"-Warnung an. Davor waren nur die ganz normalen Info-Zeilen (Adapter gestartet, Log-Meldungen von meinen Scripten, etc.). Kein Fehler, kein gar nichts.