lundi 23 décembre 2013

Domotique: Profiter des services Google ...

Utiliser Google Script pour s'interfacer avec le web
J'ai depuis un (trop) long moment de sérieux problèmes avec Google Calendar: il n'est pas rare (ça arrive au moins une fois par jour) qu'un RDV déclaré dans Google Calendar ne soit pas récupéré par l'API Python. je suis obligé de modifier ce RDV pour qu'il soit de nouveau détecté. Même problème si je supprime un RDV: celui-ci est toujours rapatrié par l'API Python, ce qui est gênant car il n'y a alors aucune solution pour rectifier le tir ...

J'ai décidé de prendre le problème à bras le corps: supprimer cette partie un peu faiblarde de mon installation pour la remplacer par une solution que je pense plus pérène à plusieurs égards, en profitant des services Google pour:
- récupérer les infos depuis Calendar,
- les mettre en forme, près à être traités par mon script Python,
- effectuer la remontée vers le site web pour suivre les évolutions de mon chauffage (j'ai aussi traité mon alarme, mais je préfère ne pas trop échanger à ce propos ...)

La solution est d'utiliser Google Script, pour récupérer les infos de Google Calendar, les stocker dans un tableur de Google Drive, que je viens lire avec un script Python. Résultat: une bonne partie de la charge de travail (lecture de Google Calendar pour les consignes de chauffage et de l'alarme) sont désormais dédiés à Google, plus à mon installation.
De même, je gérais autrefois l'historisation des courbes de températures et la génération de la page web. C'est désormais Google qui gère tout ça, au travers de l'exploitation directe des graphiques du tableur dans une page web de Google Sites.

L'idée derrière tout ceci est que je compte très prochainement modifier toute mon installation afin de la rendre 100% autonome, en rajoutant une carte Ethernet à mon Arduino. L'exploitation des données de Google se fera directement depuis le sketch de l'Arduino. Exit le PC qui tourne sous Python !

Logique des échanges
Le but de ce passage sous Google Script est de:

  • Lire cycliquement les données de Google Calendar de la journée courante, puis les copier dans un tableur Google. Google Script permettant de le faire toutes les minutes, je ne me suis pas privé: ça rend les prises en comptes plus rapides lors de changements, et la charge est chez Google ...
  • Depuis le script Python, lire cycliquement le contenu de ce tableur Google. Je n'ai pas changé le taux qui j'avais dans mon ancienne version (de l'ordre de 5mn)
  • Depuis le script Python, envoyer cycliquement les températures des sondes, l'état de commande de chauffage (en route ou pas), la valeur de la température de consigne. Dans l'ancienne version, ces lectures étaient stockées toutes les 5mn, et envoyées vers le site web toutes les demi-heures, ce qui faisait que ce n'était guère exploitable sur le coup. Désormais, j'envoie ces données dans un autre tableur Google toutes les 3mn
  • Générer les indicateurs (températures courantes) et les historiques. Les indicateurs et les courbes que l'on peut générer dans le tableur Google sont directement exploitables dans des pages web d'un Google site. Les historiques sont établis par Google script à partir des données sauvegardées toutes les 3 minutes: le script me fait des moyennes des mesures toutes les 15mn pour m'afficher un historique sur 4 heures, et des moyennes toutes les heures pour un historique à 48h
Le résultat...
Rendez-vous sur le site pour voir ce que ça donne !

Les scripts
Concernant Google Script, vous trouverez une approche dans ce post.
Côté Python, c'est ici qu'il faut aller voir ... un post arrive prochainement

Aucun commentaire:

Enregistrer un commentaire

Laissez vos commentaires ...