Sonos und Fibaro HC2


Es gibt ja einige Beiträge im Internet zu diesen Themen, was mir aber aufgefallen ist, es gibt wenige abschliessende Lösungen zu diesem Thema.

Ich habe mich nun einmal daran gesetzt und habe versucht eine Lösung zusammenzutragen, die für viele Bedürfnisse nützlich ist.

Was soll damit erreicht werden?

Fibaro bietet heute ein Plugin für die Integration von SONOS. Nun stellt sich die Frage, was man damit anstellen kann…
…aus meiner Sicht nicht sehr viel. Es ist möglich die einzelnen SONOS Komponenten zu steuern. Play, Paus, Lautstärke, … alles kein Thema, aber das bietet nur einen kleinen Teil von Steuerungsmöglichkeiten.

Sobald ich z.B. einen Bewegungsmelder platziere, welcher eine Person beim Betreten eines Raumes erfasst und ich anschliessend Musik abspielen möchte, komme ich damit schon ziemlich an die Grenzen des Machbaren!

Eine möglich Lösung hier mehr Flexibilität zu erlangen, möchte ich euch hier aufführen.

Dabei soll offiziell erwähnt sein, dass die Scripts auf den Grundlagen von Jean-Christophe Vermandé basieren. –> Herzlichen Dank für die toll Arbeit!

Anleitung

Bevor ihr starten könnt müsst ihr zwingen die IP des SONOS Gerätes kennen, welches ihr ansteuern wollt. (Wird wohl bei den meisten irgendetwas mit 192.168.100.xxx oder 192.168.1.xxx sein).


A.) Es müssen „globale“ Variabeln erstellt werden. Dies ermöglicht uns anschliessen eine dynamischere Verwendung des Virtuellen Moduls.

A.1) Die erste Vordefinierte Variabel soll „SONOS_RADIO“ heissen.
Die Werte setzt ihr anhand der Radiosender, welche ihr streamen möchtet. In meinem Fall z.B. „radiopilatus.ice.infomaniak.ch/pilatus128.mp3
stream.srg-ssr.ch/m/drs3/mp3_128
(Natürlich könnt ihr hier noch weitere Werte erfassen, mindestens einer sollte aber gesetzt sein.)

1.) Um den richtigen Radiostream zu finden, müsst ihr z.B. über euer Smartphone auf das aktuelle SONOS Gerät connecten und in dieser Zone den gewünschten Radiosender abspielen.

2.) Anschliessend die IP des Gerätes in einen Webbrowser eingeben und mit folgendem Zusatz ergänzen „:1400/status/radiolog“

3.) Die Adresse würde dann also ungefähr so aussehen –> http://192.168.100.999:1400/status/radiolog

4.) Sobald ihr diesen Request im Webbrowser abgesetzt habt, wird euch der aktuelle Radiostream angezeigt. Dies sieht dann etwa so aus…
Radiolog_SONOS

Hier findet ihr die benötigte Information für euren Radiostream.

A.2) Die zweite Vordefinierte Variabel soll „SONOS_MUSIC“ heissen.
Die Werte hierzu sind Pfade zu Songs die in eurem Netzwerk z.B. auf einem NAS liegen. Hier also ein Beispiel:
//DEIN_NAS/Music/ACDC/track1.mp3
//192.168.100.999/Sound/Music/ich_bin_ein_clown.m4a
(Natürlich könnt ihr hier noch weitere Werte erfassen, mindestens einer sollte aber gesetzt sein.)

A.3) Die dritte Vordefinierte Variabel soll „SONOS_TTS“ heissen.
Die Werte hierzu können individuell gewählt und wie alle anderen Werte jederzeit geändert oder erweitert werden. Die Idee hinter dieser Variabel ist es, Textbausteine zu haben, welche dann in Szenarien verwendet werden können. Also z.B. etwa folgende:
Willkommen zu Hause.
Viel Spass mit dem folgenden Film.
Alarm aktiviert.
Alarm deaktiviert.
Guten Morgen doonic, du bist der Beste.“ 🙂

Hier einmal ein Beispiel zu A.1, damit man sich das besser vorstellen kann.
Vordefinierte Variabel (A.1)

Und so sollte das dann ungefähr aussehen:
Variabeln Überblick


B.) Der nächste Schritt ist ist relativ einfach. Um ein Steuerbares Objekt zu erhalten gehen wir zu den Modulen und fügen ein neues Gerät hinzu. Wir möchten ein virtuelles Gerät hinzufügen, nämlich das folgende:

–> Hier könnt ihr es herunterladen. Download

Die Datei unter „Importiere virtuelles Gerät“ auswählen und importieren. Anschliessend findet ihr unter den „nicht zugeordneten“ Modulen den „SONOS – Commander

Das sollte so aussehen:
SONOS - Commander
Mit dem Klicken auf die Einstellungen Einstellungen kann das Modul konfiguriert werden. Hierbei müsst ihr lediglich die IP Adresse des SONOS Gerätes eintragen, so wie den Port „1400„.


SONOS - Commander (Konfiguration)(Ob ihr das Modul einem Raum zuordnet, spielt keine Rolle).

Nach dem Konfigurieren nicht vergessen die Einstellungen zu speichern!


C) So nun haben wir alles vorbereitet um das SONOS Gerät in einem Szenario zu nutzen. Hier könnt ihr eigentlich damit machen, was ihr wollt. Um meine eingangs angesprochene Lösung zu komplettieren, hier zwei Anwendungsbeispiel.

C.1) Ich möchte gerne dass auf meinem SONOS Gerät, unter der Woche, Radio (Radio Pilatus) gespielt wird, sobald die Sonne aufgeht. Sofern es allerdings regnet soll keine Musik abgespielt werden, da ich dann so oder so liegen bleibe… 🙂
Fibaro Szenario

oder ein Szenario mit LUA…

C.2) Ich möchte gerne, dass beim Betreten der Küche mein SONOS Gerät Radio abspielt und nach einer gewissen Zeit aufhört, sofern sich z.B. seit 10 Minuten niemand mehr in dem Raum bewegt hat.

——————————————————————————————-
——————————————————————————————-
— SONOS Radio aktivieren bei Bewegung
— Version 1.0
— Copyright (c) 2015 Nicolas Dörig
https://doonic.wordpress.com
——————————————————————————————-
——————————————————————————————-

–[[
%% properties
56 value
51 value
%% globals
–]]
— MOTION-Sensor muss unter %% properties aufgeführt sein

— Definitionen
local scene = 29; — ID dieser Szene
local sonosCommander = 56; — ID des SONOS Commanders
local motion = 51; — ID des Bewegungssensors
local volume = 20; — Lautstärke festlegen
local time = 0;
local timereset = 600; — Verzögerung (in Sekunden) nach der letzten Bewegung, bevor der Radio ausschaltet.

fibaro:setGlobal(„SONOS_RADIO“, „radiopilatus.ice.infomaniak.ch/pilatus128.mp3„); — Radio Sender der globalen Variabel zuweisen

— Lösche vorhandene Szenen
if (fibaro:countScenes()>1) then
fibaro:abort();
end

— Bewegung erkannt & Radio einschalten
if tonumber(fibaro:getValue(motion, „value“)) > 0 then
fibaro:call(sonosCommander, „setSlider“, „7“, volume); — Lautstärke festlegen
fibaro:call(sonosCommander, „pressButton“, „1“); — Radio starten
fibaro:debug(„1: Starte Radio“);

— Schleife die prüft ob in der Zwischenzeit wieder eine Bewegung erkannt wurde. (Falls ja, wird der Timer zurückgesetzt)
repeat
if tonumber(fibaro:getValue(motion, „value“)) > 0 then
time = 0;
else
time = time + 1;
end

fibaro:sleep(999);

fibaro:debug(„2: Zeit ohne Bewegung“ .. time ..“ von “ .. timereset);

until time > timereset

— Schalte Radio aus, da Timer abgelaufen
fibaro:call(sonosCommander, „pressButton“, „4“); — Radio anhalten
fibaro:debug(„3: Timer abgelaufen, Radio ausgeschalten.“);
fibaro:killScenes(scene);
end

Ihr solltet alle roten Werte ersetzen. Die IDs findet ihr jeweils in den Modulen, bzw. im Szenario in der Konfiguration.
Element ID finden –> Bei dem Beispiel hier hat die Szene die ID 29.

Um die ID des SONOS Commander zu finden müsst ihr einen kleinen Trick anwenden, da diese nicht direkt in der Konfiguration des virtuellen Moduls sichtbar ist. Geht dazu wie oben unter (B) beschrieben auf die Einstellungen des SONOS Commander. Sobald die Seite geladen ist, klickt auf die Adresszeile des Webbrowsers und ihr findet dort die ID. Bei dem aktuellen Beispiel stand folgendes in der Adresszeile „http://192.168.100.999/fibaro/de/devices/virtual_edit.html?id=56

Die grünen Werte könnt ihr nach Bedarf anpassen. (600 entspricht 60 Sekunden x 10 also = 10 Minuten)


D) Nun gibt es im SONOS Commander noch einen speziellen Button, nämlich den „Good Morning (DE)“ Button. Dieser muss allerdings speziell konfiguriert werden. In den Einstellungen des SONOS Commander, könnt ihr unter „Fortgeschritten“ jeden Button und den hinterlegten Code anschauen. Bei diesem Button müsst ihr auf der Zeile 327 und 329 die IP eures Fibaro HC2 eintragen und einen HC2 User + Passwort.
SONOS Commander Konfiguration anpassenWenn ihr das gemacht habt und diesen Button klickt oder über ein Szenario aufruft, dann habt ihr einen netten TTS Effekt. Ihr werdet nämlich begrüsst und es wird euch gesagt welcher Tag ist und wie das Wetter ist. Anschliessend wird Radio abgespielt.

(Ihr könnt natürlich auch das Script unter C.2) anpassen und…

fibaro:call(sonosCommander, „pressButton“, „1“); — Radio starten

mit..

fibaro:call(sonosCommander, „pressButton“, „7“); — TTS Ansprache und Radio starten

ersetzen. So löst ihr bei Bewegung die TTS Ansage aus und anschliessend wird Radio abgespielt.


Hier noch eine kurze Beschreibung des „SONOS Commander“:

SONOS_Commander_Info


So ich hoffe das hilft euch weiter…

Viel Spass.

Cheers

doonic

47 Kommentare

  1. timos · August 15, 2015

    grüzi doonic.
    habe gerade deine message gelesen und mir das angeschaut. werde das morgen direkt mal einrichten. sieht schon mal super aus, danke.
    gruss
    timos

    Like

  2. Hoggle · August 15, 2015

    Echt genial.
    Genau – viele Beiträge fangen an und verheddern sich dann in Updates und einzelnen Ergänzungen!
    Danke.

    Like

  3. Pehr · August 16, 2015

    Hello, good worj but i cant open the zipfile. Any suggesteion?

    Like

  4. Pehr · August 16, 2015

    Hello, good worj but i cant open the zipfile.

    Like

  5. joob · Oktober 2, 2015

    Hallo, Super Sache, vielen Dank!!! Eine Frage habe ich allerdings noch. Wie bringe ich das ganze auf mehrere Sonos in meinem Haus? Bei der ersten erstellten VD funktionier alles perfekt. Meine zweite Sonos schaffe ich nicht anzusteuern! Danke im Voraus!

    Like

    • doonic · Oktober 12, 2015

      Hallo Joob,
      Ich weiss nicht ob ich dich richtig verstehe. Grundsätzlich machst du einfach ein zweites VD und gibst da die IP des zweiten SONOS Devices ein. Also schlussendlich hast du zwei VDs die in der Konfiguration jeweils eine andere IP verwenden. Bei mir ist das so im Einsatz und es funktioniert.
      Cheers doonic

      Like

      • joob · Oktober 13, 2015

        Hallo, danke für deine Antwort, jetzt funktioniert es so wie es sollte, vielen Dank. Leider funktioniert die TTS funktion nicht immer, da kommt dann im Sonos PC Controller folgende Meldung: Wiedergabe von „translate_tts?client=t&tl=de&q=Brandalarm“ nicht möglich – Sender nicht gefunden.
        Denke zwar das dies weniger mit deinem Tool zu tun hat, aber vielleicht kannst dazu auch was sagen! Vielen Dank im Voraus!

        Gefällt 1 Person

  6. Hoggle · Oktober 9, 2015

    Hi,

    hast Du noch einen Tipp, wie ich über Dein VD an der SONOS Playbar der TV-Kanal schalte?

    Danke im Voraus
    Hoggle

    Like

    • doonic · Oktober 12, 2015

      Hallo Hoggle
      Ich gehe mal davon aus, dass du nicht den TV-Kanal ändern willst, denn dann musst du über ein TV-Plugin o.ä. arbeiten. Du willst z.B. den Radio-Stream abbrechen und dann den Line-In von deinem TV abspielen lassen. Ich hab echte Schwierigkeiten das zu testen! Denn wenn ich meinen TV einschalte, stellt SONOS Playbar automatisch auf den Line-In vom TV um. (Kann das gerade nicht nachprüfen, aber kannst du ggf. in der SONOS App etwas konfigurieren? Bzw. Wie sieht dein Anwendungsfall aus?)
      Evtl. Hilft dir das weiter –> http://forum.universal-devices.com/ Du könntest einen Button im SONOS Commnader erstellen und das testen.
      Allg. ganz nützlich zu wissen –> http://SONOS-IP:1400/support/review im Webbrowser eingeben.

      Like

  7. Hoggle · Oktober 12, 2015

    Ja, genau, es ging mir um den Line-In.
    Guter Tipp: ja, in der SONOS-App kann man ein Auto-TV einstellen…… 🙂
    Das sollte erstmal genugen.

    Danke!

    Like

  8. Hans · November 1, 2015

    Hallo. Ich möchte gerne mit einem Wandtaster mein SONOS-System ein und ausschalten. WIe kann ich folgende Punkte realisieren:

    1. Mit Taster Ein/Aus soll sich ein Sonos1 mit allen in der Gruppe angewählten Sonos-Lautsprechern einschalten. Es soll nicht nur ein Sonos einschalten sondern die ganze Gruppe.

    2. Es soll ein bestimmter Radiosender abgespielt werden.

    Bisher habe ich nur LUA-Scripte gefunden die einen einzigen Lautsprecher steuern.

    Vielleicht kann mir jemand helfen. Ich sag schon mal vieeelen Dank!!!!!

    Like

    • doonic · November 4, 2015

      Hallo Hans.

      Also zu deinem Punkt Nr. 1
      Sonos ist eigentlich ein System, das immer „An“ ist. Wenn du es also ausschalten möchtest, hast du zwei Möglichkeiten.
      A) Du baust eine Switch ein, welcher die Stromzufuhr unterbricht. (Quasi die Hardware Variante mit einem Schalter.)
      B) Du beendest den Stream. (Die Software Variante.)
      Für A musst du dich mit HW ausrüsten und z.b. einen Wall Plug oder ein Fibaro Relay Switch kaufen.
      Für Variante B musst du nach dem Betätigen eines Knopfes/Schalters eine Szenario auslösen, welches den Stream startet oder anhält.

      Sonos anhalten:
      fibaro:call(ID des sonosCommander, “pressButton”, “4”);

      Sonos Radio abspielen:
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);

      Gruppieren ist noch mal eine andere Geschichte.
      Gib dazu im Browser die IP eines deiner Sonos Boxen an und ergänze die Adresse mit folgendem Zusatz –> :1400/status/topology

      http://192.168.100.???:1400/status/topology

      Mit der UUID und Group muss es möglich sein, Gruppen zu machen. Ich habe momentan kaum Zeit das auszuprobieren, sorry. Daher muss ich dich auf diese beiden Code-„Schnippsel“ und den existierenden Beitrag verweisen. –> Fibaro Forum

      Scheinbar ist es wichtig, dass keine Gruppen existieren, bevor man welche macht.
      Und anschliessend müssten die Gruppen auf Grund der UUID an eine der Zonen angehängt werden.

      Like

  9. Thomas · November 3, 2015

    Super Lösung. Eine Frage: Ist es auch möglich, z.B. 5 Sender zu hinterlegen, die man dann per Knopfdruck nacheinander auswählen kann?

    Like

  10. Thomas · November 3, 2015

    Vielen Dank, sieht gut aus. Wie kann ich denn zwischen mehreren (definierten) Stationen per Schalter (z.B. Dimmer) wechseln?

    Like

    • doonic · November 4, 2015

      Hallo Thomas.
      Ja, klar! Das ist möglich. Der Aufwand ist überschaubar.
      Wenn du alles so implementiert hast, wie oben beschrieben, dann hast du ja eine globale Variabel welche „SONOS_RADIO“ heisst. Nun kannst du bei dem sonosCommander unter der Einstellung für Fortgeschrittene weitere Buttons integrier (Auswählen und Speichern, dann sind dieser ersichtlich). In diesen Buttons kannst du nun LUA Code erfassen. Der Code ist sehr überschaubar, denn du musst lediglich die globale Variabel mit der neuen Stream-URL überschrieben und anschliessen den PlayButton des Virtuellen Modules (sonosCommander) betätigen.

      Das würde dann für den ersten Button so aussehen:
      fibaro:setGlobal("SONOS_RADIO", "radiopilatus.ice.infomaniak.ch/pilatus64.mp3"); --Radiosender 2
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);

      für den zweiten z.B. so:
      fibaro:setGlobal("SONOS_RADIO", "doonic.ice.irgendwas.com/doonicRadio.mp3"); --Radiosender 2
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);

      usw…

      Die Stream URL bekommst du wie oben im Blog beschrieben über das Radiolog.
      http://192.168.100.999:1400/status/radiolog

      Deine Buttons kannst du dann natürlich wieder aus einem anderen Szenario ansprechen. z.B. wenn du einen Schalter hast, welcher ein Szenario auslöst, kannst du mit „fibaro:call(ID des sonosCommander, “pressButton”, Button Nummer);“ diesen jeweiligen Radiosender abspielen. (Die Button Nummer findest du in der Titelleiste der Buttons, unter dem „Fortgeschrittenen“-Modus. Sobald du diese erstellt hast.)

      Like

  11. Thomas · November 4, 2015

    Super, danke! Kurze Klärung: Beim Button 2 müsste hinter „pressButton“, nicht „2“ stehen? Ausserdem: Ich möchte ja mit dem Taster dann die Buttons nacheinander auswählen, mit jedem Click wählt er den aktuell laufenden Button +1, bis der letzte Button erreicht ist, dann springt er wieder auf Button 1… Ist also eine „relative“ Button-Auswahl im Szenario möglich im Sinne von: “fibaro:call(ID des sonosCommander, “pressButton”, aktuelle Button Nummer+1);”

    Like

    • doonic · November 4, 2015

      Achtung, du bringst gerade zwei Punkte durcheinander. 🙂 Bei den Beispielen muss es immer „1“ heissen. Da der Button 1 im sonosCommander die Radio-Taste ist.

      Es läuft folgendermassen ab:
      Du überschriebst jeweils die Stream-URL in der globalen Variabel und „drückst“ dann quasi virtuell denn Radio-Button im sonosCommander. Dieser wird dann den Radio Stream starten und die aktuell (in der globalen Variabel) hinterlegte Stream-URL verwenden/abspielen.
      Auf dem zweiten, dritten, vierten, … Button machst du jeweils das gleiche, einfach mit einer anderen Stream-URL.

      Nun kannst du manuell im sonosCommander die neu angelegten Buttons betätigen und durch das Drücken auf die Buttons wird dann jeweils ein anderer Radiostream abgespielt.
      Wenn das funktioniert, machst du ein Szenario, welches auf deinen Schalter reagiert. Darin kannst du nun den Code verwenden:
      fibaro:call(ID des sonosCommander, “pressButton”, ****);

      **** = Button Nr. einer der Buttons die du gerade neu angelegt hast. (Wird tendenziell 8, 9, 10, … sein.)

      Wenn du nun deinen (physikalischen) Schalter betätigen kannst und einer deiner Radiostream abgespielt wird, dann kannst du anfangen die weiteren Sendern anzuwählen.
      Da gibt es aus meiner Sicht zwei Varianten:
      A) Dein Schalter ermöglicht es dir auch mit Doppelklick, Langes Drücken, etc. zu arbeiten. Dann kannst du hinter jede dieser Eingabemöglichkeiten einen anderen Sender legen.

      if (tonumber(ButtonPressed) == 20) then
      fibaro:call(ID des sonosCommander, “pressButton”, 8);
      fibaro:debug("MiniMote button 1 pressed")
      elseif ( tonumber(ButtonPressed) == 40) then
      fibaro:call(ID des sonosCommander, “pressButton”, 9);
      fibaro:debug("MiniMote button 1 long pressed")
      elseif ( tonumber(ButtonPressed) == 30) then
      fibaro:call(ID des sonosCommander, “pressButton”, 10);
      fibaro:debug("MiniMote button 1 double pressed")
      end

      B) Du hast nur einen Schalter mit einem „Zustand“, dann musst du eine weitere globale Variabel „RadioSender“ definieren die z.B. den Defaultwert 1 hat. Anschliessend baust du dein Szenario, welches die Globale Variabel ausliest und dann wie von dir angedeutet die Button Nr. + 1 setzt. und am Ende die globale Variabel ebenfalls um 1 erhöht.

      fibaro:call(ID des sonosCommander, “pressButton”, fibaro:getGlobalValue("RadioSender") + 1);
      fibaro:setGlobal("RadioSender", fibaro:getGlobalValue("RadioSender") + 1);

      Und jetzt noch zur Abkürzung! 🙂
      Du kannst auch einfach nur ein Szenario machen, welches die Streming-URL überschriebt und gleich den Radio startet… Das wäre wesentlich einfacher, dann hast du einfach die Buttons nicht im sonosCommander.

      Dazu brauchst du die globale Variabel aus der Variante (B) –> „RadioSender“ und ein Szenario für den Schalter. Das würde dann +/- so aussehen…

      if (fibaro:getGlobalValue("RadioSender") == 1) then
      fibaro:setGlobal("SONOS_RADIO", "radiopilatus.ice.infomaniak.ch/pilatus64.mp3"); --Radiosender 1
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);
      fibaro:setGlobal("RadioSender", 2);
      elseif (fibaro:getGlobalValue("RadioSender") == 2)
      fibaro:setGlobal("SONOS_RADIO", "lalala.ice.123.ch/lalala.mp3"); --Radiosender 2
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);
      fibaro:setGlobal("RadioSender", 3);
      elseif (fibaro:getGlobalValue("RadioSender") == 3)
      fibaro:setGlobal("SONOS_RADIO", "fvdds.ice.1dd3.ch/22ddddd.mp3"); --Radiosender 3
      fibaro:call(ID des sonosCommander, “pressButton”, “1”);
      fibaro:setGlobal("RadioSender", 1);
      end

      Like

      • Thomas · November 5, 2015

        Perfekt. Genauso werde ich das testen! Vielen Danke!!!

        Gefällt 1 Person

  12. frankgeisler · November 6, 2015

    Hallo

    Danke fuer den tollen Blog!

    Bislang hat Deine Lösung immer sehr gut funktioniert. Nun hat es ein Update auf Seiten Sonos gegeben und seitdem habe ich das gleiche Problem wie von joob vor einigen Tagen geschildert: „Leider funktioniert die TTS Funktion nicht immer, da kommt dann im Sonos PC Controller folgende Meldung: Wiedergabe von “translate_tts?client=t&tl=de&q=Brandalarm” nicht möglich – Sender nicht gefunden.“

    Ich denke auch, dass das dies weniger mit deinem Tool zu tun hat, aber vielleicht kannst Du trotzdem auch was sagen?

    In einigen Foren steht, dass Google TTS die Anzahl der Anfragen limitiert hat und deswegen evtl. nichts mehr kommt? Jedenfalls konnte ich den Fehler nicht sinnvoll reproduzieren, sprich manchmal geht es und dann wieder nicht. Es scheint besser zu gehen, wenn zwischen den verschiedenen TTS Anfragen laengere Zeit dazwischen liegt, zum Teil mehrere Stunden…

    Ich bin gespannt, ob ich hier der einzige mit diesem Effekt bin?

    Herzliche Grüsse aus der Schweiz, Frank

    Like

    • doonic · November 6, 2015

      Hallo Frank.

      Ich habe mich mittlerweile schon Stunden mit dem TTS API von Google befasst. So wirklich schlau werde ich nicht, woran dass liegt und wieso das dann manchmal funktioniert und dann wieder nicht. Ich habe mir auch einige Alternativen angesehen. Leider habe ich bisher nichts gefunden das an die Sprachqualität von Google herankommt.
      Ich bin mittlerweile eher auf einem anderen Lösungsansatz. Gerade für die Texte, welche nicht dynamisch sind finde ich den folgenden Lösungsansatz wesentlich stabilere:

      Schau dir dazu die folgende Seite an: http://soundoftext.com
      Dahinter steht auch das Google TTS API, aber du kannst die eingegebenen Texte lokal sichern. Also gibst du da alle deine Texte ein und speicherst diese auf dein NAS oder auch auf einen FTP Server. Anschliessend verwendest du die globale Variabel „SONOS_MUSIC“ und setzt da die Links als Werte ein.

      Bei einem Szenario welches z.B. den Alarm aktiviert, setzt du dann die globale Variabel auf
      fibaro:setGlobal("SONOS_MUSIC", "//DEIN_NAS/TTS_FUER_FIBARO/Alarm_aktiviert.mp3");
      und betätigst dann per Code den Button Nr. 2 (Musik abspielen) im sonosCommander:
      fibaro:call(ID des sonosCommander, “pressButton”, “2”);

      Schöni Grüess au vo mer 🙂

      doonic!

      Gefällt 1 Person

      • frankgeisler · November 6, 2015

        Hoi doonic

        Danke fuer Deine prompte Antwort – ich hatte gar nicht so schnell damit gerechnet. Die Schweizer halt! 😉

        Deinen Tipp werde ich gerne beherzigen. Ich muss ohnehin mein NAS aufruesten, dann werde ich das mal austesten. Bei meiner Suche bin ich auch noch auf das Tool hier gestossen: http://www.voicerss.org/tts/ – habe es aber nicht zum Laufen gebracht.

        Es liebs Gruessli retour vom Mutschelle – Frank

        Like

  13. Marco · November 23, 2015

    Hallo doonic, vielen dank für die Beschreibung! Ich habe alles wie beschrieben aufgesetzt und der Radio stream sowie die „TTS“ Funktion funktioniert. Mit dem spielen einer Musikdatei habe ich aber Probleme und es funktioniert nicht, ich habe folgenden Pfad angegeben „//192.168.1.140/PublicALL/Sample1.mp3“ (Die Datei gibt es). Habe ich etwas falsch gemacht? Besten Dank für die Antwort
    Marco

    Like

    • doonic · November 27, 2015

      Hi Marco

      Ich gehe davon aus, dass du den Pfad so in den Globalem Variablen eingetragen hast. Aber ohne Anführungszeichen („)!
      Lass mal // vor der IP weg.

      Cheers doonic!

      Like

      • Marco · Dezember 4, 2015

        Hallo doonic
        Vielen Dank für Deine Antwort, bei mir funktioniert es leider immer noch nicht. Habe auch (Deine Antwort an Martin) den Pfad auf „http://www.raze.ch/demo.mp3“ gesetzt sowie den Pfad im Lua Code geändert. „Radio“ funktioniert. Hättest Du noch einen anderen Tip? Vielen Dank und Gruess Marco

        Like

  14. rolf@rowi.net · November 26, 2015

    Hi, in dem herunterladbaren ZIP ist kein VFIB dabei, nur drei Dateien (*.lua.txt, *.txt, *.json). Fehlt da was?

    Like

  15. rolf@rowi.net · November 27, 2015

    Offenbar muss schlicht das *.json genutzt werden. Puh, das muss man aber auch erstmal rausfinden 🙂

    Like

    • doonic · November 27, 2015

      Hi Rolf.
      Ja, sorry. Bin z.Z. sehr beschäftigt und komme kaum zum Antworten, bzw. vergesse das dann, wenn ich Abends vor dem TV einschlafe… 🙂
      Aber du hast ja die Lösung selber gefunden.

      Gruss doonic!

      Like

  16. Martin · November 30, 2015

    Danke für Deine gute Arbeit und das virtuelle Modul, Doonic.
    Also das Sonos Radio funktioniert.

    TTS und der Good Morning button funktionieren bei mir nicht. Aber da habe ich bereits gelesen, dass das auch dem Zufall unterliegen mag,

    Aber viel schader: Music funktioniert bei mir auch nicht 😦
    Ich habe bei den Variablen SONOS_MUSIC die Datei 192.168.178.1:49200/AUDIO/DLNA-1-0/FRITZ-Song.mp3
    angegeben mit und ohne die Zeichen // am Anfang.
    Im Browser an meinem PC lässt sich das so aufrufen und abspielen.
    Die Datei ist auf meinem Router Fritz Box gespeichert.

    Ich bin ganz wild drauf Sound-Dateien über Fibaro auf dem Sonos abzuspielen und bin deswegen hier gelandet. Das scheint ganz schön schwer zu sein. Oder gibt es da einen Lua befehl für?
    Oder liegt es an meiner Fritz Box..? Wäre auch bereit mir eine NAS anzuschaffen, wenn ich wüsste, dass das dann geht. Ich verwende übrigens Fibaro Home Center 2 ver 4.056

    Liebe Grüsse
    Martin

    Like

    • doonic · Dezember 3, 2015

      hmmm… Also bei mir läuft das.
      Teste mal folgendes –> gib folgenden Link in SONOS_MUSIC ein: http://www.raze.ch/demo.mp3
      Wenn es damit funktioniert, dann wird das Problem tendenziell eher bei dir im Netz liegen. Also mit dem Port oder einer Restriktion o. ä.

      Was ist denn 192.168.178.1 genau für ein Device?

      Was du weiter versuchen kannst, falls das oben genannte nicht funktioniert hat, dann kannst du in dem Virtuelen Modul mal unter „Fortgeschritten“ zu Button 2 (Music) gehen und dort im LUA Code auf die Zeile 259 gehen. Dann ersetze die Zeilen 259 bis 264 mit folgendem Code:

      -- Musik Pfad setzen
      playMusic("192.168.178.1:49200/AUDIO/DLNA-1-0/FRITZ-Song.mp3", nil);

      Gefällt 1 Person

      • Martin · Dezember 3, 2015

        Vielen Dank für Deine Antwort. Inzwischen habe ich mir eine NAS. Also Festplatte im Netzwerk gekauft. Damit läuft es 🙂

        Like

  17. Tobias · Dezember 10, 2015

    Hallo
    Erstmal vielen Dank für dein Tutorial echt super! Hab da noch eine Frage zum Button Musik. Habe meine Musik auf einer Synology NAS liegen. Wenn ich dort nur die IP und den Pfad angebe wird leider nichts abgespielt. Weiß nicht ob es damit zusammenhängt das ich ja normal einen Benutzername und Passwort habe um mich anzumelden. Vielleicht hast du eine Idee wie ich hier weiterkomme.

    lg Tobi

    Like

    • doonic · Dezember 23, 2015

      Hi Tobias

      Das ist nicht ganz einfach ohne dein exaktes Setup zu kennen. Grundsätzlich erlaube ich mir als Anregung die Frage, wieso benötigst du auf einem NAS für Musikdateien überhaupt ein Passwort. Aber das ist deine Sache und geht mich nichts an. Benutzer und Passwort kannst du ggf. folgendermassen in der URL integrieren.

      http://username:password@hostname.domain:port/Ordner

      Würde mich auch interessieren ob das funktioniert hat…

      Cheers doonic!

      Like

  18. Christopher Meyer · Dezember 22, 2015

    Hallo Zusammen,

    Bisher funktionierte der „Good Morning“-Button klasse!
    Seit ein paar Tagen allerdings wurde der Satz „….ich starte das Radio für Dich“ nicht mehr zu Ende gesprochen. Der Radio-Stream startete aber.
    Jetzt kommt noch nicht mal mehr das Wetter. TTS scheint gar nihct mehr zu funktionieren……
    Hat dazu schon jemand eine Lösung?

    Danke im Voraus.
    Christopher

    Like

  19. alfa · Januar 13, 2016

    Hallo. danke für die super Arbeit.

    Leider funktioniert bei TTS gar nicht. Lieg das an meinen Einstellung (Ich habe alles konfiguriert wie angeben) oder geht es generell nicht mehr?

    Like

    • doonic · Januar 18, 2016

      Hi Alfa

      Bei mir ist es so, dass es ab und an funktioniert. Aber es ist alles andere als zuverlässig! Ich habe bisher aber kein Lösung gefunden. Ist halt eine volle Abhängigkeit welche ich nicht beeinflussen kann.

      Sorry, und Cheers
      doonic!

      Like

  20. Nina · Februar 2, 2016

    Hallo, ich bin hier relativ neu unter die HC2 Nutzer gegangen und habe noch entsprechende Startschwierigkeiten. Vielleicht könnt ihr mir helfen: Ich habe brav die obigen Anweisungen befolgt und grundsätzlich habe ich meinen Sonos zum laufen gebracht (auch mit dem Sender, den ich wollte). Dann wollte ich die TTS Funktion abspielen und das Ganze hat sich völlig aufgehängt. Bin ich da zu blöd oder habe ich da was übersehen?
    Danke fürs feedback!
    Nischu

    Like

    • doonic · Februar 8, 2016

      Nö, nicht zu blöd… 🙂 TTS über Google (ist ja kein offizielles API) ist einfach nicht zuverlässig… Alle alternativen die ich mir angesehen habe, sind aber auch nicht viel besser.

      Like

    • doonic · Februar 8, 2016

      Habe ich mir schon einmal angesehen. Da muss aber jeder der das nutzen will, sich registrieren. Find ich bedingt cool. Kann das aber nochmals prüfen und ggf. einbauen.

      Like

  21. Bernhard · Februar 5, 2016

    Vielen Dank! funktioniert like a charm!

    Es gibt ein neues VD von Kirkhoff mit funktionierendem TTS – ev. kann das hier auch so eingebaut werden 😉
    link: http://www.domotique-fibaro.fr/index.php/topic/616-fibaro-hc2-vd-sonos-remote-t%C3%A9l%C3%A9commande-pour-diffuseur-sonos/

    cheers,
    Bernhard

    Like

  22. oceanman · Februar 21, 2016

    Also ich habe bzgl. der Musikdateien das gleiche Problem: es funktioniert nicht. Radio läuft, aber Musikdateien nicht. Weder lokal noch die angegebene http-Adresse. Wenn ich letztere über den Browser aufrufe, wird sie jedoch gestartet, aber nicht über das VD.

    Like

  23. Hotte · März 27, 2016

    Gibt es hierzu mittlerweile ein Update mit funktionierendem TTS ??

    Ich habe mich mal im Französichen Forum angemeldet um die version 1.0 von Kirkroff zu besorgen und zu testen, aber leider kann ich das VD auch nach registrierung nicht laden 😦

    Like

  24. Kai · April 2, 2016

    Hallo zusammen !

    Ich betreibe seit einiger Zeit eine HC2 und habe seit langem versucht, die SONOS Play 1 zum Laufen zu bringen.
    Mit diesem Tutorial und den nötigen Anpassungen klappt es hervorragend !
    Vielen Dank für das tolle Tutorial !!!

    Mein Problem ist nun, wie bei vielen anderen, dass das TTS und der Good Morning Button auch nicht funktioniert.

    Jetzt gibt es auf einem französischem Forum ( siehe Link von Bernhard ) eine schöne VD mit einigen Zusatzfunktionen. Leider ist es nicht möglich, diese Version downzuloaden, obwohl ich dort angemeldet bin.

    Hat jemand eine Ahnung, wo man das File bekommen könnte. Der „Herr Google“ weiss das leider nicht !!!

    Vielen Dank schon mal.

    Schöne Grüße

    Kai

    Like

  25. Gerald · April 18, 2016

    hallo,

    vielen dank für das super VD.

    bei mir funktionieren leider die TTS meldungen nicht?
    gibt es da eine ursache oder hab ich was Falsch gemacht?

    LG
    Gerald

    Like

    • doonic · Juli 25, 2016

      Hi Gerald

      Es liegt wohl an Google TTS Service. Eine wirkliche (kostenlose) Alternative habe ich aber noch nicht gefunden.

      Cheers Doonic!

      Like

  26. fibaromourad · Mai 20, 2016

    Vielen Dank! funktioniert like a charm!
    wie kann ich MP3-Dateien aus dem Internet Abspielen?

    Like

  27. Pingback: Sonos im Home Center 2 | Mein kleiner Smart Home Blog

Hinterlasse einen Kommentar