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

Non, ca doit etre que mon truc de log est mal configuré…

PHP Notice:  Undefined index: action_label_liee in /var/www/html/plugins/sequencing/core/class/sequencing.class.php on line 660

=> trop galère à corriger pour pas grand chose, je laisse comme ça (c’est un cache qui utilise plusieurs champs dans son nom pour être sur d’être unique, donc si c’est pas action_label qui est vide ça sera action_label_liee…)

PHP Notice:  Undefined index: action_label_liee in /var/www/html/plugins/sequencing/core/class/sequencing.class.php on line 737

=> idem

PHP Notice:  Undefined index: action_label_liee in /var/www/html/plugins/sequencing/core/class/sequencing.class.php on line 738

=> corrigé (enfin… j’ai viré le log entier…)

Je suis en train de tester la dernière version, c’était bien galère ! Maintenant on peut tester une condition sur la durée et plus de tout le reste.
Genre : Température comprise entre x et y pendant plus de 30 min
(Mais c’est soit sur une durée, soit une répétition de valeur, on peut pas dire "température entre x et y pendant 30 min, 3 fois dans la journée…)

Et il faut évidemment que je refasse (encore…) la doc avec la nouvelle mise en page !

Edit : nouvelle beta en ligne, mes tests sont ok, par contre je ferai la doc demain !
Changelog de cette beta
@Theduck38, tu peux tester les différents types de triggers et conditions et me dire si ca correspond bien au comportement qu’avait PLC ou en tout cas à ce que t’avais en tête quand tu me les as demandés ? Merci !

Hello @naboleo,

J’ai un soucis avec le regex :

Je voudrais matcher cette magnifique expression :

((%humid1%+%Humid2%+%Humid3%+%Humid4%+%Humid5%)>=3)&&%couché soleil%&&%Levé soleil%&&%Moins4hArrosageAujourd’hui%&&!%Pluie aujourd’hui%

Ce regex ne choppe pas grand chose là dedans, est-ce à cause des (, des + ou des majuscules ?

En reprenant ton regex précédent : %([\w\sÀ-öø-ÿ-]*)%, c’est mieux, il n’aime juste pas les ’ dans « Aujourd’hui » :

et sans les ', c’est tout bon :

Tu as une correction pour /@([\p{L}\p{M}-_\s]*)@/ ou sinon je reprend juste l’autre et je dis dans la doc qu’il ne faut pas d’apostrophes ?

Danke !

Je regarde pour adapter la regex avec la chaine qui pose problème. Pour les apostrophe, je suis pas certain qu’on arrive à faire quelque chose, c’est le même caractère que la simple quote …

En même temps c’est logique que ça marche pas il manque les chiffres (confondu N et M pour les caractères accentués)

Donc

/%([\p{L}\p{M}\p{N}-_\s]*)%/

Pour l’apostrophe, il y a ça

%([\p{L}\p{M}\p{N}-_\s’]*)%

Sinon chez moi il y a une différence

Pour moi, aucun de ces 2 là ne veulent de mes accents…

Enfin… sur https://regex101.com/ oui, mais sur Jeedom, non !

[Berlin][Seq Temperature] - Evaluation "perso", condition initiale : ((%humid1%+%Humid2%+%Humid3%+%Humid4%+%Humid5%)>=3)&&%couché soleil%&&%Levé soleil%&&%Moins4hArrosageAujourdhui%&&!%Pluie aujourdhui%
[Berlin][Seq Temperature] - Condition après moulinette regex % : ((1+1+1+1+1)>=3)&&%couché soleil%&&%Levé soleil%&&0&&!0

Alors que lui /%([\w\sÀ-öø-ÿ-]*)%/, ca passe bien :

[Berlin][Seq Temperature] - Evaluation "perso", condition initiale : ((%humid1%+%Humid2%+%Humid3%+%Humid4%+%Humid5%)>=3)&&%couché soleil%&&%Levé soleil%&&%Moins4hArrosageAujourdhui%&&!%Pluie aujourdhui%
[Berlin][Seq Temperature] - Condition après moulinette regex % : ((1+1+1+1+1)>=3)&&1&&1&&0&&!0

C’est peut-être la faute de mon clavier (Allemand…), pour faire des accents il me faut 2 touches : d’abord je choisi l’accent et puis la lettre…

Si celui là /%([\w\sÀ-öø-ÿ-]*)%/ passe bien aussi chez toi pour cette séquence je pense prendre plutôt celui là et interdire les apostrophes (françaises ou allemandes…)

Je ferai un essai après la mise à jour, possible qu’il ya ait aussi une différence entre php7.0 et mon php7.3
Si jeedom n’est pas d’accord, il va falloir faire avec… celle-ci fonctionne ici. ça permettra de mettre tous le monde au même niveau

J’ai donc pris /%([\w\sÀ-öø-ÿ-’]*)%/, en lui rajoutant l’apostrophe « française » que je n’ai pas sur mon clavier…

Nouvelle beta dispo avec cette correction et quelques debugs, mais surtout une bonne mise à jour de la doc.
J’ai fait une page séparée pour les exemples avec des copies d’écrans et explications : exemples.md

@naboleo, tu devrais pouvoir mettre ta machine à laver sur ce plugin au lieu de SeniorCare maintenant qu’il y a une détection de durée sur la condition ? Ton capteur de mouvement =0 (ou inférieur à x) pendant plus de xx min ?

Si vous avez des exemples à ajouter à la doc ca serait top !

Je vais faire un post dans la nouvelle section « Fils d’actualité » pour informer de toutes ces évolutions et de la sortie imminente de la stable v2.0.0 (ce dimanche ?)

Oui ça correspondra plus au cas d’usage que SeniorCare

Tu dois être la première à permettre à tes utilisateurs d’essayer ton plugin avant de l’acheter, Bravo !!!

1 « J'aime »

Bonjour,

J’ai lancé quelques tests entre tonte du jardin et débroussailleuse…

J’ai un souci avec la sauvegarde de la parte « Séquencement » : je mets une formule, je mets un temps max, je sauve, et les deux cases sont vides…
J’ai essayé de recréer un équipement, mais c’est pareil.
J’ai essayé sur Chrome, à tout hasard… mais pareil.

Voici le log :

[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanAllDelayedActionsCron
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Boucle de $jsSensors : key : trigger
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Boucle de $jsSensors : key : trigger_cancel
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanTriggersListener
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanLaunchAndCancelSequenceCron
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanAllTriggersCron
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanAllDelayedActionsCron
[2020-05-09 15:04:58][DEBUG] : [Aucun][Test séquence 2] - Fct cleanAllTriggerCheckDelayedCron
[2020-05-09 15:04:58][INFO] : [Aucun][Test séquence 2] - Sauvegardé
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllDelayedActionsCron
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Capteurs sensor config lue, nom : Truc1 - cmd : #24#
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger_cancel
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - New Capteurs config : type : trigger, name : Truc1, cmd : #24#
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2][Truc1]-> 1
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Fct cleanTriggersListener
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - set Listener pour déclencheur :[Test2][Test séquence 2][Truc1] - sur l'event : #24#
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - CRON programmation existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - CRON programmation_cancel existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:05:36][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllTriggersCron
[2020-05-09 15:05:36][INFO] : [Test2][Test séquence 2] - Sauvegardé
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllDelayedActionsCron
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Capteurs sensor config lue, nom : Truc1 - cmd : #24#
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Capteurs sensor config lue, nom : Truc2 - cmd : #31#
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger_cancel
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - New Capteurs config : type : trigger, name : Truc2, cmd : #31#
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2][Truc2]-> 1
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Fct cleanTriggersListener
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - set Listener pour déclencheur :[Test2][Test séquence 2][Truc1] - sur l'event : #24#
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - set Listener pour déclencheur :[Test2][Test séquence 2][Truc2] - sur l'event : #31#
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - CRON programmation existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - CRON programmation_cancel existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:06:17][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllTriggersCron
[2020-05-09 15:06:17][INFO] : [Test2][Test séquence 2] - Sauvegardé
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllDelayedActionsCron
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Capteurs sensor config lue, nom : Truc1 - cmd : #24#
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Capteurs sensor config lue, nom : Truc2 - cmd : #31#
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Boucle de $jsSensors : key : trigger_cancel
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Fct cleanTriggersListener
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - set Listener pour déclencheur :[Test2][Test séquence 2][Truc2] - sur l'event : #31#
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - set Listener pour déclencheur :[Test2][Test séquence 2][Truc1] - sur l'event : #24#
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - CRON programmation existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - CRON programmation_cancel existe pas, et on a pas de programmation => on fait rien
[2020-05-09 15:08:06][DEBUG] : [Test2][Test séquence 2] - Fct cleanAllTriggersCron
[2020-05-09 15:08:06][INFO] : [Test2][Test séquence 2] - Sauvegardé

RAS dans les autres logs.

Voilà ma config :

Ok, corrigé…

j’avais laissé les même nom pour les onglets de déclencheurs et déclencheurs d’annulation, donc ça interférait…

Nouvelle beta dispo avec la correction !

Hello,

Petite suggestion pour la prochaine version :

En ligne 492 :

        } else if(isset($trigger['condition_duree']) && $trigger['condition_duree'] != '' && is_numeric($trigger['condition_duree'])){ // si on doit évaluer nos conditions sur la durée de cette valeur

au lieu de

        } else if($trigger['condition_duree'] != '' && is_numeric($trigger['condition_duree'])){ // si on doit évaluer nos conditions sur la durée de cette valeur

ok, corrigé (chez moi, je vais pas lancer une beta pour ca !)

Salut,

Bon j’ai pas eu beaucoup plus de succès avec la regex « super large »… mais comme ça marche pour le moment…
Sinon dans la prochaine version, une petite amélioration cosmétique est à envisager
Dans l’onglet "actions d’annulation"écaler les zones vers la gauche pour gagner un peu de place d’affichage à droite


C’est le seul onglet comme ça d’ailleurs

PS machine et sèche linge branchés

C’est fait :


Effet secondaire (les 2 trames sont liées), j’ai du raccourcir un peu le champs « label » des actions :

D’autres trucs ?

(dispo sur le market en beta, avec la correction d’hier)

1 « J'aime »

Non, c’est vraiment les dernières optimisations je pense

Ok super ! Finalement cette « stable v2 » m’aura prise plus de temps que la première version ! :joy:

@Theduck38, plus de commentaires de ton coté non plus où tu veux un peu plus de temps pour tester ?
Tu me donnes le go et je la passe en stable !

Merci beaucoup à tous les 2 en tout cas pour tous ces tests et le temps passé à améliorer ce plugin ! :blush:

Certes, mais niveau fonctionnalités, c’est un cran au dessus aussi…

J’me suis bien amusé moi :face_with_hand_over_mouth:

1 « J'aime »

Hello,
Laisse moi encore une journée pour quelques tests STP

Pas de soucis prend ton temps ! Dis moi quand c’est good !