Page 1 sur 1

Télécommande enOcean 4 boutons EVOLOGY

Publié : 19 avr. 2020, 11:43
par didier3164
Bonjour,
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 :D

-- 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
}