[Intégrer à la Stable 3.8153] Smart Home Security de Xiaomi [ZigBee]
Re: Smart Home Security de Xiaomi [ZigBee]
Bon bein cool !
Je me posais la question d'utiliser un bouton Xiaomi (simple clic, double clic, appui long) pour programmer des actions sur des actionneurs RFXCom.
Quels sont les valeurs des boutons à utiliser, ça se passe sur des scripts LUA, scenes ? J'avoue que je suis un peu novice ?
Pas de chance d'avoir des positions fictives (du genre le portail ou la porte du garage qui s'ouvre tout seul) ?
Je me posais la question d'utiliser un bouton Xiaomi (simple clic, double clic, appui long) pour programmer des actions sur des actionneurs RFXCom.
Quels sont les valeurs des boutons à utiliser, ça se passe sur des scripts LUA, scenes ? J'avoue que je suis un peu novice ?
Pas de chance d'avoir des positions fictives (du genre le portail ou la porte du garage qui s'ouvre tout seul) ?
Re: Smart Home Security de Xiaomi [ZigBee]
Je l'utilise via un LUA pour piloter un groupe en 433 et Yeelight
cf ici : https://easydomoticz.com/forum/viewtopi ... 163#p33163
cf ici : https://easydomoticz.com/forum/viewtopi ... 163#p33163
Re: Smart Home Security de Xiaomi [ZigBee]
La fonction Scene ne permet pas de le faire selon toi ?lamouette a écrit :Je l'utilise via un LUA pour piloter un groupe en 433 et Yeelight
cf ici : https://easydomoticz.com/forum/viewtopi ... 163#p33163
Merci pour ton rappel de topic, j'avais posté juste après, je ne me souvenais plus !
Re: Smart Home Security de Xiaomi [ZigBee]
Salut,lamouette a écrit :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.
StupeurLUA ne permet pas de faire cela nativement
![]()
Après quelques recherches sur le forum domoticz.com, voici ce qu'il en ressort :
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.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
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.
J'ai repris ton code... mais à mon avis, j'ai tout faux.
Déjà, moi, j'aimerai gérer idéalement l'appui long et l'appui court. Comment on gère la différence ? (le double clic est géré pour mettre l'alarme sur MiHome).
Ensuite, je n'ai pas un groupe de lumière, mais simplement un contacteur 433 Z1KPA que j'enclenche et qui est défini sur impulsion et comme cela dans Domoticz, en PushOnButton.

Du coup, j'ai modifié ton code... et j'ai nommé le code script_device_BoutonGarage.lua
Là, je ne trouve pas dans /domoticz/scripts/lua ce code déjà... alors qu'il est bien enregistré.
J'ai voulu commencer simple, en simplement générer une impulsion sur la porteGarage sur un clic.
Idéalement j'aimerai sur un appui long : faire Porte Garage et Portail Maison.

Ton code est pour un interrupteur, façon ON, qui passe OFF.
Moi j'aimerai simplement faire une impulsion, à mon avis, ça ne marchera pas...
Et ça marche pas ! Of course.
Du coup, déjà je retrouve pas mon script LUA.
Des idées ?
Code : Tout sélectionner
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,portail in pairs(sArray) do
if (otherdevices[portail] == '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
--PortesVoiture = {'Porte Garage (voiture)','Portail Maison (voiture)'}
PortesVoiture = {'Porte Garage (voiture)'}
if (devicechanged['Interrupteur Alarme Garage'] == 'Click') then
if (GroupState(PortesVoiture) == 'Off') then
commandArray['Group:Porte_Garage_all_portail']='On'
end
if (GroupState(PortesVoiture) == 'On') then
commandArray['Group:Porte_Garage_all_portail']='Off'
end
if (GroupState(PortesVoiture) == 'Mixed') then
commandArray['Group:Porte_Garage_all_portail']='Off'
end
endRe: Smart Home Security de Xiaomi [ZigBee]
où génères tu ton lua ?
Directement dans Domoticz ? Ou dans une fenetre ssh ?
Directement dans Domoticz ? Ou dans une fenetre ssh ?
Re: Smart Home Security de Xiaomi [ZigBee]
Les codes renvoyés par le bouton Xiaomi sont :
Off
Click
Long Click
Long Click Release
Double Click
Ta ligne "if (devicechanged['Interrupteur Alarme Garage'] == 'Click') then" est du coup à modifier.
Tu peux virer toute la première partie du code, vu que tu n'utilises pas de groupe !
Off
Click
Long Click
Long Click Release
Double Click
Ta ligne "if (devicechanged['Interrupteur Alarme Garage'] == 'Click') then" est du coup à modifier.
Tu peux virer toute la première partie du code, vu que tu n'utilises pas de groupe !
Re: Smart Home Security de Xiaomi [ZigBee]
Bonjour à toi !lamouette a écrit :où génères tu ton lua ?
Directement dans Domoticz ? Ou dans une fenetre ssh ?
Directement dans Domoticz oui.
Mais du coup, j'ai voulu voir si le script était créé dans scripts/lua par un ssh yep !
Pour l'instant, je fais tous mes tests sur une RPI3 mais à terme je passerai sur Syno.
Re: Smart Home Security de Xiaomi [ZigBee]
Le script s'appelle :lamouette a écrit :Les codes renvoyés par le bouton Xiaomi sont :
Off
Click
Long Click
Long Click Release
Double Click
Ta ligne "if (devicechanged['Interrupteur Alarme Garage'] == 'Click') then" est du coup à modifier.
Tu peux virer toute la première partie du code, vu que tu n'utilises pas de groupe !
script_device_BoutonGarage.lua
J'ai modifié comme ça.
Code : Tout sélectionner
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,portail in pairs(sArray) do
if (otherdevices[portail] == '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
--PortesVoiture = {'Porte Garage (voiture)','Portail Maison (voiture)'}
PortesVoiture = {'Porte Garage (voiture)'}
if (devicechanged['Interrupteur Alarme Entrée'] == 'Click') then
PortesVoiture = 'On'
endDomoticz détecte l'appui mais rien ne se lance ...
J'ai cette erreur :
Code : Tout sélectionner
2017-03-18 08:06:00.242 Error: EventSystem: in script_device_BoutonGarage.lua: [string "--..."]:60: attempt to index global 'devicechanged' (a nil value)Du genre
PorteVoiture = 'On'
PorteGarage= 'On'
Wait 1 min ?
Porte Garage='On'
(le portail voiture se ferme tout seul sur capteur de franchissement).
Merci pour ton aide !
Re: Smart Home Security de Xiaomi [ZigBee]
Salut les passionnés de produits Xiaomi ! Via ce post vous m'avez convaincu à acheter ce matériel !
Chose faites et première partie reçu hier !
Après presque 24h de fonctionnement avec Domoticz celui ci le ravi ! Une seule petite ombre au tableau et sur laquelle j'aimerais avoir vos lumières, c'est le délai de remonter des températures ! J'ai l'impression que celles ci remonte qu'une fois toute les 30 ou 45 minutes approximativement...
Pouvez vous me dire ce qu'il en est chez vous ?
Merci à tous
Chose faites et première partie reçu hier !
Après presque 24h de fonctionnement avec Domoticz celui ci le ravi ! Une seule petite ombre au tableau et sur laquelle j'aimerais avoir vos lumières, c'est le délai de remonter des températures ! J'ai l'impression que celles ci remonte qu'une fois toute les 30 ou 45 minutes approximativement...
Pouvez vous me dire ce qu'il en est chez vous ?
Merci à tous
Re: Smart Home Security de Xiaomi [ZigBee]
Les temperature remontent que si elles changent.
De quoi se faire Plaisir et essayer d'aider...
http://www.domo-attitude.fr
http://www.domo-attitude.fr