Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Kombi aus compareTime() und einem Objekt Zeichenkette

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Kombi aus compareTime() und einem Objekt Zeichenkette

    This topic has been deleted. Only users with topic management privileges can see it.
    • LevyKo
      LevyKo last edited by

      Hallo zusammen,

      ich schraube gerade an einem Script für eine automatisch Bewässerung. Über das "jqui - ctrl - Input Datetime"-Widget schreibe ich einen String (Format HH:MM:SS) in ein Zeichenketten-Objekt unter javascript.0. Das funktioniert…

      Nun soll ein Javascript mit Cron-Trigger jede Minute laufen und die eingetragene Zeit mit der aktuellen Zeit vergleichen. Folgende simple Idee funktioniert nicht:

      schedule (
          "* * * * *",
          function ()
          {
              if (getState("javascript.0.Bewässerung.Bewässerung1Button").val === true) {
                  log("Bewässerung 1 aktiv");
                  var startTime1 = getState("javascript.0.Bewässerung.Bewässerung1Von").val;
                  if(compareTime(startTime1, null, "==")) {
                      log("Bewässerung 1 gestartet");
                      //pushOver("Bewässerung Garten gestartet", "ioBroker Meldung", 0);
                  }
              }
          }
      );
      
      

      Der entsprechende Logikwert "true" im Objekt "javascript.0.Bewässerung.Bewässerung1Button" ist natürlich gesetzt.

      Könnte mir jemand auf die Sprünge helfen? Mit formatDate() und getDateObject() habe ich auch schon einige Variationen ausprobiert, aber nichts funktionierte.

      Viele Grüße

      Detlef

      1 Reply Last reply Reply Quote 0
      • LevyKo
        LevyKo last edited by

        Ich habe es jetzt zum Laufen gebracht. Da kräuseln sich mir zwar die Nackenhaare, weil ein Date-Objekt zum String wird, aber es läuft erstmal :lol:

        /*
        **
        ** Bewässerung des Gartens
        **
        */
        
        function pushOver (text, titel, prio) {
            sendTo("pushover", {
                message: text,
                title: titel,
                priority: prio
            });
        }
        
        schedule (
            "* * * * *",
            function ()
            {
        
                var actTime = formatDate(new Date(), "hh:mm").toString();
        
                if (getState("javascript.0.Bewässerung.Bewässerung1Button").val === true) {
                    var startTime1 = formatDate(getDateObject(getState("javascript.0.Bewässerung.Bewässerung1Von").val), "hh:mm").toString();
                    var endTime1   = formatDate(getDateObject(getState("javascript.0.Bewässerung.Bewässerung1Bis").val), "hh:mm").toString();
                    if (actTime == startTime1) {
                        setState("hm-rpc.0.OEQ0696714.3.STATE", true);
                        pushOver("Garten: Bewässerungsprogramm 1 gestartet", "ioBroker Meldung", 0);
                    }
                    if (actTime == endTime1) {
                        setState("hm-rpc.0.OEQ0696714.3.STATE", false);
                        pushOver("Garten: Bewässerungsprogramm 1 beendet", "ioBroker Meldung", 0);
                    }
                }
        
                if (getState("javascript.0.Bewässerung.Bewässerung2Button").val === true) {
                    var startTime2 = formatDate(getDateObject(getState("javascript.0.Bewässerung.Bewässerung2Von").val), "hh:mm").toString();
                    var endTime2   = formatDate(getDateObject(getState("javascript.0.Bewässerung.Bewässerung2Bis").val), "hh:mm").toString();
                    if (actTime == startTime2) {
                        setState("hm-rpc.0.OEQ0696714.3.STATE", true);
                        pushOver("Garten: Bewässerungsprogramm 2 gestartet", "ioBroker Meldung", 0);
                    }
                    if (actTime == endTime2) {
                        setState("hm-rpc.0.OEQ0696714.3.STATE", false);
                        pushOver("Garten: Bewässerungsprogramm 2 beendet", "ioBroker Meldung", 0);
                    }
                }
        
            }
        );
        
        
        1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active last edited by

          Warum prüfst Du jede Minute?

          Wenn Du schon in das Feld eine Uhrzeit reinschreibst dann nimm die doch als schedule wo die Bewässerung starten muss… Du musst dann nur auf die Änderung vom Objekt reagieren und den Schedule neu stellen falls Du die Zeit änderst.

          LevyKo 1 Reply Last reply Reply Quote 0
          • LevyKo
            LevyKo @cash last edited by

            @cash
            Auch wenn der Post schon relativ alt ist: Danke für die Info! Ich werde das Script jetzt mal umschreiben. Mit der Zeit lernt man ja die Tricks 😊

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            408
            Online

            31.8k
            Users

            79.9k
            Topics

            1.3m
            Posts

            2
            4
            529
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo