Utilisation de l'agenda/calendrier dans les scènes

Citation
Aucun problèmes il n’y avait rien de négatif dans mon message !! :stuck_out_tongue:

Aucun soucis, c’est juste mon premier vrai PR donc je voulais être sur d’avoir bien fait les choses pour ne pas tout casser :wink:

@Romuald_Pochet Pour information, pour le partage des calendriers, on part sur 2 types de calendriers avec @bertrandda:

  • Calendrier « partagé » accessible à tous les utilisateurs de l’instance Gladys et dans les scènes
  • Calendrier « privée » affiché uniquement dans la vue « Calendrier » pour l’utilisateur qui l’a configuré.

Donc pour toi, tu vas devoir faire une requête pour récupérer tous les calendriers « partagés » dans les scènes.

La discussion est disponible ici:

1 « J'aime »

Pour info, je viens de merge le partage de calendrier, le travail sur les scènes peut donc reprendre :sunglasses:

Salut à tous !

Cette fonctionnalité étant assez demandée, et comme je viens de merger une PR qui débloque ce comportement, j’ai travaillé sur une petite spécification fonctionnelle pour qu’on puisse au moins être d’accord sur le fonctionnement souhaité (c’est le plus dur :stuck_out_tongue: ).

Spécification fonctionnelle pour le déclencheur de scène

Je propose un déclencheur dans les scènes qui pourrait se configurer de la façon suivante :

Les fonctionnalités:

  • Possibilité de déclencher une scène si un évènement quelconque d’un calendrier arrive dans XX minutes/heures/jours. Possibilité de sélectionner un ou plusieurs calendrier. Le calendrier doit être un calendrier partagé, car les scènes sont partagées au sein d’une instance.
  • Possibilité d’ajouter une condition sur le titre de l’évènement. Ex: est exactement “cours de musique”, contient “piscine”, contient “travail”, contient “école”, commence par “Cours”, fini par “volley”.
  • Le déclencheur s’exécute à l’avance par rapport à la date de début ou de fin de l’évènement : 10 minutes avant, 1 heure avant, 1 jour avant. La granularité la plus fine est la minute. Il est possible de mettre 0 minutes pour être prévenu à l’heure de début/fin de l’évènement

Spécification fonctionne pour la condition dans les scènes

Pour la partie conditionnelle dans les scènes, l’idée est de pouvoir continuer ou interrompre une scène si un évènement dans un/plusieurs calendrier donné répond à une condition et est en cours.

Exemple:

  • Si un mouvement est détecté
  • Qu’il y a un évènement dans le calendrier qui est en cours qui dit que je suis au travail
  • Alors m’envoyer un message

Proposition :

Qu’en pensez-vous ?

2 « J'aime »

Pour info, j’ai commencé les développements, pour l’instant uniquement sur le déclencheur de scène.

La partie backend est quasiment finie, je bosse sur le frontend là.

@bertrandda J’ai du changer un peu la requête de GET /calendar, en gros il me fallait une option pour aller chercher uniquement les calendriers partagées (et pas les miens privées), du coup j’ai rajouté 3 cas :

  • Pas de paramètres fournie → tous les calendriers que je peux voir (privée à moi + partagés)
  • shared = true → Que les calendriers partagés
  • shared = false → Que mes calendriers privées

J’ai pensé à aller mettre à jour le code frontend.

C’était nécessaire parce que du coup dans les scènes seules les calendriers partagés sont accessible.

La PR sur Github est ici :

1 « J'aime »

La vue complète avec toutes les options:

Tu prends aussi en compte les jours férié etc?
Ou tu gères que certain filtre sur les titre de mail

Je ne gère rien de tout !

Le but de cette fonctionnalité, c’est de laisser à l’utilisateur la possibilité de déclencher des scènes basées sur les évènements à venir / qui vont se terminer dans ses calendriers, après c’est à l’utilisateur de connecter ses calendriers à lui.

Le contenu du calendrier est propre à chacun, moi je fournis juste les outils pour faire les scènes :slight_smile:

Si tu veux connecter un calendrier avec des vacances, des jours fériés, le jour ou tu vas à la piscine, l’école des enfants, tout est possible !

On est d’accord qu’il n’y a pas de calendrier intégré dans Gladys, c’est ‘juste’ une synchronisation avec un service tiers?
Je l’utiliserais bien pour les périodes de chauffe dans un calendrier dédié…

1 « J'aime »

Ah ouai ok je vois.
C’est pas bête ça t’évite de te charger de récupérer une lib qui calcul les jours férié en fonction d’un pays donné.
C’est une autre façon de voir les choses, genre ça évite les erreurs de lib

Exactement, on considère qu’on est pas là pour coder un client calendrier complet (ce serait énormément de travail, et c’est pas vraiment notre métier)

L’idée c’est que les utilisateurs gardent leur client calendrier classique, continue de remplir les évènements sur leur téléphone/ordinateur comme ils font déjà, et ensuite nous on se synchronise juste avec.

Tu peux très bien créer un calendrier n’importe où spécifique pour tes périodes de chauffe et ça fera le boulot :slight_smile:

Exactement :slight_smile:

Pour les jours fériés par exemple, moi par défaut mon calendrier a un calendrier « jours fériés » je crois, et Gladys le synchronise. Il suffit de se plugger sur ce calendrier, de pas mettre de filtre sur le nom pour catcher tous les évènements, et hop tu gères les jours féries dans Gladys.

1 « J'aime »

Beau travail, ça va être utile à beaucoup de monde.

Encore une fois @AlexTrovato avait raison depuis le début :laughing: Add internal calendar sharing by bertrandda · Pull Request #1337 · GladysAssistant/Gladys · GitHub

1 « J'aime »

Salut à tous !

J’ai bien avancé aujourd’hui, et j’ai mergé sur master la première partie de ce développement : déclencher une scène en fonction d’un évènement qui arrive/qui va bientôt se terminer.

Concrètement, ce qu’il est possible de faire

  • “Envoie moi un message 15 minutes avant d’aller au sport”
  • “Réveille moi 1h avant un évènement travail”
  • “Si l’évènement “Disneyland” commence dans 1h ET que la maison n’est pas vide” => Clignoter dans le salon pour nous prévenir qu’il faut partir !
  • "Lance le chauffage quand il y a un évènement qui commence et qui s’appelle “chauffage”, et stoppe le chauffage quand il y a un évènement qui s’arrête et qui s’appelle “chauffage” "

Ce n’est que quelques exemples, mais bien-sûr les possibilités sont infinies !

A quoi ça ressemble ?

Ce qui est puissant, c’est qu’il est possible de récupérer dans les actions l’évènement qui a déclenché la scène ! :sunglasses: et ça donne ça :

Je vois déjà @lmilcent qui me dit : “mais attend ? on va pouvoir utiliser les valeurs de capteurs des déclencheurs là dedans ??” Pourquoi pas à l’avenir oui !! :smiley:

Démonstration en vidéo

J’ai enregistré une vidéo qui montre un exemple :slight_smile:

Comment tester ?

J’ai fais un build Docker sur le tag :dev comme d’habitude.

L’image Docker est la suivante:

gladysassistant/gladys:dev

Je suis preneur de tout retour, si vous avez le temps de tester ce week-end ce serait top :slight_smile:

Pour la deuxième partie du développement, ce sera plus tard je vous tiendrais au courant de l’avancement !

5 « J'aime »

:rofl::rofl:

C’est génial, j’adore ces messages : « hey regardez la nouvelle fonctionnalité super puissante que je viens de faire » :heart_eyes:

Merci beaucoup pour le boulot !!

Bon, pour l’exemple du chauffage, faut d’abord que ça soit supporté par Gladys :sweat_smile:

3 « J'aime »

J’ai pas osé le dire mais je pense que c’est une fonctionnalité qu’il fait en sous marin pour faire la surprise à la communauté :wink:

Je veux pas casser tes espoirs @spenceur mais c’est pas le cas :joy:

Le chauffage c’est un gros sujet, et 90% du travail c’est de définir ce qu’on veut faire. Pour l’instant on est encore au niveau 0 rien n’est fait.

1 « J'aime »

T’es dur, je dirais 5% déjà (cf la demande de fonctionnalité et le début de reflexion) :innocent:

J’essaye de tester la fonctionnalité ce weekend !

1 « J'aime »

Et tu as ajouté la fonction ‹ clignoter pendant… › ou encore ‹ clignoter jusqu’à ce que › ? :smiley:

Allumer la lumière + attendre 1sec + éteindre la lumière, ça devrait le faire non ? :slight_smile:

Ne pourrait on pas avoir une condition si dans le calendrier x on a un événement alors action?

Cela me permettrait de faire ceci :
Si dans le calendrier jour férié on a un événement ce jour, alors on prévient la tête de linote qu’il peut se recoucher