SONOS_Remote_v1.0.1

Hi,

hier findet Ihr ein Update zu dem Sonos-VD:
http://forum.fibaro.com/index.php?/topic/20662-sonos-remote-v100-beta/?p=83322
(hochladen geht hier leider nicht)

VG Hoggle

Wo denn da genau?
Ich find dort nur die 1.0.0

kann mir jemand helfen wie ich einen Radiostream auf die dafür vorgesehen Buttons lege?

Danke!

Hi,
das VD ist auf Seite 2.
Viele Grüße Hoggle

Ach, das von Ronald… hab ich übersehen :sunglasses:

Läuft bei mir leider nicht.
Ich hab noch den Sonos Speaker aus der Fibaro-PlugIn-Sammlung installiert – und der läuft.
Hast Du ne Idee?

Moin Hoggle, ich geh kaputt – es läuft :smiley:
Habe das VD von Ronald wieder gelöscht und das originale von Kirkroff von Domotique geladen.
Mit diesem wurde dann auch die x_sonos Variable angelegt.

Wie bekomme ich das VD nun dazu mir zB Rückmeldung zu geben, wenn die Bewegungssensoren scharf / also der Alarm geschaltet wurde(n)?
Process?

(PS: Eine ID von Voice RSS ist ja bereits eingetragen.)

Hi,
die VoiceRSS-ID ist personengebunden.
Also ggf. ausgelaufen oder gehört jemand anderem oder nur ein Beispiel.
Du solltest Dich dort registrieren und deine eigene ID nutzen.

Grundsätzlich musst du den Text an VoiceRss übergeben und dann das File bei dir Abspielen.
War das TTS im Kirkroff-VD integriert?

Viele Grüße Hoggle

Leider funktionieren in der Version von Ronald bei mir die Stationstasten auch nicht. Funktionieren die bei euch?

Dafür nutze ich den Sonos Commander…

aber es müsste doch auch mit den Radio Stationsbuttons 1-5 im VD gehen, oder?

Grundsätzlich, ja.
Ist sicherlich eine Frage des Formates.

@VAlle: Die 5 Stationstasten im VD funktionieren bei mir.

@Hoggle: Ja, hab ich. Hab nun meine ID unter “Process” eingetragen.
Aber sprechen tut es immernoch nicht :-o

Muss ich dafür Variablen anlegen oder wie bekommt das VD eigentlich gesagt, was es sagen soll?

Das geht über eine Szene.
In der Szene wird alles aufbereitet und dann an das VD übergeben.

Meine Szene habe ich wie folgt angepasst bzw. aus diversen Beispielen zusammenkopiert:

--[[
%% 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."
    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)

Die ID 263 ist dabei die VD-ID des SONOS_Remote_v1.0.1
Ansonsten mixe ich hier die Temperatur von Netatmo und das Wetter von OW…

Moin Hoggle,
juhu – es spricht :smiley: Sehr gut.

Leider klappt’s noch nicht mit dem Wetter.
Für OW_Weather hast Du eine Variable angelegt, richtig?
Ist das ein Webdienst? Postest Du mir Dein Script dazu? :slight_smile:

Ich habe gesehen, dass dort mal eine Funktion zum Radio starten drin war.
Wie kann ich die wieder aktivieren? Das wäre doch morgens ne ganz schöne Sache.

PS: Die gute Frau spricht arg schnell. Habe schon herausprobiert, dass man Sprechpausen mit “… …” einbauen kann.

Ich danke Dir!

Sehr schön.

OW steht für Open Weather.
Dazu findest du hier im Forum ein VD.
Du könntest natürlich auch die Wetterbedingung vom HC nehmen.

Morgens startet bei mir ein Bewegungsmeldern erst das Radio und nach 30 Sekunden die TTS-Szene. Nach dessen Ende, startet das Radio wieder automatisch den zuvor gespielten Sender.

Bzw. findest Du für Wetter auch WeatherUnderground-VDs oder schau mal:
https://www.siio.de/heizenenergiesparen/wetteranzeige-im-homecenter-2-mit-eigenen-werten-fuellen/

Moin Hoggle,
super, schaue ich mir gleich mal an.
Das HC schmeißt mir zwar im Debug auch Werte wie gestern “clear” und heute früh “cloudy” aus, aber diese werden nicht gesprochen.
(Müsste ich vermutlich unter der Variablen “weather_de” noch definieren, gell!?)

Wie starte ich das Radio? Bekomme es über LUA nicht hin :-/
oder brauche ich dafür zusätzlich zum “SONOS Remote v1.0.1” Fibaros “SONOS Commander”?

Zum starten drückst du per LUA die Buttons des VDs.
Leg dir hierzu mal eine Blockszene an und wandele das dann in LUA um, um die Befehle und Codes/IDs zu sehen.