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)