Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Sonos: Rundruf/ Ansage im ganzen Haus?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Sonos: Rundruf/ Ansage im ganzen Haus?

    This topic has been deleted. Only users with topic management privileges can see it.
    • P
      Phantomio last edited by

      Die Frage hatte ich auch 😉

      Bei mir läuft es

      Script: http://forum.iobroker.net/viewtopic.php?f=30&t=4731

      Gruß

      Phantomio

      1 Reply Last reply Reply Quote 0
      • S
        skorpil last edited by

        In kürze: erstmal vielen Dank. Ich werde das Projekt dann mal in Angeiff nehmen und mich sich mit dann auftauchenden Fragen wieder melden…

        1 Reply Last reply Reply Quote 0
        • S
          skorpil last edited by

          Phantomio,

          Gerade probiere ich so ein bisschen herum. Kriege es aber nicht hin. Irgendwo mache ich einen Denkfehler!

          Die "Schreibe den Text in Zustand" Regel habe ich angelegt.

          Was muss ich bei den beiden Parameter Feldern Geräte ID und "Wert zum schreiben" , und im Quittungstextfeld eintragen?

          Was muss ich als trigger in telegram schreiben, damit der Text in den Zustand geschrieben wird?

          Danke für die Hilfe.

          1 Reply Last reply Reply Quote 0
          • S
            skorpil last edited by

            Phantomio,

            mir wird gerade Einiges klarer. Mein Problem: auf dem iPad unter Safari wird das Feld "Tripper-"Worte" nicht angezeigt. Daher konnte ich mir keinen Reim darauf machen. Jetzt arbeite ich gerade statt vom iPad auf dem PC. Und siehe da, ich fange an die Logik zu verstehen.

            1 Reply Last reply Reply Quote 0
            • P
              Phantomio last edited by

              Hallo Skorpil,

              mein Ansatz ist ein anderer (Ohne Text to Kommandos).

              Ich brauche nur den SayIt und den Telegram Adapter.

              Wenn mit Telegram etwas empfangen wird, steht im Objekt z.B. telegram.0.communicate.request [Name1]Say Test

              Ist Dein Name Länger oder Kürzer muss Ausgabe.slice1,10 angepasst werden Bei mir sind es inkl. Say 10 Zeichen.

              Es wird also alles ab dem 11 Zeichen an den SayIt Adapter übergeben.

              Die Abfrage:

              if (getState("javascript.0.Sprachausgabe").val && isTimeInRange("10:00:00", "23:00:00")){

              funktioniert nur wenn das Objekt javascript.0.Sprachausgabe auf True ist. Ich benutze das um mit einem Button in Vis die Sprachausgabe temporär zu deaktivieren.

              Und die Funktion isTimeInRange (siehe hier im Forum) muss auch im Script angelegt sein.

              on ({id: "telegram.0.communicate.request",              change:  "any"},    fAusgabe);
              
              function fAusgabe(){
                  var Ausgabe = getState("telegram.0.communicate.request").val;
                  var Keyword = (Ausgabe.slice(1, 10));
                  //log (Keyword);
                  if (Keyword === "Name0]Say"){
                      log("Telegramm Say empfangen");
                      if (getState("javascript.0.Sprachausgabe").val && isTimeInRange("10:00:00", "23:00:00")){
                          setState (idSayIt, (Ausgabe.slice(10, Ausgabe.length)));
                          setState("telegram.0.communicate.response", "Script fAusgabe beendet"); 
                      } else{
                          setState("telegram.0.communicate.response", "Sprachausgabe deaktiviert, oder ausserhalb des Zeitbereichs");
                      }
                  }
              }
              
              

              Ich hoffe das hilft dir ein wenig weiter

              Gruß

              Phantomio

              1 Reply Last reply Reply Quote 0
              • S
                skorpil last edited by

                Großartig [emoji16]. Vielen Dank.

                1 Reply Last reply Reply Quote 0
                • S
                  skorpil last edited by

                  Phantomio,

                  hier noch einmal eine Variante Deines Skripts: ich habe es ein wenig "verallgemeinert", d.h. im Bereich "Definitionen" kann nun das "Suchwort (aka Key) angegeben werden und die manuelle Ermittlung der Position resp. das Einsetzen der Werte in dien SLICE Befehl dann damit entfallen. TimeRange müßte ggf. noch integriert werden. War für mich aber nicht wichtig, so daß diese Anweisung bei mir entfallen ist.

                  Danke jedenfalls noch einmal für die Hilfe

                  ! //######################################################################
                  ! // Skript zum Rundruf im Haus (Telegram, Sonos) (auf der Basis der Ideen von Phantomio)
                  ! //######################################################################
                  ! on ({id: "telegram.0.communicate.request",  change:  "any"}, fAusgabe);
                  ! //######################################################################
                  ! // Definitionen und User Anpassungen
                  ! //######################################################################
                  ! // für die Sonos Ausgabe, "2" für Büro , "4" für alle (bei mir!)
                  ! var idSayIt = "sayit.4.tts.text";
                  ! var lautstaerke = 40;
                  ! // Keyword wird hier festgelegt
                  ! var Key = "Rundruf";
                  ! // #####################################################################
                  ! // Funktion
                  ! // #####################################################################
                  ! function fAusgabe(){
                  !     var Ausgabe = getState("telegram.0.communicate.request").val;
                  !     //log("Ausgabe–---->" + Ausgabe +"#");
                  !    
                  !     // Länge des Ausdrucks in Telegram + Position des Keys + Länge des Key ermitteln
                  !     var LaengeAusgabe = Ausgabe.length;
                  !     var PositionKey = Ausgabe.indexOf(Key);
                  !     var LaengeKey = Key.length;
                  !    
                  !     // log(LaengeAusgabe);
                  !     // log(PositionKey);
                  !     // log(LaengeKey);
                  !    
                  !     var Keyword = (Ausgabe.slice(PositionKey, PositionKey + LaengeKey));
                  !     // log("Keyword------>" + Keyword+"#");
                  !    
                  !     var ansage = (Ausgabe.slice(PositionKey + LaengeKey, LaengeAusgabe));
                  !     //log("ansage------>" + ansage+"#");
                  !    
                  !     if (Keyword === Key){
                  !        // log("Telegramm Say empfangen");
                  !         setState (idSayIt, lautstaerke +";" + ansage);
                  !     }
                  ! }

                  1 Reply Last reply Reply Quote 0
                  • S
                    skorpil last edited by

                    Jetzt habe ich doch noch mal eine Frage an die Spezialisten: ich habe mir telegram, Sonos und sayit eingerichtet. Funktioniert auch. Aaaaber, ich habe insgesamt 5 Sonos Geräte. Die Durchsage soll aber nicht auf allen 5, sondern nur auf dreien davon erfolgen. Ich habe Sonos.0 angelegt. Da sind ALLE meine Sonos Geräte hinterlegt. Im sayit Adapter kann ich nun entweder eines der Sonos Geräte oder alle Sonos Geräte auswählen. Aber leider eben nicht die drei zusammen, die ich nutzen möchte.

                    Habt ihr eine Idee, wie das gehen könnte? Als workaround hatte ich mich überlegt, eine zweite Sonos Instanz anzulegen, eben nur mit den drei Sonos Geräten, die ich benötige. Und die dann von einer Sayit Instanz anzusprechen. Geht das? Ich bin nämlich nicht sicher, ob das dann mit den Ports klappt. In der bestehenden Sonos.0 Instanz habe ich Port 8083 aktiviert. Muss ich bei einer evtl Sonos.1 Instanz einen anderen Port wählen?

                    Oder muss ich das Ganze über weitere sayit Instanzen lösen, die dann jeweils auf ein Sonox Geräte zugreifen?

                    Danke für die Hilfe!

                    1 Reply Last reply Reply Quote 0
                    • P
                      pix last edited by

                      Hallo,

                      Ich würde den Weg mit der zweiten Sonos Instanz versuchen.

                      Alternativ kannst du natürlich noch vor jeder Ansage eine Gruppe von Geräten anlegen und diese Gruppe nach der Ansage wieder zerlegen.

                      Pix

                      1 Reply Last reply Reply Quote 0
                      • S
                        skorpil last edited by

                        Danke, Pix,

                        Ich scheue mich ein wenig, die zweite Sonos Instanz anzulegen:

                        A) weil ich nicht weiß, welchen Port ich dan nutzen sollte, und

                        B) weil ich das schon einmal versucht hatte, und mir damit - glaube ich - meine iobroker Installation zerschossen habe. Es kamen jedenfalls dann gar keine Ansagen mehr. Ich bin allerdings UNSICHER, ob das durch die zweite Sonos Instanz verursacht wurde. Vielleicht war der Fehler auch woanders.

                        Ich werde mir mal in Image anlegen, damit ich in Ruhe testen und zur Not den alten Zustand wieder herstellen kann. (Wobei, habt ihr Erfahrungen mit bootfahigen Images? Welches Programm? Roadkill oder windows imager oder?)

                        Liebe Grüße

                        Bernd

                        1 Reply Last reply Reply Quote 0
                        • Y
                          ykuendig last edited by

                          Hab ich eben mal live gemacht. Sonos mit + eine neue Instanz verpasst.

                          Installierte mit exit-0 alles OK.

                          Die Instanz war natürlich rot. Dort den nächsten freien Port (bei mir wars 8084) eingestellt

                          Blieb rot. Neustart Button gedrückt -> Grün

                          Nichts zerschossen bis jetzt. Fingers-Crossed -Nachtrag: Nur der Speicher geht mir bald aus auf dem pi

                          1 Reply Last reply Reply Quote 0
                          • S
                            skorpil last edited by

                            Ykuendig,

                            Danke für die Information

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            346
                            Online

                            32.0k
                            Users

                            80.3k
                            Topics

                            1.3m
                            Posts

                            6
                            15
                            3934
                            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