Page 25 sur 63

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 16 mars 2017, 10:37
par Benj29
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) ?

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 16 mars 2017, 10:39
par lamouette
Je l'utilise via un LUA pour piloter un groupe en 433 et Yeelight

cf ici : https://easydomoticz.com/forum/viewtopi ... 163#p33163

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 16 mars 2017, 11:45
par Benj29
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
La fonction Scene ne permet pas de le faire selon toi ?

Merci pour ton rappel de topic, j'avais posté juste après, je ne me souvenais plus !

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 16 mars 2017, 22:19
par Benj29
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.

Stupeur :o LUA ne permet pas de faire cela nativement :x

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.
Salut,

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.

Image

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.

Image

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
end
Dommage que dans Scenes, on ne puisse pas avoir un bouton comme déclencheur ... :(

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 17 mars 2017, 09:05
par lamouette
où génères tu ton lua ?

Directement dans Domoticz ? Ou dans une fenetre ssh ?

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 17 mars 2017, 09:43
par lamouette
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 !

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 18 mars 2017, 07:48
par Benj29
lamouette a écrit :où génères tu ton lua ?

Directement dans Domoticz ? Ou dans une fenetre ssh ?
Bonjour à toi !

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]

Publié : 18 mars 2017, 08:07
par Benj29
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 !
Le script s'appelle :
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'
end
Mais ça marche toujours pas lol :)

Domoticz 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)
Mais du coup, si je veux mettre un timer pour une action de nouveau, je peux faire ça comment ?
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]

Publié : 19 mars 2017, 10:07
par chamy
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 ;)

Re: Smart Home Security de Xiaomi [ZigBee]

Publié : 19 mars 2017, 10:48
par deennoo
Les temperature remontent que si elles changent.