Sonos ???

Moin,

Gibt es momentan eine funktionierende Integration des Sonos Systems auf der hc2?
Also mit TTS Radio und allem Schnickschnack?
Da mein Französisch doch eher Plattdeutsch ist, ist deutsch oder wenigstens englisch ganz super!!!

Vielen Dank jetzt schon mal!!

Hi,

je nach dem, was genau Du unter “funktionierende Integration” bzw. “TTS Radio und allem Schnickschnack” verstehst.
Sonos lässt sich integrieren und steuern bzw automatisch ansprechen.
Hier im Forum snd ja einige Threads dazu.

Ich lasse mir morgens die Temperatur ansagen (also TTS) und das Radio anschalten.

VG Hoggle

Hallo Hoggle,
Ja im Prinzip genau wie du geschrieben hast!
Ich möchte gern morgens das Wetter angesagt bekommen Alarm Statusmeldungen, Haustürklingel abends über Ansage, etc. kann man ja viel mit umsetzen!
Hatte jetzt auch ein wenig google geärgert und bin dabei auf die Seite von doonic
gestoßen! Hab das jetzt auch alles so integriert wie beschrieben! Kein Problem scheint auch alles zu funktionieren! Hör nur nichts! Wenn ich TTS Button drücke dann sehe ich auf der Sonos App auf dem iPhone das sich was tut selbst die Lautstärke passt sich an , aber naja wie gesagt ich hör nichts! Gleiches gilt für den good Morning Button! Radio läuft leider auch nicht, oder geht eventuell einslive nicht? Alle Debug anzeigen laufen ohne Probleme durch!
Habe auch alle Variablen eingestellt wie angegeben! Tja, hast du da einen Tipp für mich Hoggle???

Danke

Das VD von doonic nutze ich auch.
Für TTS habe ich es genutzt, das geht aber seit Google Änderungen vorgenommen hat nicht mehr.

Statt dessen nutze ich http://www.voicerss.org.

Szene (wobei ich Dir gerade nicht sagen kann, von wem diese ist, wahrscheinlich war es doonic):

--[[
%% properties

%% globals
--]]

 
-- 263 is the Virtual Device ID
-- 28 is the Process button ID
 
local sid, bid = 263, 28
local temp = tostring(fibaro:getValue(144, "value"))

--local temp=tostring(fibaro:getGlobalValue("OWM_Temp"));
--fibaro:debug(temp);
tempcurr=string.gsub(temp, "%.", ",", 1);
fibaro:debug(tempcurr);

-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
-- Funktion zur Ermittlung des Datums.
-- Version 1.0
-- Copyright (c) 2015 Nicolas Dörig
-------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------

function germanDate( _type ) -- l=longDate("Montag, 12.September"), s=shortDate("Mo, 12.Sep 2011"), N=numericLong("12.09.2011"), n=numericShort("12.09.11")
	local longWochentag  = {'Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'}
	local shortWochentag = {'So','Mo','Di','Mi','Do','Fr','Sa'}
	local longMon        = {'Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'}
	local shortMon       = {'Jan','Feb','Mrz','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'}
	local indexTag       = os.date( "%w" ) +1
	local indexMon       = math.abs( os.date( "%m" ) )
	if _type == 's' then
		return os.date( shortWochentag[indexTag]..", %d."..shortMon[indexMon].." %Y" )
	elseif _type == 'l' then
		return os.date( longWochentag[indexTag]..", %d."..longMon[indexMon] )
	elseif _type == 'N' then
		return os.date( "%d.%m.%Y" )
	elseif _type == 'n' then
		return os.date( "%d.%m.%y" )
	end
end
--print ( 'Kurzdatum mit Wochentag\t' .. germanDate('s') )
--print ( 'Langdatum mit Wochentag\t' .. germanDate('l') )
--print ( 'Datum numerisch lang\t' .. germanDate('N') )
--print ( 'Datum numerisch kurz\t' .. germanDate('n') )

-------------------------------------------------------------------------------------------

--playTTS("de", "Guten Morgen. Es ist ".. germanDate('l') .." und draussen sind es " .. getWeather( 't' ) .." Grad " .. getWeather( 'c' ) ..". Ich starte das Radio fuer dich.", 13000, 15);

--local weather = fibaro:getValue(3, "WeatherConditionConverted")
local weather = fibaro:getGlobal("OW_Weather")
local weather_de
fibaro:debug(weather) 

  if weather == "overcast clouds" then 
      weather_de = "und es ist bewoelkt."
	elseif weather == "few clouds" then 
      weather_de = "mit ein paar Wolken."
	elseif weather == "scattered clouds" then 
      weather_de = "bei aufgelockerter Bewölkung."
	elseif weather == "broken clouds" then 
      weather_de = "bei durchbrochener Bewölkung."
	elseif weather == "light rain" then 
      weather_de = "es regnet leicht, vergiss den Schirm nicht!"
	elseif weather == "moderate rain" then 
      weather_de = "es regnet, vergiss den Schirm nicht!"
  	elseif weather == "heavy intensity rain" then 
      weather_de = "es regnet stark, vergiss den Schirm nicht!"
    elseif weather == "clear sky" then 
      weather_de = "und der Himmel ist klar."
    elseif weather == "snow" then 
      weather_de = ". Es schenit."
    elseif weather == "sleet" then 
      weather_de = ". Schneeregen."
    elseif weather == "drizzle" then 
      weather_de = ". Nieselregen."
  	elseif weather == "light snow" then 
      weather_de = ". Es schneit leicht."
  	elseif weather == "fog" then 
      weather_de = ". Es ist nebelig."
  	
    else
      --weather_de = "."
  	  weather_de = weather
    end

fibaro:debug(weather_de) 
---------------------------------------------------------------------------
-- Create TTS params object
 
--message = "Die aktuelle Temperatur draußen beträgt "..tempcurr.."°Celsius.",  
 
local params = {

--TTS Message

message = "Es ist ".. germanDate('l') .." und draussen sind "..tempcurr.." Grad "..weather_de..".";

--message = "Es ist ".. germanDate('l') .." und draussen sind "..tempcurr.."°Celsius.".. getWeather( 'c' ) ..". Ich starte das Radio fuer dich.";

duration = 'auto';  -- Duration: "auto", xx seconds
language = "de-DE"; -- Language: see http://www.voicerss.org/api/documentation.aspx to get your language code
volume = 18;         -- Volume
}
 
local _f = fibaro
local _x ={root="x_sonos_object",load=function(b)local c=_f:getGlobalValue(b.root)if string.len(c)>0 then local d=json.decode(c)if d and type(d)=="table"then return d else _f:debug("Unable to process data, check variable")end else _f:debug("No data found!")end end,set=function(b,e,d)local f=b:load()if f[e]then for g,h in pairs(d)do f[e][g]=h end else f[e]=d end;_f:setGlobal(b.root,json.encode(f))end,get=function(b,e)local f=b:load()if f and type(f)=="table"then for g,h in pairs(f)do if tostring(g)==tostring(e or"")then return h end end end;return nil end}
-- Make a request to the remote to process params object instantly
_x:set(tostring(sid), { tts = params })
_f:call(sid, "pressButton", bid)

Das VD ist Sonos Version 1.0.1 beta.
siehe zB
https://www.siio.de/board/thema/sonos_remote_v1-0-1/

Morgen,

Also bisher hab ich das mit dem Radio Button hinbekommen aber mit doonics VD! Mit Voice RSS stehe ich mal wieder auf dem Schlauch! Was genau muss ich machen? Anmelden bei Voice RSS ? Ok, werd ich wohl hinbekommen! Und dann, wie mach ich das das Wetter angesagt wird? Alle Wörter einzeln angeben und für jedes eine Variable anlegen? Ich hab auch noch das Problem das sich die Variable bei dem VD 1.0.1 nicht selbst erstellt!
Ich glaub die hieß Sonos_x oder so ähnlich!
Kann mir da noch mal bitte jemand, eventuell Hoogle, unter die Arme greifen?!

Danke euch

Hi,

Die globale Variable X_Sonos… legt sich automatisch beim Speichern des VDs an.
Bei VoiceRSS registrierst Du dich (kostenlos).
Das VoiceRSS Passwort und die UserID trägst du in dem VD ein - meine Button “Process”, da sind vordefinierte Variablen.
Das VD “kümmert” sich dann um die Übersetzung eines Textes und das Abspielen auf dem dem VD zugeordneten Sonos.

Das eigenständige Script oben bereitet den anzusagenden Text vor und übergibt ihn an das VD (bei mir die ID 263, Button-ID wird identisch sein, da du das VD sicherlich nicht im Aufbau vetändert hast).

Viele Grüße Hoggle

Das Script oben holt sich über

local temp = tostring(fibaro:getValue(144, "value"))

die aktuelle Außentemperatur von meiner Netatmo.

Das eigentliche Wetter wird wie folgt ermittelt:

--local weather = fibaro:getValue(3, "WeatherConditionConverted")
local weather = fibaro:getGlobal("OW_Weather")

Der auskommentierte Part holt das Wetter aus dem HC.
Der aktive Part holt sich das Wetter von Open Weather. Das ist ein anderes VD. Das und Infos dazu findest du hier im Forum.

Viele Grüße Hoggle

Danke Hoggle,

Bei mir legt sich einfach die Variable nicht selbst an! Stört da eine Variable vom Sonos Commander? Liegt es an der 4.101 Beta auf meinem hc? Gibts da irgendwie eine Reihenfolge die ich beachten muss?

mhm, k.A., ob es an der Beta-FW liegt

Due hast das VD Sonos Version 1.0.1 eingerichtet?
Und hast dann dort auch den Speichern-Button gedrückt?

Was steht im Process-Button oder Main-Loop im Debug?

Ja, das VD hab ich draufgezogen! Speicher Button im VD selbst? Oder das rechte Hand oben von dem hc? Gespeichert hab ich über die hc! Im debug des mainloops läuft die Aktion über toolkit und bleibt dann bei, Attempt Line 105 … len, stehen ! Ich denke mal das ist der Bezug zu der Variable!

IP und Port hast Du eingetragen?

Speicher-Button siehe Bild

VD-Speichern.png

Zone und State wird bei mir nicht angezeigt!
Ip der Sonos hab ich eingegeben und Port ist doch 1400!

Ah sorry, nicht das ich mich vertan habe!
Wo trage ich Passwort und User ID ein? Ich mein, welche Zeile???

Von dem VoiceRSS?
In dem VD bei dem Process-Button, Zeile 50 bei
voiceRssApiKey = "xxxxxx",

voiceRssApiKey = "xxxxxx", meinen APIKEY hab ich eingetragen.
habe jetzt mehrmals das VD gelöscht und neu aufgespielt aber die Variable erstellt sich nicht.
im Debug des Mainloop steht:

mhm - k.A.
Hast Du auf dem Sonos im Wohnzimmer Sonos- bzw. Radio-Favoriten in der Sonos-App angelegt?

Nein, habe ich nicht! Die SONOS ist neu und noch nicht von mir großartig mißhandelt worden.
ich weiß auch nicht! Hatte jetzt auch schon eine ätere Version des VD´s
ausprobiert, geht leider auch nicht. mhm falls jemand noch eine Idee hat, wie ich diese Variable SONOS_X draufbekomme,
bitte immer raus damit.

Hoogle Vielen Dank für deine Hilfe

gibt es eventuell die möglichkeit das einer hier mal die Variable postet mit allen werten??

Hallo Basti,

habe zwar keine Lösung, wollte aber mitteilen, dass ich dieselben Probleme habe. Veranlasst durch diesen Thread habe ich ebenfalls versucht, alles umzusetzen und komme genau an der Stelle nicht weiter, an der du auch die Probleme hast.
Habe versucht, das originale VD von Krikoff auf der französischen Seite herunterzuladen. Klappt aber nicht, da angeblich mein Konto, das ich extra eingerichtet hatte, dazu nicht berechtigt sei. Irgendwo habe ich nämlich gelesen, dass wohl das originale VD die Sonos_X Variable erstellt. Werde mal weiterhin versuchen, das OriginalVD zu bekommen - muss ja irgendwo im Netz nochmals zu finden sein. Scheint aber schwierig zu sein - warum, weiß ich nicht!!

Vielen Grüße

Matthias