Sonos Connect Autofunktion

Hallo liebe gemeinde,
ich will hiermit mal einen beitrag dazu leisten und meine Lösung für euch bereitstellen.
Worum geht es?

Wer kennt es nicht, man hat eine Sonos Connect an seiner Stereo Anlage hängen und muss die Stereo Anlage immer seperat einschalten um seine Musik zu geniesen.
Ist eigentlich in der heutigen Zeit etwas mühsam oder etwa nicht?

Mit meiner Lösung habe ich es geschafft das sich die Stereo Anlage automatisch mit einschaltet und auch auf den Richtigen Eingan umschaltet.
Diese Lösung will euch zeigen, für verbesserungs Vorschläge und Erweiterungen bin ich Offen und würde mich Freuen. Hoffe es gefällt euch.

Was wird benötigt, eine Fibaro HC2, das VD Sonos_Player, einen Harmony HUB und logisch die Sonos Connect :slight_smile:

Da ich neu und mich nicht wirklich mit LUA auskenne besteht sicher verbesserungs bedarf.
Ich habe zwei LUA Szenen erstellt, in einer LUA Szene wird die Variable “sonos_status” geändert, in der Anderen wird die Variable “sonos_status” abgefragt und startet dann die Activity vom Harmony HUB.
Die Harmony Aktion muss natürlich vorher in MyHarmony erstellt werden.

--[[
%% autostart
%% properties
%% events
%% globals
215 value
--]]
 
local status = fibaro:getValue(215, "ui.lblState.value") ---// Hier bitte die ID von dem Sonos_Player VD eintragen.
local harmonystatus = fibaro:getValue(205, "ui.startStopActivitySwitch.value") ---//Hier bitte die ID von der Harmony Activity eingeben

fibaro:debug("Status = "..status.."")
fibaro:debug("Harmony Status Aktion = "..harmonystatus.."") 

local sourceTrigger = fibaro:getSourceTrigger()

function refresh()
  
  fibaro:startScene(68) ---// Die ID der Szene bitte hier eintragen
  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:setGlobal("sonos_status", "1")
  else
  fibaro:setGlobal("sonos_status", "0")
end


In dem oberen LUA Code wird der Status vom Connect abgefragt, wenn dieser auf “Radio Playing” steht wird die variable “sonos_status” geändert.

--[[
%% properties
%% weather
%% events
%% globals
sonos_status
--]]

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getGlobalValue("sonos_status")) == tonumber("1") )
or
startSource["type"] == "other"
)
then
fibaro:call(205, "changeActivityState") ---// Hier bitte die ID von der Harmony Activity eingeben
end

if (
 ( tonumber(fibaro:getGlobalValue("sonos_status")) == tonumber("0") )
or
startSource["type"] == "other"
)
then
fibaro:call(205, "changeActivityState") ---// Hier bitte die ID von der Harmony Activity eingeben
end
 

In diesem LUA Code wird die variable abgefragt, wenn “sonos_status” auf “1” steht wird die Aktion die ihr in MyHarmony erstellt habt gestartet.

Wichtig ist auch das ihr dem Sonos Connect eine fixe IP Adresse vergebt, diese könnt ihr nur im Router mit der MAC Adresse eurer Connect fixieren.
Der Port für die Sonos Connect lautet “1400”. Wird beim VD Sonos Player benötigt.

Ich hoffe ich habe nicht etwas vergessen :smiley:
Und ich hoffe euch gefällt es.

Wenn jemand meinen Lösungsvorschlag verbessern kann und will, soll/kann er das bitte tun :smiley:

bin gespannt auf eure Meinung.

edit: Das Sonos VD habe ich noch mit eingefügt.