Je n'ai trouvé nulle part comment gérer cette télécommande 4 boutons NODON vendue sous la marque EVOLOGY chez Leroymerlin.
Je vous propose donc mon script
-- Télécommande EVOLOGY --
----------------
-- 1(+)-----2 --
----------------
----------------
-- 3--------4 --
----------------
--------------------------------------------------------------------------------
-- Bouton 1: Ouverture de la porte
-- Bouton 2:
-- Porte ouverte: Fermeture de la porte
-- Porte fermée: Ouverture 3s
-- Bouton 3: Ouverture de la porte
-- Bouton 4: Fermeture de la porte
-- Porte ouverte: Fermeture de la porte
-- Porte fermée: Ouverture 3s
-- Double click: Arrêt
--------------------------------------------------------------------------------
-- L'état des boutons est lu via RFXCOM - RFXtrx433 USB 433.92MHz
-- L'appui sur un bouton génère une séquence d'état de tous les boutons.
-- Le bouton qui a été appuyé est le premier de la séquence.
-- L'option .forSec() ne fonctionne pas sur la commande de la porte (porteGarage).
-- Cette option est appliquée à un interrupteur (minuterie) qui commande la porte.
-- La porte peut être commandée par 2 autres télécommandes non gérées par Domoticz.
-- Le contact (contactGarage) de la porte gère l'état de la porte.
--------------------------------------------------------------------------------
Code : Tout sélectionner
local Bouton_1 = 227 --Identifiant bouton 1
local Bouton_2 = 228 --Identifiant bouton 2
local Bouton_3 = 232 --Identifiant bouton 3
local Bouton_4 = 233 --Identifiant bouton 4
local porteGarage = 203 --Identifiant de la commande de la porte
local minuterie = 250 --Identifiant de la commande servant pour la minuterie
local contactGarage = 231 --Identifiant du contact de la porte
return {
active = true,
logging = {
-- level = domoticz.LOG_DEBUG, -- Seulement un niveau peut être actif; commenter les autres
-- level = domoticz.LOG_INFO,
-- level = domoticz.LOG_ERROR,
-- level = domoticz.LOG_DEBUG,
-- level = domoticz.LOG_MODULE_EXEC_INFO,
marker = 'Télécommande Garage'
},
on = {
devices = {Bouton_1,Bouton_2,Bouton_3,Bouton_4,contactGarage, minuterie}
},
data = {
boutonPrec = { initial = 0 },
miseAJour = { initial = 0 }
},
execute = function(dz, element)
local porte = dz.devices(porteGarage)
if element.isDevice then
if element.id == contactGarage then
-- Affiche l'état de la porte lorsqu'on se sert des autres télécommandes
if element.state == 'Closed' then
--Porte fermée
porte.close().silent()
dz.data.initialize('boutonPrec')
else
--Porte ouverte
porte.open().silent()
end
elseif element.id == minuterie then
if element.state == 'On' then
porte.open()
else
porte.stop()
end
else
if os.time() - dz.data.miseAJour > 2 then
-- Seul le premier bouton est pris en compte
dz.data.miseAJour = os.time()
-- Détection du double click
local doubleClick = false
if element.id == dz.data.boutonPrec then
doubleClick = true
dz.data.initialize('boutonPrec')
else
dz.data.boutonPrec = element.id
end
-- Gestion des boutons
porte.cancelQueuedCommands()
if element.id == Bouton_1 or element.id == Bouton_3 then
if doubleClick == true then
--Arrêt de la porte
porte.stop().checkFirst()
else
--Ouverture de la porte
porte.open()
end
elseif element.id == Bouton_2 or element.id == Bouton_4 then
if dz.devices(contactGarage).state == "Closed" then
-- Ouverture porte pendant 3s
dz.devices(minuterie).switchOn().forSec(3)
dz.data.initialize('boutonPrec')
elseif doubleClick == true then
-- Arrêt de la porte
porte.stop().checkFirst()
else
porte.close().checkFirst()
end
end
end
end
end
end
}