Ca fait quelques temps que je réfléchis a comment gérer mon chauffage les jours fériés ou de vacances où je suis chez moi, j'ai fini par arriver a quelque chose de satisfaisant. Un peu compliqué mais qui marche plutôt pas mal.
Ca se passe en 3 étapes, la dernière elle n'a pas changé par rapport a mon ancien mode de chauffage qui s'appuyait sur un interrupteur On/Off avec planning + valeur de t gérée par un thermostat. Chauffage de 5h (HC) a 8h et de 17h a 23h les jours où on bosse, 8h -> 23h sinon. Jusque là mon interrupteur était géré par un inter avec planning jours semaine/we + hystérésis qui allume/éteint en fonction du planning et la t de consigne. Mon souci était comment avoir le planning "je suis là", en fait celui du we, aussi les jours fériés ou déclarés "vacances".
Deux étapes. La première a été de créer des interrupteurs dummy "Jour ferie" et "Vacances" dans domoticz. Je met a jour ces interrupteurs toutes les nuits par un script appelé par crontab en fonction de mon calendrier google (rdv marqués Vacances) et du calendrier google des jours féries. Cette manip est faite par un script qui s'appuie sur gcalcli (google calendar) et d'une version revisitée de pymoticz (https://github.com/rimram31/pymoticz2 permettant de changer les éléments par leur nom et pas uniquement par id ...).
Ensuite je créé 3 interrupteurs (dummy). Un premier n'est autre que mon ancien interrupteur/planning qui devient un interrupteur "semaine travail", un second est un interrupteur+planning "vacances" (il contient en fait les même plages horaires que mes we mais tous les jours). Enfin un dernier que j'appelle "Mode confort" qui va en fait refléter l'état de l'inter adapté a la journée actuelle.
La mise a jour est faite par un script lua "device" qui lorsque l'inter travail ou vacances change contrôle quel jour on est et mer a jour le "Mode confort". Ca fait quelque chose comme ça:
Code : Tout sélectionner
if (devicechanged['Planning confort Jour Travail'] or devicechanged['Planning confort Jour Vacances']) then
local workday = (otherdevices['Jour ferie']=='Off' and otherdevices['Vacances']=='Off')
if (devicechanged['Planning confort Jour Travail'] and workday) then
commandArray['Mode confort Jour']=devicechanged['Planning confort Jour Travail']
elseif (devicechanged['Planning confort Jour Vacances'] and (not workday)) then
commandArray['Mode confort Jour']=devicechanged['Planning confort Jour Vacances']
end
endJ'ai en réalité 3 modes jour, nuit et bains, j'ai répété la manip 3 fois.