Hi all! I´ve tried to create a scene with a mp3 playing "good morning" through my sonos. I`ve borrowed part of the scen from Krikroff and his part is working perfectly.... My plan is that this scen is going to be started every morning by Sankotroniks Main scene and triggered by a motionssensor and a variable.... The scene is only suppose to play itself once in the morning and then set the variable to zero and the kill the scene itself.... But i`ve missed something... Any Ideas?
Best regards
Pettzon
--[[
%% properties
%% events
%% globals
GoodMorningTTS
--]]
fibaro:debug(" SCENE START ")
if fibaro:countScenes() > 1 then
fibaro:debug(" SCENE ABORT - too many instances ")
fibaro:abort()
end
local startSource = fibaro:getSourceTrigger();
if (
( tonumber(fibaro:getValue(87, "value")) > 0 )
)
and
fibaro:debug(" ... have movements... ")
( tonumber(fibaro:getGlobalValue("GoodMorningTTS")) == tonumber("1") )
then
fibaro:debug(" ...Have got the right variable... ")
-- 78 is the Virtual Device ID
-- 28 is the Process button ID
local sid, bid = 106, 28
-- Create STREAM params object
local params = {
-- stream: the file / uri
stream = "//Diskstation/data program/Fibaro Home Center/Mp3/Välkommen till familjen Pettersson.mp3",
-- source: "local" or "http", "local" is setted by default
source = "local",
-- duration: play duration in seconds (option) or "auto"
duration = 8,
-- volume: the volume for playing the stream
volume = 40
}
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), { stream = params })
_f:call(sid, "pressButton", bid)
-- Ändra variabel
fibaro:setGlobal("GoodMorningTTS", 0)
fibaro:debug(" ...put variable to zero... ")
-- Kill running scene cause it is done with appliance
fibaro:abort();
fibaro:debug(" ... Scene aborted! ")
end