NEWS
Gelöst: WARN in Script
-
Hallo
ich habe ein Script, das tut was es soll, aber im log habe ich immer WARN Hinweise.

Mein Script sieht wie folgt aus:schedule("*/2 * * * *", function () { createState('Rolladen.WZ_Links'); createState('Rolladen.WZ_Rechts'); createState('Rolladen.EZ'); createState('Rolladen.Küche'); createState('Rolladen.WC'); createState('Rolladen.Move_WZ_Links'); createState('Rolladen.Move_WZ_Rechts'); createState('Rolladen.Move_EZ'); createState('Rolladen.Move_Küche'); createState('Rolladen.Move_WC'); var Statuswert; var Nr; }); on({ id: 'hm-rpc.1.CUX4000002.6.RCVS', change: "ne" }, function(Rolladen) { var RL = getState('hm-rpc.1.CUX4000002.6.RCVS').val; var Kanal = RL.substr(8, 2); var Status = RL.substr(10, 2); if (Status == "00") { Statuswert = "No Information"; } if (Status == '01') { Statuswert = "OBEN"; } if (Status == "02") { Statuswert = "UNTEN"; } if (Status == "03") { Statuswert = "Intermediate position stop"; } if (Status == "04") { Statuswert = "Tilt/ventilation position stop"; } if (Status == "05") { Statuswert = "Blocking"; } if (Status == "06") { Statuswert = "Overheated"; } if (Status == "07") { Statuswert = "Timeout"; } if (Status == "08") { Statuswert = "Start to move up"; } if (Status == "09") { Statuswert = "Start to move down"; } if (Status == "0A") { Statuswert = "Fährt AUF"; } if (Status == "0B") { Statuswert = "Fährt AB"; } if (Status == "0D") { Statuswert = "Stopped in undefined position"; } if (Status == "0E") { Statuswert = "Top position stop which is tilt position"; } if (Status == "0F") { Statuswert = "Bottom position stop which is intermediate position"; } if (Status == "10") { Statuswert = "Switching devices switched off"; } if (Status == "11") { Statuswert = "Switching devices switched on"; } if (Kanal == 01) { setState('javascript.0.Rolladen.WZ_Links', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Links', Status); var Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.EINS.Nr',Nr); log(Kanal + " WZ Links " + Status + " " + Statuswert); } else { if (Kanal == 02) { setState('javascript.0.Rolladen.WZ_Rechts', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Rechts', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr); log(Kanal + " WZ Rechts " + Status + " " + Statuswert); } else { if (Kanal == 04) { setState('javascript.0.Rolladen.EZ', Statuswert); setState('javascript.0.Rolladen.Move_EZ', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.DREI.Nr',Nr); log(Kanal + " EZ " + Status + " " + Statuswert); } else { if (Kanal == 08) { setState('javascript.0.Rolladen.Küche', Statuswert); setState('javascript.0.Rolladen.Move_Küche', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.VIER.Nr',Nr); log(Kanal + " Küche " + Status + " " + Statuswert); } else { if (Kanal == 10) { setState('javascript.0.Rolladen.WC', Statuswert); setState('javascript.0.Rolladen.Move_WC', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr',Nr); log(Kanal + " WC " + Status + " " + Statuswert); } } } } } }); -
Hallo
ich habe ein Script, das tut was es soll, aber im log habe ich immer WARN Hinweise.

Mein Script sieht wie folgt aus:schedule("*/2 * * * *", function () { createState('Rolladen.WZ_Links'); createState('Rolladen.WZ_Rechts'); createState('Rolladen.EZ'); createState('Rolladen.Küche'); createState('Rolladen.WC'); createState('Rolladen.Move_WZ_Links'); createState('Rolladen.Move_WZ_Rechts'); createState('Rolladen.Move_EZ'); createState('Rolladen.Move_Küche'); createState('Rolladen.Move_WC'); var Statuswert; var Nr; }); on({ id: 'hm-rpc.1.CUX4000002.6.RCVS', change: "ne" }, function(Rolladen) { var RL = getState('hm-rpc.1.CUX4000002.6.RCVS').val; var Kanal = RL.substr(8, 2); var Status = RL.substr(10, 2); if (Status == "00") { Statuswert = "No Information"; } if (Status == '01') { Statuswert = "OBEN"; } if (Status == "02") { Statuswert = "UNTEN"; } if (Status == "03") { Statuswert = "Intermediate position stop"; } if (Status == "04") { Statuswert = "Tilt/ventilation position stop"; } if (Status == "05") { Statuswert = "Blocking"; } if (Status == "06") { Statuswert = "Overheated"; } if (Status == "07") { Statuswert = "Timeout"; } if (Status == "08") { Statuswert = "Start to move up"; } if (Status == "09") { Statuswert = "Start to move down"; } if (Status == "0A") { Statuswert = "Fährt AUF"; } if (Status == "0B") { Statuswert = "Fährt AB"; } if (Status == "0D") { Statuswert = "Stopped in undefined position"; } if (Status == "0E") { Statuswert = "Top position stop which is tilt position"; } if (Status == "0F") { Statuswert = "Bottom position stop which is intermediate position"; } if (Status == "10") { Statuswert = "Switching devices switched off"; } if (Status == "11") { Statuswert = "Switching devices switched on"; } if (Kanal == 01) { setState('javascript.0.Rolladen.WZ_Links', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Links', Status); var Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.EINS.Nr',Nr); log(Kanal + " WZ Links " + Status + " " + Statuswert); } else { if (Kanal == 02) { setState('javascript.0.Rolladen.WZ_Rechts', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Rechts', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr); log(Kanal + " WZ Rechts " + Status + " " + Statuswert); } else { if (Kanal == 04) { setState('javascript.0.Rolladen.EZ', Statuswert); setState('javascript.0.Rolladen.Move_EZ', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.DREI.Nr',Nr); log(Kanal + " EZ " + Status + " " + Statuswert); } else { if (Kanal == 08) { setState('javascript.0.Rolladen.Küche', Statuswert); setState('javascript.0.Rolladen.Move_Küche', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.VIER.Nr',Nr); log(Kanal + " Küche " + Status + " " + Statuswert); } else { if (Kanal == 10) { setState('javascript.0.Rolladen.WC', Statuswert); setState('javascript.0.Rolladen.Move_WC', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr',Nr); log(Kanal + " WC " + Status + " " + Statuswert); } } } } } });@michihorn
Existieren die Datenpunkte mit den IDs 'javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr' bis
'javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr' ? -
Hallo Michihorn
Bin nicht so fit in Javascript aber ich glaube in den Zeilen fehl 86 usw fehlt vor Nr Var sowie in Zeile 79var Nr = Status.substr(1, 1);
Gruß Stephan
@stephan61 sagte:
fehlt vor Nr Var sowie in Zeile 79
Nein, eine Variable soll nur einmal deklariert werden.
-
@michihorn
Existieren die Datenpunkte mit den IDs 'javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr' bis
'javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr' ? -
@michihorn
Weshalb erzeugst Du die Datenpunkte alle 2 Minuten neu ? Einmal genügt doch !Du deklarierst die Variablen Statuswert und Nr innerhalb der Schedule-Callback-Funktion. Damit sind die Variablen in dieser Funktion lokal, also unnütz deklariert, weil sie in dieser Funktion nicht verwendet werden.
Lösche besser Zeilen 1 und 14 !var Kanal = RL.substr(8, 2);Kanal ist also ein String ! Weiter unten vergleichst Du Kanal mit Zahlen.
Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?
-
@michihorn
Versuche es mal so:createState('Rolladen.WZ_Links'); createState('Rolladen.WZ_Rechts'); createState('Rolladen.EZ'); createState('Rolladen.Küche'); createState('Rolladen.WC'); createState('Rolladen.Move_WZ_Links'); createState('Rolladen.Move_WZ_Rechts'); createState('Rolladen.Move_EZ'); createState('Rolladen.Move_Küche'); createState('Rolladen.Move_WC'); var Statuswert; var Status; var Nr; var Kanal; function Rolladen(rollo, zeit) { setState('javascript.0.Rolladen.' + rollo, Statuswert, true); setState('javascript.0.Rolladen.Move_' + rollo, Status, true); setState('javascript.0.Rolladen.Zeitsteuerung.' + zeit + '.Nr', Nr, true); log(Kanal + ' ' + rollo + ' ' + Status + ' ' + Statuswert); } on(id: 'hm-rpc.1.CUX4000002.6.RCVS', function(dp) { var RL = dp.state.val; Kanal = parseInt(RL.substr(8, 2), 16); Status = RL.substr(10, 2); Nr = parseInt(Status, 16); if (Status == "00") Statuswert = "No Information"; else if (Status == "01") Statuswert = "OBEN"; else if (Status == "02") Statuswert = "UNTEN"; else if (Status == "03") Statuswert = "Intermediate position stop"; else if (Status == "04") Statuswert = "Tilt/ventilation position stop"; else if (Status == "05") Statuswert = "Blocking"; else if (Status == "06") Statuswert = "Overheated"; else if (Status == "07") Statuswert = "Timeout"; else if (Status == "08") Statuswert = "Start to move up"; else if (Status == "09") Statuswert = "Start to move down"; else if (Status == "0A") Statuswert = "Fährt AUF"; else if (Status == "0B") Statuswert = "Fährt AB"; else if (Status == "0D") Statuswert = "Stopped in undefined position"; else if (Status == "0E") Statuswert = "Top position stop which is tilt position"; else if (Status == "0F") Statuswert = "Bottom position stop which is intermediate position"; else if (Status == "10") Statuswert = "Switching devices switched off"; else if (Status == "11") Statuswert = "Switching devices switched on"; if (Kanal & 1) Rolladen('WZ_Links', 'EINS'); if (Kanal & 2) Rolladen('WZ_Rechts', 'ZWEI'); if (Kanal & 4) Rolladen('EZ', 'DREI'); if (Kanal & 8) Rolladen('Küche', 'VIER'); if (Kanal & 16) Rolladen('WC', 'FÜNF'); }); -
@michihorn
Weshalb erzeugst Du die Datenpunkte alle 2 Minuten neu ? Einmal genügt doch !Du deklarierst die Variablen Statuswert und Nr innerhalb der Schedule-Callback-Funktion. Damit sind die Variablen in dieser Funktion lokal, also unnütz deklariert, weil sie in dieser Funktion nicht verwendet werden.
Lösche besser Zeilen 1 und 14 !var Kanal = RL.substr(8, 2);Kanal ist also ein String ! Weiter unten vergleichst Du Kanal mit Zahlen.
Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?
@paul53 Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet. Könnte ja sein das ein Rollo per Handfernbedienung betätigt wird. Der Kanal ist das entsprechende Rollo, eigentlich eine Zahl, ich habe mehrere Versuche gemacht diese Warnmeldung raus zu bekommen, daher ist es wohl noch einmal eine Zahl und da wieder ein String.
-
@michihorn
Weshalb erzeugst Du die Datenpunkte alle 2 Minuten neu ? Einmal genügt doch !Du deklarierst die Variablen Statuswert und Nr innerhalb der Schedule-Callback-Funktion. Damit sind die Variablen in dieser Funktion lokal, also unnütz deklariert, weil sie in dieser Funktion nicht verwendet werden.
Lösche besser Zeilen 1 und 14 !var Kanal = RL.substr(8, 2);Kanal ist also ein String ! Weiter unten vergleichst Du Kanal mit Zahlen.
Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?
@paul53 sagte in WARN in Script:
Hat es einen Grund, warum Du ausgerechnet mit den Zahlen 01, 02, 04, 08 und 10 vergleichst ?
Das gibt die Elero Doku so vor:
Easy Control Transmitter Stick.pdf -
@paul53 Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet. Könnte ja sein das ein Rollo per Handfernbedienung betätigt wird. Der Kanal ist das entsprechende Rollo, eigentlich eine Zahl, ich habe mehrere Versuche gemacht diese Warnmeldung raus zu bekommen, daher ist es wohl noch einmal eine Zahl und da wieder ein String.
@michihorn sagte:
Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet.
Das machst Du im 2-Minuten-Schedule nicht, sondern es wird nur createState() (Datenpunkte erzeugen) ausgeführt.
-
@michihorn sagte:
Ich checke alle 2 Minuten den Status den mir der Elero-Stick anbietet.
Das machst Du im 2-Minuten-Schedule nicht, sondern es wird nur createState() (Datenpunkte erzeugen) ausgeführt.
-
@paul53 DerDatenpunkt "hm-rpc.1.CUX4000002.6.RCVS" wird von den Elero-Stick geschrieben, dort steht der Status des jeweiligen Rollo drin.
@michihorn sagte:
DerDatenpunkt "hm-rpc.1.CUX4000002.6.RCVS" wird von den Elero-Stick geschrieben
Der Datenpunkt dient als Trigger, dann solltest Du kein Schedule verwenden.
-
Das Script sieht nun wie folgt aus:
createState('Rolladen.WZ_Links'); createState('Rolladen.WZ_Rechts'); createState('Rolladen.EZ'); createState('Rolladen.Küche'); createState('Rolladen.WC'); createState('Rolladen.Move_WZ_Links'); createState('Rolladen.Move_WZ_Rechts'); createState('Rolladen.Move_EZ'); createState('Rolladen.Move_Küche'); createState('Rolladen.Move_WC'); var Statuswert; var Status; var Nr; var Kanal; on({id:'hm-rpc.1.CUX4000002.6.RCVS', change: "ne"}, function(Rolladen) { var RL = getState("hm-rpc.1.CUX4000002.6.RCVS").val; Kanal = RL.substr(8, 2); Status = RL.substr(10, 2); if (Status == "00") Statuswert = "No Information"; else if (Status == "01") Statuswert = "OBEN"; else if (Status == "02") Statuswert = "UNTEN"; else if (Status == "03") Statuswert = "Intermediate position stop"; else if (Status == "04") Statuswert = "Tilt/ventilation position stop"; else if (Status == "05") Statuswert = "Blocking"; else if (Status == "06") Statuswert = "Overheated"; else if (Status == "07") Statuswert = "Timeout"; else if (Status == "08") Statuswert = "Start to move up"; else if (Status == "09") Statuswert = "Start to move down"; else if (Status == "0A") Statuswert = "Fährt AUF"; else if (Status == "0B") Statuswert = "Fährt AB"; else if (Status == "0D") Statuswert = "Stopped in undefined position"; else if (Status == "0E") Statuswert = "Top position stop which is tilt position"; else if (Status == "0F") Statuswert = "Bottom position stop which is intermediate position"; else if (Status == "10") Statuswert = "Switching devices switched off"; else if (Status == "11") Statuswert = "Switching devices switched on"; if (Kanal == "01") { setState('javascript.0.Rolladen.WZ_Links', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Links', Status); var Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.EINS.Nr',Nr); log(Kanal + " WZ Links " + Status + " " + Statuswert); } else { if (Kanal == "02") { setState('javascript.0.Rolladen.WZ_Rechts', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Rechts', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr); log(Kanal + " WZ Rechts " + Status + " " + Statuswert); } else { if (Kanal == "04") { setState('javascript.0.Rolladen.EZ', Statuswert); setState('javascript.0.Rolladen.Move_EZ', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.DREI.Nr',Nr); log(Kanal + " EZ " + Status + " " + Statuswert); } else { if (Kanal == "08") { setState('javascript.0.Rolladen.Küche', Statuswert); setState('javascript.0.Rolladen.Move_Küche', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.VIER.Nr',Nr); log(Kanal + " Küche " + Status + " " + Statuswert); } else { if (Kanal == "10") { setState('javascript.0.Rolladen.WC', Statuswert); setState('javascript.0.Rolladen.Move_WC', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr',Nr); log(Kanal + " WC " + Status + " " + Statuswert); } } } } } });Die Warnmeldungen kommen bei Zeile 17, 21, 25, 29
Anbei das LOG-File
log.txt -
Das Script sieht nun wie folgt aus:
createState('Rolladen.WZ_Links'); createState('Rolladen.WZ_Rechts'); createState('Rolladen.EZ'); createState('Rolladen.Küche'); createState('Rolladen.WC'); createState('Rolladen.Move_WZ_Links'); createState('Rolladen.Move_WZ_Rechts'); createState('Rolladen.Move_EZ'); createState('Rolladen.Move_Küche'); createState('Rolladen.Move_WC'); var Statuswert; var Status; var Nr; var Kanal; on({id:'hm-rpc.1.CUX4000002.6.RCVS', change: "ne"}, function(Rolladen) { var RL = getState("hm-rpc.1.CUX4000002.6.RCVS").val; Kanal = RL.substr(8, 2); Status = RL.substr(10, 2); if (Status == "00") Statuswert = "No Information"; else if (Status == "01") Statuswert = "OBEN"; else if (Status == "02") Statuswert = "UNTEN"; else if (Status == "03") Statuswert = "Intermediate position stop"; else if (Status == "04") Statuswert = "Tilt/ventilation position stop"; else if (Status == "05") Statuswert = "Blocking"; else if (Status == "06") Statuswert = "Overheated"; else if (Status == "07") Statuswert = "Timeout"; else if (Status == "08") Statuswert = "Start to move up"; else if (Status == "09") Statuswert = "Start to move down"; else if (Status == "0A") Statuswert = "Fährt AUF"; else if (Status == "0B") Statuswert = "Fährt AB"; else if (Status == "0D") Statuswert = "Stopped in undefined position"; else if (Status == "0E") Statuswert = "Top position stop which is tilt position"; else if (Status == "0F") Statuswert = "Bottom position stop which is intermediate position"; else if (Status == "10") Statuswert = "Switching devices switched off"; else if (Status == "11") Statuswert = "Switching devices switched on"; if (Kanal == "01") { setState('javascript.0.Rolladen.WZ_Links', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Links', Status); var Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.EINS.Nr',Nr); log(Kanal + " WZ Links " + Status + " " + Statuswert); } else { if (Kanal == "02") { setState('javascript.0.Rolladen.WZ_Rechts', Statuswert); setState('javascript.0.Rolladen.Move_WZ_Rechts', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr); log(Kanal + " WZ Rechts " + Status + " " + Statuswert); } else { if (Kanal == "04") { setState('javascript.0.Rolladen.EZ', Statuswert); setState('javascript.0.Rolladen.Move_EZ', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.DREI.Nr',Nr); log(Kanal + " EZ " + Status + " " + Statuswert); } else { if (Kanal == "08") { setState('javascript.0.Rolladen.Küche', Statuswert); setState('javascript.0.Rolladen.Move_Küche', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.VIER.Nr',Nr); log(Kanal + " Küche " + Status + " " + Statuswert); } else { if (Kanal == "10") { setState('javascript.0.Rolladen.WC', Statuswert); setState('javascript.0.Rolladen.Move_WC', Status); Nr = Status.substr(1, 1); setState('javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr',Nr); log(Kanal + " WC " + Status + " " + Statuswert); } } } } } });Die Warnmeldungen kommen bei Zeile 17, 21, 25, 29
Anbei das LOG-File
log.txt@michihorn sagte:
Die Warnmeldungen kommen bei Zeile 17, 21, 25, 29
Nein, Warnungen kommen bei den setState('javascript.0.Rolladen.Zeitsteuerung.ZWEI.Nr',Nr) bis FÜNF. Sind die Datenpunkte vom Typ "Zeichenkette"(string) ? Das sollten sie sein.
17, 21, 25, 29 sind die Zeichenpositionen in der Zeile. -
Jetzt klappt es:
Hab CreateState so ausgedrückt: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr");"
Fehler war so: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr",{read: true,write: true,desc: "Berechneter Wert,",type: "string",min:'0', max:'12',def:1});"Danke Paul53
-
Jetzt klappt es:
Hab CreateState so ausgedrückt: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr");"
Fehler war so: "createState("javascript.0.Rolladen.Zeitsteuerung.FÜNF.Nr",{read: true,write: true,desc: "Berechneter Wert,",type: "string",min:'0', max:'12',def:1});"Danke Paul53
@michihorn
Ja, min: und max: machen bei Strings keinen Sinn.

