NEWS
Skript teilweise ohne Funktion -
-
Hallo Community,
ich habe vor einiger Zeit für meine Loxone-Lichtsteuerung ein Skript gebastelt.
Dieses läuft eigentlich auch, aber manchmal "verrent" es sich und dann ist es ohne Funktion.Hier dazu die Fehlermeldung im Log:
javascript.0 2020-11-23 20:21:32.702 warn (4564) at processImmediate (timers.js:658:5) javascript.0 2020-11-23 20:21:32.701 warn (4564) at tryOnImmediate (timers.js:676:5) javascript.0 2020-11-23 20:21:32.701 warn (4564) at runCallback (timers.js:705:18) javascript.0 2020-11-23 20:21:32.701 warn (4564) at Immediate.setImmediate (C:\Program Files\iobroker\Smart\node_modules\iobroker.js-controller\lib\adapter.js:5384:37) javascript.0 2020-11-23 20:21:32.701 warn (4564) at Object.stateChange (C:\Program Files\iobroker\Smart\node_modules\iobroker.javascript\main.js:472:25) javascript.0 2020-11-23 20:21:32.700 warn (4564) at Object.callback (C:\Program Files\iobroker\Smart\node_modules\iobroker.javascript\lib\sandbox.js:1055:38) javascript.0 2020-11-23 20:21:32.700 warn (4564) at Object.<anonymous> (script.js.Beleuchtung.Wohnzimmer.Decke_Wechsel:23:5) javascript.0 2020-11-23 20:21:32.700 warn (4564) at setState (C:\Program Files\iobroker\Smart\node_modules\iobroker.javascript\lib\sandbox.js:1358:20) javascript.0 2020-11-23 20:21:32.699 warn (4564) You are assigning a string to the state "loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods" which expects a array. Please fix your code to use a array or change the state type to string.
Ich habe das Skript sehr ähnlich noch in drei weiteren Varianten. Auch diese sind dann mit gleichem Ergebnis ohne Funktion. (also zur gleichen Zeit!)
Nun zur temporären Lösung:
Den Loxone-Adapter neu Starten. Dann geht es wiederIch habe das Skript in Blocky erstellt, aber zur Ansicht hier als Javascript:
var Liste; on({id: "loxone.0.161b228d-0221-4deb-ffff374e0faf5b1f.active"/*I2: active*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.Licht_Wohnzimmer_Wechsel"/*Licht_Wohnzimmer_Wechsel*/, true); }); on({id: "loxone.0.15f7f8f8-0354-8f27-ffff4473333fa291.active"/*Doppelklick: active*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setState("javascript.0.Licht_Wohnzimmer_Wechsel"/*Licht_Wohnzimmer_Wechsel*/, true); }); on({id: "javascript.0.Licht_Wohnzimmer_Wechsel"/*Licht_Wohnzimmer_Wechsel*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; Liste = ['Entspannen', 'TV', 'Party', 'Durchgang Abend', 'Durchgang', 'Aus']; if (getState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods").val == 'Durchgang') { setState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods"/*Wohnzimmer-Belruchtung: activeMoods*/, (Liste[0])); } else if (getState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods").val == 'Entspannen') { setState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods"/*Wohnzimmer-Belruchtung: activeMoods*/, (Liste[1])); } else if (getState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods").val == 'TV') { setState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods"/*Wohnzimmer-Belruchtung: activeMoods*/, (Liste[2])); } else if (getState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods").val == 'Party') { setState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods"/*Wohnzimmer-Belruchtung: activeMoods*/, (Liste[3])); } else { setState("loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods"/*Wohnzimmer-Belruchtung: activeMoods*/, (Liste[4])); } setState("javascript.0.Licht_Wohnzimmer_Wechsel"/*Licht_Wohnzimmer_Wechsel*/, false); });
Nun am ende noch die entscheidende Frage:
Hat jemand eine Idee und am besten auch eine Lösung? -
@A1uca2d sagte in Skript teilweise ohne Funktion -:
(4564) You are assigning a string to the state "loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods" which expects a array. Please fix your code to use a array or change the state type to string.
Die Fehlermeldung sagt ja alles: du setzt einen String anstelle eines Arrays. Der Wert sollte etwas wie
["Schlafen"]
sein.Wobei dann wohl mein Code im Adapter nicht funktioniert... kannst du bitte ein Issue auf Github erfassen?
-
@UncleSam schön waren, es, wenn es so einfach wäre.
Das ist nicht das Problem. Die Warnung zeigt er immer, aber damit funktioniert es... Halt nur eine Warnung... Aber wo tatsächlich das Problem ist wird ich nicht.
Nur zur Sicherheit: ich hatte auch ein sehr zu umfangreiches Skript gebaut um das Array zu füllen, aber auch das führt in unregelmäßigen Abständen zu dem Fehler und den Meldungen im Log.
-
@A1uca2d sagte:
Hat jemand eine Idee und am besten auch eine Lösung?
Was soll das Script machen ? Soll es die Liste vom links nach rechts durchgehen und dann wieder von Anfang ?
Als erstes solltest Du den Datenpunkt-Typ des Datenpunktes mit der ID "loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods" von "array" in "string" ändern.
-
@paul53 sagte in Skript teilweise ohne Funktion -:
Als erstes solltest Du den Datenpunkt-Typ des Datenpunktes mit der ID "loxone.0.12394f68-03bc-e827-ffff374e0faf5b1f.activeMoods" von "array" in "string" ändern.
Bitte nicht einfach in Datenpunkten etwas von Hand ändern. In diesem Fall wäre das zwar ein Workaround, aber später schaffst du dir damit möglicherweise neue Probleme, auf die nie jemand kommen wird.
-
@UncleSam sagte:
später schaffst du dir damit möglicherweise neue Probleme
Da ich Loxone nicht kenne: Was soll dieser Datenpunkt "activeMoods" enthalten ?
-
@paul53 sagte:
Soll es die Liste vom links nach rechts durchgehen und dann wieder von Anfang ?
Falls ich dies richtig interpretiert habe, hier eine Vorschlag, der mit dem Datenpunkt vom Typ "array" funktionieren sollte:
-
@UncleSam @paul53
Das mit dem String und Array ist wie gesagt nicht das Problem.
wenn es so wäre, hätte ich es mit einem entsprechenden Skript selber gelöst.Ich habe gerade noch mal etwas rumprobiert, und die gleichen Warnmeldungen erhalte ich im Log auch, wenn das Skript funktioniert. Ist in dem Fall als nicht aussagekräftig.
Kann es sein, dass es ein Problem vom Loxone-Adapter in Kombination mit Loxone ist?
Ich komme auf die Idee, da mir zuletzt auch in der Loxone-Config angezeigt wurde, dass es mit dem Baustein "Lichtsteuerung" Probleme gab. (Der Hinweis wird nicht mehr angezeigt)Kann im alternativ tiefer im System nach Infos suchen, wo ggf. der Unterschied zu "funktioniert" und "funktioniert nicht" liegt?
-
@UncleSam sagte in Skript teilweise ohne Funktion -:
Wobei dann wohl mein Code im Adapter nicht funktioniert... kannst du bitte ein Issue auf Github erfassen?
@A1uca2d Genau, es ist ein Problem des Adapters, deshalb bitte Issue erfassen.
-
bereits von einem dritten geschehen.
https://github.com/UncleSamSwiss/ioBroker.loxone/issues/58