NEWS
Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos
-
@wendy2702
Ich habe es gerade probiert aber es kam kein Sound. Grundsätzlich sollte es so aber funktionieren: -
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 ) -
@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.
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.
-
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.
-
@david-g Nochmal - die Node erzeugt Dir mp3 da musst Du nichts machen. Ich dachte die mp3s sollen aus dem Text erzeugt werden? -
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:
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.
-
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....
-
@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.
Sobald die Node fertig ist, gibt sie Dir doch den Pfad zur mp3
-
@david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
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?
-
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.
-
@david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
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
-
@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
-
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 ^^. -
@david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
Vielen Dank.
Cool wäre noch, wenn die Lautstärke noch aus einem anderen DP kommt.Hab ich schon berücksichtigt
Einen Datenpunkt für den Text, den anderen für Volume
-
Vielen lieben Dank
Teste sobald der Export da ist.Falls die Schwiegereltern nicht wieder zu früh kommen
-
@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.
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:
und hier der Export:
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.
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.
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?
-
Passt auf Anhieb (bis ich dran gedacht habe den API-Key wieder einzutragen).
Danke.
Wenn ich vor und nach den Text der gesprochen werden soll mache ich das mit einer template Node an zweiter Stelle? -
@david-g Wie gesagt, ich versteh zwar nicht, warum Du Deine Lautsprecher nicht direkt über die Node ansteuerst?
Wenn ich vor und nach den Text der gesprochen werden soll mache ich das mit einer template Node an zweiter Stelle?
Nein Du nimmst ein Array - zum Beispiel mit dem Hailing und gibst halt dann mehrere mp3 in den Flow - oder in die Template Node ein.
Aber wie gesagt, warum nutzt Du die Node nicht direkt zur Ausgabe?
-
@mickym sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
Wie gesagt, ich versteh zwar nicht, warum Du Deine Lautsprecher nicht direkt über die Node ansteuerst?
Ich habe eine Bose Soundtouch.
Da gibt es keinen Adapter bzw Node um diese anzusteuern. Über den curl Befehl kann man aber Dinge an die Box senden.@mickym sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
Nein Du nimmst ein Array - zum Beispiel mit dem Hailing und gibst halt dann mehrere mp3 in den Flow - oder in die Template Node ein.
Für vor und nach den Text geht es nicht um mp3s.
Ich möchte vor den Text noch SSML Kommandos setzen.
Hab das jetzt erfolgreich mit der template Node umgesetzt. -
@david-g sagte in Ersatz für sayit-Adapter zur Sprachausgabe auf Sonos:
Hab das jetzt erfolgreich mit der template Node umgesetzt.
ok
-
Kann ich irgendwie rausfinden, was er in der Node zu bemängeln hat?
Habe alle Settings doppelt geprüft, klappt auch alles.Das erste popup kommt bei jedem Speichern.