Vera: gestion d’un calendrier

Cela fait quelques temps que je voulais réaliser un plugin pour la Vera qui permette de calculer les jours fériés, à l'image de ce que j'avais fait pour Homeseer.

Seulement, je ne maitrise pas encore bien le langage Lua utilisé par la Vera, faute de temps à y consacrer. Par contre, je prend un peu de temps chaque jour pour surveiller le forum officiel de Micasaverde, où une communauté très active nous fait partager ses petits scripts et plugins.

Aujourdhui, je vais donc vous parler non pas d'un script qui calcule les jours fériés, mais d'un script qui se connecte à un calendrier iCalendar (fichier ics) pour les récupérer dans un “device” créé pour l'occasion.

 

I. Installation

 

Pour commencer, vous aurez besoin des fichiers contenus dans cette archive:

 

 Télécharger les fichiers

 

Décompressez cette archive, vous allez obtenir 4 fichiers:

  • ical.lua
  • D_HolidayVirtualSwitch1.xml
  • D_HolidayVirtualSwitch1.json
  • I_HolidayVirtualSwitch1.xml

Le premier fichier, ical.lua, est le plus délicat à installer pour un néophyte, car il va falloir l'installer sur la Vera via un programme comme WinSCP.

Il faudra donc tout d'abord télécharger WinSCP et l'installer sur votre ordinateur si vous ne l'avez pas déjà. Ensuite, grâce à lui, il faudra se connecter à votre Vera, en indiquant l'adresse IP de celle ci, l'utilisateur root, puis enfin le mot de passe figurant sur l'étiquette de votre Vera (celui en face de “Wifi Pass”).

 

Capture d’écran 2011 05 06 à 07.13.31

 

Il faudra à partir de là copier le fichier ical.lua dans le répertoire /usr/lib/lua (ici dans la fenêtre de droite de WindSCP).

C'est tout pour ici. Simple, mais primordial pour le bon fonctionnement du plugin.

Maintenant, sur l'interface de la Vera, allez dans “Mios Developers”, puis l'onglet “Luup Files”. Indiquez les trois fichiers qu'il reste, cochez “Restart Luup after upload”, puis cliquez sur Go:

 

Capture d’écran 2011 05 06 à 07.15.07

 

Voilà, tous les fichiers nécessaires au fonctionnement sont installés.

 

II. Utilisation

 

Tout d'abord, on va créer un “device” lié au calendrier qu'on souhaite interroger. Pour cela, on retourne dans “Mios Developers”, cette fois dans l'onglet “Create Device”. On donne un nom au device, par exemple “Calendrier”, et on indique dans le champ “UpnpDevFilename” le fichier D_HolidayVirtualSwitch1.xml à utiliser:

 

Capture d’écran 2011 05 06 à 07.16.37

 

On clique ensuite sur le bouton “Create Device”, on ferme la fenêtre via la croix en haut à droite, et surtout on sauve en cliquant sur “Save” en rouge, en haut à droite de la fenêtre.

Vous devriez obtenir un nouveau device:

 

Capture d’écran 2011 05 06 à 07.17.33

 

Pour le moment, il n'affichera rien, puisque nous ne l'avons pas encore lié à un calendrier. Pour terminer la configuration de ce device, il faut cliquer sur la petite molette du device en question, et se rendre dans l'onglet “Advanced”:

 

Capture d’écran 2011 05 10 à 22.37.45

 

Dans la partie du bas, dans le champ “calendar”, il va falloir indiquer l'adresse du calendrier ics à utiliser. Le format ics pour les calendriers est un format standart, utilisé par exemple par Google Agenda. J'ai d'ailleurs lié mon device à un calendrier Google, puisque Google Agenda propose de nombreux agendas publics qu'on peut utiliser pour soit. Ici, j'ai donc indiqué l'adresse http://www.google.com/calendar/ical/french__fr%40holiday.calendar.google.com/public/basic.ics qui est un calendrier reprenant tous les jours fériés pour la France.

Le champ juste au dessus, “offset”, est également important: s'il est à 0, il vérifie s'il y a un évènement pour le jour en cours. S'il est à 1, il vérifiera pour le lendemain, à -1, pour la veille. Si on veux vérifier pour dans une semaine, il suffit donc d'indiquer 7.

Une fois configuré, on enregistre les modifications sur la Vera. Il faudra sans doute patienter un peu que les données s'actualisent, que la Vera vérifie le calendrier, mais au final, vous devriez obtenir quelque chose dans ce genre:

 

jourferie

 

Vous avez compris le principe: si le jour actuel est un jour férié, le module passe à “On” et indique le nom du jour dans son statut.

Si on entre dans le détail du device, il sera même possible de consulter tous les prochains jours fériés:

 

Capture d’écran 2011 05 10 à 22.45.27

 

Pas mal, non ?

Maintenant, ce plugin, comme son nom l'indique, a été développé pour afficher les vacances et les jours fériés. Mais rien ne l'empêche d'afficher autre chose, tant qu'il s'agit d'un calendrier au format ICS ! Pour ma part, j'ai donc créé un calendrier sur Google Agenda pour les anniversaires, un autre pour le ramassage des poubelles (avec une semaine sur deux, et le décalage des jours fériés, je suis toujours perdu :p), un autre pour mes congés.

 

agenda

 

J'ai créé ensuite autant de devices sur la Vera que de calendriers. Certains sont même déclinés en deux, un device pour le jour actuel, et un pour le lendemain (donc offset réglé à 0 et à 1):

 

Capture d’écran 2011 05 08 à 20.58.25

 

Quel est l'intérêt ? Pour l'état du jour en cours,  je peux utiliser ce device dans le scénario qui ouvre mes volets, afin qu'ils ne s'ouvrent pas aussi tot que d'habitude, puisque je suis en congé !

Pour l'état du jour d'après, cela peut être utile par exemple pour couper le son de mon système multiroom plus tot, si le lendemain je travaille (système qui diffuse des alertes vocales: si je travaille, je ne veux pas être dérangé car je me couche plus tot).

Pour le ramassage des poubelles, je veux par exemple recevoir une notification sur mon iPhone la veille du passage, vers 19h, afin de me faire penser à sortir les poubelles.

Idem pour les anniversaires: envoi d'un petit rappel sur mon iPhone. On pourrait même, pourquoi pas, configurer l'envoi automatique d'un SMS à la personne concernée pour lui souhaiter, sans avoir rien à faire :p

Bref, les idées ne manquent pas. La seule contrainte à respecter, pour le moment, lorsqu'on crée un calendrier: l'évènement doit durer toute la journée (on ne précise pas d'heure), et les évènements récurrents ne sont pas bien gérés. Par exemple, pour le ramassage des poubelles, il m'a fallu créer un évènement dans le calendrier tous les jeudis impairs, un par un. Si j'avais indiqué directement une récurrence tous les jeudis, une semaine sur deux, cela ne fonctionne pas. Je l'ai signalé au développeur de ce plugin, qui en tiendra compte dans les prochaines versions.

Enfin, pour tenir compte de ces devices, il faudra faire appel à un peu de code Lua dans les scénarios. Par exemple, pour me rappeler de sortir les poubelles, j'ai créé un scénario qui se déclenche tous les jours à 19h (en cas de jour férié, le ramassage peut être décalé, je ne me contente donc pas seulement de lancer le script les jours de passage):

 

Capture d’écran 2011 05 10 à 23.01.14

 

Et qui exécute le code Luup suivant:

 

Capture d’écran 2011 05 10 à 23.03.25

 

En détail:

Je récupère le status de mon calendrier dans une variable “ramassage”. Il faut modifier ici “90” par le numéro de votre device / calendrier (disponible dans l'onglet Advanced du device)

 

local ramassage = luup.variable_get(“urn:upnp-org:serviceId:SwitchPower1”, “Status”, 90)

 

Ensuite, si le status de mon calendrier = 1,

 

if (ramassage == “1”) then

 

Alors cela signifie que demain les poubelles seront ramassées, et donc j'envoie une notification Prowl à mon iPhone:

 

luup.inet.wget(“https://prowl.weks.net/publicapi/add?apikey=ma_cle_api_prowl&application=Vera&event=Poubelles&description=Attention+Ramassage+demain&priority=1”)

 

Enfin, je ferme le script et la condition:

 

return

end

 

Pour plus d'explications sur les notifications Prowl, je vous invite à lire mon guide précédent qui traitait le sujet.

Autre exemple: Pour la gestion de mes volets, un scénario est lancé tous les jours de la semaine au lever du soleil:

 

Capture d’écran 2011 05 10 à 23.08.59

 

Je vérifie ensuite via le code Luup s'il s'agit d'un jour travaillé:

 

Capture d’écran 2011 05 10 à 23.11.12

 

Ici, je récupère l'état du jour en cours dans la variable jourconge. Si le status = 0, cela signifie que ce n'est pas un jour de congé, je renvoie donc “true”, ce qui signifie que mes commandes ont le droit de s'exécuter. Ces commandes sont simplement l'ouverture des volets:

 

Capture d’écran 2011 05 10 à 23.14.32

 

A l'utilisation, cela est vraiment très pratique: en effet, pas besoin de penser à modifier mon scénario parce que demain je ne travaille pas, la Vera se connecte simplement à mon agenda, sait que je ne travaille pas, et donc ajuste les actions en conséquence, sans avoir besoin d'y toucher !

Une autre utilisation pourrait être la gestion des absences: quand on part le week end ou en vacances. En créant un calendrier avec ces informations, le système pourrait tout à fait couper certaines fonctions le jour de notre départ, activer une simulation de présence, et préparer la maison pour notre retour (par exemple rallumer le chauffage quelques heures avant notre retour). Tout cela sans intervenir sur la Vera, simplement en renseignant son agenda, comme on le fait d'habitude.

Ce petit plugin, donc, bien que perfectible, est vraiment d'une très grande utilité ! Je l'ai utilisé ici avec les calendriers de Google, mais il peut aussi être utilisé avec un fichier ICS local (issu de votre Outlook, par exemple). Il a déjà subi de nombreuses améliorations depuis sa sortie, et la version que je vous met ici en ligne est une version déjà très complète. Mais si vous souhaitez suivre son évolution, rendez vous sur le post officiel ici.

Pour information, cet article peut contenir des liens affiliés, sans aucun impact sur ce que vous gagnez vous même ou le prix que vous pouvez payer pour le produit. Passer par ce lien vous permet de me remercier pour le travail effectué sur le blog chaque jour, et d'aider à couvrir les dépenses du site (hébergement, frais de port pour les concours, etc.). Ca ne vous coute rien, mais ca m'aide beaucoup ! Merci donc à ceux qui joueront le jeu !

Inscrivez vous à notre newsletter !

Ne ratez plus aucun article, test de produit ou guide, grâce à un mail dans votre boite chaque vendredi !

8 Commentaires

Laisser un commentaire

Maison et Domotique
Logo
Register New Account
Enregistrez vous, et stockez vos articles préférés sur votre compte pour les retrouver n'importe où, n'importe quand !
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare