Nous avons des vies souvent organisées de la même façon : la semaine on travaille, le week-end on est à la maison et certains week-end ou pendant les vacances on s’absente. Notre maison peut/doit s’adapter à ces journées types.
Je vais détailler dans cet article 3 journées types : Semaine, Week-end et Absent.
Chaque journée va avoir son propre calendrier de chauffage central et l’heure de réveil, …
Je souhaitais aussi pouvoir reprendre la main en cas de changement de planning (je travaille le week-end, je reste à la maison en semaine….). Le tout en utilisant les moins possibles les scripts.
Nous allons créer un module virtuel pour chaque journée type, une pour le radio réveil et une pour le mode chauffage Confort / Eco
Préalablement, si vous ne l’avez pas déjà fait, il faut déclarer un matériel de type périphérique virtuel. Se rendre dans le menu configuration, puis matériel
Puis ajouter un matériel de type Dummy, je l’ai appelé « Périphérique Dummy »
Pour créer un modules virtuels, dans Domoticz, il faut aller dans et
Commençons par la journée type « Semaine » que j’ai appelé Mode-Semaine. Bien faire attention à sélectionner le Hardware « Périphérique Dummy » précédemment créé
Une fois créé, vous pourrez ensuite si vous le souhaiter changer l’icone (via le bouton « Editer ») et mettre en notification en place lors des changements d’état (via le bouton « notification »). Perso, j’en ai mis une sur l’état « On ».
Il faut maintenant créer les modules pour le « Mode-Week-End », le « Mode-Absent » et « Confort-Eco », comme précédent.
Une fois fait, vous devriez vous retrouver avec ceci.
Pour le périphérique Confort-Eco, à vous de voir l’utilisation en fonction du type de chauffage
Aller dans le menu « Configuration », « Plus d’option », »Variables utilisateurs ».
Les variables utilisateurs vont servir à gérer l’heure de réveil, calendrier de chauffage central (2 calendriers : une pour le matin et une autre pour le soir).
Les noms des variables. sont suffixés avec « d-info » pour éviter qu’elles ne se mélangent avec ma propre programmation qui est un peu plus complexe.
Nom | Type | Valeur actuelle | Commentaire |
Chauff-Central-Temp-Deb-Cal1-d-info | Heure | 7:00 | Heure de Début du calendrier 1 du chauffage central |
Chauff-Central-Temp-Fin-Cal1-d-info | Heure | 8:30 | Heure de fin du calendrier 1 du chauffage central |
Chauff-Central-Temp-Deb-Cal2-d-info | Heure | 18:00 | Heure de Début du calendrier 2 du chauffage central |
Chauff-Central-Temp-Fin-Cal2-d-info | Heure | 23:00 | Heure de fin du calendrier 2 du chauffage central |
Heure-Reveil-d-info | Heure | 0:00 | Heure du réveil : 00:00 = Pas de réveil |
Ca devrait donner ceci :
Voici une première partie du cœur de la gestion de la maison. Pour cela aller dans Configuration / Plus d’option / Evènements.
Création un Event « Calcul-Journee-Type » : Tous les jours à 00h05, il calcul le type de jour en fonction du jour de la semaine, on sera en mode « Semaine » ou « Week-end », si le mode Congés n’est pas activé. Le mode congés s’active manuellement.
Création un Event « Semaine » sur passage à On du module virtuel « Mode-Semaine » (aussi bien de façon automatique que manuel)
Initialisation des variables en fonction du jour type. On mets les autres « Mode » à Off pour éviter une cohabitation des différents jours
Réveil à 7h et chauffage en mode confort de 6h30 à 8h30 et de 18h à 23h
Création un Event « Week-End » sur passage à On du module virtuel « Mode-Week-end » (aussi bien de façon automatique que manuel)
Pas de réveil et chauffage en mode confort de 8h à 23h
Création un Event « Absent » sur passage à On du module virtuel « Mode-Absent »
Pas de réveil et Pas de chauffage (d’où le début des plages > à la fin des plages)
L’autre partie, n’est malheureusement pas possible de le faire sous-forme d’événement car Domoticz ne permet pas (pour l’instant) de déclencher un scénario sur une variable utilisateur.
Voici les 2 scripts que j’utilise : un pour le calendrier de chauffage
Le script se nomme script_time_chauffage.lua (très important le _time_ dans le nom du fichier car cela signifie que Domoticz va lancer ce script toutes les minutes)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | commandArray = {} t1 = os.date("%H:%M") if ((t1 >= uservariables["Chauff-Central-Temp-Deb-Cal1-d-info"] and uservariables["Chauff-Central-Temp-Fin-Cal1-d-info"] >= t1) or (t1 >= uservariables["Chauff-Central-Temp-Deb-Cal2-d-info"] and uservariables["Chauff-Central-Temp-Fin-Cal2-d-info"] >= t1)) then print ("Confort") if (otherdevices['Confort-Eco']=='Off') then commandArray['Confort-Eco'] = 'On' end else print ("Eco"); if (otherdevices['Confort-Eco']=='On') then commandArray['Confort-Eco'] = 'Off' end end return commandArray |
L’autre pour l’heure de réveil qui m’envoie pour l’instant uniquement un mail, mais demain pourra commander une enceinte connectée ou un autre raspberry avec une petite enceinte,…
Le script se nomme script_time_reveil.lua
1 2 3 4 5 6 7 8 9 10 11 12 | commandArray = {} t1 = os.date("%H:%M") if (t1==uservariables["Reveil"]) then if (uservariables["Reveil"]=="00:00") then print ("PAS DE REVEIL CAR PROGRAMME A 00:00") else print ("=====> REVEIL <======") commandArray['SendEmail']='Reveil#il est l heure de se reveiller#xxxx@gmail.com' end end return commandArray |
Comme vous le voyez, la mise en place d’un système pour gérer sa maison en fonction de journée type est assez simple. Il permet un meilleur confort et une économie d’énergie.
Cet article est une base et on peux imaginer plusieurs améliorations/ compléments :
– Avoir des calendriers de chauffage supplémentaires (radiateur dans la salle de bain…)
– Connaître la veille la journée type du lendemain et pouvoir la modifier le cas échéants
– La possibilité de reprendre manuellement la main sur le chauffage (prolonger le mode confort,…)
– Enclencher la radio à l’heure du réveil sur une enceinte connectée (de type Sonos)
18 Comments
fredo
Merci Richard pour cet article.
ça me donne envie d’installer Domoticz pour faire quelques tests.
richard
Merci Fredo, si tu as besoin de conseil n’ hésites pas 🙂
Franck
Bonjour,
Merci pour l’article.
Je suis debutant en Domotique (je me suis lance il y a peu) Mais il y a une chose qui m’etonne.
Toutes les solutions domotique Open Source que je regarde (AgoControl, Domoticz, OpenHab, etc …)
Aucune ne gere un autre calendrier que celui de Gmail (Proprietaire)
J’ai meme posé la question par email ou sur forum d’une des solutions open Source pourquoi ne pas gerer un connecteur
sur un calendrier de type Caldav???
La reponse m’a tres franchement etonnée : « l’API google est tres bien documenté et simple »
Donc si je comprend, le protocole Caldav est compliqué et mal documenté.
Un comble …….
Je vais tenter ma chance avec avec Jeedom pour voir.
Pour le moment, je suis en phase d’installation avec Domoticz.
Pour le moment, c’est la solution qui correspond le mieux a mon besoin.
Mais je dois reconnaitre que si une autre solution open source gere :
– MQTT
– Caldav
– Peripheriques/ Switch virtuel
Je veux bien essayer
Cordialement,
Franck.
Sébastien Joly
@Franck,
Très bonne remarque au sujet du caldav. Cependant, il y plus de facilité pour l’utilisateur moyen de configurer son calendrier Gmail avec son téléphone qu’avec caldav qui nécessite une mise en oeuvre au travers d’un accès web sur un serveur externe ou interne à ton réseau local. Du coup, comme tous le monde n’a pas un serveur disponible pour mettre cela en oeuvre, on peut considérer que Gmail reste une des meilleures alternatives.
Pour le MQTT, je serai fan aussi, mais ce n’est qu’une tendance technologique IOT parmi d’autres, et encore une fois cela s’adresse à un public spécialiste tout de même.
Eric Cazajous
Bonjour Richard,
Super article et j’avoue ne pas avoir pensé à paramétrer Domoticz dans ce sens. Pour ceux qui hésitent Domoticz est un excellent soft de gestion domotique. Les scripts LUA et le json décuplent les possibilités.
Dernier conseil, utilisez de préférence la version stable en ce moment les 2 dernières versions Béta sont bof chez moi 😉
Pour l’instant le soft gère l’ouverture des BSO en cas de coup de vent > 60 km/h ou lorsque la fenêtre n’est plus exposée au soleil (calcul de l’azimuth et de l’élévation solaire au moyen d’un script python), la fermeture des occultants le soir à partir des données récoltées d’un TSL2561 (capteur de luminosité). La présence ou l’absence des personnes. Bref j’en suis encore au début mais les possibilités sont énormes !
A +
chris
Vraiment très déçu de cette solution. Après une simple demande sur leur forum pour savoir si l’ancien produit RFXCom LAN était supporté, j’ai été banni de leur forum ! » You have been permanently banned from this board. Reason given for ban: Inapropriate first post » C’est là que j’ai compris que les auteurs de se produit ne sont rien d’autre que RFXCom et qu’ils ne veulent pas supporter leur ancienne version de RFXCom LAN, qui à l’époque m’avait coûté près de 500 € avec quelques modules complémentaires. Quelle mauvaise foi, il est à craindre que dès qu’une nouvelle version de RFXtrx sortira, l’ancienne ne sera plus supportée ! Ce n’est pas tout de fournir un produit intéressant, il faut assurer le SAV et le marketing derrière, ce n’est pas le cas avec RFXCom et jamais je n’achèterai plus de produit chez eux !
Liviu
J’ai un error:
Error: /home/pi/domoticz/scripts/lua/script_time_chauffage.lua:4: ‘)’ expected near ‘&’
Eric Cazajous
Il doit y avoir un problème de parenthèses, vérifie qu’elles sont bien par paires.
Liviu A
J’ai Lua 5.2.1 Copyright (C) 1994-2012 Lua.org, PUC-Rio
Oui je sais mais il ne marche pas.
Fredy
Bonjour,
Je n’ai pas dans mon domoticz le block And vertical.
Merci de vos réponse a cette interogation.
Fredy
Re. merci j’ai trouvé la solution.
Aris
Super Fredy! mais merci de partager ta solution…
Joanthan
je découvre les joie de faire les événement , j’avoue que que les possibilité sont grande mais entre les capteur virtuel ect je mélange un poil les pinceaux ^^
François
J’essaye de créer un evenement , mais impossible de relier les « blocs du puzzle »…. J’ai du passer à côté de quelque chose car ça l’air tellement simple !!! Merci de votre aide
Fredy017
Bonjour François,
Essaye ça :
Dans ‘control’ prend if -do
Première puzzle du haut mais une ‘logic’ = ou and (dedans un ‘device’ 1 et l’autre un ‘logic’ On) qui est ta declaration.
Deuxième puzzle du bas toujours ‘logic’ un Set = (dedans un ‘device’ 2 et l’autre un ‘logic’ On) qui est ton résultat.
Qui donne :
Si le device 1 = on alors device 2 = on
Pour Mettre les blocs (And ou =) a la veticale pour inclure d’autre blocs (And ou =) clic droit de la sourie et choisir ‘Inline Inputs’ pour faire cette équations :
((device1=on and device2=Off) or device3) soit le premier argument est juste ou la deuxième pour avoir le résultat.
J’espère que j’étais clair.
Bonne journée
jule1986
Bonjour,
Merci pour ce partage mais j’ai un soucis mes variables ne se mettent pas a jour en fonction du mode….
J’ai ce message Error: EventSystem: Error updating variable debut_chauf1: Not a valid time notation (HH:MM)
J’ai essayé tout les block possible pour saisir l’heure voulu et ça ne marche pas.
Merci d’avance pour votre aide.
yl
Bonjour,
Assez pratique comme solution vs des plannings sur un interrupteur de chauffage, mais par contre comment passer l’ordre au matériel?
J’ai du chauffage electrique avec pilotage 6 ordres via des modules qubino vus comme dimmer (j’aimerais bien faire un inter virtuel qui donne direct des ordres clairs type « eco », « confort »… mais actuellement j’y arrive pas non plus alors qu’avec un inter dimmer ca marche, passons!) et un planning à rentrer sans possibilité de copie par module c’est un eu pénible. Centraliser cela dans domoticz pour 2 ou 3 zones qui commandent les « dimmer » des radiateurs de ces zones, ce serait mieux!
J’ai vu des exemples pour passer des actions via une requête http (sur localhost 1247.0.0.1 normalement dans ce cas), ce qui est déjà assez étrange pour passer des commandes qui vont finir en serial-usb sur une Z-Stick avant de passer en radio/z-wave, mais la doc de domoticz est assez succinte et je ne m’en sors pas…
Puzzle 3D
Bonjour,
Je m’inspire de ce que vous avez fait ici en ce moment pour préparer le planning de la filtration de la piscine.
C’est plus simple que ce qu’il y a en place, mais c’est dans l’esprit.
Je veux pouvoir en fonction d’un mode de type « maison occupée » et un mode absent appliquer la filtration en fonction d’un planning dédié à chaque mode. Car ayant un abonnement tempo, l’électricité est moins chère la nuit, donc autant lancer la filtration la nuit en cas d’absence.
Je bloque au niveau du script lua car
heure debut occupée est 09:00
heure fin occupée est 22:00
mais en cas d’absence c’est de 22h00 à 6h00
Que puis je mettre ? En effet si je change and par or, la condition est vérifiée à chaque fois.
Merci