Aller au contenu
Kriek

Gestion D'actions Quotidiennes Via Calendrier Google

Recommended Posts

Bonjour àtous,

Je vous présente le petit projet que je suis en train de bricoler dans mon coin.

Je sais qu'il y a déjàpas mal de choses qui tournent autour de projets similaires, mais j'avais de petits requis personnels et sauf erreur de ma part, aucun de ces projets existants ne répondait complètement àces requis.

Donc voilàle cahier des charges initial de ce projet :

Pouvoir commander des action sur la HC2 depuis des évènements d'un calendrier google en considérant que :

1- Il doit être possible de gérer ces événements àune heure bien précise qui puisse être variable d'un jour sur l'autre et d'une semaine sur l'autre. Ce n'est donc pas compatible avec les actions menées selon le type de la journée (jour travaillé, chômé ou vacances). Mon objectif était par exemple de pouvoir dire le matin même de désactiver l'alarme de telle heure àtelle heure car la femme de ménage doit passer. elle passe une fois par semaine le jeudi mais son créneau horaire peut varier d'une semaine sur l'autre.

2- La HC2 doit être la plus autonome possible, connait elle-même le programme de la journée et ne dépend pas en permanence d'une connexion àinternet ou de google.

3- si je décide de rajouter une action dans la journée Google Calendar doit en informer la HC2 pour prise en compte au plus tard dans les 5 minutes qui suivent l'ajout de l'évènement.

Donc voilà, aujourd'hui j'en suis à:

1- terminé dans la trame globale, restent àgérer :

1.1-les erreurs de collecte d'info (lorsque les infos n'ont pas pu être récupérées sur Google par exemple)

1.2-Le non blocage du script lorsqu'il y a une erreur sur un module ou une affectation d'action qui n'aboutirait pas.

2- OK ça fonctionne Google calendar envoie tous les jours entre minuit et 1h le programme de la journée

2.1 - prochaine étape pour fiabiliser le système que les infos du jour suivant soient envoyées aussi et stockées sur la HC2 de façon àce que si on ne récupère par les infos du jour J+1 la HC2 puisse quand même mener les actions prévues de longue date. Je pense que je m'arrêterai àun jour d'avance.

3- je me suis fait un trigger sous google script qui si le nombre d'évènements de la journée change alors on remet le planning àjour.

3.1 prochaine étape : voir sir j peux faire un trigger qui lance la mise àjour du planning de la journée en cas de modification d'un évènement (aujourd'hui il faut que je supprime 1 évènement, que j'attende la mise àjour du planning sur la HC2, et recrée ensuite un nouvel évènement sur le même créneau)

4- La diversité des actions pouvant être menées... Pour l'instant j'en suis àne gérer que des actions sur des Devices Virtuels (boutons ou sliders) mais on pourrait imaginer d'autres actions plus complexes... et làj'ai vu que GEA pourrait m'aider, mais je n'ai pas encore regardé comment je pourrais l'intégrer.

Voilà, j'avance sur mon projet et vous tiendrai informé des progrès...

Si quelqu'un souhaite utiliser mes scripts, qui je le rappelle sont pour l'instant encore en travaux, aucun problème.

Je mettrai l'ensemble de mon projet àdisposition pour tous lorsque ce sera un peu plus fiable... Mais déjàj'annonce : la base fonctionne !

  • Upvote 4

Partager ce message


Lien à poster
Partager sur d’autres sites

Excellente initiative : sexy et challenging :)

 

Si je comprends bien, tu lis l'agenda, prépare une chaîne de caractère, remplis une variable global sur la HC2 avec cette chaîne ... puis tu décryptes cette chaîne avec une scène ou module virtuel pour exécuter les actions à  la bonne heure ?

 

  • Point 1.2 .. regarde la méthode pcall (elle permet d'appeler une méthode de manière sécurisé, çad, si elle plante, elle ne plante pas tout le script)
  • Point 3.1 ...Petit astuces, tu peux mettre des tags sur un événement du calendrier (events.setTag("HC2Update", time_update);) ensuite si tu compare la date du getLastUpdated du CalendarEvent et celle contenu dans ton tag, tu sais a coup sà»r si l’événement à  été envoyé à  la HC2 ou s'il a été modifier depuis la date du dernier envoi à  la HC2.
  • Point 4 ... Bonne chance, GEA est un script de m... ;) C'est volontiers qu'on travaille la dessus quand tu veux. Par contre, je pars 2 semaines en vacances alors si tu souhaites, je peux faire un truc vite fait avant de partir. Sinon, c'est du libre de droit .. tu prends, tu modifies et publies, j'ai aucun soucis avec cela. :)
  • Upvote 1
  • Downvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

En ce qui concerne la description que tu donnes c'est tout à  fait ça !

 

Pas mal le coup du tag... Effectivement ça va m'aider !

 

L'intégration de GEA se fera une fois que j’aurais réussi à  faire les actions de base (pour l'instant je gère tout via des boutons sur des modules virtuels)... Donc tu seras revenu de vacances avant que j'ai eu le temps de mettre le nez dedans.. d'autant que je suis en vacances également à  la fin de la semaine... J'ai beau m'amuser beaucoup à  faire tout cela, je crois que j'aurai d'autres chats à  fouetter...

 

Merci pour ces conseils :icon1010:  et Bonnes vacances !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Malheureusement pas trop non... ou plutôt pas autant que je le voudrais.

 

Je suis rentré de vacances dimanche dernier, et comme à  chaque retour de vacances le boulot s'est gentiment accumulé ne me laissant pas trop de répis le soir pour bosser sur ce type de projet personnel... :(

 

Pour compléter tout ça, la semaine prochaine je suis en déplacement pro... ça va pas aider...

 

Toutefois j'utilise le système dans l'état et j'ai déjà  pu observer certaines choses qu'il faudra corriger :

 

1-les planifications de lancement de script google ne sont quand même pas d'une fiabilité exemplaire : je lance automatiquement une mise à  jour de la variable dans la HC2 tous les soirs entre minuit et 1h du mat. Mais environ 1 fois par semaine j'ai un retour de google disant que le script n'a pas pu être achevé... il me dit que c'est justement la commande de mise à  jour de la variable dans la HC2 qui a planté... va falloir regarder de plus près pourquoi ça n'arrive pas tous les jours. Mais ça me conforte dans l'idée qu'il va falloir se débrouiller pour que la HC2 connaisse le planning des actions du jour et celui du lendemain pour toujours avoir un coup d'avance si jamais le script google plante.

 

2- Il arrive que l'action à  une heure donnée se lance plusieurs fois car il termine l'action dans la même minute et donc se redéclenche à  nouveau. Je pense qu'une petite pause après l'exécution de l'action et avant de regarder à  nouveau le planning arrangera ce problème.

 

Au final on ne peut pas dire que je n'avance pas : D'une certaine façon la constatation des défauts d'un système fait aussi partie de son développement  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

A ce jour, j'ai un système très simple qui toutes les heures envoi les 10 prochains événements sur ma HC2.
C'est basique mais cela fonctionne et dans le pire des cas, si une mise à  jour ne passe pas, la prochaine aura lieu dans 1 heure.
Attention, une variable globale est limitée à  222 caractères selon les tests effectués par @Krikroff

mini_804900agendamv.png

 

Si tu continues a travailler dessus, je prends volontiers des vacances et j'attends ton retour. Sinon, je continue dans mon coin mais avec quelque chose de plus simpliste.

 

Pour les soucis de planifications du script, c'est vraiment fréquent ce genre d'erreur, tellement fréquent que dans la plus part des cas, je désactive les notifications et je double la fréquence nécessaire pour essayer de palier à  ce soucis.

 

J'aime beaucoup, ton projet alors dépêche toi que je puisse mettre à  la poubelle mon code et le remplacer par ton projet bien plus évolué.

Partager ce message


Lien à poster
Partager sur d’autres sites

Je me suis fabriqué un module équivalent au tien pour suivre le planning d'action de la journée et m'assurer du bon rapatriement des infos de google calendar.

 

Tu peux donc prendre des vacances, car j'ai bien l'intention de faire avancer mon bousin...

 

D'un côté tu me mets un peu la pression, mais d'un autre il n'y a que comme ça que j'avance sur mes projets (pro et perso).

 

Allez, je vais viser la résolution de mes bugs d'ici 15 jours et le partage de mes scripts sur ce forum dans la foulée.

 

Y-a-t-il un moyen de tester des scripts LUA sans accès à  internet ?

La semaine prochaine je suis en déplacement pro avec gavé de temps en avion et train... Mais du coup pas d'accès internet fiable (serai en Chine)...

Partager ce message


Lien à poster
Partager sur d’autres sites

Pour le LUA sans Internet, je pense pas que cela soit possible vu qu'il y a la surcouche Fibaro :(

 

15 jours ... hummm en 15 jours tu as le temps de re-développer Google Agenda, allez, on est sympa, on t'en laisse 2 ... puisque après tu pars bosser loin, très loin :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Quel négociateur !

 

On verra dimanche ce que je peux faire... T'auras peut-être une bonne surprise...

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

Puisque nous parlons de surprise Steven... J'ai quelque chose pour toi

Depuis mon tel c'est pas pratique alors dans la soirée ...

Envoyé de mon iPhone àl'aide de Tapatalk

Partager ce message


Lien à poster
Partager sur d’autres sites

Pendant que j'y suis : Est-ce qu'un modo du forum veut bien changer le titre de ce sujet et rajouter un "s" à  "action" ? J'ai trouvé comment éditer les messages mais pas les titres des sujets... Voir cette faute et savoir qu'elle vient de moi me tracasse à  chaque fois que je réponds à  un message de ce sujet...

 

Modifié par moicphil, hier, 09:51 . 
C'est fait !

 

Merci !

Modifié par Kriek
C'est fait !

Partager ce message


Lien à poster
Partager sur d’autres sites

Puisque nous parlons de surprise Steven... J'ai quelque chose pour toi

Depuis mon tel c'est pas pratique alors dans la soirée ...

Envoyé de mon iPhone àl'aide de Tapatalk

? Tu me fais peur :)

Partager ce message


Lien à poster
Partager sur d’autres sites

Yop, curieux de voir ce Google agenda HC2 !!

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon alors comme je le pressentais, j'ai pas vraiment eu le temps avant de bosser... Donc pour vous petits impatients je vous livre la version 1.0 assez simple car elle ne permet que d'agir sur des boutons de modules virtuels, mais débugguée (enfin j'espère) de ce matin !!!
 
Pour utiliser toute cela il vous faudra
1- créer une variable globale "calendrier". On se fiche de ce que vous mettez dedans pour l'initialiser, google se chargera de la remplir proprement.
2- importer le module "agenda"
3- importer le module verif_agenda" (module qui permet en live de voir tout le planning de la journée.
4- copier le contenu de "code googlescript.txt" dasn un script google
5- mettre des déclencheurs automatiques sous google : tous les jours entre minuit et 1h du mat pour la fonction "recupplanning"; toutes les minutes pour la fonction "mytriggeroncalendareventcreation"

 

Voici où trouver les fichiers :

http://dl.free.fr/nqclpYUjA

 

Je suis en Chine toute cette semaine, pas sà»r que la connexion internet soit suffisante, mais j'essaierai de faire l'assistance nécessaire si elle me le permet.

 

Amusez-vous bien !!!

 

 

petit oubli : 

6- ligne 84 du code google il y a une action sur le module "agenda" du HC2 : mon module est le 51, il vous faut modifier l'id du module avec le bon numéro correspondant à  votre module "agenda" sur votre HC2

7- ajouter un évènement (syntaxe identique à  l'in de ceux de la table "ordres" du script google) dans votre calendrier google (celui de l'adresse entrée dans le script google) et le trigger doit updater lui-même la variable sur votre HC2 et lancer le module "agenda"... Prévoyez 5 minutes max entre le moment où est entré un nouvel évènement et sa prise en compte par le module.

8- pour vérifier le planning de la journée (ou bien vous assurer que le dernier évènement a été pris en compte" utiliser "rafraichir" dans le module "vérif_agenda"

 

Je pense que tout le reste est explicite dans le script google et les modules vituels.

Partager ce message


Lien à poster
Partager sur d’autres sites

Ca ma l'air intéressant ..Allez!!!  je vais faire le gros béta testeur  :)

 

J'ai (je crois) deux idées en tête mais il va falloir tout d'abord que je me mette un peu à  jour à  propos de Google !!!

 

Merci pour ta première version et bon voyage.

 

et moi Hop,Hop, ...au boulot  B)

Partager ce message


Lien à poster
Partager sur d’autres sites

J'aime cette initiative! Il y a ça dans de nombreux autres projets domotique, mais pas dans notre HC2.

Je test a mon retour de weekend !

Partager ce message


Lien à poster
Partager sur d’autres sites

Bon, un premier retour ...POSITIF  :D  moins d'une heure pour mettre en marche le zinzin !!

 

Quelques petites remarques :

 

Ci-dessous ...pour éviter de mettre le numéro réel du VD...C'est plus pratique pour nous et surtout avec l'arrivée de la V4  :D

local selfId = fibaro:getSelfId(); 

Deuxièmement, dans ton VD "agenda", j'ai été obligé de modifier la ligne

  if delta >=0 and delta <=5 then   --  par if delta >=0 and delta <=5000 then

 car le démarrage de ma tâche était passé ...et le delta aussi  ^_^ Cela veut dire qu'avec les mises à  jours toutes les minutes et le synchro diverses il y a peut être à  robustifier par là  !!!

 

Mais ça a l'air de marcher !!! :60:

 

je vais mettre beaucoup de plus de tâches et on en reparle.

 

Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

bon, pour les petits malins qui vont me charrier :

 

Premier post : 15:43

deuxième post : 16:58

 

Cela fait plus d'une heure mais il y a :

  •  l'effet de surprise ! CA MARCHE !! :icon1010: 
  •  et la rédaction du post

 

Voilà  ! :15:

Partager ce message


Lien à poster
Partager sur d’autres sites

Content de voir que ça marche en 1h pour une premiere version et content aussi de l'enthousiasme général pour ce projet !!!

Partager ce message


Lien à poster
Partager sur d’autres sites

Oui, en effet pour un premier test ça à  l'air de le faire.  :) même s'il y a encore des choses à  finaliser....

 

En fait, comme le principe à  l'air de fonctionner, je suis en train de réfléchir plus sérieusement à  des applications car la sécurité est un élément important mais surtout la domotique n'est pas pour moi une automatisation simple et ...doit tout simplement se faire oublier.

 

Par exemple, je ne pense pas que mettre de manière fixe des heures d'ouverture de volets ou d'allumage, soit une bonne "automatisation". On allume au coucher du soleil ou quand il fait sombre (car le temps est couvert) On n'allume pas à  heure fixe  !!! non ?

 

Pour moi certains événements ne doivent pas se "programmer" mais s'adapter au contexte (présence, température, météo, etc ...) donc, je vois bien une certaine complémentarité entre un GEA/Scheduler et  Google calendar. 

 

L'un simple gérant les événements comme les vacances, les cours de poneys des enfants, ...dont la perte d'internet ne rendra pas critique l'installation

L'autre plus "sécuritaire" pour les fonctions un peu plus délicates !

 

 

A suivre ...

Partager ce message


Lien à poster
Partager sur d’autres sites

Entièrement d'accord avec toi pour la philosophie globale des applications domotiques.

 

Pour ma part j'avais besoin de cette fonction de planification depuis google calendar pour arrêter et réactiver l'alarme aux horaires où la femme de ménage vient. Connaissant tous ses horaires (qui varient de temps en temps) au début du mois, je rentre tout dans mon calendrier et hop j'oublie, je reçois juste un sms qui me dis bien que c'est activé/désactivé...

Partager ce message


Lien à poster
Partager sur d’autres sites

Heuu ...Il y avait peut être plus simple ...mais cette solution marche et est facile à  utiliser après la mise en service !!! ;)

 

En fait, je crois que cette fonction (google Calendar) est bien adaptée à  un certain type de "pilotage" et je crois que je vais m'en servir pour passer la maison (le système domotique) dans des modes.(i.e. vacances, hivers/été, ...)

 

Le système domotique étant autonome et sécuritaire mais passer la maison dans des modes permet d'adapter le fonctionnement.

 

Je creuse un peu et j’expliquerai un peu mieux mes idées. (je crois que je ne suis pas très clair ce matin :mellow: )

Partager ce message


Lien à poster
Partager sur d’autres sites

Hum l'idée me plait bien aussi pour gérer été/hiver/vacances, je vous suis de prêt.

Partager ce message


Lien à poster
Partager sur d’autres sites

Argh ….. !!!!  Elles ont tout compris à  la domotique !!!  :13:

 

 

Comme vous tous, depuis qqles temps je domotise mais maison et certainement comme vous je me suis fait charrier par la famille, les amis ! C’est de bonne guerre…Ca marche…ça marche pas !!! je suis souvent en Maintenance  ;)

 

MAIS, depuis, quelques jours, je me suis aperçu que mes filles n’éteignent plus les lumières  :(  â€¦ La réponse est simple : «  De toute manière pap’s , elle va s’éteindre toute seule dans qqles minutes  :)  â€¦donc pas besoin de le faire »  Oups ….

 

 

En fait, il y  une période d’adaptation plus ou moins longue suivant les automatismes (le TTS semble prendre un peu plus de temps) mais les habitudes (bonnes et mauvaises) se prennent !

 

 

Pour continuer à  rendre la maison « intelligente », j’avais commencé à  regarder des choses un peu trop complexes pour moi (i.e. réseaux bayésiens pour anticiper et prédire) mais je crois qu’avec la combinaison de Google Agenda, GEA et certainement d’autres scènes vont permettre de faire qqle chose de bien.

 

Je vous livre quelques idées…car j’ai l’impression qu’il manque deux concepts à  mon installation. Le concept « Période » et le concept « Mode »

 

Périodes : Eté/Hiver, Vacances, Absence, Alarme, Jours chômés, Arrosage, Chauffage, Climatisation, …

Modes :  Eco / Confort / Nominal / Sécurité / Geek  / Debug / …

 

Quelques exemples  de fonctions “haut niveau†qui sont réalisables avec ces 2 concepts :

·         Si on est en mode « Confort » alors le chauffage est réglé à  1° de plus (l’offset s’ajoute aux valeurs gérées par le HC2 dans la chambre d’amis, pour réchauffer les vieux os de ma mère quand elle vient chez moi )

·         Si « alerte météo » et « vacances » alors mettre la maison en sécurité (coupure de qqles prises de courants, fermer les volets)

·         Si on est en période VACANCES alors on peut lancer une simulation de présence

·         Si on est en période ARROSAGE alors la maison peut lancer les arrosages (la durée, les zones d’arrosage seront gérés par le HC2)

·         Si on est en période ALARME alors la maison peut mettre l’alarme automatiquement quand on quitte la maison

·         Le mode nominal utilise peu de TTS

·         Le mode FULL est un mode intermédiaire (avant le mode debug)  utilise les TTS un maximum

·         Le mode DEBUG met en route tous les débugs (SMS, PUSH, debug dans les scènes, etc …)

 

Exemple de question :

·         Le chauffage doit-il s’allumer en Aout s’il fait froid ? Doit-on FIXER une période de démarrage et d’arrêt ? (du 1er Novembre au 30 mars comme à  mon boulot)

Réponse :

·         Si on est en mode confort la réponse peut être oui, si on est en mode éco, on peut accepter d’avoir un peu froid un jour ou 2 !

 

Sujets à  discuter :

 

A)   La définition des variables

  • Période : au format GEA local Période = { « date de début », « date de fin »}
  • Modes : TRUE/FALSE

B )   Le VD « Jour chomé » devrait être migré vers Google Agenda ce qui est plus cohérent (et en partie natif)

C)   @Shad, je suis convaincu qu’un jour j’utiliserai un Scheduler mais je n’ai pas encore trouvé d’application  :huh:

 

 

L’utilisation de la combinaisons des 2 (Google Agenda et GEA) me semble intéressante car on garde les aspects sécuritaires et fiables dans l’installation sans problématique de réseau internet et la souplesse d’un « on-line agenda »

 

 

Qu’en pensez-vous ?

 

 

Bien sà»r, il y a les panneaux  :D  mais je n’ai pas encore testé la V4 et je ne suis pas sà»r que cela réponde à  mon besoin...et il y aussi plus simple ! mais bon ! on ne se refait pas  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

×