Suite à mes deux précédents articles, expliquant comment connecter la Vera ou encore l'eedomus à son agenda Google, vous avez été nombreux à me demander s'il était possible de faire la même chose avec la Zibase. J'ai donc pris un peu de temps pour étudier la question, et la réponse est OUI !
Bien que la Zibase sache lire une valeur dans un fichier xml, cela reste compliqué, le fichier xml de l'agenda Google étant relativement complexe. Nous nous étions déjà heurté à ce problème avec l'eedomus. Je suis donc parti sur le même principe que pour l'eedomus.
Pour remettre le problème en situation: bien que la Zibase sache gérer un calendrier, elle est par exemple incapable d'adapter automatiquement des scénarios selon s'il s'agit d'un jour travaillé ou non. Le fait de la lier à un calendrier Google va lui permettre de vérifier le type de journée, et de déclencher des actions en conséquence.
I. Pré requis
Comme pour l'eedomus, il va être nécessaire d'utiliser un script PHP stocké sur un serveur FTP (votre Nas, un serveur extérieur, etc…). C'est contraignant, mais l'API Google étant un peu complexe à exploiter, c'est pour le moment la seule solution que j'ai trouvé.
Il vous faudra donc:
- une box Zibase, bien sûr
- un serveur web (Nas, serveur extérieur, ou même un ordinateur chez vous)
- ces scripts permettant d'utiliser l'API de Google Agenda
- et bien sûr un calendrier Google Agenda.
Si vous n'avez pas d'agenda Google, vous pouvez en créer un gratuitement ici.
Pour ma part, j'ai un calendrier Google réservé à mes congés. Les congés sont indiqués dans l'entête de la journée (un congé marqué de telle heure à telle heure ne fonctionnera pas):
II. Installation des scripts
L'installation des scripts est très simple: il suffit de vous connecter à votre serveur FTP, puis de les déposer dans le répertoire de votre choix:
Ces trois fichiers sont à copier tels quels, aucune modification n'est nécessaire.
Pour le dernier fichier, agenda.php, il faudra renseigner l'adresse privée de votre calendrier.
Pour cela, rendez vous dans les paramètres de votre calendrier Google. Tout en bas, vous trouverez une icône XML, dans la partie adresse URL privée:
Faites un clic droit sur cette icône, et récupérez l'adresse. Cette adresse est l'adresse de votre calendrier, mais codée de façon à ce qu'elle ne soit pas publique, de ce genre:
http://www.google.com/calendar/feeds/qsnmyourtcndaoeh6mt3663ing%40group.calendar.google.com/private-1ac30ee2598467tfb4807d7096dc6/basic
Copiez cette adresse dans le fichier agenda.php:
C'est la seule chose à modifier. Une fois renseigné, il n'y a plus qu'à le mettre sur le serveur FTP avec les autres fichiers:
Pour vérifier que tout fonctionne bien, il suffit de taper l'adresse web de ce fichier dans votre navigateur web, par exemple http://www.monserveurweb.com/agenda/agenda.php
On doit obtenir quelque chose de ce genre:
On a donc ici un fichier xml facilement exploitable par la Zibase.
Pour mes besoins, j'ai décidé d'y faire figurer l'état du jour, mais également l'état du lendemain.
III. Configuration sur la Zibase
Après divers tests, j'ai finalement trouvé une méthode assez simple, que je vais illustrer dans un exemple: l'ouverture des volets, au lever du soleil s'il s'agit d'un jour travaillé, ou à 9h s'il s'agit d'un jour non travaillé (week end, jour férié, ou une journée de congé posée n'importe quand).
On crée un premier scénario, qui se lancera au lever du soleil:
Au lancement du scénario, j'affecte la chaine de caractères “aujourdhui” à la variable V15, qui est une variable qui restera en mémoire (pas effacée à chaque action).
Ensuite, j'utilise l'action “Commander par HTTP”, mais pour récupérer une valeur balisée par ma variable V15.
Dans cette variable, je récupére ainsi 1 s'il s'agit d'un jour travaillé, ou 0 s'il s'agit d'un jour férié.
Ensuite, j'utilise “Activer un périphérique” en sélectionnant mon volet, et en cochant On-Off variable, puis en indiquant ma variable V15.
Ainsi, s'il s'agit d'un jour travaillé, le volet va s'ouvrir, s'il s'agit d'un jour férié il va se fermer (comme il est normalement déjà fermé, cela n'aura donc aucune incidence).
C'est tout pour ce scénario.
On en crée ensuite un autre très très simple, qui se lancera tous les jours à 9h, et qui ouvrira le volet:
S'il a déjà été ouvert au lever du soleil, ce scénario n'aura aucune incidence. Si le volet n'avait pas été ouvert (jour férié), ce scénario va l'ouvrir à 9h.
Très simple, non ? A l'utilisation c'est vraiment très pratique, puisque j'utilise tous les jours mon calendrier Google: cela me permet de gérer mon emploi du temps, de le synchroniser sur mon iPhone, de le partager avec ma femme, etc… L'utilité de l'agenda Google n'est plus à démontrer. Aujourd'hui, sans rien faire de plus, ce calendrier est également consulté par ma Zibase, qui gère alors la maison en conséquence.
Le script tient compte également de l'état du lendemain. Il suffit d'affecter la chaine de caractère “demain” au lieu de “aujourdhui” pour récupérer l'état du lendemain. Chez moi, cet état me permet de faire d'autres actions: par exemple quand le lendemain est une journée travaillée, je coupe les alertes vocales de mon système multiroom plus tôt histoire de ne pas être dérangé quand on est couchés. Le volet de ma porte fenêtre se ferme également plus tard si le lendemain est une journée à la maison.
Ce procédé peut être utilisé pour diverses choses. J'ai par exemple configuré un autre calendrier pour le ramassage des poubelles, car avec les jours fériés et le ramassage des déchets recyclables tous les 15 jours, je suis toujours en train de me demander quelle poubelle sortir quel jour :p Cette alerte me permet de recevoir une notification push la veille au soir, ou même une notification via mon Karotz.
On peut imaginer faire un calendrier pour les anniversaires, un pour gérer le chauffage, etc… Même si la Zibase gère un système de calendrier, cette méthode permet de ne gérer que son agenda perso, sans avoir d'autre action à effectuer.
Voilà, j'espère que ce petit tuto répondra aux besoins que vous aviez !
bonjour,
j’ai un doute quelle partie de la ligne dois je remplacer par mon url ?