Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. ioBroker Allgemein
  4. [gelöst] Workaround: SayIt erzeugt keine Sayit.0.say.mp3

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    672

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    515

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    1.0k

[gelöst] Workaround: SayIt erzeugt keine Sayit.0.say.mp3

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
sayitsonos
9 Beiträge 4 Kommentatoren 814 Aufrufe 2 Beobachtet
  • Ä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.
  • R Offline
    R Offline
    Ryco
    schrieb am zuletzt editiert von Ryco
    #1

    Hallo zusammen,

    ich habe die aktuelle Zeit genutzt, mich endlich mal mit Heimautomatisierung zu beschäftigen. Allerdings muss ich mich sowohl in Linux wie in ioBroker komplett von 0 aus einarbeiten und verbringe wohl die meiste Zeit bei google.

    Entstanden ist dabei die Funktion, dass auf der Fritzbox eingehende Anrufe per ioBroker auf dem Sonos ausgeben werden.

    Mein Problem ist, dass mein SayIt keine sayit.0.say.mp3 -Datei (mehr) auf dem PC speichert und dadurch meine Sonos-Ausgabe nicht mehr klappt.

    Als System habe ich auf einem Intel NUC Ubuntu 18.04 LTS installiert und darauf ioBroker.

    Im ioBroker habe ich den Fritzbox-Adapter, SayIT und den Sonos Adapter installiert.
    https://forum.iobroker.net/topic/22888/gelöst-sonos-http-api-installation-für-newbies-dummies-und-mich

    Nach der Anleitung habe ich ich die Sonos HTTP API installiert und zum laufen gebracht. Über IP:5005 kann ich entsprechend meine Sonos-Lautsprecher steuern.

    Über das Forum (Vorlagen von ruhr70, nobob u.a.) hier habe ich mir ein Script zusammengebastelt, was prinzipiell auch so funktioniert wie es soll:

        var telefonbuchRufnummer =
        { 
       "0123456": {"name":"Vorname Nachname"},
    	"### ? ###":        {"name":"Rufnummer unterdrückt"}
        };
    
      // Variable wenn die Rufnummer nicht im Telefonbuch vorhanden ist
    	var telefonbuchRufnummerNichtBekannt = "unbekannter Rufnummer";
    
       // Variable für die aktuell anrufende Rufnummer (Fritzbox Adapter X (hier: Adapter 0))
        var Anrufer = "fritzbox.0.calls.ringActualNumber"; // actual last ringing number
    
    function rufnummer2name (rufnummer) {
        var name = ""; // Variable name ablöschen
            if (!telefonbuchRufnummer[rufnummer]) { // Wenn Rufnummer nicht im Telefonbuch
            name = telefonbuchRufnummerNichtBekannt; // Oben festgelegter Text in Ausgabevariable schreiben
        } else {
            name = telefonbuchRufnummer[rufnummer].name; // Rufnummer im Telefonbuch vorhanden; in Ausgabevariable schreiben
        }
        return name; // Rückgabewert entweder Telefonbucheintrag oder nicht bekannt.
        }
    
        // FUNKTION : Sprachausgabe über SayIT Adapter
        
        on ({id: Anrufer, valGe: 1}, AusgabeAnrufer);
    
    function AusgabeAnrufer(){
        //setState("sayit.0.tts.text", "Anruf von. " + getState(Anrufer).val);
        var vol ="sayit.0.tts.volume";
        setState (vol,70);
        setState("sayit.0.tts.text", "Anruf von. " + rufnummer2name(getState(Anrufer).val));
    
        /* Ubuntu Datei verlinken:
        ln  /opt/iobroker/node_modules/iobroker.sayit/sayit.0.say.mp3
            /home/user/node-sonos-http-api-master/static/clips/sayit.mp3 
        */
        
        exec ("curl 'http://192.168.XX.YY:5005/Office/clip/sayit.mp3/30'");
    }
    

    Das Ganze funktioniert auch soweit:
    Anmerkung 2020-04-11 224123.png

    Ich habe bislang im SayIT die Ausgabe auf den Sonos-Adapter gelegt, auch wenn er nicht funktioniert und das laut dem Forum ja eher üblich ist.

    Aber über diesen Weg erzeugte SayIT bislang die sayit.0.say.mp3, welche ich über einen Hardlink (siehe Kommentar) in den sonos http api-Ordner linke. Die exec -Zeile führt das dann aus. Klappt. Ob das elegant ist, keine Ahnung, zu mehr reicht mein Wissen nicht.

    Seit 2 Tagen hat aber die SayIT Datei die Ausgabe-MP3 nicht mehr in den Ordner geschrieben. Wenn ich die Datei gelöscht habe, wurde diese nicht neu erstellt.

    Wenn ich aber unter Objekte sayit.0/tts/mp3 mir den Wert anschaue:
    http://192.168.XX.YY:8082/state/sayit.0.tts.mp3

    dann höre ich dort die richtige Datei, auch wenn diese jetzt als sayit.0.tts.mp3 bezeichnet wird.

    Ich finde auf meinem Linux-PC jetzt weder die sayit.0.say.mp3 noch die sayit.0.tts.mp3

    Ich habe zwischendurch auch schon den SayIT-Adapter komplett entfernt und neu installiert. Das halt leider auch nichts gebracht.

    Wo ist mein Fehler, bzw. was müsste ich machen? Google bzw. die Forums-Suche hat mich bislang nicht weitergebracht.

    Danke für eure Mühe :-)

    HomoranH 1 Antwort Letzte Antwort
    0
    • R Ryco

      Hallo zusammen,

      ich habe die aktuelle Zeit genutzt, mich endlich mal mit Heimautomatisierung zu beschäftigen. Allerdings muss ich mich sowohl in Linux wie in ioBroker komplett von 0 aus einarbeiten und verbringe wohl die meiste Zeit bei google.

      Entstanden ist dabei die Funktion, dass auf der Fritzbox eingehende Anrufe per ioBroker auf dem Sonos ausgeben werden.

      Mein Problem ist, dass mein SayIt keine sayit.0.say.mp3 -Datei (mehr) auf dem PC speichert und dadurch meine Sonos-Ausgabe nicht mehr klappt.

      Als System habe ich auf einem Intel NUC Ubuntu 18.04 LTS installiert und darauf ioBroker.

      Im ioBroker habe ich den Fritzbox-Adapter, SayIT und den Sonos Adapter installiert.
      https://forum.iobroker.net/topic/22888/gelöst-sonos-http-api-installation-für-newbies-dummies-und-mich

      Nach der Anleitung habe ich ich die Sonos HTTP API installiert und zum laufen gebracht. Über IP:5005 kann ich entsprechend meine Sonos-Lautsprecher steuern.

      Über das Forum (Vorlagen von ruhr70, nobob u.a.) hier habe ich mir ein Script zusammengebastelt, was prinzipiell auch so funktioniert wie es soll:

          var telefonbuchRufnummer =
          { 
         "0123456": {"name":"Vorname Nachname"},
      	"### ? ###":        {"name":"Rufnummer unterdrückt"}
          };
      
        // Variable wenn die Rufnummer nicht im Telefonbuch vorhanden ist
      	var telefonbuchRufnummerNichtBekannt = "unbekannter Rufnummer";
      
         // Variable für die aktuell anrufende Rufnummer (Fritzbox Adapter X (hier: Adapter 0))
          var Anrufer = "fritzbox.0.calls.ringActualNumber"; // actual last ringing number
      
      function rufnummer2name (rufnummer) {
          var name = ""; // Variable name ablöschen
              if (!telefonbuchRufnummer[rufnummer]) { // Wenn Rufnummer nicht im Telefonbuch
              name = telefonbuchRufnummerNichtBekannt; // Oben festgelegter Text in Ausgabevariable schreiben
          } else {
              name = telefonbuchRufnummer[rufnummer].name; // Rufnummer im Telefonbuch vorhanden; in Ausgabevariable schreiben
          }
          return name; // Rückgabewert entweder Telefonbucheintrag oder nicht bekannt.
          }
      
          // FUNKTION : Sprachausgabe über SayIT Adapter
          
          on ({id: Anrufer, valGe: 1}, AusgabeAnrufer);
      
      function AusgabeAnrufer(){
          //setState("sayit.0.tts.text", "Anruf von. " + getState(Anrufer).val);
          var vol ="sayit.0.tts.volume";
          setState (vol,70);
          setState("sayit.0.tts.text", "Anruf von. " + rufnummer2name(getState(Anrufer).val));
      
          /* Ubuntu Datei verlinken:
          ln  /opt/iobroker/node_modules/iobroker.sayit/sayit.0.say.mp3
              /home/user/node-sonos-http-api-master/static/clips/sayit.mp3 
          */
          
          exec ("curl 'http://192.168.XX.YY:5005/Office/clip/sayit.mp3/30'");
      }
      

      Das Ganze funktioniert auch soweit:
      Anmerkung 2020-04-11 224123.png

      Ich habe bislang im SayIT die Ausgabe auf den Sonos-Adapter gelegt, auch wenn er nicht funktioniert und das laut dem Forum ja eher üblich ist.

      Aber über diesen Weg erzeugte SayIT bislang die sayit.0.say.mp3, welche ich über einen Hardlink (siehe Kommentar) in den sonos http api-Ordner linke. Die exec -Zeile führt das dann aus. Klappt. Ob das elegant ist, keine Ahnung, zu mehr reicht mein Wissen nicht.

      Seit 2 Tagen hat aber die SayIT Datei die Ausgabe-MP3 nicht mehr in den Ordner geschrieben. Wenn ich die Datei gelöscht habe, wurde diese nicht neu erstellt.

      Wenn ich aber unter Objekte sayit.0/tts/mp3 mir den Wert anschaue:
      http://192.168.XX.YY:8082/state/sayit.0.tts.mp3

      dann höre ich dort die richtige Datei, auch wenn diese jetzt als sayit.0.tts.mp3 bezeichnet wird.

      Ich finde auf meinem Linux-PC jetzt weder die sayit.0.say.mp3 noch die sayit.0.tts.mp3

      Ich habe zwischendurch auch schon den SayIT-Adapter komplett entfernt und neu installiert. Das halt leider auch nichts gebracht.

      Wo ist mein Fehler, bzw. was müsste ich machen? Google bzw. die Forums-Suche hat mich bislang nicht weitergebracht.

      Danke für eure Mühe :-)

      HomoranH Nicht stören
      HomoranH Nicht stören
      Homoran
      Global Moderator Administrators
      schrieb am zuletzt editiert von
      #2

      @Ryco habe am Handy nicht den ganzen Text gelesen.

      Der Sonos Adapter kann kein TTS mehr.
      Dazu gibt es eine Anleitung über die Sonos API

      kein Support per PN! - Fragen im Forum stellen -
      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
      Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton oben rechts. Danke!
      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Antwort Letzte Antwort
      0
      • UweRLPU Offline
        UweRLPU Offline
        UweRLP
        schrieb am zuletzt editiert von
        #3

        Möglicherweise hast du ein ähnliches Problem wie ich. Wenn ich in der Instanz des SayIt Adapters als Sprache Google - Deutsch einstelle und der anzusagende Text zu lange ist, funktioniert es nicht. Kurze Texte dagegen funktionieren. Habe jetzt als Sprache Cloud - Deutsch - Hans eingestellt, dort scheint die Längenbegrenzung nicht zu geben.

        1 Antwort Letzte Antwort
        0
        • R Offline
          R Offline
          Ryco
          schrieb am zuletzt editiert von
          #4

          @Homoran: Das weiß ich. Die Sound-Ausgabe über meinen Weg über die Sonos-API funktioniert ja auch. Habe jetzt testweise die Ausgabe auf System umgestellt. Bringt erstmal keine Änderung.

          @UweRLP: Nein, die Sprache wird erzeugt.

          IP:8082/state/sayit.0.tts.mp3 das ist die Datei, die ich brauche. Der Pfad ergibt sich aus dem Wert von Objekte sayit.0/tts/mp3. Nur. Wo ist die Datei? Die Datei passt jedes mal zur Anfruferansage. Dadurch dass ich diese ja später noch aus einem Browser aufrufen kann, muss die doch irgendwo gespeichert sein?

          Oder gibt es einen Weg, wie ich diese Datei vom ioBroker-Webserver an den Sonos übergeben kann? Denn der Sonos spielt ja nur Dateien ab, die im /clips/ im Ordner node-sonos-http-api-master/static/ liegen.

          M 1 Antwort Letzte Antwort
          0
          • R Ryco

            @Homoran: Das weiß ich. Die Sound-Ausgabe über meinen Weg über die Sonos-API funktioniert ja auch. Habe jetzt testweise die Ausgabe auf System umgestellt. Bringt erstmal keine Änderung.

            @UweRLP: Nein, die Sprache wird erzeugt.

            IP:8082/state/sayit.0.tts.mp3 das ist die Datei, die ich brauche. Der Pfad ergibt sich aus dem Wert von Objekte sayit.0/tts/mp3. Nur. Wo ist die Datei? Die Datei passt jedes mal zur Anfruferansage. Dadurch dass ich diese ja später noch aus einem Browser aufrufen kann, muss die doch irgendwo gespeichert sein?

            Oder gibt es einen Weg, wie ich diese Datei vom ioBroker-Webserver an den Sonos übergeben kann? Denn der Sonos spielt ja nur Dateien ab, die im /clips/ im Ordner node-sonos-http-api-master/static/ liegen.

            M Offline
            M Offline
            Marty56
            schrieb am zuletzt editiert von
            #5

            @Ryco kann es sein, dass Du auf redis umgestellt hast? Wenn ja, dann liegt das sayit file in der Redis db und nicht mehr im File System.

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

            R 1 Antwort Letzte Antwort
            0
            • M Marty56

              @Ryco kann es sein, dass Du auf redis umgestellt hast? Wenn ja, dann liegt das sayit file in der Redis db und nicht mehr im File System.

              R Offline
              R Offline
              Ryco
              schrieb am zuletzt editiert von
              #6

              @Marty56 Auf was umgestellt? Ich kann dir gerade nicht folgen.

              M 1 Antwort Letzte Antwort
              0
              • R Ryco

                @Marty56 Auf was umgestellt? Ich kann dir gerade nicht folgen.

                M Offline
                M Offline
                Marty56
                schrieb am zuletzt editiert von
                #7

                @Ryco such im Forum mal nach redis.

                Du kannst deine Datenbank herausbekommen, in dem Du im Linux Terminal, "iobroker status" eingibt und dann schaust, ob dort 'redis' ausgegeben wird oder nur zweimal 'file'.

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

                1 Antwort Letzte Antwort
                0
                • R Offline
                  R Offline
                  Ryco
                  schrieb am zuletzt editiert von
                  #8

                  Nein, ich habe nicht umgestellt.

                  iobroker status liefert

                  Objects type: file
                  States type: file

                  1 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    Ryco
                    schrieb am zuletzt editiert von Ryco
                    #9

                    Ich habe mir jetzt einen Workaround gebastelt und würde mein Problem als gelöst bezeichnen wollen. Auch wenn ich dadurch den Eindruck habe, dass ich unter Linux Probleme genauso mit der Holzhammermethode lösen kann, wie unter Windows ...

                    Gedanke: Die Datei liegt ja auf einem Webserver ... holdmybeer

                    Linux-Terminal:

                    wget -qO /opt/iobroker/cache/sayit.mp3 IP:8082/state/sayit.0.tts.mp3
                    sudo chown iobroker:iobroker /opt/iobroker/cache/sayit.mp3
                    

                    Dann angepasster Hardlink:

                     sudo ln /opt/iobroker/cache/sayit.0.say.mp3  /home/user/node-sonos-http-api-master/static/clips/sayit.mp3 
                    

                    Und dann zum Schluss im eigentlichen ioBroker-Script folgende Veränderung:

                    function AusgabeAnrufer(){
                        //setState("sayit.0.tts.text", "Anruf von. " + getState(Anrufer).val);
                        var vol ="sayit.0.tts.volume";
                        setState (vol,70);
                        setState("sayit.0.tts.text", "Anruf von. " + rufnummer2name(getState(Anrufer).val));
                    
                        /* Ubuntu Datei verlinken:
                        ln  /opt/iobroker/cache/sayit.0.say.mp3
                            /home/user/node-sonos-http-api-master/static/clips/sayit.mp3 
                        */
                    
                        // wget: Download der Datei über Terminal
                        exec ("wget -qO /opt/iobroker/cache/sayit.mp3 IP:8082/state/sayit.0.tts.mp3")
                    
                        // exec ("curl 'http://192.168.66.111:5005/flur/clip/sayit.mp3/30'");
                       // Verzögerte Auführung der Wiedergabe für Kopierbefehl, Delay 300 ms
                        setTimeout(function() {
                        exec ("curl 'http://192.168.66.111:5005/Office/clip/sayit.mp3/30'");
                        }, 600);
                    }
                    

                    Damit klappt alles wie gewünscht. Die 300 ms 600 msVerzögerung reichen bei mir. 300 ms klappt nicht immer.

                    1 Antwort Letzte Antwort
                    0

                    Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                    Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                    Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                    Registrieren Anmelden
                    Antworten
                    • In einem neuen Thema antworten
                    Anmelden zum Antworten
                    • Älteste zuerst
                    • Neuste zuerst
                    • Meiste Stimmen


                    Support us

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

                    601

                    Online

                    32.8k

                    Benutzer

                    82.9k

                    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