Hi,
hier mein Entwurf für die KB:
Steuerung des Sonos-Systems
Mit der Einarbeitung in den TWS habe ich das Konzept der Container schätzen gelernt. Schon seit längerer Zeit gibt es für das Sonos-System die auf Node.js basierende offene API
Sonos HTTP API.
Jedoch habe ich keinen Server in meinem Netzwerk, der node.js unterstützt. Nach etwas Recherche habe ich das Image
mkshb/sonoshttpapi gefunden. Es werden hier sowohl arm, als auch amd64 Versionen bereitgestellt. Somit konnte ich im Sinne einer microservice archictecture die API als Docker-Container auf dem TWS betreiben.
Setup
- Volume anlegen

- Image herunterladen
Image: mkshb/sonoshttpapi:amd64-latest - hier den entsprechenden Tag aus dem Docker-Hub für den eigene TWS auswählen

- Container bauen
hier nun das zuvor angelegte Volume eintragen und das Image auswählen

wie die Sonos HTTP API später im Netzwerk erreichbar sein soll, wird über den Reiter "Network" gesteuert.
Ich habe mir unter "Networks" einen eigenen Eintrag geschaffen, um für jeden Container eine separate IP zu erzeugen, und dieser IP im lokalen DNS einen eigenen host zuweisen können - mit bridge funktioniert es aber auch.
- Container Betrieb
nach ein paar Momenten Wartezeit, sollte der Container "laufen", bzw im Status "healthy" sich befinden

API Aufruf
Die API ist nun unter der angegeben IP - Port 5005 erreichbar:
Mit der URL
wird auf den Sonos-Lautsprechern im Raum "Wohnzimmer" die zuletzt ausgewählte Audio-Quelle abgespielt.
Ausführliche Doku der API unter:
http://jishi.github.io/node-sonos-http-api/
Beliebige Sprachausgabe via TTS
Die API unterstützt auch verschiedene TTS (Text-to-speech)-Engines.
In der offiziellen Doku wird
http://www.voicerss.org/ erwähnt. Es soll laut unterschiedlichen Quellen auch die TTS-Engine von Microsoft und Amazon Polly unterstützt werden..
Hier das Vorgehen für voicerss:
- Unter http://www.voicerss.org/registration.aspx einen Account registieren und aktivieren
- API Key unter http://www.voicerss.org/personel/default.aspx kopieren
- Im Portainer den sonoshttpapi-Container aufrufen und dort die Console öffnen - mir ist es bislang nicht gelungen von extern via Putty o.ö. auf den Container zuzugreifen.

Die Console mit User root aufrufen

Nun folgende Befehle absetzen, um den Ordner settings und darin die Datei settings.json anzulegen:
Nun die Datei settings per Editor VI anpassen:
vi settings.json
Hier nun folgenden Eintrag reinkopieren:
Mit :w die Änderungen speichern und die Konsole beenden
Nun sind Sprachausgaben wie
Code: Alles auswählen
http://192.168.1.3:5005/B%C3%BCro/say/Der%20TWS%20rockt%20meine%20Sonos/de-de
möglich
Sobald der TWS http Requests absetzen kann, kann diese API z.B. in die TWS Logiken integriert werden.
Ich freue mich schon, was für Ideen ihr hier noch habt.
VG Alex