A voir
 

Vera: gestion d’un calendrier

 
calendrier1
calendrier1
calendrier1

 
Présentation
 

Catégorie:
 
Prix:
 
Durée:
 
Mise en place
 
 
 
 
 


 
Utilisation
 
 
 
 
 


 
Utilité
 
 
 
 
 


 
Cout
 
 
 
 
 


 
Note Globale
 
 
 
 
 


Note des Lecteurs
Aucun vote

 

Pour


La Vera connectée à son calendrier Google !

Contre


Ne fonctionne qu'avec un calendrier Google


8
Posté le13 mai 2011 par

 
Tutorial Complet
 
 

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 »).

 

 

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:

 

 

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:

 

 

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:

 

 

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 »:

 

 

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:

 

 

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:

 

 

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.

 

 

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):

 

 

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):

 

 

Et qui exécute le code Luup suivant:

 

 

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:

 

 

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

 

 

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:

 

 

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.

Vous aimez ? Partagez le ! Share on FacebookShare on Google+Tweet about this on TwitterPin on PinterestShare on RedditShare on TumblrShare on LinkedInBuffer this pageFlattr the authorEmail this to someone