Hallo,
ich möchte gern, das alle meine Sonos Lautsprecher bei einem Einbruch Alarm eine TTS Message ausgeben.
Ich habe das VD Sonos v1.0.1 erfolgreich im Einsatz und es spricht bei Alarmauslösung.
Was kann ich tun, damit alle Sonos Boxen den Text ausgeben. Muss ich für jede Sonos Box ein VD einrichten und wenn ja, wie bekomme ich die Ansage synchron.
Bin für jeden Hinweis dankbar
Moin Hoggle,
danke für deine Antwort. Aber ich bin noch in den Kinderschuhen mit der ganzen Materie und kann leider noch nichts anfangen mit den Links.
Ich habe jetzt das VD für die zweite Sonos Box angelegt.
Nun dachte ich, dass ich meine Szene einfach um die zweite Box erweitern muss.
So hätte ich die Zeile 7 wie folgt geändert (local sid = {114,147} – ID des VD Sonos 1.0.1). Dabei ist 114 der Play3 der funktioniert und 147 der neue in dem anderen Raum.
Die Szene funktioniert mit einem Sonos so wie es sein soll.
--[[
%% properties
%% globals
--]]
local sid = 114 -- ID des VD Sonos 1.0.1
local bid = 28-- müsste bei jedem gleich sein wenn ihr das VD von Krikoff nutzt, ansonsten anpassen.
if fibaro:countScenes() > 1 then
fibaro:abort();
end
fibaro:debug ("Weitergabe des Textes an VoiceRSS")
-- Create TTS params object
fibaro:debug ("Übergabe Text an fibaro und Ansage los")
local params = {
-- TTS Message
message = "Achtung Achtung, der Notruf wurde ausgelöst"
,
duration = 'auto', -- Duration: "auto", xx seconds
language = "de-de", -- Language: de-de
volume = 75 -- 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)
Hi Hoggle,
bin deinem Rat gefolgt und habe eine zweite Scene erstellt und es klappt. Auch wenn es nicht synchron ist, ist es so ok. Da durch die Verzögerung erst der eine und dann der andere den Text ausgibt, wird die Warnung nochintensiver.