NEWS
Anfängerproblem: Skript zur automatischen Abschaltung nach definierter Zeit
-
Hallo iobroker-Gemeinde,
als blutigster Anfänger hab ich mich nun soweit eingearbeitet, dass ich im .vis einen Schalter gesetzt habe um meine Warmwasserzirkulation einschalten zu können. Ich möchte nun, dass sich der Status des Schalters nach definierter Zeit ausschaltet. Nach langem Suchen hab ich mir nun ein Skript erstellt und dachte, ich hätte die Lösung. das tut aber leider doch nicht….
Hier mein Skript, könnte mir bitte jemand sagen warum das nicht funktioniert (ich schätze es ist ein einfacher Anfängerfehler...).
Die Idee: wenn der Status des Schalters auf true gestellt wird, soll er nach 3000ms wieder auf false umgestellt werden. und zwar immer nachdem der Schalter eingeschaltet wurde.
on ({id: "hm-rpc.0.MEQ1899037.1.STATE", val: "true" }, function () {
setTimeout(function () {
setState("hm-rpc.0.MEQ1899037.1.STATE", false);
}, 3000);
});
ich habe diesen Code exakt so wie er das steht in ein Skript-File geschrieben, in der Hoffnung, dass da nix mehr vorher oder nachher geschrieben stehen muss....
-
Du könntest es gleich noch etwas besser machen,
und zwar so, dass sich das Zeitintervall bei jedem Drücken um die eingestellte Zeit verlängert, ohne Unterbrechung.
paul53 hat dazu mal ein Skript veröffentlicht:
http://forum.iobroker.net/viewtopic.php … ung#p27067
// Script zum Starten einer Pumpe // Datenpunkt-ID var idTaster = "DEIN TASTER"; var idPumpe = "DEINE PUMPE"; // Variablendeklaration var timer; function taster() { if (timer) { clearTimeout(timer); // löschen zum Retriggern timer = null; } setState(idPumpe, true); // Ein timer = setTimeout(function () { setState(idPumpe, false); }, 60 * 60000); // nach 60 Minuten aus } // Aufruf der Funktion bei Änderung von false auf true on({id: idTaster, val: true}, taster);
-
on ({id: "hm-rpc.0.MEQ1899037.1.STATE", val: "true" }, function () { `
Es wird kein String ("true") übergeben, sondern ein Wert vom Typ boolean.on({id: "hm-rpc.0.MEQ1899037.1.STATE", val: true}, function() { setTimeout(function() { setState("hm-rpc.0.MEQ1899037.1.STATE", false); }, 3000); });
-
Die Steuerung per Skript ist natürlich die sichere Variante und definitiv vorzuziehen. Soll aber wirklich nur dann automatisch verzögert abgeschaltet werden, wenn per VIS der Einschaltbefehl gegeben wurde, eignet sich auch ein ctrl Bool Widget wie dieses:
Der Screenshot erklärt sich selbst. Auto AUS ist hier die Lösung.
Gruß
Pix