Afin d'améliorer le WAF, je voulais que le bouton rond Xiaomi puisse allumer et éteindre des lampes (en 433) avec un simple click sur celui-ci.
Rien de bien compliqué, mais dans mon cas, l'objet était de piloter un "groupe" de lampes définit dans domoticz.
Stupeur

LUA ne permet pas de faire cela nativement
Après quelques recherches sur le forum domoticz.com, voici ce qu'il en ressort :
Code : Tout sélectionner
-- Allumage et extinction des lampes du salon avec 1 click sur bouton rond Xiaomi
-- script_device_xiaomi1click
commandArray = {}
function GroupState(sArray)
-- https://www.domoticz.com/forum/viewtopic.php?p=102783#p102783
-- v1.0. 2016-01-18
-- Checks the state of a group of swithces.
-- USAGE : GroupState({'Switch1','Switch2','Switch3','Switch4','Switch5',more switches})
-- RETURNS : 'On' if all switches are on.
-- : 'Off' if all switches are off.
-- : 'Mixed" if one or more, but not all switches are on.
--
local iState = 0
local iCount = 0
local sState = ''
for i,light in pairs(sArray) do
if (otherdevices[light] == 'On') then
iState = iState + 1
end
iCount = iCount + 1
end
if(iState == 0) then sState = "Off" end
if(iState > 0) then sState = 'Mixed' end
if(iState == iCount) then sState = 'On' end
-- print("iCount : " .. iCount)
-- print("iState : " .. iState)
-- print("sState : " .. sState)
return sState
end
salon = {'TV','Canapé','Buffet','Fauteuil'}
if (devicechanged['Xiaomi Wireless Switch'] == 'Click') then
if (GroupState(salon) == 'Off') then
commandArray['Group:salon_all_light']='On'
end
if (GroupState(salon) == 'On') then
commandArray['Group:salon_all_light']='Off'
end
if (GroupState(salon) == 'Mixed') then
commandArray['Group:salon_all_light']='Off'
end
end
On crée dans un premier temps une fonction, qui ensuite prend en paramètre les switchs (ici des lampes) définis dans votre groupe.
Ici :
- si lampes toutes éteintes (ie group = Off), un click sur le bouton les allume toutes;
- si lampes toutes allumées (ie group = On), un click sur le bouton les éteint toutes;
- si certaines lampes sont allumées (ie group = Mixed), un click sur le bouton les éteint toutes.
Attention, si vous utilisez l’interpréteur de commandes LUA natif à Domoticz, veillez à bien le positionner sur LUA / Device.