HUE per LUA dimmen

Hallo,

man dann die absolute Helligkeit der HUE Leuchten ja per Befehl:

fibaro:call(ID, "changeBrightness", WERT)

einstellen.
Gibt es denn einen Befehl, mit dem man die relative Helligkeit einstellen kann? Soll heißen, ich möchte die Helligkeit per Befehl um einen bestimmten Wert erhöhen oder verringern.

Danke

Ich verwende ein virtuelles Modul für die Hue Lampen. Ich setze dann mit: fibaro:call(189, "setSlider", "1", "100"); den Brightness-Slider auf einen Wert zwischen 0-100. Je nachdem, wie hell ich es eben haben möchte :slight_smile:

Das wäre nichts anderes als das was ich bisher auch tue, oder? Ich hätte aber gerne einen Befehl, mit dem ich die Helligkeit um bspw. 10 Einheiten erhöhen oder verringern kann.
Es ist sehr unpraktisch, einen Befehl für 10%, 20, 25, 30, 40, 50, etc. zu erstellen. Da ich das Ganze bisher über Taster steuere, bräuchte ich dafür 10 oder mehr Tasten, was natürlich Unsinn wäre.
Meine Idealeinstellung wäre: eine Taste für heller, eine für dunkler. So wie es mit dem originalen HUE Taster auch möglich ist.

Hi,

du kannst die Brightness via LUA auslesen und dort dann den Wert + 10 erhöhen und dann via LUA wieder setzen. Sollte ohne Probleme funktionieren.

Gruß

Dimmen von HUE campen mit einem KFOB oder WALL-C. Trotz intensiver Suche habe ich auf keinen Code dafür gefunden. Aus diesem Grund habe ich selber etwas geschrieben, was sicher verbesserungswürdig ist aber besser habe ich es nicht hinbekommen. Mit dem gleichen Code kann ich auch die Farbe per Tastendruck verändern. Dann halt nur eine andere Variable und die Abfrage der HUE ändern

  1. Eine Variable „Dimmer“ anlegen

  2. Aufrufen der Scene in der Auswertung des KFOB oder WALL-C wie folgt: Starten der Scene zum Hochdimmen mit halten des Button 1
    elseif(MySceneId == But1Hold) then
    fibaro:debug(“But1Hold”)
    fibaro:setGlobal(“Dimmer”, “1”)
    fibaro:startScene(216)

  3. Beenden des Dimmvorganges durch loslassen des Button 1:
    elseif(MySceneId == But1Release) then
    fibaro:debug(“But1Release”)
    fibaro:setGlobal(“Dimmer”, “0”)
    fibaro:killScenes(216)

  4. Runterdimmen starten:
    elseif(MySceneId == But3Hold) then
    fibaro:debug(“But3Hold”)
    fibaro:setGlobal(“Dimmer”, “2”)
    fibaro:startScene(216)

  5. Beenden des Dimmvorganges:
    elseif(MySceneId == But3Release) then
    fibaro:debug(“But3Release”)
    fibaro:setGlobal(“Dimmer”, “0”)
    fibaro:killScenes(216)

  6. Die Scene an sich:

--[[
%% properties
%% globals
--]]
local DID = 52 -- ID HUE Küche, auslesen Helligkeit
local D = tonumber(fibaro:getValue(DID, "ui.brightness.value"))
-- fibaro:debug("aktuell " ..D.. " Helligkeit")
fibaro:call(52, "turnOn");
if 
tonumber(fibaro:getGlobalValue("Dimmer")) == tonumber("1") then
while D <= 255 do
-- fibaro:debug("aktuell " ..D.. " Helligkeit")
fibaro:call(52, "changeBrightness", D);
fibaro:sleep(300)
D = D + 15
end
elseif
tonumber(fibaro:getGlobalValue("Dimmer")) == tonumber("2") then
while D >= 5 do
-- fibaro:debug("aktuell " ..D.. " Helligkeit")
fibaro:call(52, "changeBrightness", D);
fibaro:sleep(300)
D = D - 15
end
end

Autostart ist deaktiviert, Scene läuft also nur bei Aufruf.

Hallo Hexagon,

was boomx meint sieht in LUA ungefähr so aus:

--[[
%% properties
101 sceneActivation
%% globals
--]]

------------ Locals ------------

local hue = 129;
local id= 101;
local name = fibaro:getName(id)

------------ Funktionen ------------

	-- Runter-Dimmen ---
function LightDecrease ()
  valueDimmer = tonumber(fibaro:getValue(hue, "ui.brightness.value"));
  valueDimmer = math.max(0, valueDimmer -60)
  fibaro:call(hue, "changeBrightness", valueDimmer)
  --fibaro:debug("Dimmer Intensity: " ..valueDimmer) 
end

	--- Hoch-Dimmen ---
function LightIncrease ()
  valueDimmer = tonumber(fibaro:getValue(hue, "ui.brightness.value"));
  valueDimmer = math.max(0, valueDimmer +60)
  fibaro:call(hue, "changeBrightness", valueDimmer)
  --fibaro:debug("Dimmer Intensity: " ..valueDimmer) 
end
-----------------------------------

------------ Szene ------------

if (tonumber(fibaro:getValue(id, "sceneActivation"))==20)
then
  LightIncrease ()
fibaro:debug("Dimmer +");

elseif (tonumber(fibaro:getValue(id, "sceneActivation"))==40)
then
  LightDecrease()
fibaro:debug("Dimmer -");

end

vg

Ja, genau so =)

Danke

Gruß

Danke euch :slight_smile:
ich werde das die nächsten Tage umsetzen.
Im Augenblick knabbere ich an anderen Problemen mit der Anlage :wink:

Hier das LUA Script zum Dimmen der HUE ausgearbeitet. Mit diesem Script lassen sich über den S2 eines Dimmers eine oder mehrerer HUEs dimmen. Sie verhalten sich genauso wie normale Leuchtmittel am Dimmer 2: Klick = ein/aus, Halten = dimmen hoch/runter, Doppelklick = volle Helligkeit.

  1. Kopieren und IDs der HUE, ID des Dimmers und ID der Szene eintragen.
  2. eine Globale einfache Variable mit den Namen “dimUpDown” anlegen. Startwert ist 1.
  3. Wenn ihr wollt, könnt ihr die Geschwindigkeit des Dimmens auch einstellen.

Viel Spaß.

--[[
%% properties
70 sceneActivation
%% events
%% globals
--]]

local HUEs = {10, 11, 12} -- IDs of HUE as Array {X, Y, Z}
local fibaroID = 70 -- ID of Device which will dim HUE
local sceneID = 22 -- ID of this scene

local stepPercentage = 7 -- Dimmer step in percent
local stepTime = 0.05 -- Dimmer step duration in seconds

function dimHue (hueID, step)
  
  local valueDimmer = tonumber(fibaro:getValue(hueID, "ui.brightness.value")) + step

  if valueDimmer < 0 then 
    if valueDimmer == 0 + step then return end;
    valueDimmer = 0
    -- fibaro:call(hueID, "turnOff") -- Enable if you want HUE to switch off dimming down fully
  end 
  if valueDimmer > 255 then 
    if valueDimmer == 255 + step then return end;
    valueDimmer = 255 
  end

  fibaro:debug("HUE " .. hueID ..": ".. valueDimmer) 
  fibaro:call(hueID, "changeBrightness", valueDimmer)  
    
end

local startSource = fibaro:getSourceTrigger();
if (
 ( tonumber(fibaro:getValue(fibaroID, "sceneActivation")) == 26 )
or
startSource["type"] == "other"
)
then
    -- Click
	local deviceValue1 = tonumber(fibaro:getValue(HUEs[1], "on"));

	if (deviceValue1 > 0) then
      for i, iHUE in ipairs(HUEs) do 
    	fibaro:call(iHUE, "turnOff")
      end
	else
      for i, iHUE in ipairs(HUEs) do 
    	fibaro:call(iHUE, "turnOn")
      end
	end

elseif  ( tonumber(fibaro:getValue(fibaroID, "sceneActivation")) == 22 ) then

  -- Hold
  	local dimUpDown = fibaro:getGlobalValue("dimUpDown") 

    -- if off, switch on and dim up from darkest
    local deviceValue1 = tonumber(fibaro:getValue(HUEs[1], "on"));
	if (deviceValue1 == 0) then
      for i, iHUE in ipairs(HUEs) do 
        fibaro:call(iHUE, "changeBrightness", 1)
        fibaro:call(iHUE, "turnOn")
      end
      dimUpDown = 1
    end  

    fibaro:setGlobal("dimUpDown", dimUpDown * -1)  
    local step = math.floor(255 / 100 * stepPercentage * dimUpDown)
  
  	-- Start dim loop
    print ("Start dim",step)
  	repeat 
      for i, iHUE in ipairs(HUEs) do 
        dimHue (iHUE, step)	
	  end
      fibaro:sleep(1000 * stepTime)
    until false
  
elseif ( tonumber(fibaro:getValue(fibaroID, "sceneActivation")) == 23 ) then
  
	-- Release
  	print ("Stop")
  	fibaro:killScenes(sceneID)

elseif ( tonumber(fibaro:getValue(fibaroID, "sceneActivation")) == 24 ) then
  
	-- Double Click
  	print ("Setting maximum")
    for i, iHUE in ipairs(HUEs) do 
      dimHue (iHUE, 255)	
      fibaro:call(iHUE, "turnOn")
    end

end

Das Skript in nochmal verbesserter Form jetzt im Gastbeitrag auf Siio: http://bit.ly/huesiio

Schönen guten Abend,

bräuchte mal eure Unterstützung zu dem codeschnippsel unten.
Die unten gesteuerte Lampe ist eine HUE Leuchte, eingepflegt über das Plugin.
Das Dimmen funktioniert gut und sicher aber ich möchte das die Lampe langsamer dimmt
und nicht sofort von 100% auf 15% knallt. Das doch sehr ungemütlich.
hoffe einer kann mir weiterhelfen.
Danke

elseif ostime == afternoon then
    fibaro:call(373, "changeBrightness", "25")
    fibaro:debug("Licht gedimmt.......Jaaa, das Automatisiert du idiot");
    end