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. Ausführung einer Skript Ausführung verzögern

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

Ausführung einer Skript Ausführung verzögern

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 3 Kommentatoren 1.3k Aufrufe
  • Ä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.
  • M Offline
    M Offline
    Marty56
    schrieb am zuletzt editiert von
    #1

    Ist es möglich, code verzögert ausführen zu lassen

    Beispiel:

    log("Anfang");
    // Hier die Codezeile, die suche so etwas wie wait(1000);
    log("Ende 1 Sekunde später);
    
    

    Ich kenne das Konstrukt setStateDelayed();

    Das funktioniert aber nicht, wenn man mehrerer Änderungen an einem gleichen State machen möchte.

    Dann wird immer nur die letzte Zuweisung ausgeführt.

    Mein Use Case sind Sonos Sprachausgaben.

    Es scheint wohl, dass das Queue Management im Sonos Adapter nicht richtig funktioniert, so dass man nicht einfach

    mehrere Text2Speechausgaben hineineinander machen kann, sondern diese Ausgaben verzögern muss.

    Deshalb möchte ich eine Verzögerung einfügen, die auf den selben State gehen.

    HW:NUC (16 GB Ram)
    OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

    1 Antwort Letzte Antwort
    0
    • D Offline
      D Offline
      dwm
      schrieb am zuletzt editiert von
      #2

      Hm,

      grundsätzlich mit setTimeout …

      log("Anfang");
      // Hier die Codezeile, die suche so etwas wie wait(1000);
      setTimeout( function() { log("Ende 1 Sekunde später); }, 1000);
      
      

      Du kannst aber dem setStateDelayed einen Parameter mitgeben, damit der vorherige Timer eben NICHT überschrieben wird.

      setStateDelayed (id, state, isAck, delay, clearRunning, callback)
      

      wenn Du bei clearRunning eine false setzt, das ist per Default true.

      Im Beispiel sieht das beim javascript Adapter so aus:

          setStateDelayed('Kitchen.Light.Lamp', true,  1000);// Switch ON the light in the kitchen in one second
          setStateDelayed('Kitchen.Light.Lamp', false, 5000, false, function () { // Switch OFF the light in the kitchen in 5 seconds and let first timeout run.
              log('Lamp is OFF');
          });
      
      

      Schaltet also die Küchenlampe nach 1s ein und nach 5s aus.

      Werner

      1 Antwort Letzte Antwort
      0
      • T Offline
        T Offline
        tempestas
        schrieb am zuletzt editiert von
        #3

        Nach meiner Erfahrung kann es bei SayIt immer wieder auch so zu Verzögerungen kommen. Daher könnte eine Verzögerung im Skript ggf trotzdem nicht ausreichen. Oder aber du setzt die Verzögerung so groß, dass deine Ansage dann natürlich sehr zerrissen ist.

        Was spricht dagegen, die Ansage in einem Rutsch zu machen? Du wirst wohl kaum einem 5 minütigem Dialog zuhören, oder?

        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

        1 Antwort Letzte Antwort
        0
        • M Offline
          M Offline
          Marty56
          schrieb am zuletzt editiert von
          #4

          @dwm

          Super. Danke für die sehr gute Erklärung.

          @tempestas

          Ich hatte bei dem Sonos Adapter und langen Texten eine Fehlermeldungen "file to short" oder so etwas ähnliches.

          Es scheinen nur Texte mit ca. 4-5 Sekunden vernünftig zu funktionieren.

          PS: Habe gerade nochmal mit einer anderen Say Instanz getestet, die System benutzt. Hier das gleiche.

          Fehlermeldung, wenn der Text zu lang ist:

          sayit.4 2017-06-21 16:36:05.588 error Cannot get file: received file is too short

          HW:NUC (16 GB Ram)
          OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

          1 Antwort Letzte Antwort
          0
          • M Offline
            M Offline
            Marty56
            schrieb am zuletzt editiert von
            #5

            Die Länge des Text hängt vom Text2Speech Konverter ab.

            Ich hatte vorher Google benutzt und habe mit Cloud.0 experimentiert und damit lassen sich viel

            längere Texte konvertieren, so dass der Vorschlag von tempestas umsetzbar ist.

            HW:NUC (16 GB Ram)
            OS: Debian Bullseye, Promox V7, node v16.x npm 8.19.3

            1 Antwort Letzte Antwort
            0
            • T Offline
              T Offline
              tempestas
              schrieb am zuletzt editiert von
              #6

              Genau, wollte ich dir gerade schreiben aber du hast es ja schon rausgefunden.

              Google macht glaube ich nach 70 Zeichen Schluss und gibt dann die (sinnlose) Nachricht aus, dass die Nachricht zu kurz wäre..

              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

              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

              343

              Online

              32.6k

              Benutzer

              82.2k

              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