NEWS
Gelöst: WARN in Script
-
@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.
-
Stimmt die Schedule sollte direkt vor dem eigentlichen Script sein.
-
@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.
-
Stimmt den habe ich gerade schon raus geworfen reagiert ja auf "ne"
-
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. -
Doch schon:
-
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.