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
 
 
 
 
 
0/5


Note des Lecteurs
Aucun vote

 

Pour


La Vera connectée à son calendrier Google !

Contre


Ne fonctionne qu'avec un calendrier Google


Apercu

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 […]

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.


Cédric Locqueneux

 
Je me suis essayé à la domotique il y a quelques années avec quelques modules X10, quelques softs gratuits, etc… pour équiper la maison que j'avais en location. Puis j'ai eu la chance de pouvoir faire construire, et c'est là que mes projets domotiques ont explosé, la construction neuve me permettant de prévoir une installation complète, et intégrée à la maison. Aujourd'hui, quasiment toute mon installation repose sur le Z-Wave.


  • sjhp

    J’avais aussi repéré sur le forum de MCV une discution sur ce plug-in, ce qu’il me manquait à part la langue de Shakestruc, c’est un petit tuto.
    Super il est là!
    Merci Cédric

  • arnaud

    Bonjour,

    Je n’arrive pas à faire fonctionner ce tuto. Quand je rentre le code lua suivant, « local ramassage = luup.variable_get(“urn:upnp-org:serviceId:SwitchPower1″, “Status”, 90) » j’ai une erreur.
    On répupère t’on le numéro de device / calendrier ?

    J’ai ceci dans l’onglet « advanced » de mon module « calendrier » :

    Notifications
    Module #9
    Pièce
    Controlled via
    Paramètres du module
    name
    device_type

  • http://www.maison-et-domotique.com Cédric Locqueneux

    Si dans dans l’onglet “advanced” de ton module “calendrier”, tu as « Module #9″, il te faut remplacer le 90 dans le script par ton 9.

    Si ca ne fonctionne toujours pas, peux tu me dire à quel moment tu as ton message d’erreur, et quel message précisément ?

  • mika

    bonjour a tous.
    j’aimerai envoyer une alerte Prowl sur l’iphone mais dans le message que je recoie avoir le nom de la personne qui fête son anniversaire. c’est possible?
    merci

  • Patrick

    Bonjour
    j ai du mal avec winSCP  » en indiquant l’utilisateur root, puis enfin le mot de passe figurant sur l’étiquette de votre Vera (celui en face de « Wifi Pass »). » sachant que je posséde une veralite merci d’avance
    patrick

  • Guillaume

    Bonjour,

    Je viens d’installer l’application sur ma VeraLight UI5. La mise en oeuvre n’est pas si naturelle !

    Cédric, j’imagine que tu as migré sur UI5 toi aussi, est-ce que ça marche toujours ? Et quels aménagements as-tu fait ?

    Bonne continuation
    Guillaume

  • fatal25

    salut Cédric,

    pour gérer les périodes de vacances,

    penses tu qu’il serait plus simple de créer un événement vacancesON et un autre vacancesOFF qui activerait un device virtuel?

    Comme ça, on se servirait de ce device virtuel pour piloter nos scènes?

    j’ai du mal à voir si c’est plus avantageux que de mettre vacances 7 fois de suite car comment pourrait-on prendre en compte facilement que les vacances sont terminées et qu’il est temps de remettre le chauffe eau en marche, allumer le poêle à granulés etc.

  • daviddu13

    Personnellement j ais un problème après avoir ajouté le liens du calendrier,
    dans l onglet control auccun jours s’affiche, par contre un messageen rouge a coté de
    Holiday : WARNING: no future holidays s ‘affiche

    et dans avancé apres la case name ce message:

    WARNING: no future holidays » onChange= »set_device_state(50,’urn:futzle-com:serviceId:HolidayVirtualSwitch1′,’Name’,this.value); » class= »inputbox »>

    D ou viendrais l’erreur
    merci