Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS Baustein Sleep/usleep

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    LBS Baustein Sleep/usleep

    Ich versuche mich gerade an einem Baustein.

    Der macht eine Ausgabe uns soll ohne Abbruchkriterium einfach nur 30 sec. warten bis eine weitere Ausgabe erfolgt.

    Ist da der einzige Weg über logic_setState?

    Meine Test mit sleep und usleep gegen die komplette Logik für 30sec lahm.
    Gruß Hartwig

    #2
    Du kannst bei solchen Anforderungen den EXEC Teil verwenden. Dieser läuft unabhängig von der Hauptlogikschleife.
    sleep() und usleep() sind Tabu im LBS Bereich, da genau das passiert was du beschrieben hast, d.h. die gesamte EDOMI Logik schläft.

    Kommentar


      #3
      Vermutlich eine blöde Frage, aber ...

      Ich rufe das EXEC mit

      PHP-Code:
      logic_callExec(LBSID,$id);                    //EXEC-Script starten 
      EXEC-Teil
      PHP-Code:
      ###[EXEC]###
      <?
      require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");
      sql_connect();

      //-------------------------------------------------------------------------------------

      sleep(60);                                         //z.B. eine HTTP-Abfrage
      logic_setOutput($id,5,1);                     //Ausgang 1 auf 1 setzen

      //-------------------------------------------------------------------------------------

      sql_disconnect();
      ?>
      ###[/EXEC]###
      Ausgang 5 wird auch nach 30 sec gesetzt.

      Mein LBS läuft aber über den Logic_CallExec Aufruf weiter

      Wie kann ich den LBS nach dem Aufruf Stoppen bis der Sleep im Exec abgelaufen ist?
      Gruß Hartwig

      Kommentar


        #4
        Was meinst du mit Stoppen?
        Dein LBS ist dann fertig wenn du den EXEC Teil gestartet hast und wird auch nicht mehr aufgerufen.
        Du kannst den LBS-Teil nicht stoppen.

        Vielleicht beschreibst du mal den konkreten Anwednungsfall, dann kann man vielleicht genaueres dazu sagen.

        Kommentar


          #5
          Anwendungsfall

          3 Sonos Quellen, welche auf einen Russound gehen und x Zonen speisen.

          Ich nutze nun den Text2Speech Baustein um eine Sprachnachricht zu generieren.
          Die Nachrichten will ich aber nicht für alle Zonen sondern Belegungs- und Filterabhängig

          Soll in einem Raum eine Nachricht abgespielt werden, so muss ich die Quelle an meinem Russound wechseln (ggf. einschalten ....), die Ansage an dieser Quelle (Sonos) triggern und DANACH wieder auf die ursprüngliche Quelle zurückschalten

          Dafür habe ich einen Zonenbaustein gemacht.

          Darin schalte ich die Quelle am Russound um, schalte die Russond Zone an und triggere das MP3 File an den Sonosbaustein.

          Soweit alles Gut.

          Ist nun die Ansage durch, (da ich das nicht ermitteln kann gehe ich einfach mal von 30sec aus) muss ich für die Zone die alten Schaltzustände am Russound wieder herstellen.

          Ich müsste also nur meinen LBS mit der Fortführung der Logik 30sec warten lassen!

          Hoffentlich verständlich ausgedrückt








          Gruß Hartwig

          Kommentar


            #6
            LBS16000112 Verzögerung ?

            Kommentar


              #7
              Du könntest das vermutlich wirklich mit dem Verzögerer machen. Einfach an deinem LBS einen Ausgang erstellen, der auf 1 gesetzt, wenn die Ansage getriggert wird. Daran dann den Verzögerer mit 30 Sekunden. Den Ausgang des Verzögerers dann auf einen neuen Eingang in deinem LBS und dies dann als Trigger nehmen, den vorherigen Zustand wiederherzustellen.

              Alternative:
              Wenn ich dich richtig verstanden habe, dann soll das alles in deinem Zonenbaustein passieren. Warum also nicht nach dem sleep(30) einfach weitermachen und den vorherigen Zustanden wiederherstellen. Entweder direkt aus dem Baustein heraus oder einen weiteren Ausgang triggern, der die Wiederherstellung startet. Solange das im EXEC Teil passiert ist das ja völlig unkritisch.

              BTW: Kann man vom SONOS LBS keine Rückmeldung bekommen wenn ein MP3 fertig ist? Ich vermute der Status ändert sich doch bestimmt und man könnte den ggf auswerten.

              Kommentar

              Lädt...
              X