Paramétrer un simulateur d’aube pour Domoticz

Standard

J’ai toujours voulu me réveiller le matin à la lueur du jour. Les simulateurs d’aube du marché sont chers et leur design ne m’a jamais plu.

C’est pour cela que j’ai tenté de créer un simulateur d’aube avec ma box Domoticz et un module de prise avec variateur. En plus de notre module de prise, il nous faudra une lampe classique avec une ampoule adaptée diffusant une lumière d’au moins 300 lux (soit 300 lumens).

Paramétrage du module variateur

Tout d’abord, il faut paramétrer le module de prise variateur en utilisant soit la télécommande fournie avec les kits DI-O, soit en émettant un signal depuis l’interface de domoticz. Voyons chacune de ces possibilités pas-à-pas.

Télécommande D-IO

Si vous avez une télécommande DI-O, allez dans la section Interrupteurs de Domoticz et cliquez sur le bouton Détection auto. En pressant le bouton On sur l’un des canaux de votre télécommande DI-O, domoticz identifiera le signal émis et l’associera à votre prise.

Configuration auto d'interrupteur dans domoticzJ’ai intitulé mon interrupteur Prise variateur chambre parentale.

Branchez votre module de prise avec variateur dans une prise murale pour le configurer. Appuyer une fois sur le bouton d’apprentissage, la led clignote lentement. En pressant le même bouton On sur votre télécommande, le code est enregistré lorsque la led cesse de clignoter. Si une lampe est branchée au module, elle doit s’allumer en pressant le bouton On, et s’étendre en pressant le bouton Off.

Si vous ne disposez pas de télécommande, dans la même section Interrupteurs, cliquez sur le bouton Ajout manuel. Puis configurer un nouvel interrupteur Dimmer avec les paramètres suivants :

Configuration manuelle interrupteur Domoticz

Bien entendu, il est recommandé de changer les paramètres House code et Unit code pour ne pas utiliser une combinaison de codes existante dans votre maison ou aux alentours.

Avant de cliquer sur le bouton Test, il est important de bancher votre module de prise avec variateur. Appuyer une fois sur le bouton d’apprentissage du module de prise, la led du module clignote lentement. Cliquer sur le bouton Test de Domoticz afin d’émettre un signal. Le code est enregistré lorsque la led cesse de clignoter. Valider le bouton Add Device de Domoticz pour ajouter votre nouvel équipement.

L’interrupteur ajouté, nous allons maintenant écrire un script permettant d’augmenter progressivement l’intensité de la lampe.

Simulateur d’aube

Domoticz est une solution très flexible et permet d’automatiser beaucoup de choses grâce aux scripts LUA. Les scripts doivent être créé dans le dossier scripts/lua de votre installation domoticz.

J’ai donc créé un script intitulé script_time_Simulateur aube.lua. Un script qui porte la mention time s’exécute toutes les minutes. Alors qu’un script qui porte la mention device s’exécutera uniquement lorsqu’un appareil a été mis à jour.

J’ai débuté mon script en vérifiant si mon module de prise était éteint ou allumé. Car s’il est éteint (Off) alors il faut l’initialisé avec la valeur la plus petite du module (dans mon cas 10% de puissance). Et s’il est allumé (On ou différent de Off dans notre cas) alors nous allons augmenter la puissance progressivement. La progression dépendra du temps du levé de soleil que nous allons simuler. J’ai arbitrairement démarré avec 20min.

commandArray = {}
if( otherdevices['Prise variateur chambre parentale'] == 'Off' ) then
    commandArray['Prise variateur chambre parentale']='Set Level 10'
end

if( otherdevices['Prise variateur chambre parentale'] ~= 'Off' ) then
    -- Durée de la simulation
    duree_simulateur = 20
    -- Augmenter l'intensité 
    -- @TODO
end

return commandArray

Pour le moment notre script ne fait pas grand chose. Il initie la luminosité à 10%. Mais que ce passe t’il s’il est éteint alors il s’allumera et ainsi toute les minutes. Il nous faut donc un drapeau (un flag en programmation) déterminant si le simulateur d’aube est activé ou non. Un flag peut être simulé par un interrupteur virtuel avec Domoticz.

Je me suis donc ajouté un nouvel interrupteur virtuel que j’ai intitulé « Simulateur aube ».

configuration-manuelle-interrupteur-virtuel-domoticz-

Si cet interrupteur est On alors cela veux dire que l’on peut activer le variateur. Si il est Off alors on ne fait rien.

commandArray = {}
if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] == 'Off' ) then
    commandArray['Prise variateur chambre parentale']='Set Level 10'
end

if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] ~= 'Off' ) then
    -- Durée de la simulation
    duree_simulateur = 20

    -- Augmenter l'intensité 
    -- @TODO
end

return commandArray

Pour augmenter notre intensité, il nous faut connaitre deux paramètres.

  • Le premier la durée, nous l’avons c’est la variable duree_simulateur.
  • Le second c’est la temps entre l’heure de début de la simulation et l’heure de fin. Il nous faut donc conserver dans une variable persistante l’heure de début de la simulation.

Domoticz permet de conserver ses variables intitulées Variables utilisateur.

Nous allons donc configurer cette variable depuis l’interface Configuration > Plus d’options > Variables utilisateur :

variable-utilisateur-start_time

Et voici l’adaptation apportée au script pour augmenter la luminosité. A l’initialisation la variable start_date est initialisé avec l’heure d’exécution du script t1.

Lors de la phase d’augmentation de l’intensité, la différence entre l’heure d’exécution du script et l’heure de démarrage start_date correspond au nombre de secondes écoulées (diff) et l’on en déduira le nombre de minutes (diff/60).

L’intensité (dim) sera calculée en arrondissant 90% de l’intensité à augmenter au prorata du temps de la simulation, additionné au 10% de l’initialisation.

commandArray = {}
t1 = tostring(os.time())

if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] == 'Off' ) then
    commandArray['Prise variateur chambre parentale']='Set Level 10'
    commandArray['Variable:start_time'] = t1
end

if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] ~= 'Off' ) then

    -- Durée de la simulation
    duree_simulateur = 20

    t2 = uservariables['start_time']
    diff = (os.difftime (t1, t2))
    dim = math.floor((90/duree_simulateur) * (diff/60) ) + 10
    duree_simulateur = duree_simulateur * 60

    if(diff > duree_simulateur) then
        commandArray['Simulateur aube'] = 'Off'
    else
        commandArray['Prise variateur chambre parentale']='Set Level ' .. dim
    end
end

return commandArray

Le script ainsi programmé permet d’augmenter progressivement l’intensité durant une période de 20 min. Cette periode peut être configurable. Une variable utilisateur a été crée dans ce but.

variable-utilisateur-duree

commandArray = {}
t1 = tostring(os.time())

if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] == 'Off' ) then
    commandArray['Prise variateur chambre parentale']='Set Level 10'
    commandArray['Variable:start_time'] = t1
end

if(otherdevices['Simulateur aube'] == 'On' and otherdevices['Prise variateur chambre parentale'] ~= 'Off' ) then
    
    -- Durée de la simulation
    duree_simulateur = uservariables['duree_simulateur']
    t2 = uservariables['start_time']
    diff = (os.difftime (t1, t2))
    dim = math.floor((90/duree_simulateur) * (diff/60) ) + 10
    duree_simulateur = duree_simulateur * 60

    if(diff > duree_simulateur) then
       commandArray['Simulateur aube'] = 'Off'
    else
       commandArray['Prise variateur chambre parentale']='Set Level ' .. dim
    end
end

return commandArray

Domoticz est un outils magique qui permet de planifier le déclenchement d’un interrupteur, c’est la fonctionnalité Planing.

planning-simulateur-2 planning-simulateur

Mon simulateur d’aube se déclenchera chaque matin à partir de 7:00 pendant 20min, et le samedi à partir de 8:35.

Si vous avez besoin de plus de détails sur cette fonctionnalité n’hésitez pas à me contacter en commentant cet article.