Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Time-triggerd Skript wird nicht ausgelöst

    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

    Time-triggerd Skript wird nicht ausgelöst

    This topic has been deleted. Only users with topic management privileges can see it.
    • Asgothian
      Asgothian Developer @chco last edited by

      @chco sagte in Time-triggerd Skript wird nicht ausgelöst:

      Hi,

      ich hab im ioBroker mit dem JS Adapter ein Skript erstellt und möchte, dass dieses jeden Tag von 4 bis 6 Uhr läuft und das jede Minute.
      Das kann ich ja über den Zeitassistenten einstellen, dann wird mir folgendes ins Skript hinzugefügt:

      '{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}'
      

      Aber das Skript wird nicht automatisch zu dieser Zeit ausgeführt. Muss ich da noch was ergänzen?

      Danke und lg

      Zeig bitte das Skript / den Trigger, nicht nur diese eine Zeile.

      A.

      1 Reply Last reply Reply Quote 0
      • Codierknecht
        Codierknecht Developer Most Active @chco last edited by

        @chco
        Das was Du da zeigst ist ja nur ein Teil der Wahrheit.
        Zeig doch mal das Script und nicht nur den Zeitplan.

        1 Reply Last reply Reply Quote 0
        • C
          chco last edited by

          @codierknecht Ich dachte, wenn ich diese Zeile am Beginn des Skripts einfüge, wird das Skript automatisch zu dieser Zeit ausgeführt... wie muss ich diesen Zeitplan denn einbauen? Das Skript ist beispielsweise, nur dass eine Lampe eingeschaltet wird:

          setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true);
          

          Danke!

          Asgothian Codierknecht 2 Replies Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @chco last edited by

            @chco sagte in Time-triggerd Skript wird nicht ausgelöst:

            @codierknecht Ich dachte, wenn ich diese Zeile am Beginn des Skripts einfüge, wird das Skript automatisch zu dieser Zeit ausgeführt... wie muss ich diesen Zeitplan denn einbauen? Das Skript ist beispielsweise, nur dass eine Lampe eingeschaltet wird:

            setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true);
            

            Danke!

            Lesen kannst du ?

            Bitte zeige das komplette Skript. Nur dann können wir Dir helfen.

            A.

            1 Reply Last reply Reply Quote 0
            • Codierknecht
              Codierknecht Developer Most Active @chco last edited by

              @chco
              Das was Du da zeigst ist kein "Script", sondern lediglich eine einzelnen Anweisung.

              Ein "Script" wird nicht einfach zu einer Zeit ausgeführt - auch wenn man da so locker flockig eine Zeitplan einfügt. Was Du brauchst in ein Zeitplan-Trigger ... also ein schedule.

              Wenn Dein ganzes "Script" tatsächlich nur aus dieser einen Zeile besteht, wäre wohl das hier das gewünschte Ergebnis:

              schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () {
                setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",true); 
              });
              

              Das macht aber so keinen Sinn, denn damit würde ab 04:00 Uhr 120 x eine Lampe eingeschaltet.
              Ist also ziemlich sinnbefreit.

              Also nochmal:

              @codierknecht sagte in Time-triggerd Skript wird nicht ausgelöst:

              Zeig doch mal das Script und nicht nur den Zeitplan.

              C 1 Reply Last reply Reply Quote 0
              • C
                chco @Codierknecht last edited by chco

                Edit unten

                1 Reply Last reply Reply Quote 0
                • C
                  chco last edited by chco

                  Wäre das dann so zu machen?

                  schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () {
                  
                  
                  var batteriestatus = getState("0_userdata.0.iPhone_battery").val 
                  
                  if(batteriestatus=="80")
                  {
                      // Steckdose wird ausgeschaltet
                      setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false)  
                  
                      // eine WhatsApp Benachrichtung senden
                      sendTo('whatsapp-cmb.0', 'send', {      
                      text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.',  // Text der WhatsApp Nachricht
                      });
                  
                  }
                  
                  });
                  
                  Codierknecht 1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @chco last edited by

                    @chco
                    Sieht fast OK aus. Auf die Schnelle fallen mir zwei fehlende Semikolon und eine fehlende schließende Klammer auf.
                    Und der Batteriestatus ist mit ziemlicher Sicherheit eine Zahl und kein String.
                    Außerdem könnte der Wert (theoretisch) auch direkt von 79 auf 81 springen. Also besser mit >= prüfen.
                    Ob das sendTo so richtig ist, wage ich zu bezweifeln. Da kommt ein Komma und danach nix mehr. Könnte mir vorstellen, dass da noch die Nummer folgt.

                    Gewöhn Dir aber an, sauber einzurücken. Macht den Code (nicht nur für andere) besser lesbar.
                    Jeder Code muss irgendwann gewartet werden.

                    schedule('{"time":{"start":"04:00","end":"06:00","mode":"minutes","interval":1},"period":{"days":1}}', async function () {
                     
                      var batteriestatus = getState("0_userdata.0.iPhone_battery").val;
                     
                      if (batteriestatus >= 80) {
                        // Steckdose wird ausgeschaltet
                        setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false);
                     
                        // eine WhatsApp Benachrichtung senden
                        sendTo('whatsapp-cmb.0', 'send', {      
                          text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.',  /*hier fehlt noch etwas, oder?*/  // Text der WhatsApp Nachricht
                        });
                     
                      }
                     
                    });
                    
                    C 1 Reply Last reply Reply Quote 1
                    • C
                      chco @Codierknecht last edited by

                      @codierknecht
                      Perfekt, danke!

                      Codierknecht 1 Reply Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @chco last edited by

                        @chco sagte in Time-triggerd Skript wird nicht ausgelöst:

                        Perfekt, danke!

                        Naja - perfekt würde ich das nicht nennen.
                        Ich jedenfalls finde die Logik dahinter mindestens "fragwürdig".

                        Du willst also zwischen 04:00 und 06:00 Uhr schauen, ob das Handy zu 80 oder mehr % geladen ist und dann die dazu verwendete Dose abschalten?

                        Was passiert, wenn Dein Handy um 05:59 Uhr zu 79% geladen ist und die 80% um 06:01 Uhr erreicht werden?
                        Eben - nix!

                        Sowas löst man üblicherweise mit einem Trigger und nicht über einen Zeitplan.

                        on({id: "0_userdata.0.iPhone_battery", change: "ne"}, async function (obj) {
                        
                          if (obj.state.val >= 80) {
                            // Steckdose wird ausgeschaltet
                            setState("shelly.0.SHPLG-S#BCFF4D5B7B27#1.Relay0.Switch",false);
                         
                            // eine WhatsApp Benachrichtung senden
                            sendTo('whatsapp-cmb.0', 'send', {      
                              text: 'Batteriestatus hat 80% überstiegen. Laden wird beendet.',  /*hier fehlt noch etwas, oder?*/  // Text der WhatsApp Nachricht
                            });
                         
                          }
                        
                        });
                        
                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        852
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        11
                        299
                        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