Retex message log général

Bonjour

Suite à plusieurs message log du type:

 0198|PHP Deprecated: preg_match_all(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/html/core/class/jeeObject.class.php on line 137

et bien d’autre (voir ici) qui ne sont pas bloquantes mais avec jeedom 4.5 sous débian 12 PHP8, j’ai chercher sur le forum et poser la question, ce qui m’a permis de recevoir beaucoup de pertinence dans ma recherche pour corriger les petits bug dans ma prod jeedom qui est là de mise à jours en mise à jours depuis 3 ans. Merci @Mips

Ici juste pour aider et apporter quelque règles simple mais qui m’ont pris un peu de temps, 1h/jour/5 jours par semaines avec mon café.

Une des règles principale, c’est de toujours s’habituer à utiliser l’outil testeur d’expression et ce pour n’importe quoi, exemple:

test1


test3
test4

Comme vous pouvez le voir dans la premier image: attention il doit y avoir un soucis, oui un soucis mais cela n’est pas bloquant et cela fonctionne quand même, mais a partir de PHP8 le système vous avertis qu’il n’est pas content de la syntaxe et en corrigeant par de l’encapsulage (*****) le résultat est propre et il est content :smiling_face_with_tear:.
Remarquer dans la 3eme image même la valeur est encaplusé (4).
Donc déjà j’ai repris tous mes scénarios qui fonctionnaient bien mais qui ont mérités un
lifting pour coller au PHP8.
Donc à faire à chaque fois pour les si, les dans, les A etc…

Autre exemple pour celle ci:

 0000|PHP Deprecated:  preg_match_all(): Passing null to parameter #2 ($subject) of type string is deprecated in /var/www/html/core/class/cmd.class.php on line 2499

J’ai trouvé aujourd’hui par supposition en faisant une commande via alexa ouvre le volet du séjour, et j’ai surveillé les logs et bingo elle est apparu au même moment.

Donc testeur d’expression sur mon scénario de la condition si:
"# [MAISON][Echo Pop - Marc][Dernier dialogue Réponse]#" matches "/(volet)/"

Il manquait l’encapsulage mais cette fois de type guillemet pour que php8 puisse avoir à mangé dans le string :smile: et pas un null ou ""

Dans un 2eme temps: les commandes infos dans des virtuels ou des équipements physique:

  • Si lors d’un reboot de jeedom ou si cde info jamais ou plus utilisé et donc sans value, cela pollue les logs et php8 fait du bruit car il n’a aucune valeur de référence à se mettre sous la dent, donc il met null ou "".
    Pour cela j’avais commencé à passer en revu toute mes commandes et les actionner pour que les cde infos s’affichent et puis j’ai demandé à IA fait moi un code ((voir ici) mais attention de bien lire avant de s’en servir.

Dans un 3eme temps j’ai demandé à IA de corriger mes deux 3 blocs codes scénarios et ceux de mes htmldysplay et là il colle à PHP8 et jeedom, ils sont content.

Dans un 4eme temps, j’ai supprimé un maximum de cron 1, 5 etc pour passer par des déclencheurs sans que cela charge et appel les scénarios concernés trop souvent.

Maintenant j’ai moins de charge et un swap à 100% libre


Évidement à chaque création de cde, de scénario, de html, designs, ect, si des messages arrivent, il faut nettoyer avant de paniquer, ce qui m’a faciliter la recherche, un peu longue mais méthodique.

Merci à l’équipe jeedom pour le taf

Bonjour

C’est tout à fait incorrect, aucun besoin de mettre de parenthèse.
Je déconseillerais d’ailleurs fortement car à mettre trop de parenthèses l’une dans l’autre cela peut causer des soucis d’interprétation.

Donc: surtout à ne pas faire!

de nouveau, tout à fait faux.
Il y a simplement un espace de trop dans l’expression : Toujours utiliser le sélecteur pour ajouter un nom de commande et ne pas taper manuellement.

1 « J'aime »

Bonjour

Je sais que j’ai un soucis de copier/coller et je fais attention mais pas assez.
Sur tes observations j’ai modifié et testé d’autre syntaxe pour que cela fonctionne et que Mr testeur d’expression ne râle pas:

ici erreur si pas d’espace

ici ce qui fonctionne chez moi et plus de message log cron_execution et scénario_exécution excepté une qui fait du bruit et lié au plugin alexiaapi premium et lié à amazon donc tout va bien et rien à voir avec le core jeedom.

#[MAISON][Echo Pop - Marc][Dernier dialogue]# matches "/(ouvre|monte|leve|descent|descen|baisse|ferme|volet|stop|arrete)/"

et ici les images des scénarios qui maintenant fonctionnent et sans message log:

ici pour géré le déclenchement du 2eme scénarios et géré le volume

ici extrait du 2eme scénario

Donc maintenant que cela va très bien je verrais au moment ou cela ne fonctionnera plus.

Pour l’encapsulage des A et Dans, j’avais des messages log lié au fait que php8
Deprecated les syntaxes. donc j’ai cherché testé et depuis la modif plus de kilomètre de log et en plus cela fonctionne et je trouve même plus fluide les interactions.

ici un extrait scénario arrosage


ici pour le A

ici pour le DANS
test arro1

pour que je puisse voir si soucis log, j’ai laissé passé 24 à 36h entre deux modifs avec sollicitations dans tous les sens des actions concernés par la modif.
et des que je n’avais plus de bruit dans les logs je passais au modif suivante.

Pour info j’ai passé du temps entre repérer les plugins, scénarios, virtuels, etc qui étaient liés aux messages logs et les tests de syntaxes. (Je ne parle même pas de mes erreurs d’inattentions).

Même si je suis tordu dans ma tête, j’appelle çà de la pertinence et sincèrement je te Merci pour ton taf et prendre du temps à répondre à un tordu comme moi. :face_with_head_bandage:

il ne faut pas se préoccuper du fait que le testeur d’expression retourne: « Attention : il doit y avoir un souci, car le résultat est le même que l’expression »

Ce message est là uniquement parce que la valeur qu’il va évaluer est égale à la valeur du résultat
mais l’important ici c’est que la commande entre # a été remplacée par la valeur, donc tout est correct;
Je vais voir si je peux modifier ça pour une prochaine version, ca prête toujours à confusion pour un nouveau

=> Ne pas mettre de parenthèses autour des commandes

1 « J'aime »

Oui je me suis douté qu’il y avait une histoire dans le style mais j’attendais confirmation bon aujourd’hui je vais laisser tourner pendant un bon moment avant de rejeter un œil au log.

En tout cas cette version de jeedom sur mon debian 12 est très bien.

Merci encore à toi

Et à raison, car c’est plutôt une bonne nouvelle d’avoir une machine qui confirme ce qu’on a tapé.

Certains automaticiens ont l’habitude de mettre entre parenthèses les conditions logiques.
Ici, tu déconseilles les () sur toutes les commandes, y compris les binaire.

Perso, j’écoute et j’applique ce que tu conseilles. Le truc, c’est que je découvre les bonnes pratiques pour Jeedom au compte goute, ce qui de mon point de vu n’est pas efficace.
Et lorsque j’essaie un post pour clarifier ces points (typage, bonnes pratiques), personne n’y comprend rien d’après tes dires…

PS: Ce n’est pas une critique, juste une piste d’amélioration pour laquelle je veux bien participer

Bonjour

Oui t’inquiète pas et comme je dis, mon point de vue est plutôt dans la pertinence et les réponses à mes messages, je ne les prends pas pour des critiques mais bien sûr pour amélioration.
Les systèmes de codage, automatisme avance plus vite que la musique. C’est un perpétuel chantier.

Quand j’ai découvert jeedom j’ai surtout pensé à l’économie d’énergie que je pouvais en faire avec mes panneaux solaires. Sur une station classique de base on est sur l’ordre de 30 à 40 % d’économie d’énergie et moi j’en fais perdre la tête à mon commercial car j’en suis à 63-65 % et à moindre frais grâce à jeedom et je remercie évidemment toutes les équipes développeurs et testeur pour leur taf.

Merci

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.