Dans l’idée je suis plutôt d’accord que ça serait bien, dans la pratique je me demande si on veut faire ça exactement comme ça
En gros tu veux pouvoir créer tout un programme, avec des blocs de codes qui s’exécutent conditionnellement. Je pense qu’il y a une grosse réflexion à avoir sur comment on pourrait faire pour que ce soit en même temps puissant mais en même temps simple d’utilisation et que ça s’apparente pas à de la programmation déguisée visuelle (a la blockly, ce qu’on veut absolument éviter dans Gladys 4)
Si tu as une idée d’implémentation et que tu as une maquette en tête je suis preneur !
Je sais que Zapier fait ça, ça pourrait être une source d’inspiration
Je pense que ce qui fait penser à de la programmation c’est surtout le “sinon si …”. Cette partie peut en effet être rediscutée.
Par contre le “sinon” est vraiment super utile et naturel à utiliser dans une scène je trouve.
Mon exemple précédent pour allumer ou éteindre une prise est faisable avec le “sinon”, mais compliqué sans.
Sympa pour la proposition @Pasdesushi, après j’ai du mal à comprendre la logique, parce qu’en soit dans un bloc d’action tu peux mettre autant d’action que tu veux, donc si tu as 10 actions dans ton bloc, comment ça s’affiche ? ça sera pas logique non ?
Je reviens sur cette demande de fonctionnalité pour avoir un Si/Alors/Sinon dans les scènes.
Mon cas d’emploi: J’ai un chargeur pour mon vélo électrique. Il consomme un peu, même quand il est à vide (sans vélo branché), et je veux éviter cette conso. Je veux aussi que la charge se déclenche à partir de 22h quand mon électricité devient moins cher, mais sans devoir redescendre au sous-sol à cette heure-là. Donc j’ai ajouté une prise domotisée avec mesure de conso, pour optimiser ça. Et je détecte si le vélo est branché en vérifiant si le chargeur consomme beaucoup, ou pas
Ma scène, j’aimerais que ce soit :
chaque jour à 22h,
allume la prise, et vérifie la conso quelques secondes après
si la conso est <1W, alors éteint la prise
sinon, attend 5h, puis éteint la prise
Aujourd’hui, j’ai fait deux scènes pour ça, et c’est dommage
chaque jour à 22h,
allume la prise, et vérifie la conso quelques secondes après
continue seulement si la conso est <1W,
éteint la prise
et
chaque jour à 22h,
allume la prise, et vérifie la conso quelques secondes après
continue seulement si la conso est >1W
attend 5h, puis éteint la prise
J’ai voté, et la demande de fonctionnalité se retrouve en 3ème position, si j’ai bien vu
Et en pratique, graphiquement, une façon simple de rajouter cette fonction ça pourrait être un bloc du style « Si [condition], alors [aller à l’étape n°__] sinon [aller à l’étape n°__] ».
Mais pour que ça marche, il faudrait peut-être empêcher qu’il y a d’autres actions dans ce bloc (pour que le moteur de scènes reste ‹ linéaire ›). Et il faudrait ajouter une action « mettre fin à la scène ». Ainsi on pourrait avoir par exemple :
déclencheur
si [condition] alors [étape2] sinon [étape5]
action… (on vient là si condition remplie)
action…
mettre fin à la scène
action… (on vient là si condition non remplie)
action…
C’est juste une idée, si ça peut aider à penser la faisabilité…
Perso cest deja le bordel chez moi 64 scènes…
Vivement les tags
Et je gere le cas justement du si sinon comme ca
Une scene avec le trigger quelques action generique et ensuite jappel deux scene qui nont pas de trigger et que des actions avec des if en premier cas
Je pense que certain seront ravi mais personnellement je ne trouve pas cette proposition d’un grand intérêt.
Ta proposition avec le SINON va lancer une autre scène donc il faut créer 2 scènes.
Une pour l’allumage et une autre pour l’extinction du chauffage si on reprends ton exemple.
Sauf que actuellement avec 2 scènes une allumage et une extinction il suffit juste d’adapter le déclencheur ou l’action Continuer seulement si
avec au lieu de « Dernière valeur de l’appareil »
avoir « Dernière valeur de l"exécution de la scène »
cela permettrait d’avoir
Déclencheur : utilisateur quitte la maison
Action 1 : Si la maison est vide
Action 2 : Démarrer la scène « Tous les detecteurs sont fermés ? »
ta proposition Action 3 : Continuer seulement si
(« Dernière valeur de l"exécution de la scène » « Tous les detecteurs sont fermés ? » « egal » « true »)
Sinon
Démarrer la scène "Envoi msg :Activation Alarme impossible "
Action 4 : Démarrer la scène « Activation de l’alarme »
Cela implique d’avoir un flag de réalisation de la scène qui serait à false lors du lancement de la scène et true si elle se termine, est-ce réalisable ?
(cela peut servir dans un cas pour l’alarme
1er scène « Détection d’un capteur ouvert »
début des de la scène flag = false
Déclencheur : détecteur 1 off OU détecteur 2 off OU détecteur 3 off
Action : passer la scène à True
2ème scène « Tous les detecteurs sont fermés ? »
début de la scène flag = false
Déclencheur : détecteur 1 on
Action : continuer seulement si
détecteur 2 on
Action : continuer seulement si
détecteur 3 on
fin des actions flag = true
Je réagis un peu tard à la proposition de @pierre-gilles mais ça me plaît bien. Ça apportera de la souplesse, et la crainte d’avoir trop de scènes n’est plus un souci maintenant qu’il y a les tags.
Et c’est vrai que pour l’instant je fais également une duplication de scène avec les deux variantes de ‹ Continuer seulement si… › mais c’est un peu agaçant de penser à changer les actions communes quand je fais des ajustements…
Après je ne dit pas que je suis contre et même si cela peut aider certaines personnes alors il faut le faire.
Mais comme cela ne réduira pas le nombre de scènes cela n’est pas une priorité pour moi.