Sonos status für Szenen Trigger

Hallo, gibt es eine möglichkeit den Sonos Status “Pause/Stop” oder “Play” mit Fibaro abzufragen, um damit eine Szene zu triggern?

wenn ja wie müsste sowas ausschauen?
gibt es sowas fertig?

Mein ziel ist es.
Wenn ich meinen Sonos Connect starte bzw auf play drücke das sich mein Pioneer Verstärker mit hilfe von Fibaro auf den richtigen Eingang einschaltet.

ich hoffe auf und danke für die Hilfe.

lg

Hi,
Grundsätzlich ja.
Wie steuerst du dein Sonos derzeit?
Über die API?
Nur Plugin?

Viele Grüße Hoggle

Zum steuern benutze ich die Plugins die es gibt.
Sonos player, Sonos Commander

Ich komm halt nur nicht dahinter

Wenn du in Lua bist, siehst du rechts die Räume und Module.
Wenn du über das plugin gehst, gibt es auch ein “state” zum Status auswerten.

Oder:
https://forum.fibaro.com/index.php?/topic/24949-vd-sonos-players-status-v10-3-step-setup/

Ich weiss nicht was du mit dem Satz meinst?

“Wenn du in Lua bist, siehst du rechts die Räume und Module.
Wenn du über das plugin gehst, gibt es auch ein „state“ zum Status auswerten.”

Den LUA-Editor des HC2, wo man die Szenen erstellt.

Ja die räume und module sehe ich rechts, aber damit kann ich nichts anfangen?

Geh mit der Maus über die Module und du siehst die verfügbaren Befehle des Moduls und kannst sie in den Lua-Code einfügen.
Bei dem Sonos Plugin gibt des dann State oder so ähnlich.
Den kannst du dann schon mal auswerten/Auslesen.

So danke dir, habe etwas gebraucht.
Ich habe jetzt schon mal eine Szene zum testen gebastelt, nur zum test schalte ich ein licht und setze eine Variable. (Das soll nicht so bleiben, dient nur rein zum test)

Mein jetziges Problem ist, wie triggere ich die Szene mit dem Status? geht das?
Wenn ich am Sonos Player Play drücke ändert sich der Status auf “Radio Playing”

Und dieser Status soll bei mir die Szene Triggern/Starten.

Ist dies möglich? überlege mir, eine schleife einzubauen weis aber nicht wie das geht und ob es gut ist für das HC2

--[[
%% autostart
%% properties
%% events
%% globals
112 value
--]]

local status = fibaro:getValue(112, "ui.lblState.value")
fibaro:debug("Status = "..status.."")
if
  status == "Radio Playing"
  then
  fibaro:call(184, "turnOn")
  fibaro:setGlobal("sonos_status", "1")
  else
  fibaro:setGlobal("sonos_status", "0")
  
  end

Bitte verzeiht, sind meine ersten versuche mit LUA :smiley: also dass ich selbst was bastle :smiley:

Ist die 112 das PlugIn oder der Sonos Commander?

Das ist ein Virtuelles Modul, nennt sich Sonos Player.
Der Status wird auch im debug richtig abgefragt.
Ich weis nur nicht wie ich mit dem Status die szene triggern soll.
So wie die szene jetzt ausschaut muss ich sie manuel starten, was mir wenig bringt.
Ich will in der Sonos App auf play drücken, und wenn sich der Status von Stop auf Radio Playing ändert soll sich etwas tun, in diesem fall ein licht einschalten und die Variable ändern. (Das passe ich dann auf meinen verstärker an.

Durch Zeile 6 wird Deine Szene getriggert.
Also ein VD und nicht das Plugin.
Wenn du Play direkt an Sonos drückst werden bei mir die Stati in den VDs nicht immer zutreffend dargestellt. Daher nutzte ich die API-Variante.
Aber das Plugin kannst du nicht als Trigger verwenden (meine ich).

Geh zB über eine globske Var, die durch dein VD für den Status

gesetzt wird. Diese GV kannst du dann als Trigger für Deine Szene nutzen.

Oder du fragst den Status in deiner o.g. Szene alle paar Sekunden ab (legst eine entsprechende Abffage um alles).

Das dachte ich mir auch schon, habe es jetzt so gelöst und es funktioniert.

--[[
%% autostart
%% properties
%% events
%% globals
112 value
--]]
 
local status = fibaro:getValue(112, "ui.lblState.value")
fibaro:debug("Status = "..status.."")
local sourceTrigger = fibaro:getSourceTrigger()

function refresh()
  
  fibaro:startScene(62)
  setTimeout(refresh, 3*1000)
  fibaro:debug('Refresh des Status durchgeführt...')
end

if (sourceTrigger["type"] == "autostart") then
	refresh();
end

if
  status == "Radio Playing"
  then
  fibaro:call(184, "turnOn")
  fibaro:setGlobal("sonos_status", "1")
  else
  fibaro:setGlobal("sonos_status", "0")
  fibaro:call(184, "turnOff")
  
  end