Révision après plusieurs années d'utilisation

Bonjour,
Après tout ce temps je me suis dis qu’un bon nettoyage de pré-printemps ne serait pas mal.
Le déclencheur a été le passage à Debian 12 (php8 moins permissif que la version 7) qui m’a obligé à revoir mes manières de faire ainsi que les petits pb de déconnexion du client mqtt de zigbee2mqtt.
J’ai pensé qu’au delà des http.errors captées par le patch utile de mrgreen j’avais encore surement des erreurs de ma part qui perduraient dans mes virtuels.
N’ayant que des idées mais pas de savoir faire en code, je me suis aidé de chatgpt que j’ai dirigé pour avoir ce que je voulais.
Je vous soumet en partage si ça peu en aider d’autres que moi.
L’idée est de faire un inventaire des commandes qui sont gourmandes et de les classer par poids. Au dessus de 5-6 on s’en occupe, en dessous on laisse c’est marginal.
C’est à lancer en ssh, comme c’est du mysql il faudra mettre votre mot de pass jeedom bd qui est en bas de la page configuration.
Le code :

mysql -u jeedom -p jeedom -e "
SELECT 
    c.id AS 'ID_cmd',
    c.name AS 'Nom_cmd',
    e.name AS 'Équipement_virtuel',
    (LENGTH(c.configuration) - LENGTH(REPLACE(c.configuration, '#', ''))) / 2 AS nb_refs,
    (LENGTH(c.configuration) - LENGTH(REPLACE(c.configuration, '(', ''))) AS nb_fcts,
    ROUND(
        ((LENGTH(c.configuration) - LENGTH(REPLACE(c.configuration, '#', ''))) / 2)
        + (LENGTH(c.configuration) - LENGTH(REPLACE(c.configuration, '(', ''))), 1
    ) AS poids
FROM cmd c
LEFT JOIN eqLogic e ON c.eqLogic_id = e.id
WHERE c.eqType='virtual' AND c.type='info'
AND (
    c.configuration LIKE '%avg%' OR 
    c.configuration LIKE '%sum%' OR 
    c.configuration LIKE '%date%' OR 
    c.configuration LIKE '%strtotime%'
)
ORDER BY poids DESC
LIMIT 20;
> "

Un exemple du tableau produit :

En espérant que cela vous soit aussi utile qu’à moi.
Bien cordialement

Salut,

Je ne comprend pas les critères; je ne comprend pas ce que le tableau montre
C’est quoi une « commande gourmande » ?

Bonjour Mips,
Ma mauvaise habitude était de faire des calculs trop complexes dans les commandes virtuel. Par gourmande je veux dire celles qui ralentissent inutilement le traitement de mariaDb alors qu’avec l’expérience on peu faire plus simple.
Jeedom a aussi évolué et a proposé au fil des versions des expressions simplifiées qu’auparavant je calculais.
Ca fait 10 ans que j’accumule des calculs qui parfois ne me servent plus et que j’avais oubliés, ça m’a aussi servi à ça.
Bien cordialement

ok si je reformule pour voir si j’ai bien compris, le but est de lister les commandes (de virtuels) qui utilisent « beaucoup » d’autres commandes?

C’est bien résumé oui.

Dans l’absolu, je fais pas mal de calculs pour avoir une info - me passant de scénarios que ça soit par code ou en bloc ; surtout quand les ternaires rendent bien service.

Je regarde à l’occasion de quoi on parle en l’exécutant chez moi. Mais je ne vois pas l’alternative.
J’ai mis en place pour les scénarios les tags sur les conseils de Mips à l’époque, très pratique, effectivement.

Bonjour benj29,
Arff j’aurais dû modérer mon titre en mettant « Révision après plusieurs années d’utilisation par un Nul » :smiley:
Je suis absolument persuadé que la majorité des intervenants réguliers et de ceux qui savent ne sont pas impactés par le mal qui rongeait ma Jeedom.
Mais moi j’ai commencé en dessous de zéro, sans aucune connaissance et j’ai fais comme j’ai pu avec souvent des solutions alambiquées qui me donnaient un résultat, mais au prix de performances de mon cpu pour suivre mes élucubrations.
L’exemple que tu prends, les ternaires, qui sont effectivement puissant et que j’utilise maintenant assez facilement à mon niveau.
Je ne les aient découvert que l’an dernier grâce à Bison.
Idem pour les tags, il y avait eu une explication sur le forum, j’ai appris à m’en servir plus facilement maintenant.
Avant je compensais par des formules d’enchainement de commandes avec souvent des répétitions, etc … D’où la lourdeur de mon installation et des difficultés à maintenir. Depuis 10 ans je n’ai jamais fais que sauvegarde restauration upgrade pour suivre les différentes migrations et tout s’est accumulé.
J’avais besoin de cet audit pour matérialiser où mettre mes efforts de simplification. Ca m’a rendu service donc je partage avec ceux qui seraient dans mon cas.
Bien cordialement

3 « J'aime »

Tu as le mérite d’être transparent.
Mais je pense aussi qu’une vieille installation doit être nettoyée, donc c’est bon à prendre :wink:

Bonjour,
Merci pour le partage, J’ai testé ton script sur mon installation et :

+--------+--------------------------------------+------------------------------+---------+---------+-------+
| ID_cmd | Nom_cmd                              | Équipement_virtuel           | nb_refs | nb_fcts | poids |
+--------+--------------------------------------+------------------------------+---------+---------+-------+
|  11868 | Etat Position                        | Groupe - Tous les volets     |  9.0000 |       1 |  10.0 |
|   1981 | Etat                                 | Jardin                       |  8.0000 |       0 |   8.0 |
|  11861 | Etat position                        | Groupe - Volets Sejour       |  5.0000 |       1 |   6.0 |
|   3657 | Bureau_L                             | Résumé Volets                |  0.0000 |       5 |   5.0 |
|  33503 | EDF Aujourdhui                       | Synthèse                     |  3.0000 |       2 |   5.0 |
|  33505 | EDF Semaine                          | Synthèse                     |  3.0000 |       2 |   5.0 |
|  33506 | EDF Mois                             | Synthèse                     |  3.0000 |       2 |   5.0 |
|  42989 | Etat position                        | Groupe - Volets des chambres |  4.0000 |       1 |   5.0 |
|  41491 | Batterie temps réel                  | Synthèse                     |  4.0000 |       0 |   4.0 |
|  42292 | Temps restant                        | Robot piscine                |  3.0000 |       1 |   4.0 |
|  33868 | Temps dallumage                      | Chauffe-eau virtuel          |  1.0000 |       3 |   4.0 |
|  33507 | EDF Année                            | Synthèse                     |  3.0000 |       1 |   4.0 |
|  33536 | Réinjecté aujourdhui                 | Synthèse                     |  2.0000 |       1 |   3.0 |
|  33538 | Réinjecté semaine                    | Synthèse                     |  2.0000 |       1 |   3.0 |
|  33061 | Temps de filtration                  | Temps de filtration par jour |  1.0000 |       2 |   3.0 |
|  11847 | Etat position                        | Groupe - Volets cuisine      |  2.0000 |       1 |   3.0 |
|  33867 | Temps de fonctionnement (Human)      | Chauffe-eau virtuel          |  1.0000 |       2 |   3.0 |
|  11854 | Etat position                        | Groupe - Volets Salon        |  2.0000 |       1 |   3.0 |
|  33873 | Flux BV to House                     | Synthèse                     |  3.0000 |       0 |   3.0 |
|  41565 | DureeDeChauffeNecessaireEnMin(Human) | Chauffe-eau virtuel          |  1.0000 |       2 |   3.0 |
+--------+--------------------------------------+------------------------------+---------+---------+-------+

Ok certaines commandes sont référencées avec un poid élevé mais ça ne veut pas dire que ce sont des commandes qui ralentissent ou perturbent Jeedom/BDD pour moi ; si ?

Exemple : la premiere commande est configurée comme suit :


Est ce que c’est mal ? voyez ?

Bonjour,
Non dans ton cas je ne pense pas que ça perturbe ta bd. J’avais bien pire la première fois que j’ai fais tourner le script :sweat_smile:
Mais par curiosité, ça te sert à quoi d’avoir le % moyen de tous tes volets ?
Si un est ouvert 0% et l’autre fermé 100% tu as 50 % je ne vois pas la pertinence de l’info.
Bien cordialement

Aujourd’hui, ça ne sert à rien en effet ^^

Quand j’ai crée la commande, l’idée de base que en armant l’alarme en partant, il y a un scénario qui coupe reduit les consignes et ferme les volets.
l’idée de cette commande était de récupérer l’info : OK tous les volets sont bien fermés (=100)

J’avais ça aussi, des restes de mes débuts jamais corrigé ou supprimé et le tableau a eu la vertu de me les révéler.
En lisant mes commandes je n’arrivais même plus à savoir pourquoi j’avais fais ça et je me suis traité d’idiot plusieurs fois :face_with_head_bandage:

Tu devrais avoir ton bonheur avec les résumés :
https://www.youtube.com/watch?v=xemEshwRdQs