Saturation apparente du broker avec Shelly

Bonjour,

J’ai une centaine de Shelly, et depuis quelques jours je m’aperçois d’une saturation de la remontée des puissances dans Jeedom.
J’ai ajouté 2vCPU à ma VM pour voir si cela résolvait le soucis.
En redemarrant le broker, cela revient à la normale.

Ma question est: comment contourner ce problème? Y aurait-il moyen que le broker traite moins de remontée de puissance pour certains de mes Shelly? J’ai besoin d’une precision importante pour mes 3em qui gère mon linky et mes panneaux solaires, mais pas forcement d’une réactivité à 5s pour un grand nombre de prises. J’ai en effet des 1pm, des plugs et des shelly 2.5 donc remontée de puissance sur chaque.

Je n’ai pas trouvé comment pouvoir le faire dans jMQTT, Ou alors un setting coté Shelly, mais pas trouvé non plus.

J’ai par ailleurs dans mes logs:

[2024-02-04 10:26:17][WARNING] : Attention, Payload '1876.90' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 354ms (très long), vérifiez les commandes affiliées : #[XXX][shellies][Shelly-3em-001:emeter:2:power]#, #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-04 10:26:17][INFO] : Cmd #[XXX][shellies][Shelly-em-002:emeter:0:power]# <- 43.22
[2024-02-04 10:26:18][INFO] : Cmd #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]# <- 43.22
[2024-02-04 10:26:18][WARNING] : Attention, Payload '43.22' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 485ms (très long), vérifiez les commandes affiliées : #[XXX][shellies][Shelly-em-002:emeter:0:power]#, #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#

Bonjour,
Je suis ça m’intéresse aussi :slight_smile:

Hello,

Tu as ces messages tout le temps où juste de temps en temps ?

J’ai rajouté ces messages, justement pour les cas où énormément de messages sont envoyés sur un topic et que Jeedom mets beaucoup de temps à les traiter.

Regarde ce qui est fait par Jeedom (scénario, calcul, etc) lors d’un event sur ces 2 commandes. Il est probable que ce soit long à traiter et bloqué le traitement des autres messages reçus par le core.

Actuellement non, mais je travaille à une façon plus efficace de traiter ces grandes quantités de messages, principalement pour les besoin conso/PV/batteries.
L’idée serait de faire des « paquets » de messages arrivés dans les N secondes et de les regrouper en X ajouts en historique et juste 1 event en parallèle. Je ne sais pas encore comment le matérialiser dans l’interface, mais c’est l’idée.

Bad

1 « J'aime »

J’ai ces messages sur certains de mes objets Shelly. mes em qui remontent le linky, le chauffe eau, mes panneaux solaires qui fluctuent toutes les secondes.
D’ailleurs question best practices: il vaut mieux garder l’objet « shellies » qui contient tout mes shelly ou alors utiliser un objet par shelly? Actuellement j’ai les 2, donc ma question avant de supprimer 1 des 2.

En fait le Jeedom qui gère mes shelly par MQTT n’est qu’un satellite et il remonte tout au principal à travers jeelink. En fait le mqTT popule des virtuels qui eux sont exportés par jeelink.
Donc les scenarios ne sont pas sur le shelly qui fait tourner MQTT.

Dans un premier temps au lieu d’agréger x messages, cela pourrait tout simplement être n’en remonter qu’1 à Jeedom toutes les y secondes. En laissant le choix à l’utilisateur. Moi si je ne remonte la puissance du shelly 2.5 sur lequel il y un lustre qu’1x toute les minutes ca me va très très bien…
Ca desengorgerai deja énormément le broker, car applicable à genre 80% des devices.

Garde uniquement ce que tu utilises dans ta domotique, supprime le reste.

Oulalalalala, pourquoi un étage de virtuels et pourquoi ne pas directement installer jMQTT sur ton Jeedom principal ? MQTT est conçu pour passer efficacement des messages entre systèmes, là tu consommes N fois des ressources sur les 2 systèmes.

Justement ma question est de transférer mes usages ou sur l’objet sherries ou les objet shelly. Actuellement j’utilise un peu des 2, d’ou ma question du best practice, quitte à migrer certains call d’objets.

Parce que j’ai un Jeedom satellite qui est dédié à tous mes plugins LAN: Hue, Shelly, jMQTT, Unifi etc etc…

Pour moi, un équipement = un usage, par ex : j’ai un ESP dans chaque pièce qui gère le volet, le chauffage en fil pilote, remonte la température intérieure et extérieure. Dans jMQTT, j’ai un équipement pour gérer chaque usage et un pour gérer l’esp lui même (donc 5 équipements).
Par contre, je n’ai gardé que les commandes dont j’ai besoin et supprimé toutes les commandes info/autre avec toutes les données dedans ou les données qui ne me servent pas.

Autant pour les plugins connectés à une clé USB, ça peut avoir du sens, autant pour ceux connectés à un service cloud ou local, je pense que tu crées de la complexité et de la latence dans ton infra pour rien, en faisant transiter les infos par JeeLink.

Bad

C’est une sécurité pour moi car le Jeedom maître n’a que très peu de plugin: il n’a que le plugin mode, infos du jour etc….
donc tres peu sujet a instabilité, en gros il a les scenarios et les designs.

Je vais donc migrer les calls de mes virtuels sur les objets jMQTT indépendant. Une fois la migration faites je désactiverais l’objet « shellies » qui contient des centaines de commande.
Je diviserai deja la charge…

J’ai fini de nettoyer ce que je pouvais:

  • Suppression de l’objet « Shellies » qui recoltait tout, et utilisation seule des objets 1 par shelly
  • Decoché la case « creation automatique des commandes ». Je ne laisse donc dans les objets que les champs info que j’utilise vraiment. J’ai viré par exemple toutes les remontées de temperature, info, announce qui ne me sont pas utiles
  • Suppression du voltage en doublon ou triplet de mes 3em, les valeurs du voltage sont de toute facon les memes…

J’ai environ 2000 Warning par heure, en pleine journée donc avec les 3em qui remonte chaque changement de dixieme de Watt du Linky, du routeur solaire, des panneaux solaires.

Serait-il possible de creer un 2ème broker, sur un autre port? Les 2 pourraient tourner en parallele et donc utiliser les differents vCPU de ma VM?

Hello,

Non, ça ne changerai rien, le goulot d’étranglement est DANS Jeedom, ni dans jMQTT, ni dans le Broker.

C’est toujours les mêmes Warnings ? Toujours sur les mêmes commandes ?
Donne nous des détails sur les commandes concernées.
Est-ce qu’elle mettent d’autres commandes à jour ou déclenchent des scenarios ?
Si c’est le cas, serait-il possible d’avoir des infos sur ces commandes/scenarios ?
Serait-il possible de remplacer les déclenchements des scenarios ou la mise à jour de ces commandes par des scéanrios programmés (par ex 1x par minute) ?

Bad

Donc ma seule voie d’amelioration de ce coté là c’est d’envoyer sur 2 jeedom differents.
Je resume ma conf actuelle:
J’ai un jeedom « lan » qui abrite jMQTT et tous mes plugins LAN. C’est lui qui recoit tout mes Shelly.
J’ai ensuite un jeedom maitre qui recupère tout de la part de mes jeedom peripherique (donc mon jeedom LAN), et c’est lui qui a tout mes scenarios.
Ce que je pourrait faire (mais je casse mon architecture), c’est d’envoyer certains Shelly sur mon jeedom maitre, en lui mettant à lui aussi un jMQTT. Ce sont 2 VM differentes.

le jMQTT est sur mon jeedom peripherique. jMQTT rempli les objets jMQTT. Ensuite je reprend les commandes dans des virtuels et j’exporte ces virtuels par jeelink. Je n’ai aucun scenario sur ce jeedom peripherique, c’est juste un collecteur.

Alors oui ce que je pourrais faire c’est un scenario en PHP sur ce jeedom qui prend les données des objets shelly et met à jour les virtuels à interval regulier et pas à chaque evenement…

Les commandes qui reviennent le plus en warning sont des 3em power et voltage.
J’ai:

  • 2 3em: 1 pour mes 3 circuits photovoltaique, l’autre qui mesure les rangées de mon tableau electrique (rangée luminaire, rangée prise, rangée machine). Eux font un event à chaque 0.1W qui varie, c’est idiot;
  • 3 em (donc 2 entrées em par module): un qui mesure Linky + le routeur solaire, le 2ème mes elements cuisine (four, plaque, donc ca fait aucun event lol), le dernier ma PAC + mes elements SdB (douche, baignoire, donc pareil ca fait aucun event). Pareil a chaque changement de 0.1 Watt coté Linky ou routeur solaire ca fait 1 event.
  • J’ai ensuite une centaine de Shelly, composé de PS, 1pm, shelly 2.5, mais. Ce n’est que quelques Shelly PS qui font un peu de traffic.

Voilà un extrait des events:

[2024-02-13 09:32:27]WARNING : Attention, Payload '857.67' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 4230ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:32:28]WARNING : Attention, Payload '69.96' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 345ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:32:32]WARNING : Attention, Payload '900.57' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 4176ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:32:33]WARNING : Attention, Payload '243.41' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 349ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:32:34]WARNING : Attention, Payload '1211.55' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 390ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:32:34]WARNING : Attention, Payload '34.02' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 529ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:32:39]WARNING : Attention, Payload '944.08' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 4352ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:32:40]WARNING : Attention, Payload '243.33' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 577ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:32:41]WARNING : Attention, Payload '1215.04' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 487ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:32:42]WARNING : Attention, Payload '-44.81' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 364ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:32:43]WARNING : Attention, Payload '243.15' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 370ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:32:44]WARNING : Attention, Payload '1222.20' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 584ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:32:45]WARNING : Attention, Payload '-54.36' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 490ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:32:47]WARNING : Attention, Payload '10.64' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 358ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:32:51]WARNING : Attention, Payload '1007.29' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 3388ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:32:53]WARNING : Attention, Payload '1234.72' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 433ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:32:58]WARNING : Attention, Payload '939.25' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 3142ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:32:59]WARNING : Attention, Payload '7.74' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 321ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:00]WARNING : Attention, Payload '1240.58' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 388ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:01]WARNING : Attention, Payload '-30.41' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 311ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:02]WARNING : Attention, Payload '243.60' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 962ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:03]WARNING : Attention, Payload '1241.89' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 485ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:03]WARNING : Attention, Payload '1.63' reçu sur le Topic 'shellies/Shelly-PS-010/relay/0/power' traité en 346ms (très long), vérifiez les commandes affiliées : #[Cuisine][_jMQTT-Shelly-PS-010 (LV)][relay:0:power]#
[2024-02-13 09:33:04]WARNING : Attention, Payload '73.10' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/power' traité en 365ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:power]#
[2024-02-13 09:33:05]WARNING : Attention, Payload '0.81' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/current' traité en 411ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:current]#
[2024-02-13 09:33:05]WARNING : Attention, Payload '243.50' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 598ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:06]WARNING : Attention, Payload '13.69' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/1/power' traité en 666ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:1:power]#
[2024-02-13 09:33:06]WARNING : Attention, Payload '1242.67' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 326ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:07]WARNING : Attention, Payload '51.89' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 364ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:08]WARNING : Attention, Payload '243.56' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 329ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:09]WARNING : Attention, Payload '1243.12' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 385ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:10]WARNING : Attention, Payload '-4.52' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 564ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:14]WARNING : Attention, Payload '1008.38' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 4446ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:33:15]WARNING : Attention, Payload '2.44' reçu sur le Topic 'shellies/Shelly-PS-031/relay/0/power' traité en 442ms (très long), vérifiez les commandes affiliées : #[Ch Julien][_jMQTT-Shelly-PS-031 (TV)][relay:0:power]#
[2024-02-13 09:33:15]WARNING : Attention, Payload '-42.27' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 345ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:16]WARNING : Attention, Payload '243.40' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 408ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:17]WARNING : Attention, Payload '1243.45' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 357ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:18]WARNING : Attention, Payload '22.84' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 389ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:19]WARNING : Attention, Payload '17.89' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 403ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:20]WARNING : Attention, Payload '82.77' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/power' traité en 325ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:power]#
[2024-02-13 09:33:20]WARNING : Attention, Payload '243.79' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 714ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:21]WARNING : Attention, Payload '1241.69' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 659ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:22]WARNING : Attention, Payload '5.22' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/current' traité en 316ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:current]#
[2024-02-13 09:33:22]WARNING : Attention, Payload '-11.83' reçu sur le Topic 'shellies/Shelly-em-002/emeter/0/power' traité en 488ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#
[2024-02-13 09:33:23]WARNING : Attention, Payload '243.64' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 406ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#
[2024-02-13 09:33:24]WARNING : Attention, Payload '6.18' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/1/power' traité en 339ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:1:power]#
[2024-02-13 09:33:24]WARNING : Attention, Payload '1240.14' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/2/power' traité en 393ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#
[2024-02-13 09:33:30]WARNING : Attention, Payload '904.76' reçu sur le Topic 'shellies/Shelly-em-003/emeter/1/power' traité en 5021ms (très long), vérifiez les commandes affiliées : #[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#
[2024-02-13 09:33:30]WARNING : Attention, Payload '0.85' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/current' traité en 423ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:current]#
[2024-02-13 09:33:31]WARNING : Attention, Payload '243.54' reçu sur le Topic 'shellies/Shelly-3em-001/emeter/0/voltage' traité en 602ms (très long), vérifiez les commandes affiliées : #[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#

Scenario fait, système d’aggregation sur x secondes, par des min, max, avg, ou last value.
Ca tourne…

function get_info($object) {
	return cmd::byString("$object")->execCmd();
}
function set_var($var_name,$value) {
	global $scenario;
	$scenario->setData($var_name,$value);
}
function mylog($string) {
  global $scenario;
  $scenario->setLog($string);
}

$in=array("linky_power"=>"#[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:power]#",
          "linky_voltage"=>"#[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:0:voltage]#",
          "pac_power"=>"#[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:1:power]#",
          "pac_voltage"=>"#[Cave][_jMQTT-Shelly-em-002 (linky, PAC)][emeter:1:voltage]#",
          
          "pv1_power"=>"#[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:power]#",
          "pv2_power"=>"#[Exterieur][_jMQTT-Shelly-3em-001][emeter:1:power]#",
          "pv3_power"=>"#[Exterieur][_jMQTT-Shelly-3em-001][emeter:2:power]#",
          "pv_voltage"=>"#[Exterieur][_jMQTT-Shelly-3em-001][emeter:0:voltage]#",
          
          "tableau_rangee_A_power"=>"#[Cave][_jMQTT-Shelly-3em-002 (tableau elec)][emeter:0:power]#",
          "tableau_rangee_B_power"=>"#[Cave][_jMQTT-Shelly-3em-002 (tableau elec)][emeter:1:power]#",
          "tableau_rangee_C_power"=>"#[Cave][_jMQTT-Shelly-3em-002 (tableau elec)][emeter:2:power]#",
          "tableau_voltage"=>"#[Cave][_jMQTT-Shelly-3em-002 (tableau elec)][emeter:0:voltage]#",
          
          "ce_power"=>"#[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:1:power]#",
          "ce_voltage"=>"#[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:0:voltage]#",
          "balneo_power"=>"#[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:0:power]#",
          "balneo_voltage"=>"#[Cave][_jMQTT-Shelly-em-003 (Balneo  CE)][emeter:0:voltage]#"
         );

$frequence=array(
				"linky_power"=>10,"linky_voltage"=>10,"pac_power"=>20,"pac_voltage"=>20,
  				"pv1_power"=>10,"pv2_power"=>10,"pv3_power"=>10,"pv_voltage"=>30,
  				"tableau_rangee_A_power"=>10,"tableau_rangee_B_power"=>10,"tableau_rangee_C_power"=>10,"tableau_voltage"=>30,
                "ce_power"=>10,"ce_voltage"=>10,"balneo_power"=>30,"balneo_voltage"=>30);

$type_aggregation=array("linky_power"=>"min","linky_voltage"=>"avg","pac_power"=>"avg","pac_voltage"=>"avg",
                       "pv1_power"=>"min","pv2_power"=>"min","pv3_power"=>"min","pv_voltage"=>"avg",
                       "tableau_rangee_A_power"=>"avg","tableau_rangee_B_power"=>"avg","tableau_rangee_C_power"=>"avg","tableau_voltage"=>"avg",
                       "ce_power"=>"avg","ce_voltage"=>"avg","balneo_power"=>"max","balneo_voltage"=>"avg");
$indexes=array_keys($in);
$cache=array();

function add_value($tab,$v,$index) {
  $timestamp=time();
  $tab[$timestamp]=$v;
  return $tab;
}
function clean_tab($tab,$index,$freq) {
  global $frequence;
  $timestamp=time();
  $keys=array_keys($tab);
  $values=array_values($tab);
  for ($i=0;$i<count($tab);$i++) {
    if ($keys[$i]<$timestamp-$freq)
      unset($tab[$keys[$i]]);
  }
  return $tab;
}
function return_aggregate_value($values,$type_aggregation) {
  if ($type_aggregation=="avg") {
    $out_value=array_sum($values)/count($values);
  }
  elseif ($type_aggregation=="min") {
    $out_value=min($values);
  }
  elseif ($type_aggregation=="max") {
    $out_value=max($values);
  }
  return $out_value;
}

$start=time();
$delay_max=50;
foreach ($indexes as $index)
  $last_output[$index]=0;

do {
  foreach ($indexes as $index) {
    $v=get_info($in[$index]);
    $cache[$index]=add_value($cache[$index],$v,$index);
    $cache[$index]=clean_tab($cache[$index],$index,$frequence[$index]);
    if (time()-$last_output[$index]>$frequence[$index]) { // on doit mettre à jour $out
      $values=array_values($cache[$index]);
      $out_value=return_aggregate_value($values,$type_aggregation[$index]);
      mylog("On ecrit dans variable(".$index.") la valeur ".$out_value);
      set_var($index,$out_value);
      $last_output[$index]=time(); // on note
    }
  }
  usleep(0.5*1000000);
}
while (time()<$start+$delay_max);

Et tu n’as plus de warning dans jMQTT ?

Je suis passé de 2500 par heure à 300 par heure.
En fait il ne me reste que mes Shelly Power plug, qui comme je le disais ne représentaient que 10% des warnings.
Je pense encore un peu nettoyer ces Power plug, car certains mesurent une consommation constante, il me suffit donc de faire un (info_status ==1 )*valeur_fixe dans le champ puissance du virtuel ca suffira amplement.

Qu’il y ait un peu de latence sur ces remontées d’infos c’est pas grave pour moi.
Quand début de semaine j’avais de la latence sur mes EM du linky et production solaire, ca mettait par terre tout mes scenarios de routeur solaire…

Tu pourrais t’inspirer de ma façon de faire pour ne remonter au core Jeedom que des valeurs toutes les X secondes, à la liberté de l’utilisateur, et ainsi décharger le core de trop d’events inutiles.

Oui, il y aura ce genre de paramètre dans une modale de configuration avancée sur chaque commande (dans une prochaine version).

2 « J'aime »