Je pense oui, histoire que chacun n’ait pas à tout redévelopper Après pour les cas très particulier le développeur devra coder lui même sa fonction de transformation dans un sens/dans l’autre.
Du coup tu verrais quoi comme format de couleur toi? Je pense il faudrait un format entier comme ça on peut le stocker et le colorpicker fonctionne, t’en pense quoi?
Cela serait peut être bien de prévoir nativement Gladys v4 avec un front-end et un back-end
le front-end donne accès au box ( boutons, infos,…)
le back-end accès aux paramétrages (ajout périphérique…)
avec aussi la possibilité de thème coté front-end
ainsi suivant l’endroit, le terminal on accède au front-end sur le thème désiré (avec un paramètre défini coté back-end [ user → terminal → template])
C’est effectivement le cas dans Gladys 4, le front est une PWA avec preact et le back un serveur Express
Pour le thème, Gladys 4 va offrir la possibilité de créer des dashboard personnalisé (et pas qu’un seul dashboard, plusieurs!), donc ça devrait répondre au besoin.
Pour avoir différentes UI, pour l’instant on va se concentrer sur créer une seule UI, c’est déjà assez complexe comme ça
Je partage avec vous une réflexion que j’ai eu en voyant le “Light device State”. Ne devrait-on pas représenter le changement de la température de la couleur ? Après c’est vrai que toutes les ampoules ne le gèrent pas, mais tout comme le HSB en fait. Du coup est-ce que le schéma ne devrait pas représenter que les états ON/OFF?
Ce schéma était un exemple non-exhaustif Pour les ampoules, il faut qu’on choisisse effectivement le format qu’on va gérer, pour l’instant on est plus parti sur l’approche philips hue, après je pense qu’on va voir lors de l’implémentation avec les différents fabricants si ça se plug bien ou pas, et comment on résout les différentes incompatibilités.
Aujourd’hui j’ai travaillé sur tout le moteur de scénario, avec deux objectifs:
Concevoir un moteur riche avec toutes les fonctions dont on a besoin (Trigger + conditions multiples avec des ET/OU + actions)
Concevoir un moteur très performant et économe en ressource
Ce soir je viens de finir une première version minimale du moteur, et… ça dépote!!
1/ J’ai défini les différents évènements, états, et conditions dans un fichier de constantes. Ce n’est pas une liste exhaustive, mais cette première liste m’a permis de commencer Je l’étofferais au fur et à mesure des développements (il faut pour cela écrire les schémas UML d’états, je fais ça proprement).
2/ Tous les états sont stocké dans un store en mémoire pour des performances en lectures maximales. Les états sont persistés sur disque mais cette persistence n’est utile que pour la visualisation (courbes), pas l’interrogation en temps réel dans un scénario.
J’ai donc fais une petite simulation de performance avec mon premier moteur.
J’ai créé un cas d’usage typique voir un peu extrême:
Un utilisateur avec 300 scénarios (généré aléatoirement, avec des triggers au hasard)
5 conditions par trigger
1000 états à surveiller
Pas de travail asynchrone. L’objectif du benchmark n’est pas de tester la performance d’une tierce-partie, mais juste du moteur en lui même, donc on évalue ici juste la performance de l’évaluation des conditions, en gros: combien le moteur peut manger par seconde!
je suis pas sur que ça soir utile, pour capter le lever du soleil c’est le changement d’état (night => day) et inversement pour le coucher.
Après personnellement je ne vois pas à quoi peuvent servir toutes les autres propriétés, en sachant que tu peux le déduire avec l’heure en plus de l’état
Au niveau des scénarios, j’ai une petit suggestion. Est-ce qu’il serait possible d’avoir un paramétrage qui permet de les activer et désactiver ?
Un cas pour illustré l’intérêt :
J’ai un détecteur de présence. Quand il détecte un mouvement il lance un scénario qui allume la lumière extérieure pour une durée de 15 seconde puis il l’éteins.
Je peux aussi allumer et éteindre la lumière manuellement si je le souhaite, avec un interrupteur.
Si j’allume manuellement la lumière, car je sais que j’en ai pour un moment. (Par exemple je fais des aller/retour pour décharger les courses de ma voiture). Quand mon détecteur va me voir, le scénario va se déclencher et donc éteindre la lumière 15 secondes plus tard alors que ce n’est pas forcement ce que je veux.
Du coup il y aurait un intérêt à ce que le scénario passe en “désactivé” quand j’allume manuellement la lumière.
Cet exemple n’est peut-être pas le plus logique et peut-être solutionné de bien d’autre manière, je le sais. Mais je pense qu’il y a d’autre cas où ça peut servir
Pourquoi pas, mais ce sera à mon avis un état supplémentaire, vu que pour la plupart des cas d’usage la vrai question dans les scénarios c’est « est-ce que c’est la nuit ou le jour » donc il ne faudrait pas perdre cette information non plus!
Je vois l’idée!
Je pense que dans ton cas, la solution c’est de mettre une condition au scénario « ET que la lumière n’est pas déjà allumée », c’est pas logique d’annuler un scénario pour ça!
Je vais réfléchir pour la possibilité d’annuler un scénario dans les actions, je ne suis pas sur que ce soit ce qu’on veuille, j’ai peur que ça introduise des comportements illogiques qui sont juste solvable par des simple conditions ( parce que bon annuler/rétablir un scénario à chaque fois que tu allume/éteins ta lumière, c’est hyper lourd!)