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.

Das könnte Dich auch interessieren

Homematic – SONOS steuern – Teil 02 – WebUI und Skripte
Aufrufe 4051
Aufgrund der Tatsache, das der erste Artikel zu diesem Thema "Homematic - SONOS steuern - Teil 01 - Hardware / Software" bereits sehr umfangreich gewo...
Homematic – SONOS steuern – Teil 01 – Hardware und Software
Aufrufe 6672
Ich betreibe seit Jahren eine umfangreiche HomeMatic Installation und parallel dazu habe ich einige SONOS Lautsprecher im Einsatz. Gerne würde ich die...
Homematic – All-in-one: CCU2 und SONOS API auf einem Raspberry Pi installi...
Aufrufe 3441
Anfang des Monats habe ich euch bereits das Projekt piVCCU vorgestellt. Damit ist es möglich die Original CCU2 auf einen wesentlich schnelleren Raspbe...
NEUHEIT – Homematic IP Funk-Klingeltaster HmIP-DBB, ARR-Bausatz
Aufrufe 1269
Bereits am 25.07.2018 habe ich euch in dem Artikel "Vorschau - Neuigkeiten 09.2018" über diesen Aktor informiert. Nun ist er verfügbar und ich möchte...
VORSCHAU – Neuigkeiten 09.2018 – Homematic IP Kombisignalgeber
Aufrufe 2187
Aktuell hat ELV einige Neuigkeiten vorgestellt. Wie üblich wird noch nicht allzu viel verraten, aber es sind aus meiner Sicht trotzdem interessante Sa...
Erfahrungsbericht – HomeMatic IP Wassersensor-HmIP-SWD – Klein aber ...
Aufrufe 1494
Nachdem ich nun eine viel zu lange Zeit warten musste, ist nun endlich der bestellte neue Homematic IP Wassersonsor HmIP-SWD bei mir eingetroffen. Ich...
9 Kommentare
  1. Wolfgang sagte:

    Hallo Werner !
    Da ich meine Türklingel mit den Sonos Boxen verbinden will, hab ich Deine Anleitung ( wirklich super!) Schritt für Schritt nachgebaut. Allerdings stoppt das bei der Anlage der Datei settings.json, da ich das Verzeichnis nicht finde. (Bei mir läuft eine Raspberrymatic 3.37.8.20180929) und der Verzeichnisbaum differiert völlig. Kann es sein, dass das Verzeichnis jetzt::
    /usr/local/etc/config/addons/www/sonos2/settings
    heisst? Da ich Neuling bin, möchte ich meine Installation nicht zerstören !
    Herzliche Grüße
    Wolfgang

    Antworten
  2. Juergen Tolksdorf sagte:

    Na klasse!
    Vielen Dank Werner. Ich war nämlich schon dabei herauszufinden, wie ich mit AWK wohl das zurück bekommene JSON meines SONOS insofern destrukturieren kann, um alles in Variablen zu packen, sodass ich danach eine URL aufrufen kann, die meinen Sonos wieder in den vorigen Zustand versetzt. Naja, die JSON-AWK destrukturierung von /state steht mir ohnehin noch bevor, aber das ist wohl ein anderes Fess, welches ich mal öffnen muss …

    Antworten
  3. Thomas sagte:

    Ohne Zweifel, das gibt wirklich einen sehr guten Einblick wenn man sich mit dem Gedanken Sonos anzuschaffen trägt. Vielen Dank dafür.

    Meine Frage: Ist es auch möglich für eine Durchsage z.B. vorneweg einen Signalton (Gong etc.) abzuspielen? Meine Erfahrung hat gezeigt, dass dann “besser” auf Durchsagen geachtet wird.

    Vielen Dank schon mal.

    Antworten
  4. Mike sagte:

    Bisher funktionerte die Sprachausgabe perfekt! Neuerdings wird jedoch die laufende Musik nach einer Sprachausgabe nicht mehr fortgesetzt. Vielleicht hat das mit der Aktualisierung der Sonossoftware (April 2018) zu tun. Gibt es dafür eine Lösung?

    Antworten
  5. Christian Lippuner sagte:

    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 sagte:

      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
      • Marcus sagte:

        Vielen Dank auch von mir.

        Karst du so nett und würdest diese angesprochene Mail auch an mich senden?
        würde mich freuen zu erfahren, was da so möglich ist.

        Gruß
        Marcus

        Antworten
  6. Michael sagte:

    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 sagte:

      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

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend. Dieses Formular speichert Ihren Namen, Ihre Email Adresse sowie den Inhalt, damit wir die Kommentare auf unsere Seite auswerten können. Weitere Informationen finden Sie auf unserer Seite der Datenschutzbestimmungen.

Ich akzeptiere die Speicherung der Daten.