A voir
 

Script Google + Google agenda + Box Domotique

 
calendrier
calendrier
calendrier

 
Présentation
 

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


 
Utilisation
 
 
 
 
 


 
Utilité
 
 
 
 
 


 
Cout
 
 
 
 
 


 
Note Globale
 
 
 
 
 


Note des Lecteurs
3 Total des notes

 

Pour


Pilotage de sa maison à partir de son calendrier Google. WAF, et super facile à mettre en place.

Contre


avoir un compte Google ?


Apercu

Vous aimez ? Partagez le ! A plusieurs reprises je vous ai proposé des tutoriaux pour joindre votre calendrier Google à votre box de domotique, notamment pour savoir si vous êtes en congés, ou au travail, et donc lancer les scénarios en conséquence. Aujourd’hui je vous propose d’aller encore plus loin, grâce à un tutorial […]

Posté le26 novembre 2012 par

 
Tutorial Complet
 
 

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

A plusieurs reprises je vous ai proposé des tutoriaux pour joindre votre calendrier Google à votre box de domotique, notamment pour savoir si vous êtes en congés, ou au travail, et donc lancer les scénarios en conséquence. Aujourd’hui je vous propose d’aller encore plus loin, grâce à un tutorial réalisé par Pierre: piloter entièrement votre maison depuis votre calendrier Google. Cela va être possible grâce aux scripts Google, qui peuvent être hébergés et exécutés depuis votre espace Google Drive. Une fonctionnalité que je ne connaissais pas du tout ! Les scripts autorisés sur le Google Drive peuvent vraiment être très puissants, tout en étant très simples à mettre en oeuvre. Voyons voir un exemple avec notre box eedomus.

 

I. Mise en place du script

 

L’API de la box eedomus va nous être très utile, car il n’y a pas besoin de connaitre l’adresse IP de la machine, elle fait appel directement au serveur de Connected Object.

La cinématique de fonctionnement du script est la suivante :

  1.  Lecture des évènements de l’agenda d’un calendrier spécifique (à définir dans le script)
  2. Vérification de l’évènement pour voir s’il correspond à un évènement prédéfini
  3. Appel de l’API eedomus

Pour commencer, il faut donc créer le script dans Google Drive: Créer => Plus => Script

 

 

Copiez/collez le code suivant dans le script créé :

 

function Calendrier()

{

var DateDebut = new Date();

var DateFin = new Date();

var resultat;

var API_Periph;

var API_Valeur;

DateDebut.setTime(DateFin.getTime() – (5*60*1000)); //20 minutes de moins que DateFin

var Cal = CalendarApp.getCalendarsByName(‘Domotique‘)[0];

var Events = Cal.getEvents(DateDebut, DateFin);

/*API des périphériques EEDOMUS

Volet roulant séjour : xxxx

Volet roulant cuisine : xxxx

Notifications : xxx

*/

for (i in Events)

{

var Titre = Events.getTitle(); // On récupère le titre de l’événement

var Description = Events.getDescription(); // On récupère la description de l’événement

var Error = null; // On initialise le retour d’erreur à null

if (Description.indexOf(« Action réalisée le ») == -1) // Si la description de l’événement contient « Action réalisée le » alors aucune action

{

switch(Titre)

{

case « Ouvrir volets » :

Error = Error || AppelAPI(« xxxx« , »100« ); // Ouverture volet roulant séjour

Error = Error || AppelAPI(« xxxx« , »100« ); // Ouverture volet roulant cuisine

Error = Error || AppelAPI(« xxxx« , »12« ); // Notification ouverture volets

break;

case « Fermer volets » :

Error = Error || AppelAPI(« xxxx« , »0« ); // Fermeture volet roulant séjour

//Error = Error || AppelAPI(« xxxx« , »100« ); // Fermeture volet roulant cuisine

Error = Error || AppelAPI(« xxxx« , »11« ); // Notification fermeture volets

break;

}

var Maintenant = new Date();

if (Error == false)

{

Events.setDescription(« Action réalisée le  » + Maintenant.toLocaleString()); // Inscrit « Action réalisée le » + date dans le descriptif de l’événement pour éviter qu’il ne se reproduise

}

else if (Error == true)

{

if (Description.indexOf(« Erreur lors de l’appel d’une API eedomus ») < 0)

{

Events.setDescription(« Erreur lors de l’appel d’une API eedomus le  » + Maintenant.toLocaleString()); // Inscrit « Erreur lors de l’appel d’une API » + date dans le descriptif de l’événement pour éviter qu’il ne se reproduise

// envoi d’un mail de rapport d’erreur

MailApp.sendEmail(« xxxxxxx@gmail.com« , « Erreur du script domotique », « Une erreur s’est produite lors à la réalisation de l’événement [" + Titre + "]« );

}

}

}

}

}

function AppelAPI(PeriphID, PeriphValue)

{

var Reponse;

Reponse = UrlFetchApp.fetch(« http://api.eedomus.com/set?action=periph.value&periph_id= » + PeriphID + « &value= » + PeriphValue + « &api_user=xxxxxxx&api_secret=xxxxx« );

Reponse = Reponse.getContentText();

Logger.log (Reponse);

return(Reponse.indexOf(« error_code ») >= 0);

}

 

Enregistrez ensuite le script (il faudra bien sûr remplacer les valeurs en rouge par vos propres paramètres: ID des modules, phrases à reconnaitre dans l’agenda, mais également codes API de votre box eedomus dans le bas du script).

 

 

Une fois le script copié et adapté, cliquez sur l’icône  » Exécuter « . Un fenêtre d’avertissement s’ouvre alors pour vous demander l’autorisation pour que ce script ait accès au service Google Calendar.

 

 

Cliquez sur le bouton  » Autoriser « 

Maintenant que le script est créé, il faut l’automatiser pour qu’il s’exécute selon la période que vous définirez.

Dans l’éditeur de Scripts de Google Drive, cliquez sur la petite icône en forme de montre :  » Déclencheurs du script actuel… « 

 

 

Cliquez sur le lien  » Aucun déclencheur configuré. Cliquez ici pour en ajouter un. « 

Demandez à exécuter la fonction  » Calendrier  » en  » Fonction du temps  » en choisissant le  » Minuteur  » positionné à la valeur  » Chaque minute  » par exemple.

 

 

Appuyez sur le bouton  » Enregistrer « 

Et voila, votre script va scruter votre agenda toutes les minutes et lancer des actions en fonction des événements.

 

II. Utilisation

 

L’utilisation est très simple: dans votre agenda Google, par exemple ici appelé « Domotique », il suffira de créer un évènement portant le nom d’une action à effectuer, à l’heure que vous souhaitez. Par exemple « Ouvrir les volets ».

Quand le script trouvera cet évènement, il effectuera l’action correspondant à l’évènement, définie dans le script. C’est aussi simple que ca !

On profite de tous les avantages du calendrier Google: évènement à une date précise, récurrence, déplacement simple à la souris, etc…

Exemple pour le réveil matin:

 

 

Plus besoin d’aller dans le paramétrage de la box, une simple entrée dans le calendrier suffit:

 

 

Lorsque l’action est effectuée, un commentaire est mis dans la description de l’évènement: vous pourrez vérifier à quelle heure l’action a été lancée très précisément.

A contrario, si un problème survient, vous serez averti par un message dans votre boite mail (mais on peut aussi imaginer une notification Push ou un SMS).

 

III. Conclusion

 

Grâce à l’utilisation des Google scripts, il n’est pas nécessaire de posséder un hébergeur php comme c’était le cas avec les scripts que nous avons déjà vu, car tout se fait sur les serveurs de Google. De plus l’accès aux scripts est sécurisé par votre compte Gmail, donc peu de risques de se faire pirater ses codes API eedomus. Enfin, pas de problème de surcharge serveur, les serveurs de Google en ont vu d’autres ;-)

Avec cette combinaison, vous pourrez très facilement gérer votre maison en fonction de votre calendrier Google, que ce soit pour des actions répétitives ou exceptionnelles. Si vous partez un week end, par exemple, et que vous ne voulez pas avoir froid en rentrant: hop, une entrée dans le calendrier Google dimanche à 13h pour allumer le chauffage, et c’est tout. Encore plus simple que le programmateur du chauffage :p Avec mon agenda Google synchronisé sur mon iPhone, c’est ultra simple.

Nous avons pris ici l’exemple de la box eedomus, que nous utilisons, mais ce système de script peut très bien fonctionner avec les autres box disposant d’une API, comme par exemple la Vera ou le Home Center 2 de Fibaro. Il suffira pour cela d’adapter un peu la fonction AppelAPI, ce qui n’est pas très compliqué.

Encore un grand merci à Pierre qui m’a fait découvrir ces possibilités, une fois essayé, c’est adopté !

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