Plugin Séquencement d’actions --> Nouveau plugin pour Beta-tests!

Je préfèrerais intervertir le déclenchement et l’annulation. Comme ça si elle est immédiate elle est exécutée quand même. Si elle est différée elle n’est pas exécutée. Ça me paraît plus logique… non ?

oui c’est parfaitement logique !

Ok je regarde ca tout à l’heure.

Je suis en train de faire l’option de choix de séquencement des conditions pour le déclenchement, avec un peu de chance la beta sera dispos tout à l’heure.
(Pour la question "faut-il que les conditions soient toujours valides lors du déclenchement de la dernière condition, j’ai ajouté un bouton pour que les 2 options soient dispo. Ça permet aussi d’inclure les conditions de plage temporelle dans les conditions, ce qui n’est pas possible si on avait que l’ordre des triggers)

Je t’ai répondu à l’instant, un peu différemment, mais ça devrait simplifier et ajouter plus de possibilités.

Mais je suis en train de me dire que ma réponse ne tient pas la route… la séquence étant un mode de déclenchement spécifique et qui nécessite d’avoir défini des triggers avec des conditions de validité… donc laisse comme tu as fait…

oui, la séquence ne pourra évaluer que les conditions sur « valeur », les plages temporelles n’étant que des conditions et non des triggers.

(J’ai quasi fini… reste à faire des tests et la doc…)

(Il devient compliqué ce plugin par contre…)

Oui, mais il va être trooooop puissant ! :innocent:

Tiens, tu veux une idée d’amélioration ?

Tu pourrais faire un onglet « Conditions de report des actions »… et avoir la possibilité de reporter de X minutes sur d’autres conditions que celles qui permettent de déclencher :wink:

C’est bien toi qui m’as dit que tu aimais bien avoir de nouvelles demandes ? Mouarf !

Hello,

Mauvaise nouvelle pour moi : tout ce que j’ai utilisé fonctionne … donc j’ai plus rien pour raller :sweat_smile:

Sinon, concernant l’ordre des actions/annulations, vos remarques me semblent logiques aussi…

Hello,

réponses et beta du jour :wink:

=> En fait je peux pas… Les 2 déclencheurs (identiques) prennent 2 chemins différents et je sais pas dire de façon déterministe qui va s’exécuter avant. Si c’était vraiment un cas fréquent, je pourrais mettre un sleep() d’1 seconde sur les déclenchement d’annulation pour être sur que Jeedom les traitent après, mais c’est très très moche comme façon de faire et ça retardera systématiquement tout les déclencheurs d’annulation, pour gérer un cas qui me semble exceptionnel et de toute façon pas une bonne pratique… (tu sais dire un cas concret où c’est utile d’avoir le même déclencheur avec les mêmes conditions sur le lancement et l’annulation ?)

Hum… donne moi un cas concret où ça sert à quelque chose et j’y réfléchirai ! :wink:

Même pas un petit log apache qui traîne ? :blush: :wink: Cool alors !!

Les infos sur la beta du jour : j’ai ajouté la condition de déclenchement par test du séquencement des conditions. C’est pas super intuitif à paramétrer, mais ça me semble marcher plutôt pas mal !

Et là je pense qu’on va commencer à être plutôt complet !!

Merci pour vos tests !

AgP

1 « J'aime »

Oui, par exemple de la gestion de timer pour une lumière. J’ai un détecteur de présence qui déclenche un allumage immédiat à 50% (dimmer) et une extinction différée 2 minutes plus tard.
Si entre temps je modifie la valeur de ma lampe manuellement, je peux décider de reporter l’extinction de 10 minutes car l’utilisateur a décidé de modifier le niveau lumineux. Ce n’est pas le trigger d’allumage mais il faut tenir compte de l’action manuelle.
Ça peut servir pour reporter l’activation d’une alarme sous certaines conditions, éviter de fermer un volet trop vite si entre temps on a ouvert la fenêtre…etc… ça peut surtout être utile avec un capteur qui répète « toujours » son message.

Non, j’ai juste essayé pour voir ce que ça faisait… :upside_down_face:

[quote=« Theduck38, post:151, topic:24742 »]

Mouais… ça va devenir beaucoup trop compliqué à comprendre et à configurer…
J’ai déjà une case à cocher pour reporter les actions en cas de multideclenchement (ok c’est sur les mêmes conditions).
Je pense qu’en l’état c’est déjà pas mal !

Le truc que je veux encore améliorer c’est les commandes pour les plages temporelles et ajouter ces foutu variables comme déclencheurs (personne ne m’a répondu sur le forum développeur à ce sujet, ça doit pas être si courant en fait…)

Et surtout j’aimerai que tout ce qui est présent actuellement soit robuste ! Donc continuer des tests avant un passage en stable.

Hello,

bien que vous ne me l’avez pas demandé (ou pas autant en tout cas !), j’ai ajouté dans la nouvelle beta du jour (après promis ça devrait commencer à ce calmer le rythme…) une nouvelle fonctionnalité qui me plaît carrement et qui devrait permettre au plugin de démultiplier (encore !) ses capacités sur les déclenchements : les conditions type « scenario » :blush:

Je m’explique : pour utiliser les variables, les opérations sur le temps des commandes de type « heure de levé du soleil + 10 min », ou n’importe lesquelles des fonctions core utilisables dans les conditions des scenarios, j’ai ajouté un champ « Condition type scenario ».

On peut en ajouter autant qu’on veut, mais là où ça change tout, c’est qu’elles sont ensuite utilisables pour le « x parmi N valide », ou en condition de validation final d’un séquencement de conditions ! Génial, non !? :rofl: :innocent:

Je vous laisse aller lire la doc du jour du plugin pour tous les détails : Doc - beta du 4 mai

Donc par exemple, si vous voulez déclencher avec 3 actions successives, mais uniquement si le soleil est couché depuis plus de 15min, vous pouvez ajouter à votre séquence de déclenchement une condition « time_op(#[Developpement][domogeek][Coucher du soleil scénario]#, +15)>#time# ».

Et ca marche avec toutes les fonctions de calcul des scenarios, genre « durationBetween(#[Developpement][Capteur porte][Etat]#,1,yesterday 00:00,yesterday 03:00) » pour donner le temps où une commande donnée était active sur une période donnée par exemple.

Bon, et comme tout ça devenait un peu complexe et touffu, j’ai découpé l’onglet des déclencheurs en 2…

(Dispo sur le market en beta évidemment !)

Go pour la passer en stable v2 celle là ? :blush:

1 « J'aime »

Magnifique ! Bravo !

1 « J'aime »

Ou la la ! Bon ben double dose de café et tests !

1 « J'aime »

Bon ben j’ai refait un machin compliqué … Je sais pas si c’est mieux ou moins bien : 1 mode (avec 4 états) + 2 scénario remplacés par 4 séquences…

Voilà un schéma rapidos sous PP


Mini légende : Action en vert (avec un ET global), Annulation en Orange (avec un Ou global) et les Action/Annulation forcées en noir

Reste à tester avec notamment les actions/annulations multiples (par exemple annulation via un trigger IPTV==0 et via le forçage de la part de « Seq Volets Commun »)

Où là oui c’est compliqué !! :scream:

Ya plus qu’à espérer que ça marche direct, que j’ai pas à t’aider à debugger ca ! :rofl: :wink:

Salut,

Pour l’instant, tout n’est pas cassé :+1:… J’ai eu 2 comportements étranges à confirmer mais je pense que c’est lié à la séquence actions/annulations qui se déroule un peu dans n’importe quel ordre. J’ai ajouté des délais pour contourner le phénomène.

Sinon dans les log du listener j’ai ça (sans horodatage)

PHP Warning:  date() expects parameter 2 to be int, string given in /var/www/html/plugins/sequencing/core/class/sequencing.class.php on line 267

Hello,

:+1:

Ok je vais mettre un if avant, je vois ce que c’est.
Par contre même après la mise en place des logs apache2, moi je n’ai toujours aucune erreur de ce type qui remonte chez moi…

Mon log apache.error ressemble a ça :

[Sat May 02 18:39:34.554763 2020] [mpm_prefork:notice] [pid 819] AH00163: Apache/2.4.25 (Raspbian) configured -- resuming normal operations
[Sat May 02 18:39:34.555073 2020] [core:notice] [pid 819] AH00094: Command line: '/usr/sbin/apache2'
tail: cannot open '/var/www/html/core/class/../../log/sequencing' for reading: No such file or directory
[Mon May 04 13:16:53.013580 2020] [core:notice] [pid 819] AH00052: child pid 30023 exit signal Bus error (7)
[Mon May 04 13:16:53.015532 2020] [core:notice] [pid 819] AH00052: child pid 6024 exit signal Bus error (7)
[Mon May 04 13:16:53.015762 2020] [core:notice] [pid 819] AH00052: child pid 6031 exit signal Bus error (7)
[Mon May 04 13:16:53.016175 2020] [core:notice] [pid 819] AH00052: child pid 6032 exit signal Bus error (7)
[Mon May 04 13:16:54.018664 2020] [mpm_prefork:notice] [pid 819] AH00169: caught SIGTERM, shutting down
[Mon May 04 13:17:06.444707 2020] [mpm_prefork:notice] [pid 786] AH00163: Apache/2.4.25 (Raspbian) configured -- resuming normal operations
[Mon May 04 13:17:06.445705 2020] [core:notice] [pid 786] AH00094: Command line: '/usr/sbin/apache2'
[Mon May 04 13:20:16.120316 2020] [core:notice] [pid 786] AH00052: child pid 842 exit signal Segmentation fault (11)
[Mon May 04 13:20:16.121486 2020] [core:notice] [pid 786] AH00052: child pid 1943 exit signal Bus error (7)
[Mon May 04 13:20:16.121783 2020] [core:notice] [pid 786] AH00052: child pid 1944 exit signal Bus error (7)
[Mon May 04 13:20:16.122112 2020] [core:notice] [pid 786] AH00052: child pid 1946 exit signal Bus error (7)
[Mon May 04 13:20:17.124022 2020] [mpm_prefork:notice] [pid 786] AH00169: caught SIGTERM, shutting down
[Mon May 04 13:20:30.685982 2020] [mpm_prefork:notice] [pid 809] AH00163: Apache/2.4.25 (Raspbian) configured -- resuming normal operations
[Mon May 04 13:20:30.697234 2020] [core:notice] [pid 809] AH00094: Command line: '/usr/sbin/apache2'

Sinon j’ai eu une idée hier pour améliorer l’évaluation « personnalisée » pour mixer à la fois les notions de séquencement et de validité partielle avec tout le reste, là ça sera vraiment souple !
Je bosse la dessus aujourd’hui.

A+

Re,

Regarde également si le debug de php est activé

root@raspberrypi:~# more /etc/php/7.3/apache2/php.ini |grep log_errors
; log_errors
log_errors = On
; Set maximum length of log_errors. In error_log information about the source is
log_errors_max_len = 1024

ça c’est essentiellement les arrêts/relance du service apache. Sauf un problème de droits sur le log sequencing. Verifie que le proprio/groupe est www-data

Bizarrement (je suis bien en jeedom v4, mais sous Raspbian Strech), je n’ai pas de dossier php/7.3 mais uniquement 7.0
J’ai donc fait

more /etc/php/7.0/apache2/php.ini |grep log_errors

Et j’avais bien les log_errors = On

J’ai refait « sudo chown -R www-data:www-data /var/www/html/log/apache.error »…