NEWS
JS, zählen bis 4 und wieder bei 1 anfangen
-
Hi,
etwas blöder Titel aber weiß gerade nicht wie ich es anders beschreiben soll.
Habe ein Icon für meine Klimaanlage mit 4 verschiedenen Klappenpositionen.
Das hier ist Position 1 und im Datenpunkt soll auch 1 drin stehen.
Klicke ich jetzt auf das Icon, soll hoch gezählt werden bis 4. Damit verändere ich das Icon (Klappenposition) und auch den Datenpunktwert.
Heißt: Klappenposition 1 -> Wert 1
Klappenposition 4 -> Wert 4
Klicke ich jetzt nach Wert 4 nochmal drauf, soll wieder Wert 1 im Datenpunkt stehen.
Mit dem increment Widget klappt es auch soweit, bis zu dem Sprung zurück zu 1.
Hatte es erst mit folgendem Script probiert:
on('javascript.0.test', function (obj){ var i = getState("javascript.0.test").val; if(i===4){ setState('javascript.0.test', 1); } });
Funktioniert natürlich nicht, da direkt wenn Wert 4 kommt wieder Wert 1 gesetzt wird. Soll natürlich erst auf Wert 4 stehen bleiben.
Mit Wert 5 würde es zwar gehen, kann ich aber leider auch nicht nehmen, da Wert 5 für automatische Klappenposition steht.
Vllt geht es auch wesentlich einfacher mit einem anderen Widget oder so…
-
Da Du ein flankierendes Script hast, mach doch einfach increment von 6 - 10
und schreib:
on('javascript.0.test', function (obj){ var i = getState("javascript.0.test").val; if(i===10){ setState('javascript.0.test', 1); } else; setState('javascript.0.test', i-5); });
Gruß
Christian
-
Mit Wert 5 würde es zwar gehen, kann ich aber leider auch nicht nehmen, da Wert 5 für automatische Klappenposition steht. `
Stört es, wenn der Datenpunkt mal kurz (ms) den Wert 5 annimmt ? Falls nicht,const idDir = 'javascript.0.test'; on(idDir, function(obj) { if(obj.state.val > 4) setState(idDir, 1); });
-
> Da Du ein flankierendes Script hast, mach doch einfach increment von 6 - 10
Das funktioniert leider so nicht, da bleibt er in einer Schleife hängen und zählt immer weiter abwärts.
> Stört es, wenn der Datenpunkt mal kurz (ms) den Wert 5 annimmt ? Falls nicht,
Hallo Paul,
im Prinzip funktioniert das so und es wäre auch nicht weiter schlimm wenn er nur kurz den Wert 5 bekommen würde.
Aber mit einem zweiten Widget will ich ja den Wert 5 auf den gleichen Datenpunkt ansteuern, um die automatische Klappeneinstellung zu triggern, dass geht dann mit dem Script so nicht, da er ja direkt wieder auf 1 springt.
Eine andere Möglichkeit wäre, dass ich den Wert 5 mit dem gleichen Widget mit ansteuere, dann muss ich eben immer auf das Widget klicken bis ich bei Wert 5 (Automatik) bin und kann dann nicht direkt von zb. Wert 1 auf Automatik umschalten.
Oder hast du noch ne Idee?