NEWS
Slider soll Werte anzeigen und Event auslösen
-
Hallo! Ich nutze aktuell in meiner Vis die FancySlider. Ich bekomme es aber einfach nicht hin, den Slider anhand eines Wertes anzuzeigen, beim betätigen aber ein anderes Event auszulösen.
Konkret: Der Slider zeigt den State der Ping-Instanz eines PCs an. Soweit so gut ... ist der PC aus, ist der Slider OFF, ist der PC an, ist der Slider ON.
Jetzt möchte ich aber den PC einschalten, wenn man den Slider von OFF auf ON schaltet. Am einfachsten wäre es natürlich, wenn man seperat einstellen kann, welchen Wert er anzeigt und was beim Klicken passiert.
Alternative wäre über scripten ... Ich schalte also über den Slider die Ping-Instanz auf TRUE und dann reagiert ein Script, welches den PC einschaltet. Schöner Gedanke, leider schaltet sich die Ping-Instanz bei jedem Ping-Check auf TRUE. Der Rechner schickt also bei jedem Check ein WoL Paket, wodurch der PC nicht mehr einschläft.
Danach hatte ich die Idee, den alten Wert zu speichern und dann zu prüfen. Auch falsch, denn der Ping-Check setzt den State erst auf FALSE, dann auf TRUE.
var wol = require('wake_on_lan'); on({id: "ping.0.xxx.192_168_0_25", change: true}, function (obj) { if (getState("javascript.0.WoLHTPC") === false) { log("WoL geschickt", "info"); wol.wake('10:C3:7B:9E:04:1A', { address: '192.168.0.255', port: 7 }); } log("WoLHTPC auf true", "info"); setState('javascript.0.WoLHTPC', true); }); on({id: "ping.0.xxx.192_168_0_25", change: false}, function (obj) { log("WoLHTPC auf false", "info"); setState('javascript.0.WoLHTPC', false); });
Ausgabe:
10:19:54.508 [info] javascript.0 script.js.testing.WoL: WoLHTPC auf true 10:19:54.507 [info] javascript.0 script.js.testing.WoL: WoLHTPC auf false
-
Okay, war ein Fehler von mir ... hätte mir vorher mal das change: Event anschauen sollen.
var wol = require('wake_on_lan'); on({id: "ping.0.xxx.192_168_0_25", change: 'any'}, function (obj) { if (obj.state.val === true) { if (getState("javascript.0.WoLHTPC").val === false) { log("WoL geschickt", "info"); wol.wake('10:C3:7B:9E:04:1A', { address: '192.168.0.255', port: 7 }); setState('javascript.0.WoLHTPC', true); } log("if PING: " + obj.state.val + " WoLHTPC: " + getState("javascript.0.WoLHTPC").val, "info"); } else { log("else PING: " + obj.state.val + " WoLHTPC: " + getState("javascript.0.WoLHTPC").val, "info"); setState('javascript.0.WoLHTPC', false); } });