NEWS
Bose sprach ausgabe
-
Guten Abend. ich bin damit beschäftigt einen Post Melder zu programmieren. als Auslöser dient ein normaler Tür kontakt der dann ein Telegram auf mein Handy schickt. jetzt möchte ich eine sprach Ausgabe mein Bose Soundtouch 20. jetzt die frage:
Wie krieg ich eine sprach Ausgabe auf den Bose Lautsprecher. ich weis das es sayit gibt aber irgend wie will das nicht so wie ich das will. hat jemand da eine Lösung für mich ??
was Code an geht hebe ich kein plan. das einzige wovon ich plan habe ist Blocky und das beherrsche ich auch nur zu 30%
Schon mahl danke, lg Jo
-
@johny2410 Gibt es eine Alexa im Haus und ist die Bose Soundtouch 20 mit der verbunden? Alexa2-Adapter in ioBroker installiert? Kann man die Bose Soundtouch 20 schon aus ioBroker ansprechen?
Anscheinend hat diese Box http Zugriff: http://xxx.xxx.xxx.xxx:8090/info
https://www.youtube.com/watch?v=NeZSEEwhxO4
https://mytec-home.de/smart-home/sprachausgabe-klingelton-ueber-multiroom-im-smarthome
Bei say-it wird die Datei
/opt/iobroker/iobroker-data/sayit/sayit.0.say.mp3
immer wieder genutzt.
-
Nein es gibt keine alexa oder sonstige Geräte im haus das wäre zu einfach gewesen.
Ja, es gibt ein eigenen Adapter für bose
Ich werde mir das mahl ankuken was du mir da geschikt hast.
Das blocky Skript sieht interessant aus.
-
Hab es grad nicht vor mir.
Man kann im Bose Adapter unter "bosesoundtouch.0.sources.LOCAL_INTERNET_RADIO" eine mp3 übergeben meine ich.Mit sayit bekommt man die Datei bestimmt erzeugt?
-
@david-g das habe ich schon versucht. Funktioniert leider nicht ohne das das auf nem server liegt. Außerdem sind alle presents schon belegt.
-
Hab das noch nie getestet, da ich kein VIS nutze.
Kann man auf die Elemente (Bilder etc) direkt per URL zugreifen?
Dann könnte man die mp3 evtl dort generieren lassen. -
@david-g nein leider nicht. Die url die da eingetragen steht ist nur für ein bild
-
Evtl hilft dieser thread.
Hier wird der proxy Adapter empfohlen um eigenen content auszuliefern.
Der Adapter scheint es zu können, bekomme ihn aber nicht recht konfiguriert...
EDIT:
Hab noch was probiert.
In der Bose App bekommt man so gut wie alles an "LOCAL_INTERNET_RADIO" übergeben.
Ein Preset wird nicht benötigt.Im Bose Adapter reagiert der "LOCAL_INTERNET_RADIO" Button bei mir nicht. Vermutlich muss noch irgendwie ein Pfad zu einer Datei oder einem stream mit angegeben werden.
Mit dem proxy Adapter komme ich langsam weiter. Hab dazu noch ein anderes Topic offen.
EDIT 2:
Man muss auch ohne App eine mp3 übergeben können.
In HA gehst es scheinbar out of the Box.
klick -
@david-g ich werde das mit dem proxy morgen genauer anschauen.
Mahl kucken was da geht
-
Hab heute nochwas gefunden.
Müsste man auch umgesetzt bekommen.Den Code gibt's unterm Video. Diesen API key kann man wohl auch bekommen.
-
Habs wie im Video hinbekommen.
Morgen kann ich was mehr posten.Nur der Proxy will noch nicht....
-
Hier mein bisheriger Vorschritt.
Ich bekomme nun Notifications an die Bose gesendet. Wenn Musik läuft, blendet diese für die Ansage aus.
An sich klappt alles. Hänge nur noch daran, den iobroker Webserver zum ausliefern von Dateien zu bewegen (Für SayIt).
Wenn die mp3s jedoch woanders bereitgestellt werden klappt schon alles.Zum vorgehen:
Als erstes muss man sich unter Bose Developer registrieren.
Dort kann man sich nun eine eine App anlegen. In der App findet man nun den "Consumer Key", diesen benötigen wir nachher im Script.Jetzt benötigen wir folgendes Blockly:
Der ganze Befehl lautet:curl -d \ "<play_info><app_key>Dein_Consumer_Key</app_key><url>Dein_Link_zur_mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>10</volume></play_info>" http://ip_der_bose_box:8090/speaker
Den Service- und Messgagetext kann man auch noch ausfüllen. Dann sieht man in der App oder sonst wo man sich die aktuelle Wiedergabe anzeigen lässt noch Infos in Textform.
Die Lautstärke (Volume) muss mindestens auf 10 stehen, sonst wird der Befehl nicht ausgeführt.
Nun könnt Ihr Benachrichtigungen an die Box senden.
Es werden wohl nur die Soundtouch 10, 20 III und 30 III unterstützt. -
Bei mir läuft es jetzt wie oben gelöst stabil.
Den Webserver habe ich über Umwege, und ohne genau zu wissen warum es klappt am laufen.
Habe mir einen Apache 2 Server installiert.
War ein ziemliches hin und her mit Ordnerrechten bis ich die mp3 Daten von sayit abspielen konnte.Wenn das jemand nachbauen möchte, sollte man im Forum evtl einen sauberen Weg erarbeiten um die mp3s bereitzuw.
-
@david-g hey, ich habe seit längerem nicht hier im Forum gekuckt wegen meiner Ausbildung. (wenig zeit im Handwerk grade)
und werde die Lösung oben ausprobieren. das mit dem Proxy habe ich nicht hin gekriegt.
danke das du dich da so hinter gehangen hast.
-
Werde morgen mal mein Blockly posten.
Habe mir den Apache Server über webmin installiert.
Dann dem Ordner wo die mp3 liegt und dem default www Ordner vom Apache für jeden Nutzer freigegeben (kann ich im LAN noch gut verantworten).
Das Blockly schiebt die mp3 zum Apache und schickt den Link dann zur Bose.
Getriggert wird über einen Datenpunkt in den ich den Anzusagenden Text schreiben lasse. -
@david-g wäre nett wen du das mahl posten würdest.
-
Hier ist der Export.
Mein Appkey habe ich mit xxxxxx ersetzt.<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="on" id="P)MbE7-)CU,Ie~9{Mg.#" x="-762" y="63"> <field name="OID">0_userdata.0.Sprachausgabe.Zu_sprechender_Text</field> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <statement name="STATEMENT"> <block type="sayit" id="Xc~;GZD?XGl9=L{x?qN="> <field name="INSTANCE">all</field> <field name="LANGUAGE">de</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="K_Jt7a[/u7gsA:[dZ;/o"> <field name="TEXT">gggg</field> </shadow> <block type="on_source" id="9mr8aFJ;V)R,jrmmDO1v"> <field name="ATTR">state.val</field> </block> </value> <next> <block type="timeouts_settimeout" id="9Cj1NeWGz_KD5dc9}11]"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id="-Hs@I63![jqDc)(?R6o)"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="Eu*kfUv}Z3$L%i2S|+uk"> <field name="TEXT">mv /opt/iobroker/iobroker-data/sayit/sayit.0.say.mp3 /var/www/html</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="c0kX0%rr)ee7)r%K=nBj"> <field name="NAME">timeout2</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id="=(Uxiu)4n@vAW4~8yM:c"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="1I$^f/Qa*aeoQjfCa`O;"> <field name="TEXT">curl -d \ "<play_info><app_key>xxxxxxxxxxxxx;/app_key><url>http://192.168.99.33/sayit.0.say.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>10</volume></play_info>" http://192.168.99.24:8090/speaker</field> </shadow> <block type="text_join" id="37M^HRW9i67*5:1tD-4g"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="THF9pN,zFaoAxP9kIl(4"> <field name="TEXT">curl -d \ "<play_info><app_key>xxxxxxxxx</app_key><url>http://192.168.99.33/sayit.0.say.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume></field> </block> </value> <value name="ADD1"> <block type="get_value" id="+#ZjSj~6;Ti*1boSEaJF"> <field name="ATTR">val</field> <field name="OID">0_userdata.0.Sprachausgabe.Lautsaerke</field> </block> </value> <value name="ADD2"> <block type="text" id="iK2UbN]TyKAs#i*1qhoC"> <field name="TEXT"></volume></play_info>" http://192.168.99.24:8090/speaker</field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
@david-g @david-g @david-g danke, ich habe es aus probiert. es funktioniert bis auf die ton ausgabe. da komt immer der log error datei ist zu kurtz. ist ich habe die mp3 datein auf meiner fritznas gespeichert. ich habe dein skript 1 zu 1 übernommen nur der trigger habe ich entfernt. weil ich nicht genau begriffen habe wofür der ist.
-
Der Trigger überwacht einen Datenpunkt in den der Text für die Sprachausgabe geschrieben wird.
Wenn dort zb "Waschmaschine fertig" eingetragen wird, wird das Script gestartet.
Erst wird mit sayit die mp3 (Waschmaschine fertig) geschrieben, verschoben und dann abgespielt.
Kann die Fritzbox die Daten per http bereitstellen? Dachte nur ftp. Dachte, dass mag die Bose nicht.
Welcher Adapter meldet, dass die mp3 zu kurz ist?
Den eigenen Appkey hast du?
-
@david-g einen Appkey habbe ich. und es funktioniert auch alles nur halt kein ton.
ich habe grade mahl versucht eine Datei von meinem Server abzuspielen genau das gleiche problem, kein ton.
so wol als link per fritz.box und per Freigabe von meinem synology nas kein ton.habe es jetzt so modifieziert
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="timeout">timeout</variable> <variable type="timeout" id="timeout2">timeout2</variable> </variables> <block type="sayit" id="Xc~;GZD?XGl9=L{x?qN=" x="-412" y="113"> <field name="INSTANCE">all</field> <field name="LANGUAGE">de</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="K_Jt7a[/u7gsA:[dZ;/o"> <field name="TEXT">Post ist da</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="9Cj1NeWGz_KD5dc9}11]"> <field name="NAME">timeout</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id="-Hs@I63![jqDc)(?R6o)"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="Eu*kfUv}Z3$L%i2S|+uk"> <field name="TEXT">mv /opt/iobroker/iobroker-data/sayit/sayit.0.say.mp3 /var/www/html</field> </shadow> </value> <next> <block type="timeouts_settimeout" id="c0kX0%rr)ee7)r%K=nBj"> <field name="NAME">timeout2</field> <field name="DELAY">1</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="exec" id="=(Uxiu)4n@vAW4~8yM:c"> <mutation xmlns="http://www.w3.org/1999/xhtml" with_statement="false"></mutation> <field name="WITH_STATEMENT">FALSE</field> <field name="LOG"></field> <value name="COMMAND"> <shadow type="text" id="1I$^f/Qa*aeoQjfCa`O;"> <field name="TEXT">curl -d \ "<play_info><app_key>xxxxxxxxxxxxx;/app_key><url>http://192.168.99.33/sayit.0.say.mp3</url><service>service text</service><reason>reason text</reason><message>message text</message><volume>10</volume></play_info>" http://192.168.99.24:8090/speaker</field> </shadow> <block type="text_join" id="_*1t)3F`,vxAU0?!apgg"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="Q(h5wpOs0a9XMcteFZ7E"> <field name="TEXT">curl -d \ "<play_info><app_key>xxxxxxxx</app_key><url>http://192.168.178.29/sayit.0.say.mp3</url><service>post ist da</service><reason>es ligt ein paket in der postbox </reason><message>post ist da</message><volume></field> </block> </value> <value name="ADD1"> <block type="text" id=";);mx97{rVisnx7tz}ww"> <field name="TEXT">30</field> </block> </value> <value name="ADD2"> <block type="text" id="9cKsZZsE/wFhWlC0Z{Mg"> <field name="TEXT"></volume></play_info>" http://192.168.178.12:8090/speaker</field> </block> </value> </block> </value> </block> </statement> </block> </next> </block> </statement> </block> </next> </block> </xml>
vielleicht kannst du mahl kucken (wen du ziet und lust hast) wo möglicher weise ein Fehler liegen könnte.
Edit:
es funktioniert so wie ich das jetzt modifiziert habe bis auf die ton aus Gabe