Page 1 sur 1

Bug / Remarques / Doc : MqqtMapper FlyingDomotic =>devices de type "energy" avec historique (Type=243 SubType=29)

Publié : 22 déc. 2025, 20:14
par DomoEsp32
Version Domoticz ==> 2025-2 Deb 12 Python 3.11.2
J'ai mis 2 exemples dans un fichier jpg : un qui fonctionne et l'autre non.
N°1 (pas de problème) => avec un Shelly PRO em50 qui dispose de 2 pinces pour mesurer et calculuer la puissance entrante et sortante (apparante ou non => 4 mesures).
N°2 (problème à la création) => avec OpenDTU (des onduleurs Hoymiles HM800 (x15!))
Les soucis avec les requêtes Mqtt de OpenDTU : c'est leur formatage (voir fichier joint).
Remarques : je ne "peux" et ne veux pas utiliser le plugin Autodiscovery car je me retrouve avec plus de 200 mess Mqtt, il est donc moins adaptatif que FlyingDomotic...

Si vous avez des remarques ou conseils, je suis preneur.
Extrait de mon JSON :
{
"A12":
{"topic":"IP50-solar/114190168585/0/power","key":"A12","type":"243","EnergyMeterMode":"1","subtype":"29","switchtype":"0","mapping":{"item":"~*;~0","multiplier":1,"digits":0}}
}
Ceci est un exemple avec des Micro Onduleurs "Hoymiles HM800" via "OpenDTU".
Avec l'option "Energymode": "1", DZ devrait à la création cocher l'option "Computed".
Doc => Use Options={'EnergyMeterMode': '1' } to set energyMeterMode to "Calculated". Default is "From Device"
La création du device A12 bug, car, par défaut, Domoticz le créé avec l'option "From device", donc, il faut la remettre sur "Computed" manuellement.
Comme on le voit dans MqttExplorer, ces requêtes MQTT ne sont pas formatées avec des guillemets et des {, comme pour les Shelly.
Autre remarque : on voit que OpenDTU nous donne une seule valeur! => 36.5 ,
d'où le mappage ==> mapping":{"item":"~*;~0"," la seconde valeur (svalue) doit être nulle et non vide!
Je force : pas de décimales "digits":0 , puis pas de coefficient multiplicateur "multiplier":1=> cela fonctionne à la création! ==> et maintenant cela fonctionne correctement, hormis les problèmes de "key" après des 10aines d'essais.

Small-2025-12-22-Bug-Energy.jpg
Small-2025-12-22-Bug-Energy.jpg (293.84 Kio) Consulté 673 fois

Re: Bug / Remarques / Doc : MqqtMapper FlyingDomotic =>devices de type "energy" avec historique (Type=243 SubType=29)

Publié : 27 déc. 2025, 17:11
par Flying Domotic
Lorsqu'on a un souci avec MqttMapper, il peut être habile d'utiliser l'outil checkJsonfiles.py, présent dans le répertoire où on a installé le plug-in MqttMapper (souvent /home/pi/domoticz/plugins/MqttMapper/)

Après avoir entré la configuration donnée dans le fichier config.json, j'ai lancé l'outil :

Code : Tout sélectionner

./checkJsonFiles.py config.json
checkJsonFiles V25.10.7-1 - Use --trace to get details
Error analysing V1.0 file config.json
   Error: EnergyMeterMode is unknown in >A12<
   Warning: Type 243, sub type 29 has multiple items sValue, but "initial/svalue" not found for A12
Ça raconte 2 trucs :
1) qu'EnergyMeterMode n'est pas un mot clef reconnu par MqttMapper. En cherchant un peu dans la doc, on trouve qu'il faut l'écrire "options": {"EnergyMeterMode":"1"} pour qu'il soit compris.
2) qu'il est habile d'initialiser sValue à la création, par exemple "initial": {"svalue": "0;0"}.

Ce qui donnerait plutôt :

Code : Tout sélectionner

{
	"A12": {
		"topic": "IP50-solar/114190168585/0/power",
		"key": "A12",
		"type": "243", "subtype": "29", "switchtype": "0",
		"options" : {"EnergyMeterMode": "1"},
		"mapping": {"item": "~*;~0", "multiplier": 1, "digits": 0},
		"initial": {"svalue": "0;0"}
	}
}
Attention, "options" et "initial" ne sont pris en compte qu'à la création du dispositif. Si on souhaite qu'ils soient pris en compte, il faut d'abord détruire le dispositif (device) crée par MqttMapper, et relancer MqttMapper ensuite.

En ce qui concerne "key", il est indispensable que chaque dispositif ait une clef différente des autres. Par défaut, on utilise "topic", ce qui pose un souci dans le cas où on utilise 2 fois (ou plus) le même topic. Dans ce cas, il faut s'assurer qu'on ajoute bien des "key" différentes.

Attention au fait que si on modifie "key", on va créer un nouveau dispositif, sans pour autant détruire l'ancien. Il est prudent de faire le ménage dans les dispositifs avant de modifier une "key".