Support des évaluations dans une commande?

Bonjour,

En intégrant un ZLinky avec le plugin Teleinfo via Z2M, je rencontre la situation suivante (cf. ce topic):

  1. Le zLinky remonte des données de conso en kWh
  2. Le plugin Teleinfo attend des Wh et un format de message MQTT différent de ce qu’envoit Z2M avec le ZLinky
  3. Cela oblige à faire un équipement « de transformation » intermédiaire dans MQTT Manager pour re poster un message MQTT formaté au format TELEINFO (cf. JSON de transformation ci-dessous) + un scénario avec différents triggers positionnés sur les commandes de l’équipment Zlinky remonté par JeeZigbee/Z2M

Cela pourrait s’arrêter là si dans la commande de l’équipement intermédiaire « MQTT Manager » on pouvait intégrer une formule de calcul, par exemple pour convertir les kWh en Wh (EASTx1000, EASF01x1000, etc.) mais cela ne semble pas pris en compte ou alors je n’ai pas trouvé comment.
Du coup il faut en complément créer un virtuel qui réalise un x1000 sur les commandes initiales de l’équipement JeeZigbee, et sur lequel viennent se sourcer le scénario et l’équipement MQTTManager pour convertir la trame MQTT en format Teleinfo+Wh.

JSON « de base » sans conversion kWh en Wh (fonctionne techniquement mais données dans le plugin TELEINFO inutilisables, pas la bonne unité):

json::{
	"TIC":{
		"ADSC":"Compteur Jardin Teleinfo",
		"NGTF":"#[Jardin][Compteur Electrique][NGTF]#",
		"LTARF":"#[Jardin][Compteur Electrique][LTARF]#",
		"SINSTS":"#[Jardin][Compteur Electrique][SINSTS]#",
		"SINSTS1":"#[Jardin][Compteur Electrique][SINSTS1]#",
		"SINSTS2":"#[Jardin][Compteur Electrique][SINSTS2]#",
		"SINSTS3":"#[Jardin][Compteur Electrique][SINSTS3]#",
		"EASF01":"#[Jardin][Compteur Electrique][EASF01]#",
		"EASF02":"#[Jardin][Compteur Electrique][EASF02]#",
		"EASF03":"#[Jardin][Compteur Electrique][EASF03]#",
		"EASF04":"#[Jardin][Compteur Electrique][EASF04]#",
		"EASF05":"#[Jardin][Compteur Electrique][EASF05]#",
		"EASF06":"#[Jardin][Compteur Electrique][EASF06]#",
		"EAST":"#[Jardin][Compteur Electrique][EAST]#",
		"DATE":"#[Jardin][Compteur Electrique][DATE]#"
		}
	}

Tentatives KO de JSON « avec transformation » avec conversion kWh en Wh:
"EASF01":"#[Jardin][Compteur Electrique][EASF01]#*1000",
ou
"EASF01":"#[Jardin][Compteur Electrique][EASF01]#"*1000,
ou
"EASF01":value(#[Jardin][Compteur Electrique][EASF01]#*1000),
ou
"EASF01":value(#[Jardin][Compteur Electrique][EASF01]#)*1000,

(le value() fonctionne mais pas le *1000)

Merci pour votre avis,
Yetz


Information Jeedom

Core : 4.4.19 (master)
DNS Jeedom : No

Plugin : MQTT Manager
Version : 2025-05-17 01:20:31 (stable)
Demon Status : Started - (2025-07-23 11:40:26)

Bonjour
Pourquoi ne pas utiliser l’option de calcul qui est disponible sur toute les commandes de type info ?

Bonjour Loic,
J’ai essayé sur les conseils du dev du plugin, cela fonctionne techniquement, mais on applique cette modification de calcul sur une commande déjà créée, donc une fois les commandes créées par le plugin Teleinfo, du sur la base de valeurs en kWh remontées par le ZLinky et non en Wh comme attendues par le plugin Teleinfo.
Ce n’est pas infaisable mais cela oblige à des manipulations dans la base de données du plugin pour supprimer les premières données acquises en kWh; et même malgré cela mes statistiques globales restaient faussées, j’ai dû au final recréer un nouveau compteur alimenté par des données propres converties en amont.

A noter que depuis avec l’aide de @Noyax37 j’ai trouvé comment faire plus simple dans Teleinfo + un virtuel + de la manip manuelle, sans passer par un triplet « scénario+eq. virtuel+eq. MQTT Manager », mais on sort de son cadre d’utilisation standard.

Je continue à penser que le support des évaluations/opérations dans les commandes MQTT Manager serait utile et peut permettre de simplifier des choses. Après, je n’ai aucune idée de la complexité à le faire au regard des bénéfices attendus …

Cordialement,
Yetz

Bonjour,
Je ne pense pas qu’on parle de la meme chose, ce que je te dis c’est pas specifique a un plugin c’est pour tous les plugins, toute les commandes dans la configuration avancé tu peux rajouter un calcul. Pas besoin du support des opération dans mqtt manager il y ait déjà juste pas a l’endroit ou tu penses.

Je pense qu’on parle bien de la même chose:

Mettre #value# * 1000 ici

Ce que je dis moi c’est que pour cette commande EASF01 soit disponible, il faut que le plugin TELEINFO l’ait auparavant créée sur la base de données qui ne sont pas dans la bonne unité sans opérer une transformation en amont.
Et donc l’historique de TELEINFO sera faux.

Comme cette transformation kWh->Wh ne peut se faire dans l’équipement MQTT MAnager qui « re-post » une trame MQTT compréhensible par TELEINFO, ça oblige à une mécanique supplémentaire par un 2ième équipement virtuel.

Après, si je ne dis pas de bêtise, il suffit de changer l’unité sur la commande et après en une requête SQL tu peux faire rétroactivement le même calcul.

Absolument, et plus généralement je ne doute pas qu’il y ait plein de solutions de compensations manuelles, mais 1/ celles que j’ai essayées par suppression des historiques ne m’ont pas permis de corriger les statistiques historiques 2/ on rentre dans des procédures qui je pense deviennent trop compliquées et rébarbatives pour les utilisateurs.

Je ne doute pas aussi du fait qu’une MaJ du plugin Teleinfo pour avoir un full support du Zlinky et de ses trames soit la solution idéale, ou à minima la documentation d’une solution de contournement plus simple comme celle trouvée hier et que j’ai pu valider ce matin par création de commandes manuellement et alimentation par un virtuel de conversion de données.

Mais voilà en complément je me disais qu’il serait aussi bien que dans un équipement MQTT Manager on puisse réaliser des calculs sur les données, comme il est possible de le faire avec JMQTT.

Je le suggère donc ici.

Je sens qu’on va tourner en rond ==> sujet clos en ce qui me concerne, bonne journée.

Yetz