Aeotec Wallmote

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?

Hi,

hab grad einen zum Testen da. Skript läuft schon und Pressed & Released wird sauber erkannt. Artikel folgt :slight_smile:

Gruß

Hallo :slight_smile:

seit heute ist auch endlich mein Wallmote da. Schickes Teil! Einbinden in das HC2 und so weiter alles kein Problem. Nun sitze ich hier aber und weiß nicht so recht weiter… Ich hätte nun gern, genau wie bei meinen Dimmer2 Modulen, dass ich über SceneActivation oder ähnliches via LUA Scenen oder Devices steuern kann. Aus dem oberen Script werde ich leider nicht so ganz schlau. Bzw. funktioniert es bei mir, wenn ich die IDs des Wallmote durch meine ID ersetze nicht.

Danke für eure Hilfe :slight_smile:

EDIT: Habe es doch mit dem Skript von weiter oben hinbekommen :slight_smile:

Hi,

sceneActivation kann der Wallmote nicht. Das läuft komplett über CentralSceneEvent und Assoziationen. Das Skript, welches TT gepostet hat, ist sehr speziell. Die Tage werde ich ein allgemeineres Skript veröffentlichen. Dies kannst du dann nutzen.

Gruß

Hi,

bin sehr gespannt auf dein Skript. Habe auch einen Wallmote hier liegen bekomme es mit den Assoziationen gar nicht hin (wollte testweise einen 223er Switch steuern).

Meine Vorstellung war mit dem Wallmote vier verschiedene Szenen zu steuern wie z.B. “Away-Status setzen”, “Garage öffnen” usw.

Gruß Tom

Hallo,
ist schon klar, dass mein Script sehr individuell ist… Wollte auch nur den Bastlern ein paar Anregungen geben.
Inzwischen hat der Aeotec Support geschrieben, dass der Switch HeldDown nicht unterstützt. Schade! Central Scene Event erkennt das HeldDown zwar, hält es bei mir aber nicht, d.h. es kommt bei Finger fest auf dem Switch immer abwechselnd HeldDown und Release. Das kann man natürlich schwer im Script verwursten. Vllt geht da was über Parameter ?
Bin auch gespannt auf Das Script von Daniel, wobei es da ja schon einige gute Sachen zu CentralScene von Dir gibt!

@Tom: dafür kannst Du doch einfach die Auswertung der Tasten oben ab Zeile 211 nehmen, meinen ganzen Quatsch mit den Lampen und die functions einfach ´rausschmeißen!

LG TT

Hi,

bin gerade dabei den Artikel zu schreiben. Sollte morgen kommen.

Hab mich auch mit dem HeldDown auseinandergesetzt, über Parameter geht da leider nichts. Bei mir ist es so, dass er den Release nicht mehr erkennt und sich dann mit den Instanzen der Szene quer schießt. Mag aber am HC2 liegen. Würde erstmal ein einfaches Skript nur mit Klicks machen und dann nachträglich möglicherweise erweitern :confused:

Gruß

Hallo Daniel,

Gibt es dein versprochenes Skript schon?
In der Forumsuche habe ich leider nix gefunden !?

Ich hab mir gestern einen Wallmote gekauft und würde mich darüber sehr freuen!

Eine Suche in den Artikeln hätte geholfen :wink:

https://www.siio.de/aeotec-wallmote-im-fibaro-homecenter-2-einbinden/

Danke für den Link!
Die Suche und ich sind offensichtlich (noch) keine Freunde :wink:

Ich suche immer über das Suchfenster im Forumsbereich (siehe Screenshot) und dachte das wäre die “allumfassende Suchmöglichkeit”
Dort habe ich allerding den oben verlinkten Beitrag mit dem Suchkriterien “Aecotec Wallmote” oder “Wallmote” nicht gefunden.
Gibt es noch andere Möglichkeiten zu suchen?

2017-08-11-10_57_00-»-SmartHome-Forum.jpg

Hi,

ja, direkt auf der Siio-Seite.
Beide Suchen sind unabhängig voneinander…

VG Hoggle

Ah, schön langsam kommt Licht in die Sache, danke Hoggle :wink:
Mit welcher der beiden Suchen finde ich die Beispiele, die ihr hier abgelegt habt:
Oder geht das nur über die Suche die dort hinterlegt ist?
https://www.siio.de/fibaro-downloads-virtuelle-module-szenen

Ich habe mich mit dem Walmote von Aeotec am Wochenende etwas rumgespielt, ist ein tolles Ding :wink:
Habe ein universelles LUA Skript dafür erstellt wo alle Tasten, die beim Wallmote gehen berüchsichtigt sind (siehe unten).

Leider geht kein “PRESSED2” weil der Schalter so schnell reagiert wird immer ein “PRESSED” erkannt, egal wie schnell man drückt!
Habe auch alle Parameter (siehe Anhang) eingegeben und aktiviert, leider ist es mir bis jetzt nicht gelungen die “Slider Funktion” auszulesen, aber vielleicht hat das ja schon jemand rausgefunden.

Hier mal mein universelles Script, vielleicht hat ja jemand was zu ergänzen oder verbessern :wink:

--[[
%% properties
%% events
366 CentralSceneEvent
%% globals
--]]
------- Debug in Farbe -------
Debug = function ( color, message ) fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span")) end

------- Tastencodes auslesen -------
local pressSource = fibaro:getSourceTrigger()["event"]["data"]
--fibaro:debug(json.encode(pressSource))
local pressAttribute = tostring(pressSource["keyAttribute"])
local pressKey = pressSource["keyId"]

---------------------------------------------- 
------- ### Taste 1 ### (links oben) ------- 
---------------------------------------------- 
if (pressAttribute == "Pressed" and pressKey == 1) then
	Debug("green","Taste 1 gedrückt")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "HeldDown" and pressKey == 1) then
	Debug("green","Taste 1 gehalten")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "Released" and pressKey == 1) then
	Debug("green","Taste 1 losgelassen")
	-- ersetzen durch Befehl ...

------------------------------------------ 
------- ### Taste 2 ###(rechts oben) -------- 
------------------------------------------ 
elseif (pressAttribute == "Pressed" and pressKey == 2) then
	Debug("green","Taste 2 gedrückt")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "HeldDown" and pressKey == 2) then
	Debug("green","Taste 2 gehalten")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "Released" and pressKey == 2) then
	Debug("green","Taste 2 losgelassen")
	-- ersetzen durch Befehl ...

---------------------------------------------- 
------- ### Taste 3 ### (links unten) ------- 
---------------------------------------------- 
elseif (pressAttribute == "Pressed" and pressKey == 3) then
	Debug("green","Taste 3 gedrückt")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "HeldDown" and pressKey == 3) then
	Debug("green","Taste 3 gehalten")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "Released" and pressKey == 3) then
	Debug("green","Taste 3 losgelassen")
	-- ersetzen durch Befehl ...

------------------------------------------ 
------- ### Taste 4 ###(rechts unten) ------- 
------------------------------------------ 
elseif (pressAttribute == "Pressed" and pressKey == 4) then
	Debug("green","Taste 4 gedrückt")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "HeldDown" and pressKey == 4) then
	Debug("green","Taste 4 gehalten")
	-- ersetzen durch Befehl ...
elseif (pressAttribute == "Released" and pressKey == 4) then
	Debug("green","Taste 4 losgelassen")
	-- ersetzen durch Befehl ...
end

Aeon-Labs-WallMote-Paraneter.jpg

Das Script von pblacky funktioniert einwandfrei, ich habe Key1 “Pressed” für meine Hue mit dem Befehl – fibaro:call(62, “turnOn”) belegt, die Lampe schaltet ein, welchen Befehl muß ich aber eingeben um die Hue mit Key1 “HeldDown” hochzudimmen? Mir fehlt nur noch der Schnipsel, bitte helft mir.
Viele Grüße Salve.

Dimmer.jpg

Ich habe keine HUE Lampen, daher kann ich dir nicht direkt helfen!
Bei meinen Dimmern lautet der Befehl:

fibaro:call(38, "startLevelDecrease")
und
fibaro:call(38, "startLevelIncrease")

So, ich habe es geschafft, besitze zwar nicht den Aeotec Wallmote, aber den in der Funktion gleichen Remotec Szenen-Master. Ich habe mir aus mehreren Szenen die für mich passenden zugeschnitten und kann nun über die ersten beiden Tasten meine Hue-Lampen einschalten, ausschalten und jeweils hoch- und runterdimmen.
Dazu habe ich 2 Scripte am laufen:

Dimmscript

–[[
%% properties
%% globals
–]]
local DID = 62 – ID HUE, auslesen Helligkeit
local D = tonumber(fibaro:getValue(DID, “ui.brightness.value”))
– fibaro:debug(“aktuell " …D… " Helligkeit”)
fibaro:call(62, “turnOn”);
if
tonumber(fibaro:getGlobalValue(“Dimmer”)) == tonumber(“1”) then
while D <= 255 do
– fibaro:debug(“aktuell " …D… " Helligkeit”)
fibaro:call(62, “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(62, “changeBrightness”, D);
fibaro:sleep(300)
D = D - 15
end
end

Tasterscript

–[[
%% properties
%% events
56 CentralSceneEvent
%% globals
–]]
------- Debug in Farbe -------
Debug = function ( color, message ) fibaro:debug(string.format(’<%s style=“color:%s;”>%s’, “span”, color, message, “span”)) end

------- Tastencodes auslesen -------
local pressSource = fibaro:getSourceTrigger()[“event”][“data”]
–fibaro:debug(json.encode(pressSource))
local pressAttribute = tostring(pressSource[“keyAttribute”])
local pressKey = pressSource[“keyId”]


------- ### Taste 1 ### (links oben) -------

if (pressAttribute == “Pressed” and pressKey == 1) then
fibaro:call(62, “changeSaturation”, 30)
fibaro:call(62, “changeHue”, 17475)
fibaro:call(62, “changeBrightness”, 100)
fibaro:call(62, “turnOn”)
– ersetzen durch Befehl …
elseif (pressAttribute == “Pressed2” and pressKey == 1) then
fibaro:call(62, “changeSaturation”, 30)
fibaro:call(62, “changeHue”, 17475)
fibaro:call(62, “changeBrightness”, 255)
fibaro:call(62, “turnOn”)
– ersetzen durch Befehl …
elseif (pressAttribute == “HeldDown” and pressKey == 1) then
Debug(“green”,“Taste 1 HeldDown”)
fibaro:setGlobal(“Dimmer”, “1”)
fibaro:startScene(65)
– ersetzen durch Befehl …
elseif (pressAttribute == “Released” and pressKey == 1) then
Debug(“green”,“Taste 1 losgelassen”)
fibaro:setGlobal(“Dimmer”, “0”)
fibaro:killScenes(65)
– ersetzen durch Befehl …


------- ### Taste 2 ###(rechts oben) --------

elseif (pressAttribute == “Pressed” and pressKey == 2) then
fibaro:call(62, “turnOff”)
– ersetzen durch Befehl …
elseif (pressAttribute == “HeldDown” and pressKey == 2) then
Debug(“green”,“Taste 2 gehalten”)
fibaro:setGlobal(“Dimmer”, “2”)
fibaro:startScene(65)
– ersetzen durch Befehl …
elseif (pressAttribute == “Released” and pressKey == 2) then
Debug(“green”,“Taste 2 losgelassen”)
fibaro:setGlobal(“Dimmer”, “0”)
fibaro:killScenes(216)
– ersetzen durch Befehl …


------- ### Taste 3 ### (links unten) -------

elseif (pressAttribute == “Pressed” and pressKey == 3) then
Debug(“green”,“Taste 3 gedrückt”)
– ersetzen durch Befehl …
elseif (pressAttribute == “HeldDown” and pressKey == 3) then
Debug(“green”,“Taste 3 gehalten”)
– ersetzen durch Befehl …
elseif (pressAttribute == “Released” and pressKey == 3) then
Debug(“green”,“Taste 3 losgelassen”)
– ersetzen durch Befehl …


------- ### Taste 4 ###(rechts unten) -------

elseif (pressAttribute == “Pressed” and pressKey == 4) then
Debug(“green”,“Taste 4 gedrückt”)
– ersetzen durch Befehl …
elseif (pressAttribute == “HeldDown” and pressKey == 4) then
Debug(“green”,“Taste 4 gehalten”)
– ersetzen durch Befehl …
elseif (pressAttribute == “Released” and pressKey == 4) then
Debug(“green”,“Taste 4 losgelassen”)
– ersetzen durch Befehl …
end

Die anderen Tasten will ich dann mit verschiedenen Farb- und Helligkeitseinstellungen oder mit Farbwechselszenen belegen.
Ich bedanke mich bei allen, die ihre Scripte zur Vefügung gestellt haben.
Viele Grüße Salve.