Ayant automatisé les volets de ma maison, j’ai aussitôt créé des « events » sous Homeseer pour les ouvrir et les fermer automatiquement. Cependant, les volets ayant
le défaut de faire un peu de bruit lors de l’ouverture, j’ai cherché pour décaler l’heure d’ouverture le samedi, dimanche et les jours fériés.
Gérer les samedis et dimanches, c’est possible sous Homeseer, mais pas les jours fériés. J’ai donc fait quelques recherches sur les forums, voici la solution que j’ai récupérée du forum Touteladomotique.
I. Installation
La 1re étape consiste à créer un device qui va recueillir les informations sur le calcul du jour en cours.
1 – On commence par cliquer sur le bouton « Add Device » dans le menu « Status». Mettez « Jour férié » dans Device Name et « Status Only » dans Device Type.
Donnez lui un lettercode/Unitcode (u33 dans mon exemple).
Cliquez sur le bouton « Save » pour enregistrer votre device.
2 – Puis, dans le menu « Events », cliquez sur le bouton « Add Event ». Dans la partie Name mettez « Calcul jour ferie ». Décochez la case « Disable Automatic Event
Triggering » afin de pouvoir mettre l’événement en mode déclenchement automatique.
3 – Cliquez ensuite en haut sur l’onglet « Trigger ». Mettez « Absolute Time » dans Current Trigger Type puis 0 :01 dans Hour et Minute, afin que l’évènement se
déclenche tous les jours à 0h01.
4 – Dans l’étape suivante, sélectionner « Run Script » dans la liste de choix « Add action » et nommez « ferie.txt » dans la case « Existing or new script name ».
Cliquez ensuite sur le bouton « Open Script Window » et copiez/collez le script suivant :
sub main()
‘ 2= Férie, 3= Jour Normal
codelu= “VOTRECODELETTREUNITE“,
thisYear = Year(Date)
thisDay = Day(Date) & “/” & Month(Date)
jourdelasemaine = Weekday(Date)
if jourdelasemaine = 1 then
hs.SetDeviceStatus codelu ,2
HS.WriteLog “******”, “Nous sommes le ” & Date & “. ” & “Nous sommes un Dimanche.”
hs.SetDeviceString codelu,”<table border=””0″” width=””100%”” bgcolor=””#FFFF00″” cellspacing=””0″” cellpadding=””0″”><tr><td width=””100%””><font face=””Verdana”” color=””#800000″”><b>Dimanche</b></font></td></tr></table>”
exit sub
end if
jFixes = “1/1,1/5,8/5,14/7,15/8,1/11,11/11,25/12”
G = thisYear Mod 19
c = thisYear \ 100
H = (c – (c \ 4) – ((8 * c + 13) \ 25) + (19 * G) + 15) Mod 30
I = H – (H \ 28) * ((1 – (H \ 28) * (29 \ (H + 1)) * (21 – G) \ 11))
J = (thisYear + (thisYear \ 4) + I + 2 – c + (c \ 4)) Mod 7
L=I-J
mois = 3 + ((L + 40) \ 44)
jour = L + 28 – 31 * (mois \ 4)
jPaques = jour & “/” & mois & “/” & thisYear
jLundiPaques = DateSerial(Year(jPaques), Month(jPaques), Day(jPaques) + 1)
jAscension = DateSerial(Year(jPaques), Month(jPaques), Day(jPaques) + 39)
jPentecote = DateSerial(Year(jPaques), Month(jPaques), Day(jPaques) + 50)
jFeries = jFixes & “,” & Day(jPaques) & “/” & Month(jPaques) & “,” & Day(jLundiPaques) & “/” & Month(jLundiPaques) & “,” & Day(jAscension) & “/” & Month(jAscension) & “,” & Day(jPentecote) & “/” & Month(jPentecote)
tabFeries = Split(jFeries, “,”)
Text = “Ce n'est pas”
hs.SetDeviceStatus codelu,3
hs.setDeviceString codelu,”Jour normal”
For Each Jo In tabFeries
If Jo = thisDay Then
Text = “C'est”
hs.SetDeviceStatus codelu,2
hs.SetDeviceString codelu,”<table border=””0″” width=””100%”” bgcolor=””#FFFF00″” cellspacing=””0″” cellpadding=””0″”><tr><td width=””100%””><font face=””Verdana”” color=””#800000″”><b>Jour Ferie</b></font></td></tr></table>”
End If
Next
HS.WriteLog “******”, “Nous sommes le ” & Date & “. ” & Text & ” un jour férié.”
end sub
5 – Ne pas oublier de remplacer la ligne VOTRECODELETTREUNITE par votre propre code Lettre/unité (u33 dans mon exemple). Cliquez enfin sur le bouton « Save Script » puis « Update» et enfin « Save », l’évènement est prêt pour utilisation.
II. Test
Dans la liste des évènements, si vous cliquez sur le bouton « Run » devant le script « Calcul jour ferie », vous devez retrouver dans votre device le résultat du calcul.
En cliquant sur ce device et en allant dans l’onglet « Additionnal Information », vous trouverez les résultats suivants :
- Status = 3 = OFF : Jour normal
- Status = 2 = ON : Jour férie
- String : Nom du jour férié ou le texte « Jour normal »
III. Programmation des volets
Le calcul du jour férié aura lieu maintenant tous les jours à 0h01. Il ne reste plus qu’à appliquer une condition pour l’ouverture des volets. Pour cela, j’ai créé deux
évènements :
Le 1er ouvre les volets suivant l’heure de lever du soleil si on n’est pas un jour férié
Le 2éme ouvre les volets à heure fixe les jours fériés.
IV. Conclusion
Je trouve un peu compliqué la gestion des jours fériés sous Homeseer. Tout bon système d’information se doit de pouvoir gérer ce type d’évènement avec un calendrier fixe et mobile (dans une base de données). J’espère que la prochaine version de Homeseer sera capable d’évoluer et d’intégrer en natif cette problématique.