Gérer les jours fériés sous Homeseer

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.


7 Commentaires

      Laisser un commentaire

      Ne ratez plus aucune news !

      Inscrivez vous à notre newsletter, et recevez chaque mois toute l'actualité du blog pour ne plus rien louper: actualité, guides, tutoriaux, concours !

      Merci pour votre inscription !