Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Wie löse ich Wiederholungen

    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

    Wie löse ich Wiederholungen

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

      Ich brauche da mal einen Ratschlag. Bisher lasse ich mich an alles mögliche erinnern z. B. Fenster schließen in Abhängigkeit der Innen- und Außentemperatur. Da das alles nicht wichtig ist werde ich genau einmal erinnert. Das löse ich mit setTimeout. Das reicht mir auch nach wie vor. Da ich ggf. das ganze dann mit einer Prio 2 Pushnachricht über Pushover löse. Pushover schickt mit dann jede Minute eine neue Push bis ich es bestätige.

      Jetzt brauche ich etwas was mich solange erinnert bis sich wirklich der Status der Tür verändert hat. Aber wie mache ich das am Besten?

      Soll ich setIntervall nutzen, ein Schedule, eine Schleife? Was ist Sinnvoll?

      Grundgerüst:

      Wenn Arbeitstag dann erste Erinnerung in 75 Minuten danach alle 30 Minuten. Wenn freier Tag Erinnerung alle 120 Minuten.

      Setze Erinnerung wenn Status Tür = 3. Nach Ablauf Push verschicken. Erinnerung abrechen wenn Status Tür = 2.

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

        @cash sagte in Wie löse ich Wiederholungen:

        Jetzt brauche ich etwas was mich solange erinnert bis sich wirklich der Status der Tür verändert hat. Aber wie mache ich das am Besten?
        (...)
        Setze Erinnerung wenn Status Tür = 3. Nach Ablauf Push verschicken. Erinnerung abrechen wenn Status Tür = 2.

        Das ist in JavaScript clearInterval(). Hier mal schnell zusammenkopiert ein Beispiel-Script, kannst du so im JS-Adapter testen:

        let intervalTimer;
        let counter = 0;
        intervalTimer = setInterval(function() {
            counter++;
            if (counter < 6) {
                log('Ausführung Nr. ' + counter);
            } else {
                log('Es sind bereits 5 Befehle gesendet, jetzt brechen wir ab.')
                clearInterval(intervalTimer);
                intervalTimer = null;
            }
        }, 2000);
        
        cash 1 Reply Last reply Reply Quote 0
        • cash
          cash Most Active @Mic last edited by

          @Mic Ist das wirklich die Beste Lösung? Wie schon geschrieben das Programmieren kriege ich hin mir geht es mehr darum was die Beste Lösung für dieses Problem ist...

          Mic 1 Reply Last reply Reply Quote 0
          • T
            ticaki Developer last edited by

            Was du mit Schleife meinst ist mir jetzt nicht wirklich klar.
            Imho ist eine Kombination aus setTimeout und setInterval die sauberste Lösung.
            CronJob/Schedule würde ich nur für Aufgaben verwenden die zum Zeitpunkt X ausgeführt werden müssen.

            Gruß Tim

            cash 1 Reply Last reply Reply Quote 0
            • cash
              cash Most Active @ticaki last edited by

              @ticaki Schleife:

              for(let i = 0; i < Speaker_Anzahl; i++) {
              

              Die erste Erinnerung habe ich nun mit setTimeout gemacht und die folgenden kürzeren mit setintervall.

              Danke.

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

                @cash sagte in Wie löse ich Wiederholungen:

                @Mic Ist das wirklich die Beste Lösung?

                Was stört dich denn daran bzw. warum denkst du, dass es keine gute Lösung sei?

                cash 1 Reply Last reply Reply Quote 0
                • cash
                  cash Most Active @Mic last edited by

                  @Mic Mich stört nichts daran und da ich keine Ahnung habe frage ich lieber mal nach. Beim suchen fand ich teils unterschiedliche Ansichten wann man setIntervall nutzen sollte oder eben nicht. Da ich dort mit den Antworten und Beispielen aber wenig anfangen konnte bzw nicht richtig verstanden habe wurde ich unsicher. Spontan hatte ich selber auch an setIntervall gedacht.

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

                    @cash
                    Passt doch, dann nimm einfach setInterval() / clearInterval(), das läuft wirklich sehr zuverlässig.

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

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    881
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    3
                    8
                    259
                    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