NEWS
[Gelöst] Frage zu compareTime
-
Hi,
ich habe mal eine Frage zu der Verwendung von compareTime:
Wenn ich zwischen 20 Uhr Abends und 9 Uhr Früh den "Schlafmodus" via Tabletbutton einschalten möchte funktioniert das von 20 - 24 Uhr, jedoch nicht mehr von 00:00 - 9 Uhr. Aktuell nutze ich einen Workaround doch begreifen warum das nicht geht oder was ich falsch mache will ich nicht so ganz.
Hier mal der Codeschnippsel:
// Schlafen nacht aktiv schalten on("javascript.0.Schlafmodus.Schlafmodus_Status", function(dp) { if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && compareTime("20:00", "09:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val) { sprachausgabe("SchlafmodusNachtEin"); setStateDelayed("hm-rpc.0.NEQXXXX.4.MANU_MODE", 18, 1000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 18, 2000); setStateDelayed("hm-rpc.0.NEQXXXX.4.MANU_MODE", 4.5, 3000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5, 4000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5, 5000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5, 6000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5, 7000); setStateDelayed("hm-rpc.0.MEQXXXX.4.MANU_MODE", 19.5, 8000); setStateDelayed("hm-rpc.0.NEQXXXX.2.MANU_MODE", 19.5, 9000); log("Schlafmodus Nachts eingeschalten"); } });
Wenn ich es so mache funktionierts:
(compareTime("20:00", "24:00", "between") || compareTime("00:00", "09:00", "between"))
Vielleicht kann mir hier mal jemand auf die Sprünge helfen.
Merci
Peoples
-
compareTime kenne ich nicht.
Ich mache dies mit dem Script von der iobroker seite:
http://www.iobroker.net/docu/?page_id=3708&lang=de
Dieses habe ich als globales Script bei mir hinterlegt.
In meinen anderen Scripten prüfe ich dann ob das Script bei Ausführung innerhalb der Zeit ist:
var Zeit1 = isTimeInRange('06:00:00', '21:00:00');
Wenn wir innerhalb der Zeit sind, dann true.
Also in deinem Fall:
o.g. Script als global hinterlegen.
Dann in deinem Script:
var Zeit1 = isTimeInRange('09:00:00', '20:00:00');
Wenn das Ergebnis dann false, dann bist du in deinem Zeitraum 20-09 Uhr.
mfg
-
Hallo,
ich mache das auch wie bahnuhr mit isTimeInRange.
Hast du den Tippfehler in deinem Code gesehen?
Automatikfunktioen
Vielleicht bringt der etwas durcheinander? 8-)
Gruß´
Pix
EDIT:
Du kannst die on()-Funktion etwas abkürzen:
// Schlafen nacht aktiv schalten on("javascript.0.Schlafmodus.Schlafmodus_Status", function(dp) { if(dp.state.val && compareTime("20:00", "09:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val) {
-
Wenn ich zwischen 20 Uhr Abends und 9 Uhr Früh den "Schlafmodus" via Tabletbutton einschalten möchte funktioniert das von 20 - 24 Uhr, jedoch nicht mehr von 00:00 - 9 Uhr. `
Der Fehler wurde im JS-Adapter korrigiert, aber noch nicht in der npm-Version. Installiere bitte den JS-Adapter von github ! -
Ich nutze auch die compareTime Funktion und finde es echt cool, denn man kann auch sowas wie compareTime("dusk", "dawn", "between") schreiben… aber auch ich hab das Problem, dass ab 00:00 Uhr nichts mehr geht. Das scheint ein Bug zu sein. Ich schaue mir mal die Funktion compareTime an und melde mich wenn es gefixt ist.
Grüße,
ldittmar
Edit: Da war jemand schneller 8-) - ist gefixt!
-
Ihr seid die "Wucht in Dosen"!
Habe das Update von Github installiert und werde heute Abend sehen ob alles klappt.
Danke schon mal hierfür.
Der Schreibfehler hat keine Fehler verursacht, da ich Ihn konsequent überall in jedem script gemacht habe :lol:
Und den Tipp mit dem "kürzen" habe ich auch gleich umgesetzt.
Auch hierfür Danke
-
Dann in deinem Script:
var Zeit1 = isTimeInRange('09:00:00', '20:00:00');
Wenn das Ergebnis dann false, dann bist du in deinem Zeitraum 20-09 Uhr. `
Diese Methode funktioniert auch mit dem nicht korrigierten compareTime()if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && !compareTime("09:00", "20:00", "between") && getState("javascript.0.Automation.Automatikfunktioen").val)
oder
if(getState("javascript.0.Schlafmodus.Schlafmodus_Status").val && compareTime("09:00", "20:00", "not between") && getState("javascript.0.Automation.Automatikfunktioen").val)