Script Google + Google agenda + Box Domotique

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

 

13

 

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[i].getTitle(); // On récupère le titre de l'événement

var Description = Events[i].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[i].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[i].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(“[email protected]“, “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);

}

 

A lire également:
Mise à jour de la box eedomus: les périphériques Wifi Shelly deviennent compatibles localement !

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

 

24

 

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.

 

31

 

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… ”

 

41

 

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.

 

51

 

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 !

A lire également:
Mise à jour de la box eedomus: compteur d’impulsion Zigbee Zipulses, périphériques Schneider Electrique Wiser, thermostat Airzone, etc.

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:

 

Agenda

 

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

 

calendrier

 

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.

A lire également:
Mise à jour de la box eedomus: support des radars de présence ZigBee, et nouveaux périphériques Zwave !

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é !

Pour information, cet article peut contenir des liens affiliés, sans aucun impact sur ce que vous gagnez vous même ou le prix que vous pouvez payer pour le produit. Passer par ce lien vous permet de me remercier pour le travail effectué sur le blog chaque jour, et d'aider à couvrir les dépenses du site (hébergement, frais de port pour les concours, etc.). Ca ne vous coute rien, mais ca m'aide beaucoup ! Merci donc à ceux qui joueront le jeu !

Inscrivez vous à notre newsletter !

Ne ratez plus aucun article, test de produit ou guide, grâce à un mail dans votre boite chaque vendredi !

3 Commentaires
  1. Merci bcp Cédric pour ce tuto qui fonctionne parfaitement ! Ca ouvre des tas de possibilités.

  2. Bonjour, je me suis inspiré de ce script pour l’ippower 9212, ça marche nickel mais j’ai 2 ou 3 points que je ne comprends pas :
    -DateDebut.setTime(DateFin.getTime() – (5*60*1000)); //20 minutes de moins que DateFin
    – var Error = null et les Error = Error
    – et enfin les 3 dernières lignes.
    Pouvez vous m’aider ?

    enfin
    j’ai mis mon script actuel sur ce site pour l’ippower :
    http://www.developpez.net/forums/d1468398/webmasters-developpement-web/javascript-ajax-typescript-dart/javascript/gerer-station-domotique/#post7961842il évoluera au fil du temps.

  3. Tu n’as pas le droit de faire des calculs dans un paramètre :
    var milisecondes;
    milisecondes=DateFin.getTime()-(50*60*100);
    DateDebut.setTime(milisecondes);

Répondre à Nicolas Rigaud Annuler la réponse

Maison et Domotique
Logo
Register New Account
Enregistrez vous, et stockez vos articles préférés sur votre compte pour les retrouver n'importe où, n'importe quand !
Compare items
  • Casques Audio (0)
  • Sondes de Piscine Connectées (0)
  • Smartphones (0)
Compare