Homematic – SONOS steuern – Teil 03 – Sprachausgabe

Dieser Artikel ist der Dritte meiner SONOS Serie und diesmal geht es darum über die SONOS Boxen Sprachausgaben bzw. eigene MP3 Sounddateien abzuspielen. Im ersten Artikel „Homematic – SONOS steuern – Teil 01“ habe ich beschrieben wie ihr die Hardware aufsetzen könnt. Im zweiten Artikel „Homematic – SONOS steuern – Teil 02“ ging es dann darum, über WebUI Programme bzw. Skripte die Möglichkeiten der SONOS API zu nutzen.

Was ist alles möglich

  • Jeden SONOS Lautsprecher einzeln, als Gruppe oder alle gemeinsam steuern
  • Gruppen bilden und auflösen
  • Durchsagen abspielen
  • MP3-Sounds abspielen
  • Durchsagen auf bestimmten oder allen Lautsprechern abspielen
  • MP3 Dateien auf bestimmten oder allen Lautsprechern abspielen

Konfiguration durchführen

Wenn ihr die Konfiguration bereits im Zuge des ersten Artikels durchgeführt habt, könnt ihr die folgenden Schritte überspringen. Ansonsten ist die nachfolgenden Konfiguration Schritt für Schritt durchzuführen.


Möchtet ihr einen beliebigen Text an eine oder alle SONOS Lautsprecher übergeben, müsst ihr einen sogenannten TTS (Text-to-Speech) Service in Anspruch nehmen. Dieser wandelt einen Test in eine Sprachausgabe um.

Für unser SONOS Projekt nutzen wir den kostenlosen TTS-Service Voice RSS.

Um diesen nutzen zu können, müsst ihr den obigen Link verwenden und auf der Startseite seht ihr gleich die verschieden Profile, welche ihr nutzen könnt.

Preisbeispiele auf der Startseite

Ganz links seht ihr die kostenlose Option, mit der ihr täglich bis zu 350 mal den Service nutzen könnt. Ich denke das sollte reichen.

Um den Service nutzen zu können, müsst ihr auf den Button „GET STARTED“ klicken. Dann geht ein Fenster auf in dem ihr euch registrieren müsst. (Existierende Mail-Adresse notwendig).

Registrierungs Bildschirm (Voice RSS)

Nachdem ihr alle notwendigen Felder ausgefüllt habt und auf den Button „Register“ geklickt habt, bekommt ihr eure Registrierungsdaten angezeigt. Das wichtigste für die Funktion ist die API Key.

Zum Abschluß müsst ihr dann nur noch den Button „Update“ klicken. Dann bekommt ihr eine Mail mit den Registrierungsinformationen an die angegebene Mail-Adresse.

Damit ist dann die kostenlose Registrierung bei Voice RSS abgeschlossen. Als nächsten Schritt müssen wir innerhalb der SONOS API diese Registrierung definieren. Dazu gehen wir am besten über WINSCP in das folgende Verzeichnis:

Dort dann eine Datei mit dem Namen „settings.json anlegen, dessen Inhalt wiefolgt aussehen sollte.

Erklärung:

  • announceVolume   =   Hier könnt ihr die Standardlautstärke der Ansagen einstellen.
  • voicerss   =   Hier die „xxx“ durch euren API key ersetzen.

Zum Abschluss die Datei über das entsprechende ICON speichern. Damit ist die Konfiguration des TTS abgeschlossen.

Voraussetzung CUx-Daemon

Da zur Steuerung der SONOS Komponenten viele Scripte durchgeführt werden, empfehle ich das AddOn CUx-Daemon (CUxD) zu verwenden. Es ist die deutlich bessere Methode um Systembefehle aufzurufen. Weil die Methode über „system.exec“ bei so etwas sehr schnell zu Problemen führt. Wie ihr das AddOn CUxD installiert und ein virtuelles Gerät einrichten könnt, habe ich im Artikel „AddOn CUx-Daemon (CUxD) – system.exec ersetzen“ beschrieben. Keine Sorge, das ist recht einfach.

Bitte beachten das es für RaspberryMatic eine spezielle Version dieses AddOns gibt. Da piVCCU auf der Original CCU2 Firmware basiert, nutzen diese beiden die CCU2 Version.


Voraussetzung Sonos System

Voraussetzung ist das ihr die Räume in eurer SONOS Installation entsprechend definiert habt. Dabei sollte ihr bitte auf Umlaute verzichten.  Ändert „Küche“ bitte in „Kueche“. Groß- und Kleinschreibung spielt dabei keine Rolle.

SONOS – Beispiel Raum Definitionen

Sprachausgaben über WebUI/Skript

Beispiel 1 – Sprachausgabe auf einer Sonos Box abspielen

Als Beispiel zeige ich euch hier ein Skript, mit dem wir in der Kueche eine Sprachdurchsage abspielen können.

Wenn euch der Ausdruck gefällt, hier wird er beschrieben.

Erklärung HTTP Befehl

  • 192.168.1.54   =   hier müsst ihr die IP Adresse eurer Sonos Raspberry eintragen
  • 5005   =   dies ist der Port auf dem die SONOS API auf die Befehle „wartet“
  • kueche   =   Raumname innerhalb des Sonos Systems
  • say   =   Aktion
  • „Hallo …..“   =   Text welcher als Durchsage ausgegeben werden soll
  • de-de   =   deutsch
  • 50   =   Lautstärke der Durchsage

Beispiel 2 – Sprachausgabe auf allen Boxen abspielen

Als Beispiel zeige ich euch hier ein Skript, mit dem wir auf allen Sonos Boxen eine Sprachdurchsage abspielen können.

Erklärung HTTP Befehl

Hier ist der entscheidende Unterschied, das aus dem Befehl „say“ ein „sayall“ zu machen ist, sowie der Raum weggelassen werden muss.

Damit habt ihr alle Voraussetzungen eigene Texte als Sprachausgabe auf einer bestimmten oder allen SONOS Boxen abzuspielen. Viel Spass beim ausprobieren.

Abspielen von eigenen MP3 Dateien

Eine weitere Möglichkeit Sprachausgaben oder Sounds auf einer bestimmten oder allen SONOS Bosen abzuspielen, sind eigene MP3 Dateien. Wer bereits einen HomeMatic MP3 Lautsprecher verwendet hat vielleicht schon die ein oder andere MP3 Datei.

Voraussetzung

Die abzuspielenden MP3 Dateien müssen sich auf der SONOS Raspberry in  dem folgenden Verzeichnis befinden:

/home/pi/node-sonos-http-api-master/static/clips

Standardmäßig befindet sich bereits eine sample MP3 Datei im Verzeichnis.

Ich habe zusätzlich ein paar eigene MP3-Sounds über WINSCP hochgeladen:

Zusätzliche eigene MP3 Dateien.

MP3 über WebUI/Skript

Beispiel 1 – MP3 auf einer Sonos Box abspielen

Als Beispiel zeige ich euch hier ein Skript, mit dem wir in der Kueche eine MP3 abspielen können.

Erklärung HTTP Befehl

  • 192.168.1.54   =   hier müsst ihr die IP Adresse eurer Sonos Raspberry eintragen
  • 5005   =   dies ist der Port auf dem die SONOS API auf die Befehle „wartet“
  • kueche   =   Raumname innerhalb des Sonos Systems
  • clip   =   Aktion
  • „Der_Trochner….“   =   Name der MP3 Datei welche ausgegeben werden soll
  • 30   =   Lautstärke der Durchsage

Beispiel 2 – Sprachausgabe auf allen Boxen abspielen

Als Beispiel zeige ich euch hier ein Skript, mit dem wir auf allen Sonos Boxen eine MP3 abspielen können.

Erklärung HTTP Befehl

Hier ist der entscheidende Unterschied, das aus dem Befehl „clip“ ein „clipall“ zu machen ist, sowie der Raum weggelassen werden muss.

Damit habt ihr alle Voraussetzungen eigene MP3 Dateien als Sprachausgabe auf einer bestimmten oder allen SONOS Boxen abzuspielen. Viel Spass beim ausprobieren.

Anmerkungen

Alle Beispiele funktionieren wie beschrieben. Es gibt jedoch eine kleine Einschränkung, welche ich euch nicht vorenthalten möchte.

Wenn ihr über „clipall“ eine MP3 Datei auf allen Boxen abspielt, kommt es zu einer Verzögerung. Dies liegt daran, dass innerhalb des SONOS Systemes erst alle Boxen zu einer Gruppe verbunden werden. Erst dann erfolgt das abspielen der MP3 Datei. Danach wird die Gruppe wieder aufgelöst. Das dauert je nach Anzahl der Boxen ein paar Sekunden.


Zu überlegen ist an dieser Stelle ob es nicht mehr Sinn macht, die einzelnen Boxen über ein Skript nacheinander anzusprechen und die MP3 abzuspielen. Meine Tests haben gezeigt, dass diese Methode schneller ist.

Fazit

Mit diesem Artikel ist dann meine SONOS Serie beendet.

Es handelt sich hierbei um einer tolle Möglichkeit euer SONOS System über HomeMatic zusteuern und somit Standardaktivitäten zu automatisieren. Auch die ansonsten in SONOS nicht vorhandene Möglichkeit der Sprachausgabe ist eine interessante Erweiterung.

Weil ich bereits einige Anfragen habe, ob man die SONOS API auch auf eine bereits existierende Raspberry installieren kann, führe ich gerade ein paar Tests durch.

Es ist dabei deutlich geworden, dass es mit RaspberryMatic zusammen nicht auf der selben Raspberry funktioniert. Aber ansonsten sind einige interessante „All-In-One“ Lösungen möglich, welche ich euch in einem weiteren Artikel vorstellen werde.

Passende Beiträge


4 Kommentare

  • Christian Lippuner

    31. Januar 2018

    Lieber Werner

    Ich habe soeben Deine drei Artikel zum Thema SONOS mit Homematic gelesen und bin echt beeindruckt. Auch dass Du Dein Know How hier zur Verfügung stellst: Hut ab ….. und vielen Dank.

    Darf ich Dir eine Frage stellen?

    Mein Homematic-Grundsatz war bisher immer der, dass ich – wenn irgend möglich – keine Hardware von Drittherstellern verwenden wollte, da mir der Wartungsaufwand dafür einfach zu gross scheint. Hast Du Pläne, Dein Projekt auch Raspberry PI-unabhängig zu realisieren, z. B. mittels eines Add-ons auf der CCU2? Das wäre dann wirklich der ultimative „Hammer“.

    Beste Grüsse aus der Schweiz
    Christian

    Antworten
    • Werner

      Werner

      1. Februar 2018

      Hallo Christian,

      vielen Dank für deine sehr netten und anerkennenden Worte. Freut mich besonders auch mal aus der Schweiz eine Resonanz zu bekommen.

      Da ich zu deiner Frage etwas weiter ausholen muss, sende ich dir nachher eine Mail.

      Liebe Grüße
      Werner

      Antworten
  • Michael

    31. Januar 2018

    Hi, die Artikel zur steuerung des Sonos Systems sind super. Bisher nutze ich hierfür iobroker.
    Wie verhält es sich wenn eine aktuelle Wiedergabe (z.B. Spotify) für die Sprachausgabe unterbrochen wird?
    Muss ich dann vorher per Skript abfragen was gerade läuft, dann die Sprachausgabe aufrufen, und anschließend die vorige Wiedergabe wieder starten?
    Bei iobroker und dem SayIt Adapter funktioniert dies automatisch.

    Antworten
    • Werner

      Werner

      31. Januar 2018

      Hallo Michael,

      ich Danke dir für deine netten Worte zu den Artikeln.

      Es funktioniert auch mit der von mir beschriebenen Lösung automatisch. Egal was du gerade auf der jeweiligen Sonos Box hörst, wird das für die Dauer der Sprachausgabe unterbrochen und dann wieder fortgesetzt.

      Ich habe das mit Playlisten, Radio, Deezer und auch mit TV-Ton ausprobiert. Es hat einwandfrei funktioniert. Selbst im Wohnzimmer, wo ich eine Playbar mit zwei Play 1 zu einem System verknüpft habe. Auch dort wird der Fernsehton nach Ende der Durchsage automatisch fortgesetzt.

      Vielleicht auch noch interessant ist die Tatsache, das die Ursprungslautstärke beim Fortsetzen des Ursprungstons beibehalten wird, egal was du für eine Lautstärke für die Durchsage eingestellt hast. Beispiel: TV = Lautstärke 20, Sprachansage = Lautstärke 70, anschließend wird TV mit Lautstärke 20 fortgesetzt.

      Ich hoffe das beantwortet deine Frage ausreichend.

      Grüße
      Werner

      Antworten

Schreibe einen Kommentar