Sonos gruppieren bei TTS

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

Gruß secundani

Hi,

ja, grundsätzlich benötigt jeder Sonos ein eigenes VD.
Ich habe es nicht ausprobiert, aber schau mal hier:
https://forum.fibaro.com/index.php?/topic/20662-sonos-remote-v100-beta/&do=findComment&comment=117879

Mit der folgenden Lösung geht das gruppieren recht einfach:
https://forum.fibaro.com/index.php?/topic/21797-tutorial-sonos-remote-vd-using-node-sonos-api/&do=findComment&comment=93098

VG Hoggle

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) 

Gruß

Dann müsstest du Zeile 31 wegen dem Array auch anpassen…
Würde ich nicht machen.
Nach dich einfach eine zweite Szene.

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.

Gruß