Parlons de Gladys V4

Ca c’est autre chose! Je suis chaud pour pouvoir ajouter des offsets aux évènements ( -1h/+1h )

Dans le cas du soleil, ça pourrait être un scénario du style:

{
  "type": "sunset",
  "offset": "-01:00:00"
}

Home assistant fait ça je crois!

2 « J'aime »

A fond typiquement t’allume tes lumières avant le coucher de soleil

L’usage est isolé et spécifique. Si il y’a besoin de phpmyadmin c’est qu’il manque quelque chose à Gladys.

De plus ça rajoute du support et pas besoin de phpmyadmin pour éditer la db. Mysql workbench fait bien l’affaire et est cross-platform.

Déjà Gladys 4 sera basé sur SQlite principalement donc ça sera différent :slight_smile: Et oui je suis d’accord avec @VonOx, Gladys 4 a pour objectif d’être un produit utilisable par tous. Si on doit jouer dans la DB pour s’en servir, c’est qu’on a loupé un truc…

C’est prévu! Dans Gladys 4 il y aura un système d’alarme pour la maison (armé/désarmé), et j’ai prévu que ce soit via un code sur un pavé numérique pour que ce soit facile à déverrouiller sur une petite tablette mise dans l’entrée/clavier physique + arduino :slight_smile:

Mmm pour ça je suis moins sûr, pour être précis je crois que ce n’est même pas possible de faire ça techniquement vu que le Gladys Gateway est chiffré de bout en bout donc je n’ai aucune idée de ce qui transite par le serveur, c’est vos données! Mais merci de la proposition, c’est toujours bien d’avoir des retours :slight_smile:

3 « J'aime »

Hello,

J’ai une petite question, mais je ne sais pas vraiment si c’est dans le thème de la V4 ou non.

Cela fait quelque temps que je commence à faire joujou avec gladys et au début, je faisais des scénarios type :

  • Retour à la maison de nuit
    Allume entrée, Allume Salon etc

  • Départ de la maison
    Eteins lumière X, Y, Z

Mais après, je me suis rendu compte, que j’avais pas mal de scénario qui touchait au même dévice pour le mettre dans le même état comme par exemple je vais me coucher et départ de la maison éteins tous les devices

Du coup, je me suis dit, peut être faire ça d’une autre manière: faire des scripts type :

  • Tous les devices OFF
  • Lumières OFF

Etc etc

Comme ça niveau des scénarios, il n’y a cas appeler un script et c’est tout.
Pareille niveau évolution des scénario pour intégrer un dévice ou autre, il n’y a cas modifier le scripts.

Dans la v4, j’imagine que oui, mais est-ce qu’il y a des changements prévu au niveau des scénarios / scripts ?

Est-ce que la méthode de scénarion qui appel des scripts est une “bonne” méthode pour configurer gladys ?

Et petite question bonus, tu as en tête une date à laquel tu aimerais terminer la v4 ? :roll_eyes:

1 « J'aime »

Je viens de pensé que j’ai un cas ou la désactivation / activation des scénarios peut être utiles.

Je suis d’astreinte une semaine sur trois. Du coup j’ai un scénario avec une alarme CRON qui me dit tous les soirs à 22heures que l’astreinte est terminée. Mais ce scénario me sert qu’une semaine sur trois.
Du coup pour le moment, dès que l’astreinte est supprimer, je supprime le scénario, et je le rajoute lorsque je suis de nouveau d’astreinte.

L’activation / désactivation du scénario pourrait être utiles dans ce cas :slight_smile:

Bonjour à tous ! :slight_smile:

Je me permets de revenir sur la partie éclairage. Pour proposer de nouvelles fonctionnalités et améliorations, je me base sur le module Awox d’@AlexTrovato qu’il améliore actuellement pour intégrer les ampoules Bluetooth Mesh de la marque. Ces ampoules ont 3 modes principaux :

  • Couleur (réglée en RVB si je ne me trompe pas)
  • Séquence (ce sont des modes préenregistré dans l’ampoule, transitionnant d’une couleur à une autre, par exemple : celles de l’arc en ciel)
  • Blanc (chaud à froid)

On peut contrôler sur ces ampoules les paramètres suivant :

  • Teinte couleur (colorpicker)
  • Luminosité couleur (seekbar)
  • N° Séquence (seekbar)
  • Température blanc (seekbar)
  • Luminosité blanc (seekbar)
  • On/Off (bouton à deux états)

Ce qui fait beaucoup de paramètres. :smile: Et sur l’IHM Gladys locale et Gateway ce n’est pas toujours pratique d’avoir autant de contrôles en même temps.

Voici donc mes propositions :

Un bouton à 3 états

Il permettrai de jongler entre les modes, dans notre exemple : Couleurs/Sequence/Blanc.
Alors on pourrait lui donner une forme triangulaire, ça serait joli, mais ça prendrait de la place. Sinon on peut le faire horizontalement, avec un pictogramme dans chaque état (ex : Couleurs, Blanc chaud/froid)

(o)–o–o | o–(o)–o | o–o–(o)

(j’ajouterai des images un peu plus tard)

Masquer des contrôles

La possibilité de masquer des contrôles dynamiquement en fonction de l’état d’un autre, ici : désactiver les contrôles des couleurs, quand on est en mode Blanc.

Idéalement le masquage des controles serait paramétrable, ainsi, ceux qui souhaitent avoir tout d’afficher tout le temps peuvent les garder tous.

Un color picker intelligent :nerd_face:

Chaque marque contrôle différemment la couleur de son ampoule certaines utilisent directement RGB (RVB) d’autres passent par HSL (TSL).
D’un point de vue utilisateur, on cherche plus souvent à changer la teinte de l’ampoule, que régler la couleur en RGB.

Je propose donc qu’on ait à disposition un color picker qui soit par défaut en TSL, mais que l’on peut aussi utiliser en RGB.

Lorsqu’on cherche à changer la couleur de l’ampoule, par défaut, on ne verrait qu’une seule seekbar (la teinte) et on pourrait faire afficher la saturation avec un bouton, mais aussi passer en RGB avec un autre bouton. La luminosité quant à elle peut être gérée directement avec la seekbar correspondante, inutile d’avoir une redondance.

Ensuite, Gladys se chargerait de calculer la couleur comme le module de l’ampoule en a besoin, que ce soit en 8 ou 16 bits, ou en pourcentage, avec des valeurs RVB ou TSL.

Un état pour les contrôles « En cours »

Actuellement les contrôles (boutons, seekbar…) n’ont pas de statut «action en cours» pour les périphériques avec retour d’état. Idéalement, on pourrait rajouter une animation (des petits ronds qui tournent dans le point du bouton par exemple) afin d’y palier.
Si l’action n’est pas faite (timeout), on peut avoir un clignotement léger du contour en rouge, avant que le contrôle reprenne son état précédent. Ou s’il retente plusieurs fois (param : retry X times) le contour serait orange.

Bref, tout ça pour dire qu’en terme d’expérience utilisateur, il ne faut rien laisser au hasard. Quand le système effectue une action, et qu’il mouline, l’utilisateur doit le « voir » ! :eyes:
Qu’en pensez-vous ? :smile:

4 « J'aime »

Non mais ça ce sera possible de toute façon :slight_smile: Avoir un scénario activé/désactivé, c’est de base dans l’UI!

Là on parlait de la possibilité d’activer/désactiver un scénario dans les actions d’un scénario (c’est un peu méta :p)

Top ton retour :slight_smile:

En fait ce qu’on s’était dis lors du meetup développeur, c’était que dans certains cas précis, on pourrait créer des types de deviceFeature spécifique à certains périphériques qui ont des comportements vraiment très spécifique.

Attention: Chaque cas doit être évalué avec un très grand soin, pour être sur qu’on ajoute pas des boutons hyper spécifique et qu’au final on fasse le contraire que ce que Gladys doit faire: unifier des comportements entre constructeur.

Du coup, j’ai du mal à voir en quoi dans ton cas, ces ampoules ont des comportements si spécifique!

A part les séquences (qui là effectivement peuvent être un bouton spécifique), le reste c’est comme les Philips Hue, non? Certes les format ne sont pas les mêmes, mais ça fait exactement les mêmes chose que des Philips Hue non?

Je suis pas forcément d’accord là dessus! Même quand ta lampe est en blanc tu peux avoir envie de mettre tes ampoules en jaune/rouge d’un coup pour tamiser?

Pour le color picker on en parlait plus haut dans cette discussion :slight_smile: L’idée c’est effectivement d’unifier le comportement des couleurs entre marque d’ampoule, ça sera pareil pour tout le monde!

100% d’accord là dessus!

Hello @pierre-gilles !

J’ai eu un peu de temps à tuer au boulot cette semaine donc j’ai fais quelques recherches concernant l’UI de l’éditeur de scènes.

Du coup je me suis fortement inspiré des “Flows” de Homey. Pour ceux qui ne connaissent pas, Homey est un système domotique conçu par la société Athom, et horriblement chère (c’est d’ailleurs à cause de ça qu’ils n’émergent pas).

Même si ils ne gèrent pas des scènes aussi complexe que Gladys 4, leur approche en terme d’UI est très friendly. Donc je me suis écrit une scène assez complexe justement pour pousser la réflexion en partant de leur approche horizontal et à base de carte.

Pour voir de quoi je parle voilà un exemple type de chez eux =>

Donc voici la scène que je me suis écrit
{
    "name": "Wake Up Tony",
    "selector": "wake - up - tony",
    "decscription": "Scene when user tony wake up.",
    "actions": [{
        "type": "devicetype.turn-on",
        "selector": "room.bedroom.light.binary",
        "value": 1,
        "then": [{
            "type": "delay",
            "duration_in_seconds": 10,
            "then": [{
                    "type": "speak",
                    "selector": "room.bedroom.pod",
                    "text": "Hello Tony !",
                    "then": [{
                        "if": {
                            "type": "sun.sunrise",
                            "selector": "house.malibu-house",
                            "so": [{
                                    "type": "rolling-shutter.open",
                                    "selector": "room.all.rolling-shutter.open",
                                    "value": "open"
                                },
                                {
                                    "type": "devicetype.turn-off",
                                    "selector": "room.bedroom.light.binary",
                                    "value": 0
                                },
                                {
                                    "type": "speak",
                                    "selector": "room.bedroom.pod",
                                    "text": "In Malibu it is 22 degrees, the sky is slightly overcast. The weather is ideal for surfing."
                                }
                            ]
                        },
                        "type": "dashboard.display",
                        "selector": "dashboard.portable",
                        "data": "{day}, {hour}, {weather}, {armor.state}, {armor.manufacturing.state}, {calendar.day}, {stock-market.stark-industries}"
                    }]
                },
                {
                    "type": "music.play",
                    "selector": "room.all.harman-kardon",
                    "value": "playlist-yyyy"
                }
            ]
        }],
        "type": "devicetype.set-value",
        "selector": "room.bathroom.shower.multilevel",
        "value": 26,
        "then": [{
            "type": "speak",
            "selector": "room.bedroom.pod",
            "text": "Your shower is ready",
            "then": [{
                "type": "devicetype.turn-on",
                "selector": "room.bathroom.light.binary",
                "value": 1
            }],
            "then": [{
                "type": "delay",
                "duration_in_minutes": 20,
                "then": [{
                    "type": "devicetype.turn-on",
                    "selector": "room.kitchen.coffee-machine.binary",
                    "value": 1,
                    "then": [{
                        "type": "speak",
                        "selector": "room.bathroom.pod",
                        "text": "I put your coffee to heat sir"
                    }]
                }]
            }]
        }]
    }]
}

C’es typiquement le genre de scénario que j’ai chez moi avec Gladys 3 actuellement :stuck_out_tongue:

J’ai fais quelques dessin sur papier mais comme je suis un piètre dessinateur j’ai fais quelques draft pour illustrer au mieux mes idées !

Screen principal des scènes

Edition de la scène “Wake up Tony” cité plus haut

Part 1

Part 2

Part 3

Part 4

Comme on peut le voir j’ai repris l’essentiel de Homey mais en modifiant la strucutre pour l’adapter aux scènes bien plus complexe que Gladys 4 sera capable de gérer. (Ça manque peut-être un peu de couleur) Je précise que se ne sont que des maquettes et que c’est du vite fait :sweat_smile:

Toute suggestion est la bienvenu ! :slightly_smiling_face:

J’ai aussi tenté une approche vertical sur le papier mais au moment de faire les maquettes j’ai abandonné dès le début car on perd drastiquement en visibilité de lecture. C’est du au fait de la largeur restreinte imposé par le template utilisé par dans Gladys 4.

10 « J'aime »

Hello @MathieuA!

Top tout ça, super réflexion.

Aha tu vas rire, j’ai une note sur mon ordi avec des inspirations d’autres systèmes, j’avais quasi le même screenshot :joy:

J’aime bien le fait que chaque scène soit une card, je pense c’est la meilleure approche pour caser le maximum de scène tout en restant visuel et clean.

Sympa qu’on puisse lancer la scène depuis la liste de scène, c’est clean ça!

Deux modifications que je ferais:

  • Le bouton « delete » ça fait pas propre je trouve, une croix en haut à droite serait peut être plus léger dans l’UI?
  • Le bouton « Add new scene » en bas c’est propre, mais quand tu as 200 scène c’est peut être chiant de devoir scroller jusqu’au bout pour en créer une. Un bouton en haut vers le search fait peut être plus sens. Ou un FAB, mais c’est très android ^^

C’est vraiment clean! GG!

Tu verrais comment la modification à l’intérieur d’une action? genre si je veux définir le temps de wait par exemple?

Tu l’as fais en HTML tout ça ou c’est juste un mockup?

Salut,
Je reviens sur cette partie :

Je pense qu’il serait utile de pouvoir « désactiver » un contrôle (sans pour autant masquer). Il arrive que le périphérique ne soit pas joignable, et le module pourrait désactiver le contrôleur pour signaler l’absence du périphérique.

Par exemple, dans le cas des ampoules connectées, lorsque j’appuie sur l’interrupteur physique de la lampe, le bluetooth n’est plus alimenté, l’ampoule n’est plus disponible : désactiver le bouton sur l’interface Gladys pour signaler la non dispo.

Je suis peut-être pas clair, mais je me comprends :wink:

2 « J'aime »

Je vois! Pas bête, ça fait sens dans pas mal d’intégrations :slight_smile: Je note ça

1 « J'aime »

Salut à tous!

Petit compte rendu d’avancement de mes développements :slight_smile:

1/ Un premier poc de module bien avancé

J’ai bossé aujourd’hui sur le développement d’un premier module de gestion de lumière, le module Philips Hue. Il me sert de base pour expérimenter l’API, et coder de bout en bout un module, avec tests inclus.

L’objectif est que même les modules soient couvert à 100% par des tests. Pour cela tous les appels à des librairies externes sont mockés grâce à proxyquire.

Pour voir le service philips-hue next-gen, c’est ici =>

https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/services/philips-hue

Les tests du modules philips-hue sont ici =>

https://github.com/GladysAssistant/gladys-4-playground/tree/master/server/test/services/philips-hue

N’hésitez pas si vous avez des retours, rien n’est définitif :slight_smile:

2/ Un front-end de démo hébergé en ligne

Et oui, grâce au fait que le frontend de Gladys 4 soit désormais une PWA complètement séparée du backend, ça me permet d’héberger online un version de démo de Gladys, qui est déployée à chaque merge master grâce à Netlify automatiquement. 100% transparent pour moi, pas de maintenance à faire.

ça m’a pris 2 minutes de setup ça, et franchement c’est cool!

Le frontend de démo de Gladys 4 est disponible ici =>

https://demo.gladysassistant.com/dashboard

Attention: c’est 100% du travail en cours, donc peu de choses sont fonctionnels aujourd’hui, mais l’avantage c’est que maintenant je pourrais vous demander plus facilement des retours niveau UI, sans forcément à ce que vous ayez à déployer un Gladys localement. Pas mal non?! :smiley:

Pour information, j’ai mis dans le frontend un mode démo: tous les calls HTTP ne sont pas fait sur Gladys (car en démo c’est juste le frontend qui tourne en statique), mais juste sur un fichier JSON statique qui a des réponses de démo afin que l’UI rendent bien :slight_smile:

C’est tout bête, mais c’est uniquement grâce à la nouvelle architecture de Gladys que je peux lancer aussi facilement ce genre de chose. J’imagine pas la complexité que ce serait d’héberger un gladys de démo statique avec la v3…

3 « J'aime »

En terme d’UI, je trouve que la possibilité d’arranger les blocks soit même, soit en direct drag’n drop, soit dans les réglages seraient pas mal.
Préférence pour le drag’n drop, j’ai un peu de mal avec la gestion actuelle et des numéros d’ordre (ou alors faudrait pouvoir les éditer pour les réarranger facilement et pas tout suppr pour refaire un ordre)

Je sais pas si cette remarque à sa place ici, je balance ça, vous pouvez envoyer les cailloux.

Edit : manque un N majuscule à “navigation” dans “intégrations”

Hello !

Les grand esprits se rencontrent :joy:

Je suis fais la réflexion aussi et j’ai finalement laissé comme ça, surtout par flemme de tout re-modifier :stuck_out_tongue:

Mais si tu veux je peux tenter quand j’aurais un peu de temps à tuer pour voir ce que ça donne !

Ahah bien vu ! C’est un reproche que j’ai souvent fait à Gladys 3 en plus ! J’avous que sur le coup j’ai pas refléchis :stuck_out_tongue:

Le FAB fait un peu plus sens a mon gout, surtout qu’il se démocratise beaucoup. Je trouve que c’est une excellente idée dans le sens ou on peut modifier un peu sa forme, son emplacement et surtout l’utiliser dans plusieurs views de front.

Il pourrait même devenir multifonction pour alléger l’UI !

Exemple: Le FAB en lui même permet de créer une scène, mais si on sélectionnent plusieurs scènes le FAB ouvre un menu actions pour par exemple supprimer toutes les scènes sélectionnées ou même les exportées dans un JSON ou je ne sais quoi d’autre :slightly_smiling_face:

Les applications du FAB sont multiples et peuvent s’avérer très pratique ! C’est qu’une question de réflexion mais il est pas exclusif à Android même si c’est pour Android que Google l’a créé ^^

J’ai pensé à a une petite popup qui s’ouvre à coté quand on clique dessus. J’ai pas encore poussé la réflexion la dessus je t’avoue.

Ce n’est que des mockups :stuck_out_tongue:

GG pour ton avancé :muscle:

Tu parles du dashboard? Carrément ça sera le cas! Pour l’instant le dashboard n’a pas du tout été codé, c’est juste un pur copié collé du gateway, en statique, rien n’est fait ^^

Comme je mettais dans le manifeste le dashboard sera 100% personnalisable, avec des blocks custom. Et effectivement je veux que ça soit en drag and drop, probablement via un mode édition (à définir)

Bien vu :stuck_out_tongue:

T’embête pas, on voit l’idée.

Là je vais plutôt avoir besoin d’aide pour l’implémentation HTML de tout ça, moi qui suit pas très fan de CSS je vais avoir besoin d’aide :stuck_out_tongue:

Si certains veulent donner leur coup de main, n’hésitez pas ^^

Mes objectifs du jour c’est de continuer mon boulot sur le service philips hue et d’avoir ASAP une démo de bout en bout fonctionnel, c’est à dire:

  • Ajout et configuration d’un service dans l’UI
  • Configuration des périphériques
  • Contrôle d’un périphérique (du clic depuis l’UI, à la requête vers Gladys, ensuite l’event émis, le contact du module, puis ensuite tous les événements qui en découle: recherche de trigger lié à ce périphérique, à la propagation du nouvel état dans l’UI)
1 « J'aime »

Pour ma part, je viens de tester Preact sur un petit projet et ça à l’air top. Je veux bien aider mais je préfère que l’on me dise concrètement ce qui peut être intéressant à faire. Du genre me donner une tâche (faire le module bidule, etc). J’aime bien le front et le back :slight_smile: Je suis pas chiant ahah

Donc je sais pas si y a un trello où on peut assigner le travail à des personnes ?

Merci :slight_smile:

Pas de Trello pour l’instant. Pour le moment je ne pense pas que le projet soit en l’état de bosser dessus en mode à la chaine mais ça va venir. Je préfère bien définir les bases proprement, j’expérimente encore sur tout ce qui est architecture des dossiers, structure des classes, flow des events et modèle de donnée.

Dès que j’ai le projet qui fonctionne de bout en bout pour chaque type de module, là oui j’aurais besoin d’aide pour migrer les modules Gladys 3 vers Gladys 4 :slight_smile: Je mettrais toutes les tâches en issues GitHub je pense, et on les fermera une par une :wink:

Mais avant de passer en mode « industriel », je ferais la doc pour que ce soit facile de contribuer, et d’être cohérent sur l’ensemble du projet.

Ici je demandais surtout une petite aide CSS pour la vue scène du frontend, rien de méchant :stuck_out_tongue:

Tiens @MathieuA, je me connecte sur Twitter et là bam je vois une super inspiration!

ça ressemble pas mal à ce que tu as fais, ça confirme qu’on serait pas les seules :stuck_out_tongue:

(les liens entre chaque tâches sont fixés, c’est juste pour rendre ça clair, rien à voir avec les sacs de noeuds des interfaces de scénarios de certains éditeurs)

1 « J'aime »

Okkkk j’avais pas compris. Honnêtement je laisse le CSS aux autres :smiley:

Moi je suis plus à utiliser quelque chose d’existant et à le transformer un tout petit peu. J’attend avec impatience alors.