Hi,
habe mir den neuen Aeotec Wallmote gegönnt, sehr stylisch!
(https://shop.intuitech.de/schalterdimmer/375-aeotec-aeotec-wallmote-quad-funkwandschalter-mit-4-tasten-1220000014503.html)
Nachdem wir in der Facebook-Gruppe an 2 Stellen darüber diskutieren, hier ein Thread um den Stand zusammenzufassen:
Beschreibung, Handbuch,… (https://aeotec.freshdesk.com/support/solutions/articles/6000162392-wallmote-quad-user-guide-)
Auskunft vom Support:
There are 4 child nodes, each of the buttons are considered a child node. You can use the child nodes to either process scene events, or choose to ignore them if you are not processing a central scene event.
Scene Activiation Use
Each button has the capability to send out “Scene IDs” to trigger a scene, if fibaro supports this then each node can be used to trigger scenes with 4 separate button presses:
Tap = Scene ID 1
Press and Hold = Scene ID 2
Swipe left = Scene ID 3
Swipe Right = Scene ID 4
But if you are using Group Associations from the root node, then if a device is directly associated to:
Group 3 - dim function Button 1
Group 5 - dim function Button 2
Group 7 - dim function Button 3
Group 9 - dim function Button 4
Then based on the dimmer set to these groups, you can use Swipe up and Swipe down to dim up and down the dimmer module that is directly associated.
Nun zu den Problemen: Swipen geht wohl nur über Assoziationen, den kurzen rechts-links Swipe pro Button habe ich noch nicht hinbekommen.
Wenn ich den Schalter über CentralSceneEvent auslese, klappt alles, nur KeyHold erkennt er zwar, wechselt aber bei mir immer zwischen Pressed, Hold und Release, so dass ich Chris Dimm-Script von Hue Leuchten nicht integriert bekomme. (https://www.siio.de/lichtschatten/kleine-lua-scripte-teil-15-hue-lampen-mit-fibaro-taster-dimmen/)
.
Hier mein aktuelles Script, natürlich zusammengeschustert aus vielen Beiträgen, allen dafür an diesr Stelle Dank!
--[[
%% properties
%% events
601 CentralSceneEvent
%% globals
--]]
--++++++++++++++++++++++++
--Zusammengestellt aus diversen Szenen im Siio-Forum, Dank an alle für Eure Arbeit!
-- VARIABLEN (Trigger Device muss oben unter %% properties aufgeführt sein)
local Switch = 601 -- Schalter ID des WallMont
local HueRef = 555 -- Referenzlampe für Check ob das Licht an oder aus ist
local HUEs = {555, 532, 533} -- IDs of HUE as Array {X, Y, Z}
local fibaroID = 601 -- Set ID of Device which shall dim HUE
local sceneID = 178 -- Set ID of this scene
local stepPercentage = 7 -- Dimmer step in percent
local stepTime = 0.05 -- Dimmer step duration in seconds
local toggleTime = 5 -- Time to toggle dim up/down
local dimUpDo = 1
--+++++++++++++++ Funktionen +++++++++++++++++++
function esslampe()
-- Aktion Taste 1 1xClick (Scene ID 1)
--An Aus
if
tonumber(fibaro:getValue(HueRef, "on")) == 0
then
fibaro:call(555, "changeBrightness", 255)
fibaro:call(555, "turnOn")
elseif
tonumber(fibaro:getValue(HueRef, "on")) == 1
then
fibaro:call(555, "turnOff")
end
fibaro:abort()
end
-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
--Funktion Hell-Dunkel (Taste2pressed)
function helldunkel()
-- Aktion Taste 2 1xClick (Scene ID 21)
-- Wechsel zwischen Relax und Work Lichtstimmung
if
tonumber(fibaro:getValue(HueRef, "on")) == 1
then
if tonumber(fibaro:getValue(HueRef, "bri")) < 100
then
--Hues
fibaro:call(555, "changeBrightness", 255)
fibaro:call(555, "changeSaturation", 210)
fibaro:call(555, "turnOn")
fibaro:call(532, "changeBrightness", 255)
fibaro:call(532, "changeHue", 7680)
fibaro:call(532, "changeSaturation", 210)
fibaro:call(532, "turnOn")
fibaro:call(533, "changeBrightness", 255)
fibaro:call(533, "changeHue", 13500)
fibaro:call(533, "changeSaturation", 210)
fibaro:call(533, "turnOn")
-- normale Lampen
fibaro:call(138, "turnOn")
fibaro:call(140, "turnOff")
fibaro:debug("Licht hell")
elseif tonumber(fibaro:getValue(HueRef, "bri")) > 100
then
fibaro:call(555, "changeBrightness", 80)
fibaro:call(555, "changeSaturation", 0)
fibaro:call(555, "turnOn")
fibaro:call(532, "changeBrightness", 144)
fibaro:call(532, "changeHue", 7630)
fibaro:call(532, "changeSaturation", 210)
fibaro:call(532, "turnOn")
fibaro:call(533, "changeBrightness", 140)
fibaro:call(533, "changeHue", 13500)
fibaro:call(533, "changeSaturation", 210)
fibaro:call(533, "turnOn")
-- normale Lampen
fibaro:call(138, "turnOff")
fibaro:call(140, "turnOn")
fibaro:debug("Licht dunkel")
end
end
fibaro:abort()
end
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Die Dimm-Funktion
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
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function dimmen()
-- Hold Taste 3
-- 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
end
-- if maximum brighntess start wich dimming down
if tonumber(fibaro:getValue(HUEs[1], "ui.brightness.value")) == 255 then dimUpDo = -1 end
local step = math.floor(255 / 100 * stepPercentage * dimUpDo)
-- 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
fibaro:abort()
end
-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
function dimmstop()
print ("Stop")
fibaro:killScenes(sceneID)
end
function alloff()
-- Press Taste4 Alles aus
fibaro:call(138, "turnOff")
fibaro:call(140, "turnOff")
fibaro:call(532, "turnOff")
fibaro:call(533, "turnOff")
fibaro:call(555, "turnOff")
fibaro:abort()
end
--+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-- Hier wird das Tastendruck Attribut der Taste geholt
-- (Pressed, HeldDown, Released)
local button_source = fibaro:getSourceTrigger()["event"]["data"]
local Tastendruck = tostring(button_source["keyAttribute"])
-- fibaro:debug("Mode: "..Tastendruck)
-- Der Tastendruck wird in eine Nummer umgewandelt
local Tastenstatus = 0
if (Tastendruck == "Pressed") then Tastenstatus = 1
elseif (Tastendruck == "HeldDown") then Tastenstatus = 3
elseif (Tastendruck == "Released") then Tastenstatus = 5
end
fibaro:debug("Tastenstatus: "..Tastenstatus)
--++++++++++++++++++++++++
-- Hier wird die gedrückte Taste ermittelt
local startSource = fibaro:getSourceTrigger();
action = json.encode(startSource)
-- fibaro:debug("Action: "..action)
local Key1 = action:match('"keyId":1')
local Key2 = action:match('"keyId":2')
local Key3 = action:match('"keyId":3')
local Key4 = action:match('"keyId":4')
-- Die gedrückte Taste wir in eine Nummer umgewandelt
local Taste = 0
if (Key1 ~= nil) then Taste = 1
elseif (Key2 ~= nil) then Taste = 2
elseif (Key3 ~= nil) then Taste = 3
elseif (Key4 ~= nil) then Taste = 4
end
-- fibaro:debug('\n'.."Taste: "..Taste)
--+++++++++++++++++++++++++
-- Die Nummer der Taste und die Nummer des Tastendruckweise wird in eine zweistellige Form gebracht
local Ziel = Taste..Tastenstatus
--Key1 Pressed = 11
--Key1 HeldDown = 13
--Key1 Released = 15
-- Key2 Pressed = 21
-- Key2 HeldDown = 23
-- Key2 Released = 25
-- Key3 Pressed = 31
-- Key3 HeldDown = 33
-- Key3 Released = 35
-- Key4 Pressed = 41
-- Key4 HeldDown = 43
-- Key4 Released = 45
-- fibaro:debug (Ziel)
--+++++++++++++++++++++++++
--Auswertung um eine andere Scene oder ein anderes Modul zu steuern!
if(Ziel == "11") then
esslampe()
fibaro:debug("Taste1 Pressed")
elseif(Ziel == "13") then
fibaro:debug("Taste1 HeldDown")
elseif(Ziel == "15") then
fibaro:debug("Taste1 Released")
elseif(Ziel == "21") then
helldunkel()
fibaro:debug("Taste2 Pressed")
elseif(Ziel == "23") then
fibaro:debug("Taste2 HeldDown")
elseif(Ziel == "25") then
fibaro:debug("Taste2 Released")
elseif(Ziel == "31") then
fibaro:debug("Taste3 Pressed")
elseif(Ziel == "33") then
fibaro:debug("Taste3 HeldDown")
dimmen()
elseif(Ziel == "35") then
fibaro:debug("Taste3 Released")
dimmstop()
elseif(Ziel == "41") then
fibaro:debug("Taste4 Pressed")
alloff()
elseif(Ziel == "43") then
fibaro:debug("Taste4 HeldDown")
elseif(Ziel == "45") then
fibaro:debug("Taste4 Released")
end
fibaro:abort()
Wie gesagt, klappt alles super, könnte vllt an manchen Stellen etwas eleganter programmiert sein…
Aber: beim Dimmen springt er ständig zwischen Taste 3 Held down und Taste 3 released. Dadurch klappt das mit dem Dimmen natürlich nicht. (s.Screenshot).
Hat irgendwer noch Erfahrungen mit diesem Schalter oder eine andere gute Idee?