Sonos Lautstärke über Taster

Hallo,

kann ich an meinen Sonos Lautsprecher über einen Serientaster bzw. Rolladentaster und einem Fibaro Relais die Lautstärke verändern?

Also Taster links gedrückt halten Volume + und Taster links gedrückt halten Volume -

Geht das auch über das Interne Fibaro Sonos Plugin oder muss ich das über ein Virtuelles Modul machen…?

Hab im Forum vieles gefunden doch irgendwie finde ich nicht richtig das was ich suche.

Danke

Hi,

mit dem Roller Shutter 2 zB geht das, weil er Szenenaktivierung unterstützt.
Das Script bzw. die zu belegenen Aktionen sehen so aus:

--[[
%% properties
200 sceneActivation
%% globals
--]]

if fibaro:countScenes() > 1 then
  fibaro:debug("stop scene");
  fibaro:abort();
end

local id= 200; -- Hier die und in Zeile 3 die ID des fibaro Dimmers eintragen
local name = fibaro:getName(id)
--fibaro:debug(name);
local name = tonumber(fibaro:getValue(id, "sceneActivation"));
if (tonumber(fibaro:getValue(id, "sceneActivation"))==16)
then
fibaro:debug("1 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==26)
then
-- fibaro:debug("1 click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==25)
then
fibaro:debug("3 click s2 "..name);
  fibaro:call(173, "close");
	
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==15)
then
fibaro:debug("3 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==14)
then
fibaro:debug("2 click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==24)
then
 fibaro:debug("2 click s2 "..name);
  fibaro:call(173, "open");
	fibaro:call(169, "open");
	
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==12)
then
fibaro:debug("hold click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==13)
then
fibaro:debug("release click s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==22)
then
fibaro:debug("hold click s2 "..name);
  fibaro:call(151, "open");
	fibaro:call(153, "open");
		
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==23)
then
fibaro:debug("release click s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==10)
then
fibaro:debug("change from turn off to turn on s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==11)
then
fibaro:debug("change from turn on to turn off s1 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==20)
then
fibaro:debug("change from turn off to turn on s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==21)
then
fibaro:debug("change from turn on to turn off s2 "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==17)
then
fibaro:debug("up "..name);
elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==18)
then
fibaro:debug("down "..name);
end;

Der Code sieht zB für meinen Button (Sonos lauter) so aus:

elseif (tostring(button_source["keyAttribute"]) == "HeldDown") then
  	fibaro:debug('Fibaro Button gehalten.')
  	fibaro:setGlobal("Button_Status", "HeldDown")
  
  	while (tostring(fibaro:getGlobalValue("Button_Status") == "HeldDown")) do
	  	fibaro:debug("Start-Wert: "..fibaro:getValue(7, "volume"))
  		volume = fibaro:getValue(7, "volume")	
  		volumeneu = volume + 2
		fibaro:call(7, "setVolume", volumeneu)
    	if (fibaro:getGlobalValue("Button_Status") == "Released") then
      		fibaro:debug ("BREAK wegen Status")
      		break
      	end
    	if volumeneu >= 50 then
      		fibaro:debug ("BREAK wegen Lautstärke")
      		break
      	end

    fibaro:sleep(200)
  	end
    

VG Hoggle

Würde das auch so mit einem nodon octan funktionieren?

Der nodon nutzt meiner Meinung nach die CentralSceneEvent-Klasse, da würde das Skript ein wenig anders aussehen. (siehe zweites Skript von Hoggle)

Gruß

Hallo,

ich habe jetzt die ganze Woche probiert, aber irgendwie versteh ich nicht wo der zweite LUA Code von Hoggle hin muss.
Habe es mit einem Fibaro Dimmer 2 probiert. Szenenaktivierung eingeschaltet und als Taster für Rollanden eingestellt.
Benötige ich das VD von Sonos oder geht das mit dem Sonos Plugin von Fibaro?

Danke und Gruß

Hi,

das zweite Skript brauchst du nicht. Ist einmal ein Beispiel für sceneActivation und einmal für CentralSceneEvent. Mit dem Plugin wird es glaub ich nicht gehen, dazu brauchst du dann das VD.

Gruß

Wenn Du in dem LUA-Editor bist, findest Du links die Räume und alle ansprechbaren Geräte und welche Befehle sie unterstützen.
Schau da mal rein.

Hey Leute, ich steh total aufm Schlauch.
Ich finde irgendwie überhaupt keinen Ansatz wie ich die Szene erstellen soll.
Ich muss doch irgendwie dann ne Szene haben wenn Taster 1 halten = “setSliderVolume +2” und Taster 2 halten = “setSliderVolume -2”, oder???
Verstehe nicht wie das mit der sceneActivation zusammenhängt…
Ich kapiere es nicht !! :frowning:

Hi,

mittels sceneActivation wird dein Script gestartet (getriggert).
Außerdem können so durch die Drück-Häufigkeit bzw. die Haltedauer unterschiedliche Aktionen im Script gestartet werden.

Daher hatte ich die oben die beiden Scripte gepostet.
DAs zweite Script macht genau das Lauterstellen bei Halten.

VG Hoggle