A voir
 

HC2 de Fibaro et calendrier Google

 
reveil
reveil
reveil

 
Présentation
 

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


 
Utilisation
 
 
 
 
 


 
Utilité
 
 
 
 
 


 
Cout
 
 
 
 
 


 
Note Globale
 
 
 
 
 
4.5/5


Note des Lecteurs
3 Total des notes

 

Pour


Gratuit, facile à utiliser, et vraiment pratique

Contre


Devoir passer par un script extérieur, mais c'est un service gratuit :p


Apercu

Il y a plusieurs mois je vous ai proposé un script pour utiliser votre calendrier Google avec votre box domotique eedomus ou Zibase. Script que vous pouviez utiliser en ligne depuis le site, ou héberger directement chez vous. Suite à ma migration sur le Home Center 2 de Fibaro, j’ai donc cherché à reproduire la […]

1
Posté le22 novembre 2013 par

 
Tutorial Complet
 
 

Il y a plusieurs mois je vous ai proposé un script pour utiliser votre calendrier Google avec votre box domotique eedomus ou Zibase. Script que vous pouviez utiliser en ligne depuis le site, ou héberger directement chez vous.

Suite à ma migration sur le Home Center 2 de Fibaro, j’ai donc cherché à reproduire la même fonction, qui m’est très utile.

Pour rappel, cette fonction peut être vraiment très pratique pour des personnes ayant des emplois du temps très variables, ce qui nécessite de modifier la configuration de l’agenda sur la box (eedomus) ou les scénarios (Zibase, HC2).

C’est par exemple mon cas: travaillant en informatique, il peut arriver de travailler la nuit, ou le week end, si une maintenance serveur est nécessaire. Selon mes contraintes, il m’arrive également d’aller travailler en train (le plus courant) ou en voiture (si mes horaires le demandent): là mon heure de lever ne sera pas du tout la même.

De ce fait, il peut m’être nécessaire de modifier la configuration de la box 2 ou 3 fois par semaine. Comme mon emploi du temps est entièrement géré sur Google (jours de congés, rendez vous, etc…), l’idéal est que la box puisse le consulter et gérer les scénarios en conséquence.

Comme nous l’avons vu auparavant, c’est possible. J’ai donc mis à jour mon petit script pour qu’il puisse fournir un résultat en Json et donc être utilisé plus facilement avec le HC2 de Fibaro, le xml étant un peu plus difficile à interpréter pour elle.

 

I. Pré requis

 

Il vous faut bien sûr un agenda Google. 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):

 

 

Note: pour éviter tout problème, utilisez des mots simples, sans espace ni caractère accentué. Par exemple comme ici: cp, ferie, weekend, etc…

Pour récupérer les informations de votre calendrier, vous aurez besoin de son adresse privée.

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

Il faudra récupérer la partie en rouge ici, située entre « feeds/ » et « /basic ».

Nous pouvons maintenant passer à la configuration sur la box.

 

II. Utilisation du script

 

Le script que je vous met à disposition est très simple.

Il faudra appeler cette adresse:

 

http://maison-et-domotique.com/scripts/agenda.php

 

Et passer certains paramètres:

 

?cal=id_calendrier&decode=correspondances&defaut=valeur_par_defaut&json=1

 

  • id_calendrier: il s’agit de l’adresse du calendrier, récupérée précédemment (partie en rouge).
  • correspondances: pour chaque mot trouvé dans le calendrier, on va y affecter une valeur numérique. Par exemple « 0,travail,1,cp,2,weekend,3,ferie ». Si dans le calendrier le script trouve « cp », il remontera « 1″.
  • valeur_par_defaut: il s’agit de la valeur que devra prendre le script s’il ne trouve rien dans le calendrier. Pour ma part j’utilise « 0″: en effet, je ne fais figurer dans mon calendrier que mes jours de congés, il serait idiot de devoir mentionner tous les jours de travail. Donc si le script ne trouve rien dans mon calendrier, il considère que c’est « 0″, donc un jour de travail.
  • json: par défaut, le script renvoi un résultat en xml. Si on le veut en json, plus simple à exploiter sur la FibaroBox, il suffit d’ajouter ce paramètre json=1

Vous voyez le principe ? Au final, on obtient par exemple une adresse de ce type:

 

http://maison-et-domotique.com/scripts/agenda.php?cal=rtderfhgj_qsnmmourtcndaonh6mt3g63ing%40group.calendar.google.com/private-1ac150ee21588467d3fb4807d7096dc6&decode=0,travail,1,cp,2,weekend,3,ferie&defaut=0&json=1

 

Pour vérifier que tout fonctionne bien, une fois que vous aurez renseigné l’adresse avec vos propres arguments,  il suffit de taper l’adresse web de ce fichier dans votre navigateur web. Vous devriez obtenir quelque chose de ce genre:

 

{« aujourdhui »: « 0″, »aujourdhui_text »: « travail », »demain »: « 0″, »demain_text »: « travail »}

 

On a donc ici un fichier json parfaitement exploitable par le HC2.

On y voit l’état du jour, mais également l’état du lendemain (en valeur et libellés).

 

III. Configuration de la box

 

On va commencer par créer 4 variables sur la box, via le menu « Panneaux », puis « Variables ». Ce sont des variables normales, pas des variables prédéfinies.

 

demain aujourdhui

 

Aujourdhui: contiendra la valeur du jour (0,1,2…) passé en paramètre de l’URL vue plus haut

Aujourdhui_Text: contiendra le libellé plus explicite, qu’on utilisera juste sur l’interface pour que ce soit plus parlant

idem pour Demain et Demain_Text.

Les variables xx_Text sont là si on souhaite les utiliser dans autre chose, pour plus de clarté, mais elles ne sont pas obligatoires pour notre utilisation.

 

Maintenant nous allons créer un périphérique virtuel. La présentation pourra être adaptée selon vos besoins. Pour ma part je lui ai mis deux « labels » qui contiendront l’état du jour et du lendemain, puis un bouton qui lancera le script de mise à jour:

 

config1

 

Pour les labels, c’est très simple, j’ai juste donné un nom pour l’état du jour et du lendemain:

 

labels

 

C’est le bouton suivant qui va être chargé de compléter les labels et les variables créées plus haut:

 

bouton

 

Le script se présente de cette facon:

 

HC2 = Net.FHttp(« maison-et-domotique.com »)

response = HC2:GET(« /scripts/agenda.php?cal=votreadressedecalendrier&decode=0,travail,1,cp,2,weekend,3,ferie&defaut=0&json=1″)

 

response = json.decode(response)

 

fibaro:setGlobal(« Aujourdhui », response.aujourdhui)

fibaro:setGlobal(« Aujourdhui_Text », response.aujourdhui_text)

fibaro:setGlobal(« Demain », response.demain)

fibaro:setGlobal(« Demain_Text », response.demain_text)

 

fibaro:log(« Aujourd hui : « ..fibaro:getGlobalValue(« Aujourdhui_Text »).. » Demain : « ..fibaro:getGlobalValue(« Demain_Text »))

 

fibaro:call(89, »setProperty », »ui.Label1.value »,response.aujourdhui_text)

fibaro:call(89, »setProperty », »ui.Label2.value »,response.demain_text)

 

Pour éviter les problèmes de mise en page du blog, vous pouvez télécharger le script Lua ici.

Il faudra bien sûr l’adapter à vos besoins: adresse de votre calendrier, valeurs pour le décodage (travail = 0, etc…) et nom des labels si vous les avez changés.

Egalement, si vous hébergez le script php sur votre propre serveur, il faudra bien sûr remplacer « maison-et-domotique » par l’adresse de votre serveur. Une fois tout cela complété, enregistrez la configuration.

A partir de là, si vous cliquez sur le bouton « mise à jour » du nouveau module virtuel, les états de chaque jour vont se mettre à jour:

 

module

 

Les variables créées au début seront également mises à jour.

Dernière étape, on va créer une scène qui va se charger de lancer la récupération des données. On aurait pu simplement mettre le script précédent dans le « Main Loop » du module, mais celui ci est lancé toutes les secondes, ce qui à mon avis risque de surcharger la box pour rien. Ce n’est pas judicieux de l’utiliser ici. Dans mon cas, je souhaite simplement récupérer une fois par jour l’état du jour et du lendemain, le script n’a donc besoin d’être lancé qu’une seule fois, par exemple tous les jours à 1h du matin .

 

scene

 

On sélectionne le périphérique virtuel, et on actionne son bouton, qui va déclencher le script vu précédemment.

Ainsi, plus rien à gérer, l’état des jours va s’actualiser automatiquement chaque nuit.

 

IV. Utilisation

 

Connaitre l’état du jour, c’est bien, mais en pratique à quoi cela peut il bien servir ?

Un exemple concret avec l’ouverture des volets, par exemple: quand je travaille je veux qu’ils s’ouvrent au lever du soleil, si je ne travaille pas ouverture à heure fixe à 9h.

Pour cela je vais utiliser deux scènes.

La première scène ouvre les volets au lever du soleil si je travaille:

 

travail

 

Chaque jour au lever du soleil, on regarde donc si la variable « Aujourdhui » =0 (valeur utilisée pour le travail). Si c’est le cas, on ouvre les volets (et au passage je m’envoie un petit mail pour me le confirmer, le temps du « rodage ;-) Attention à bien décocher le trigger « Aujourdhui » tout en haut au dessus de la scène, sous peine d’avoir vos volets qui s’ouvrent en pleine nuit (j’ai testé ;-)

Même type de scène pour les jours non travaillés:

 

conge

 

Cette fois on vérifie chaque jour à 9h précise si la variable « Aujourdhui » est > 0 (0 étant un jour travaillé, les autres jours fériés, congés, week end ayant des valeurs supérieures à 0). Si c’est le cas, on ouvre les volets.

Là aussi, bien penser à décocher le trigger en haut.

Enfin, pour les deux scènes, vérifiez bien qu’elles soient actives et lancées au démarrage de la box:

 

active

 

Et voilà ! Les volets vont s’ouvrir tout seuls en fonction de votre calendrier Google.

Avec du code Lua, il est sans doute possible de n’utiliser qu’une seule scène pour gérer les différents types de jours, mais comme on débute sur le HC2, on va y aller doucement ;-)

Dans le même genre, j’en utilise une autre pour me préparer la maison si je travaille:

 

reveil

 

 

Ici, si c’est un jour travaillé, alors le sèche serviettes de la salle de bain se met en route à 5h30 pour avoir le temps d’avoir une serviette chaude, m’allume la lumière du salon et de la cuisine une demie heure après, me laisse déjeuner, puis éteint les lumières automatiquement…

Bref, on peut l’utiliser pour différentes choses :D

 

V. Conlusion

 

Plutôt 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 box domotique Fibaro, qui gère alors la maison en conséquence.

Le plus utilisé sera l’état du jour en cours, mais l’état du lendemain peut être très utile également. 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 du même genre pour les jours d’école, pour les anniversaires, un pour gérer le chauffage, etc…

Voilà, j’espère que ce petit script répondra aux besoins de chacun. N’hésitez pas à me remonter toute suggestion ou idée d’utilisation ;-)

 

 

PS: Pour ceux qui préfèrent l’héberger eux même, les fichiers sont disponibles 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.



Votez pour votre blog préféré !