Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos

    NEWS

    • ioBroker goes Matter ... Matter Adapter in Stable

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos

    This topic has been deleted. Only users with topic management privileges can see it.
    • surfer09
      surfer09 @ste_glei last edited by

      Was mache ich denn, wenn er den Lautsprecher nicht findet? Ich habe den Symfonisk von IKEA, im Prinzip Sonos. Er sucht schon eine ganze Zeit und findet scheinbar nichts...

      0521f30c-067c-403a-94d3-8029865698be-grafik.png

      K 1 Reply Last reply Reply Quote 0
      • David G.
        David G. last edited by David G.

        Das hier muss ich jetzt auch mal testen.
        Hab im Moment auch Stress mit SayIt.

        Hab nur zuletzt vor Gefühl Jahren einmal mit Node Red gearbeitet....

        Wo legt er die mp3 denn ab?
        Finde es nicht wirklich raus......

        Teste grad die Grundlagen.

        Nachher soll es folgendes können:

        • DP mit Text überwachen
        • mp3 erstellen
        • mp3 im Netzwerk bereitstellen
        • einen Befehl per curl aufrufen in dem der Pfad zur mp3 vorkommt und ein Wert auf einem DP

        Bekommt man den Flow so hin @mickym ?

        Aktuell in Node Red:
        Screenshot_20240622_210733_Chrome.jpg Screenshot_20240622_210707_Chrome.jpg

        Zu ersetzendes Blockly (an die mp3 kommt man so dran):
        Screenshot_20240622_211400_Chrome.jpg

        1 Reply Last reply Reply Quote 0
        • wendy2702
          wendy2702 last edited by

          Hi,

          Bin über diesen Thread gestolpert da auch Sayit bei mir nicht mehr funktioniert.

          Könntet ihr mir dennoch den Gefallen tun entweder ein entsprechendes Issue auf GitHub zu öffnen oder z.b. hier

          https://github.com/ioBroker/ioBroker.sayit/issues/320

          Oder hier https://github.com/ioBroker/ioBroker.sayit/issues/269

          Oder hier https://github.com/ioBroker/ioBroker.sayit/issues/278

          Zu kommentieren.

          wendy2702 created this issue in ioBroker/ioBroker.sayit

          closed Sayit funktioniert bei mir seit Version 4.0.1 überhaupt nicht mehr. #320

          wendy2702 created this issue in ioBroker/ioBroker.sayit

          closed Keine Ansage mehr wenn im JS oder Blockly Script z.B. der Trigger geändert wird. #269

          smalltower1 created this issue in ioBroker/ioBroker.sayit

          open Sayit doesn't work if script is new or updated #278

          S K 2 Replies Last reply Reply Quote 0
          • S
            Shadowhunter23 @wendy2702 last edited by

            @wendy2702
            Hast du mal probiert über die Control Objekte der vis ein mp3 abzuspielen welches zuvor lokal gespeichert wurde? Dann hättest du eine Alternative bis der Sayit Adapter wieder geht.

            wendy2702 1 Reply Last reply Reply Quote 0
            • wendy2702
              wendy2702 @Shadowhunter23 last edited by

              @shadowhunter23 da müsstest du mir gerade mal auf die Sprünge helfen wie genau du das meinst.

              S 1 Reply Last reply Reply Quote 0
              • S
                Shadowhunter23 @wendy2702 last edited by

                @wendy2702
                Ich habe es gerade probiert aber es kam kein Sound. Grundsätzlich sollte es so aber funktionieren:

                Screenshot_2024-06-23-10-16-09-473_com.android.chrome-edit.jpg

                Screenshot_2024-06-23-10-17-38-053_com.android.chrome-edit.jpg

                1 Reply Last reply Reply Quote 0
                • David G.
                  David G. last edited by David G.

                  @mickym

                  Beklommt.man das so umgesetzt?

                  • DP mit Text überwachen
                  • mp3 erstellen
                  • mp3 im Netzwerk bereitstellen
                  • einen Befehl per curl aufrufen in dem der Pfad zur mp3 vorkommt und ein Wert auf einem DP

                  (Ich weiß, hab ich weiter oben schonmal gefragt mit einem Beispielbild.
                  Aber eigentlich Antwortest du immer fast sofort, da gehe ich mal ganz dreist von aus, dass du es übersehen hast 🤣)

                  mickym 1 Reply Last reply Reply Quote 0
                  • mickym
                    mickym Most Active @David G. last edited by mickym

                    @david-g Nun - ich hab mir mal die Node runtergeladen, ich habe allerdings kein Sonos.

                    So und den Rest habe ich ausprobiert. Das was in Deinem Blockly machst ist kein Problem im Prinzip.

                    bei dem mp3 im Netzwerk bereitstellen, weiss ich nicht - der Pfad ist in der Regel nur auf auf das lokale Datensystem beschränkt. Den Curl Befehl mit dem Pfad zur mp3 ist kein Problem - aber der ist halt relativ fix.

                    Das Einzige, wenn man keine Lautsprecher dran hat, ist wohl dass man mit dieser Warnmeldung leben muss.
                    1bfc689a-e7c7-44e9-b04e-e40d75c19cd2-image.png

                    Aber ansonsten ist das kein Problem.

                    Du triggerst einfach mit Deinem Datenpunkt den Text den Du ausgeben willst, dann bekommst Du den Pfad zu dem mp3 und kannst dann noch die Lautstärke abholen und den Befehlstext erstellen.

                    David G. 1 Reply Last reply Reply Quote 0
                    • David G.
                      David G. @mickym last edited by

                      @mickym

                      Auch wenn ich bei Blockly den Leuten immer sage "Testet erstmal selber.... ", könntest du mir den Aufbau mal zeigen (ggf eine Export ^^)?

                      Ich schaffe es einfach nicht......

                      Bereitgestellt bekomme ich die mp3s bestimmt über den proxy Adapter.

                      mickym 1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active @David G. last edited by mickym

                        @david-g Nochmal - die Node erzeugt Dir mp3 da musst Du nichts machen. Ich dachte die mp3s sollen aus dem Text erzeugt werden? -

                        bf85f0e8-02fc-4e08-b118-44a03821bf00-image.png

                        Bei dem Service habe ich halt mal das ohne Authentifizierung genommen und ein iobroker homeverzeichnis als cache root genommen.

                        Dort legt Dir die Node dann die mp3 files ab - die Struktur ist vorgegeben.

                        Bei der Node selbst gibst dann noch die Stimme an - für Deutsch ist nur eine Stimme vorhanden:

                        382c5405-945a-459e-a0d3-f6f0ab6f762c-image.png

                        Mit Inject Nodes kannst Du testen - so wie ich das unten gemacht habe. Ansonsten gibst Du dann einfach die iobroker-In Node ein mit dem Datenpunkt der dann gesprochen werden soll.

                        David G. 1 Reply Last reply Reply Quote 0
                        • David G.
                          David G. @mickym last edited by David G.

                          @mickym

                          Ich müsste den Dateinamen der mp3 bekommen. Das schaffe ich nicht.

                          Und dann für den curl dem curl Befehl zusammenbauen.

                          curl -d \ "<play_info><app_key>xxxxxxx</app_key><url>http://192.168.99.33:8083/xxxx.0/Dateiname.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>Wert_aus_DP</volume></play_info>" http://192.168.99.24:8090/speaker

                          Quasi so, nur dass da vermutlich noch einiges zwischen muss....
                          Screenshot_20240623_140358_Chrome.jpg

                          mickym 2 Replies Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @David G. last edited by

                            @david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:

                            curl -d \ "<play_info><app_key>xxxxxxx</app_key><url>http://192.168.99.33:8083/xxxx.0/Dateiname.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>Wert_aus_DP</volume></play_info>" http://192.168.99.24:8090/speaker

                            Der Pfad zu dem Dateinamen ist lokal und wird in einem Array ausgegeben.

                            55929e69-fcdb-4ff8-b104-fcd48f0b2a42-image.png

                            Sobald die Node fertig ist, gibt sie Dir doch den Pfad zur mp3

                            1 Reply Last reply Reply Quote 0
                            • mickym
                              mickym Most Active @David G. last edited by mickym

                              @david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:

                              http://192.168.99.33:8083/xxxx.0/Dateiname.mp3<

                              Ja das ist alles kein Problem, aber ich sehe das als Problem: http://192.168.99.33:8083/xxxx.0/Dateiname.mp3

                              Kannst Du den da auch einfach einen lokalen Pfad mitgeben? Also einen lokalen Pfad wie ich Dir unten gezeigt habe?

                              David G. 1 Reply Last reply Reply Quote 0
                              • David G.
                                David G. @mickym last edited by David G.

                                @mickym

                                Ja, das müsste mit dem Proxy Adapter gehen.
                                Teste das jetzt/gleich mal.

                                EDIT
                                Ist eingerichtet.
                                Komme jetzt über http://192.168.99.33:8083/proxy.0/nodetts/ auf alle generierten mp3s.

                                Dann muss man den Pfad entfernen und nur den Dateinamen nehmen.

                                Screenshot_20240623_142453_Chrome.jpg

                                mickym 2 Replies Last reply Reply Quote 0
                                • mickym
                                  mickym Most Active @David G. last edited by

                                  @david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:

                                  @mickym

                                  Ja, das müsste mit dem Proxy Adapter gehen.
                                  Teste das jetzt/gleich mal.

                                  So ich habe dann mal den Flow fertiggemacht - ggf. musst Du halt die Pfade noch anpassen - musst halt sagen, wenn Du da noch Hilfe brauchst.

                                  Momentan sieht Dein Befehl halt so aus mit dem lokalen Pfad:

                                  curl -d \ "<play_info><app_key>xxxxxxx</app_key><url>/home/iobroker/tts/sonospollyttsstorage/ttsfiles/f47f65d4ae122e0003d1f51977b47d71.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>50</volume></play_info>" http://192.168.99.24:8090/speaker
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • mickym
                                    mickym Most Active @David G. last edited by

                                    @david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:

                                    Dann muss man den Pfad entfernen und nur den Dateinamen nehmen.

                                    Ah Ok - dann passe ich das noch kurz an

                                    David G. 1 Reply Last reply Reply Quote 0
                                    • David G.
                                      David G. @mickym last edited by David G.

                                      @mickym

                                      Vielen Dank.
                                      Cool wäre noch, wenn die Lautstärke noch aus einem anderen DP kommt.

                                      Ps
                                      Ich liebe den Proxy Adapter.
                                      Habe ich schon oft genutzt.
                                      Glaube der ist viel zu unbekannt ^^.

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @David G. last edited by mickym

                                        @david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:

                                        @mickym

                                        Vielen Dank.
                                        Cool wäre noch, wenn die Lautstärke noch aus einem anderen DP kommt.

                                        Hab ich schon berücksichtigt

                                        c551dd8c-2706-4c89-b51b-59dac81f57a4-image.png

                                        Einen Datenpunkt für den Text, den anderen für Volume

                                        David G. 1 Reply Last reply Reply Quote 0
                                        • David G.
                                          David G. @mickym last edited by

                                          @mickym

                                          Vielen lieben Dank
                                          Teste sobald der Export da ist.

                                          Falls die Schwiegereltern nicht wieder zu früh kommen 🤣

                                          mickym 1 Reply Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @David G. last edited by mickym

                                            @david-g Ich hab den curl Befehl selbst in die exec Node verfrachtet - kann man aber auch in der Template Node belassen.

                                            Deshalb siehst Du ihn in der Debugausgabe nicht.

                                            552dfe43-f49a-4453-a794-b03ffbc1fc17-image.png

                                            Also der Befehl würde dann vollständig so heißen:

                                            curl -d \ <play_info><app_key>xxxxxxx</app_key><url>http://192.168.99.33:8083/proxy.0/nodetts/f47f65d4ae122e0003d1f51977b47d71.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>50</volume></play_info>" http://192.168.99.24:8090/speaker
                                            

                                            Hier der Flow:
                                            2846193d-7cd0-4ccc-82be-6ac2c027f5a3-image.png

                                            und hier der Export:

                                            [
                                               {
                                                   "id": "ea4ec0a982311ad6",
                                                   "type": "ttsultimate",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "TTS-Ultimate",
                                                   "voice": "de-DE",
                                                   "ssml": false,
                                                   "sonosipaddress": "",
                                                   "sonosvolume": "20",
                                                   "sonoshailing": "0",
                                                   "config": "35ab450e7c673246",
                                                   "property": "payload",
                                                   "propertyType": {},
                                                   "rules": [],
                                                   "playertype": "noplayer",
                                                   "speakingrate": "1",
                                                   "speakingpitch": "0",
                                                   "unmuteIfMuted": true,
                                                   "elevenlabsStability": "0.5",
                                                   "elevenlabsSimilarity_boost": "0.5",
                                                   "x": 390,
                                                   "y": 200,
                                                   "wires": [
                                                       [
                                                           "2806f509e602fe63",
                                                           "5e8ec1239a8adc51"
                                                       ],
                                                       []
                                                   ]
                                               },
                                               {
                                                   "id": "2806f509e602fe63",
                                                   "type": "debug",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "tts output",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "true",
                                                   "targetType": "full",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 680,
                                                   "y": 100,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "491be7923b8a7632",
                                                   "type": "debug",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "Befehl",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 1370,
                                                   "y": 100,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "f33f16b8963a9bac",
                                                   "type": "template",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "",
                                                   "field": "payload",
                                                   "fieldType": "msg",
                                                   "format": "handlebars",
                                                   "syntax": "mustache",
                                                   "template": "\"<play_info><app_key>xxxxxxx</app_key><url>http://192.168.99.33:8083/proxy.0/nodetts/{{payload}}</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>{{volume}}</volume></play_info>\" http://192.168.99.24:8090/speaker",
                                                   "output": "str",
                                                   "x": 1200,
                                                   "y": 180,
                                                   "wires": [
                                                       [
                                                           "491be7923b8a7632",
                                                           "7aaa60cfd020f3ca"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "28729562ca781877",
                                                   "type": "ioBroker in",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "",
                                                   "attrname": "payload",
                                                   "topic": "0_userdata.0.tts",
                                                   "payloadType": "value",
                                                   "onlyack": "",
                                                   "func": "all",
                                                   "gap": "",
                                                   "fireOnStart": "false",
                                                   "outFormat": "MQTT",
                                                   "x": 180,
                                                   "y": 200,
                                                   "wires": [
                                                       [
                                                           "ea4ec0a982311ad6"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "9828506682942416",
                                                   "type": "ioBroker get",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "",
                                                   "topic": "0_userdata.0.vol",
                                                   "attrname": "volume",
                                                   "payloadType": "value",
                                                   "errOnInvalidState": "nothing",
                                                   "x": 760,
                                                   "y": 180,
                                                   "wires": [
                                                       [
                                                           "38820d3ffb950c33"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "5e8ec1239a8adc51",
                                                   "type": "switch",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "fertig ?",
                                                   "property": "payload",
                                                   "propertyType": "msg",
                                                   "rules": [
                                                       {
                                                           "t": "true"
                                                       }
                                                   ],
                                                   "checkall": "true",
                                                   "repair": false,
                                                   "outputs": 1,
                                                   "x": 590,
                                                   "y": 180,
                                                   "wires": [
                                                       [
                                                           "9828506682942416"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "7aaa60cfd020f3ca",
                                                   "type": "exec",
                                                   "z": "fec1825aaae0effe",
                                                   "command": "curl -d \\ ",
                                                   "addpay": "payload",
                                                   "append": "",
                                                   "useSpawn": "false",
                                                   "timer": "5",
                                                   "winHide": false,
                                                   "oldrc": false,
                                                   "name": "",
                                                   "x": 1380,
                                                   "y": 180,
                                                   "wires": [
                                                       [
                                                           "9a11f7b2222a6304"
                                                       ],
                                                       [
                                                           "b24feb9e68406c99"
                                                       ],
                                                       []
                                                   ]
                                               },
                                               {
                                                   "id": "9a11f7b2222a6304",
                                                   "type": "debug",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "stdout",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 1530,
                                                   "y": 140,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "38820d3ffb950c33",
                                                   "type": "change",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "payload nur Dateiname",
                                                   "rules": [
                                                       {
                                                           "t": "set",
                                                           "p": "payload",
                                                           "pt": "msg",
                                                           "to": "filesArray.0.file",
                                                           "tot": "msg"
                                                       },
                                                       {
                                                           "t": "change",
                                                           "p": "payload",
                                                           "pt": "msg",
                                                           "from": ".*/ttsfiles/(.*)$",
                                                           "fromt": "re",
                                                           "to": "$1",
                                                           "tot": "str"
                                                       }
                                                   ],
                                                   "action": "",
                                                   "property": "",
                                                   "from": "",
                                                   "to": "",
                                                   "reg": false,
                                                   "x": 990,
                                                   "y": 180,
                                                   "wires": [
                                                       [
                                                           "f33f16b8963a9bac"
                                                       ]
                                                   ]
                                               },
                                               {
                                                   "id": "b24feb9e68406c99",
                                                   "type": "debug",
                                                   "z": "fec1825aaae0effe",
                                                   "name": "stderr",
                                                   "active": true,
                                                   "tosidebar": true,
                                                   "console": false,
                                                   "tostatus": false,
                                                   "complete": "payload",
                                                   "targetType": "msg",
                                                   "statusVal": "",
                                                   "statusType": "auto",
                                                   "x": 1530,
                                                   "y": 180,
                                                   "wires": []
                                               },
                                               {
                                                   "id": "35ab450e7c673246",
                                                   "type": "ttsultimate-config",
                                                   "name": "TTS Service",
                                                   "noderedipaddress": "192.168.178.69",
                                                   "noderedport": "1980",
                                                   "purgediratrestart": "leave",
                                                   "ttsservice": "googletranslate",
                                                   "TTSRootFolderPath": "/home/iobroker/tts"
                                               }
                                            ]
                                            

                                            Die Debug Nodes kannst ja dann alle wieder entfernen bzw. deaktivieren.

                                            Wie gesagt, Du kannst die Ablage der mp3 s auch woanders hinlegen, Du musst das halt im Root tts Verzeichnis festlegen und der User iobroker muss halt Schreib- und Leserechte auf den Ordner haben.
                                            5df37843-b875-4060-adb1-060e3d11f77e-image.png

                                            Wenn Du diese Jingle also das Hailing noch davor haben willst - dann kann das nacheinander abgespielt werden, dann musst Du Deinen Proxy auf das Verzeichnis vorher definieren.

                                            4fa606bc-5c1e-405c-b387-ef01704bdebd-image.png

                                            Wenn das direkte Sonos Lautsprecher sind, kannst Du das aber doch auch direkt ausgeben, dann brauchst Du nicht mit curl arbeiten. Das ist doch viel eleganter?

                                            David G. 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

                                            850
                                            Online

                                            31.6k
                                            Users

                                            79.5k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            40
                                            2258
                                            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