Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Verzögerte Programmausführung bei Subscribe/On

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    697

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Verzögerte Programmausführung bei Subscribe/On

Geplant Angeheftet Gesperrt Verschoben JavaScript
4 Beiträge 3 Kommentatoren 256 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • E Offline
    E Offline
    Eisenbahnbär
    schrieb am zuletzt editiert von
    #1

    Ich bin noch ioBroker-Anfänger, daher ist es vielleicht eine dumme Frage. Dann bitte ich schon mal im voraus um Entschuldigung!

    Ich steuere u.a. einen Entfeuchter. 2 Minuten nachdem dieser angelaufen ist, prüfe ich (bisher in der Homematic) ob er auch wirklich Strom verbraucht. Wenn nicht, gibt es eine E-Mail, dass der Wasserbehälter geleert werden muss (Entfeuchter an, aber ohne Stromverbrauch bedeutet: der ist voll und zieht deswegen keinen Strom).

    In der Homematic starte ich deswegen 2 Minuten nach dem ersten Script (an/aus) das zweite Script zur Überprüfung. Geht dort mit einem einzigen Auslöser und ein Script wird sofort gestartet, das andere verzögert.

    Bei dem Befehl Subscribe/On gibt es einen solchen verzögerten Programmstart nicht, oder? Ich habe mir überlegt, ich könnte am Ende des ersten Scripts eine Variable verzögert schreiben (SetStateDelayed) die dann ein zweites Script triggert. Dann brauche ich aber eine zusätzliche Variable, das widerstrebt mir.

    Zweite Möglichkeit wäre ein SubscribeDelayed/OnDelayed, das gibt es aber nicht, oder?

    Dritte Möglichkeit wäre es in der Funktion eine Verzögerung zu bauen (in der Zeit müssten aber natürlich parallel andere Programme ausgeführt werden können). So eine Art Wait(120s). Gibt es so etwas?

    Was wäre denn Best Practice?

    paul53P AlCalzoneA 2 Antworten Letzte Antwort
    0
    • E Eisenbahnbär

      Ich bin noch ioBroker-Anfänger, daher ist es vielleicht eine dumme Frage. Dann bitte ich schon mal im voraus um Entschuldigung!

      Ich steuere u.a. einen Entfeuchter. 2 Minuten nachdem dieser angelaufen ist, prüfe ich (bisher in der Homematic) ob er auch wirklich Strom verbraucht. Wenn nicht, gibt es eine E-Mail, dass der Wasserbehälter geleert werden muss (Entfeuchter an, aber ohne Stromverbrauch bedeutet: der ist voll und zieht deswegen keinen Strom).

      In der Homematic starte ich deswegen 2 Minuten nach dem ersten Script (an/aus) das zweite Script zur Überprüfung. Geht dort mit einem einzigen Auslöser und ein Script wird sofort gestartet, das andere verzögert.

      Bei dem Befehl Subscribe/On gibt es einen solchen verzögerten Programmstart nicht, oder? Ich habe mir überlegt, ich könnte am Ende des ersten Scripts eine Variable verzögert schreiben (SetStateDelayed) die dann ein zweites Script triggert. Dann brauche ich aber eine zusätzliche Variable, das widerstrebt mir.

      Zweite Möglichkeit wäre ein SubscribeDelayed/OnDelayed, das gibt es aber nicht, oder?

      Dritte Möglichkeit wäre es in der Funktion eine Verzögerung zu bauen (in der Zeit müssten aber natürlich parallel andere Programme ausgeführt werden können). So eine Art Wait(120s). Gibt es so etwas?

      Was wäre denn Best Practice?

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von
      #2

      @Eisenbahnbär sagte:

      Gibt es so etwas?

      Ja, setTimeout(callback, delay).

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      1 Antwort Letzte Antwort
      1
      • E Eisenbahnbär

        Ich bin noch ioBroker-Anfänger, daher ist es vielleicht eine dumme Frage. Dann bitte ich schon mal im voraus um Entschuldigung!

        Ich steuere u.a. einen Entfeuchter. 2 Minuten nachdem dieser angelaufen ist, prüfe ich (bisher in der Homematic) ob er auch wirklich Strom verbraucht. Wenn nicht, gibt es eine E-Mail, dass der Wasserbehälter geleert werden muss (Entfeuchter an, aber ohne Stromverbrauch bedeutet: der ist voll und zieht deswegen keinen Strom).

        In der Homematic starte ich deswegen 2 Minuten nach dem ersten Script (an/aus) das zweite Script zur Überprüfung. Geht dort mit einem einzigen Auslöser und ein Script wird sofort gestartet, das andere verzögert.

        Bei dem Befehl Subscribe/On gibt es einen solchen verzögerten Programmstart nicht, oder? Ich habe mir überlegt, ich könnte am Ende des ersten Scripts eine Variable verzögert schreiben (SetStateDelayed) die dann ein zweites Script triggert. Dann brauche ich aber eine zusätzliche Variable, das widerstrebt mir.

        Zweite Möglichkeit wäre ein SubscribeDelayed/OnDelayed, das gibt es aber nicht, oder?

        Dritte Möglichkeit wäre es in der Funktion eine Verzögerung zu bauen (in der Zeit müssten aber natürlich parallel andere Programme ausgeführt werden können). So eine Art Wait(120s). Gibt es so etwas?

        Was wäre denn Best Practice?

        AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von AlCalzone
        #3

        @Eisenbahnbär sagte in Verzögerte Programmausführung bei Subscribe/On:

        Dritte Möglichkeit wäre es in der Funktion eine Verzögerung zu bauen (in der Zeit müssten aber natürlich parallel andere Programme ausgeführt werden können). So eine Art Wait(120s). Gibt es so etwas?
        Was wäre denn Best Practice?

        Das geht ganz einfach. Grundsätzlich arbeitet ioBroker so, dass du nicht Programme/Skripte startest, sondern in immer laufenden Skripten auf Ereignisse wie die Änderung eines Datenpunktes reagierst.

        Das machst du mit subscribe/on. Innerhalb des Triggers kannst du wie gehabt dein Gerät starten. Mittels setTimeout kannst du verzögert weiteren Code ausführen, der z.B. den Stromverbrauch überprüft.

        Einen Befehl zum Warten gibt es nicht, da die Codeausführung grundsätzlich asynchron arbeitet. Ein Beispiel:

        on("...", () => {
            setState("entfeuchter-datenpunkt", true);
            setTimeout(() => {
                // wird nach 2 Minuten ausgeführt
            }, 120000);
            // wird sofort nach dem "Anstoßen" der Wartezeit ausgeführt
        });
        

        Die "Reihenfolge" der Befehlszeilen in obigem Skript wäre demnach:
        2: Bei Trigger/Ereignis
        3: Direkt nach 2 (startet nur den Timer)
        4: 2 Minuten nach 3
        6: Direkt nach 3

        Falls du kein JavaScript kannst ist ggf. Blockly was für dich. Oder du arbeitest dich ein, dann empfehle ich dir, die Grundlagen für modernes JavaScript drauf zu schaffen.
        Edit: Einen Link zu den in ioBroker vorhandenen Funktionen hat Paul dir gerade gepostet.

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        1
        • E Offline
          E Offline
          Eisenbahnbär
          schrieb am zuletzt editiert von
          #4

          Super, danke an euch beide!

          1 Antwort Letzte Antwort
          0
          Antworten
          • In einem neuen Thema antworten
          Anmelden zum Antworten
          • Älteste zuerst
          • Neuste zuerst
          • Meiste Stimmen


          Support us

          ioBroker
          Community Adapters
          Donate

          786

          Online

          32.6k

          Benutzer

          82.0k

          Themen

          1.3m

          Beiträge
          Community
          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
          ioBroker Community 2014-2025
          logo
          • Anmelden

          • Du hast noch kein Konto? Registrieren

          • Anmelden oder registrieren, um zu suchen
          • Erster Beitrag
            Letzter Beitrag
          0
          • Home
          • Aktuell
          • Tags
          • Ungelesen 0
          • Kategorien
          • Unreplied
          • Beliebt
          • GitHub
          • Docu
          • Hilfe