Solution Wiser Energy de chez Schneider Electric

Bonjour,

Etant actuellement en rénovation, je souhaiterais ajouter un moyen de contrôler mes consommations électriques.
Ayant un tableau tout neuf de chez Schneider, je souhaiterais naturellement installer le système Wiser Energy qui comprend le module IP + le module qui analyse l’énergie consommée.
liens :

Ma question étant, est ce que quelqu’un à trouvé une solution pour intégré les remontées de cette solution vers Home Assistant ?

Merci d’avance pour vos réponses.

le EER31800 est une passerelle interrogeable en modbus TCP.
elle remonte facilement sur Home Assistant via l’integration modbus Modbus - Home Assistant

il faut dans un premier temps déclarer la passerelle
exemple:

modbus:
  - name: schneider
    type: tcp
    host: !secret schneider_host
    port: 502

chacun compteur que la passerelle remonte à un numéro d’esclave unique (visible depuis l’interface de configuration web de la passerelle)

dans les sensors on declare la plateforme

sensor:
  - platform: modbus
    registers:

puis, pour chacun des compteurs,
plusieurs informations disponibles sont contenu dans des registres,
exemple pour l’énergie :

      - name: "Compteur 1"
        hub: schneider
        unit_of_measurement: kWh
        slave: 150
        register: 3203
        register_type: holding
        data_type: int
        count: 4
        scale: 0.001
        precision: 3

exemple pour la puissance :

      - name: Puissance compteur 1
        hub: schneider
        unit_of_measurement: W
        slave: 150
        register: 3053
        register_type: holding
        data_type: float
        count: 2
        device_class: power
1 « J'aime »

Bonjour,
Je suis également très intéressé par la configuration d’une passerelle Schneider EER31800 associée a un EER39000 pour la mesure des flux d’énergies.
Je suis nouveau sur home assistant et je trouve très peu d’information sur ce EER31800.
Le retour de Papoo sur l’intégration via Modbus semble être la solution parfaite, cependant j’ai du mal a trouver plus d’information.
Si quelqu’un (Papoo?) pouvait détailler un peu plus je serais aux anges.
J’ai un home assistant sous Raspberry 4 en place et le EER31800+EER39000 également connectés sur le même réseau IP.
Merci à vous tous pour votre aide :slight_smile:

Bonjour Ugo
Que souhaites tu savoir de plus?
Chaque compteur à un numéro d’esclave dans mon exemple c’est le premier compteur ajouté avec l’adresse (slave) 150
Chaque information de ce compteur est contenu dans un registre différent (consommation, puissance, …)

Bonjour Papoo,

Pour le moment je n’arrive pas à connecter Hass à mon EER31800 via modbus.

D’un autre coté grâce à un post sur le EER31800 j’arrive bien à récupérer mes logins.
Avec ceux ci, je peux faire des requêtes via mon navigateur en json et avoir accès aux informations du EE31800, comme par exemple:

|MeterInstantData||
|---|---|
|0||
|currentA|0|
|currentB|0|
|currentC|0|
|voltageAB|0|
|voltageBC|0|
|voltageCA|0|
|voltageAN|0|
|voltageBN|0|
|voltageCN|0|
|powerA|0|
|powerB|0|
|powerC|0|
|powerTActive|0|
|powerTReactive|0|
|powerTApparent|0|
|powerFactorT|0|
|frequency|0|
|slaveId|205|
|channel|5|

Cela me permet de récupérer mon slaveid, probablement mon register et count.

ou encore dans https://192.168.1.107/rsa1/MioOutput/instances :

|||
|---|---|
|0||
|slaveId|204|
|channel|10|
|zone|Chauffage|
|label||
|controlONLabel|On|
|controlOFFLabel|Off|
|actuatorType|CT_NO|
|feedbackControl|false|
|currentState|OFF|
|1||
|slaveId|204|
|channel|11|
|zone|Ventilation|
|label|E8BE|
|controlONLabel|On|
|controlOFFLabel|Off|
|actuatorType|CT_NO|
|feedbackControl|false|
|currentState|OFF|

Cependant, je n’ai pas encore compris pour m’identifier en modus, j’ai mis dans mon configuration.yaml:

modbus:
  - name: schneider
    type: tcp
    host: !secret EER31800
    port: 502

et dans secret.yaml:

EER31800: 192.168.1.107

ce qui me donne dans les logs:

Logger: pymodbus.client.sync
Source: /usr/local/lib/python3.8/site-packages/pymodbus/client/sync.py:218
First occurred: 20:31:07 (1 occurrences)
Last logged: 20:31:07

Connection to (192.168.1.107, 502) failed: [Errno 111] Connection refused

Au final je n’ai pas encore compris comment m’identifier correctement en modbus (problème de port, de logins, de création de config .yaml,…?).

Pour la création des sensors je verrai donc ensuite.

Au final, je reste donc en phase de recherche d’info et de test.

Bonne soirée et merci pour votre aide.

assure toi de ne pas avoir activé de filtrage ip sur la passerelle

Je n’ai pas accès a ce type d’interface sur le EER31800, ou alors j’ai loupé des infos cruciales.

Sur le mien, les seuls ports ouverts sont:

* + 192.168.1.107   [Unknown]   [Unknown]
	|___    80  World Wide Web HTTP
	|___   443  https  MCom
	|___  3000  HBCI
		|___ [
	|___  5357

J’y ai accès via l’app Esetup de Schneider, l’app Wiser ou encore Wiser Energie sur smartphone; et via le portail web sur le cloud Schneider.
Mais pour le moment rien d’autre.

manifestement le port 502 n’est pas ouvert donc le modbus ne peut fonctionner

je t’ai donné de faux espoirs, je n’ai pas la meme passerelle que toi, la mienne est plus ancienne , c’est une A9XMWA20 qui elle fait seulement modbus IP
désolé

Bonjour Papoo,
pas de problème. Merci quand même c’était une très bonne piste d’autant plus que le modbus est un classique qui m’aurait beaucoup intéressé.
Je me penche du coup sur l’intégration du EER31800 via des sensors Rest. J’en suis encore aux balbutiement mais j’ai déjà quelques résultats.
Je posterai ici quand j’aurai un peu plus avancé.
Bonne soirée.

Salut Ugo, file moi l’adresse mac de ton module :slight_smile:

Bonjour à tous,
Je relance le sujet car je suis très intéressé par récupérer les infos de mon compteur d’energies Wiser EM5 sous HA.
Je dispose d’un EER31800 et du service sur le net de Schneider.

Pour l’instant j’arrive à consulter les trames json sous un navigateur web après avoir entré mon authentification.
Pour le calcul du mot de passe j’ai utilisé le code Python trouvé ici (Merci Ugo) :

J’arrive aussi a récupérer les infos avec Curl:

curl -k --user m2madmin:xxxxxx" https://wiserIp/rsa1/MeterInstantData
{ "MeterInstantData": [ { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 2677, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 5 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 0 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 1 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 274, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 2 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 3 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 2402, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 4 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 25, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 201, "channel": 2 } ] }

Par contre maintenant je ne sais pas quoi en faire :slight_smile:

J’essaie de passer par REST:

la commande :

curl -X GET -k -u m2madmin:xxxx  "https://192.168.0.40/rsa1/MeasurementData;sId=205;ch=5"

renvoi :

{ "sId": 205, "ch": 5, "EP": 0, "EPR": 0, "EQ": 0, "ES": 0, "EPz": 12280648, "EPRz": 0, "EQz": 0, "ESz": 0, "IA": 0, "IB": 0, "IC": 0, "UAB": 0, "UBC": 0, "UCA": 0, "VA": 0, "VB": 0, "VC": 0, "PA": 0, "PB": 0, "PC": 0, "P": 1370, "Q": 0, "S": 0, "PF": 0, "F": 0, "lL": 0, "cS": false }

Je veux donc récupérer la valeur de « P »:1370. J’ai donc mis dans configuration.yaml :

 rest: 
  - authentication: basic
    username: !secret wiser_user
    password: !secret wiser_psswd
    verify_ssl: false
    scan_interval: 60
    resource: "https://192.168.0.40/rsa1/MeasurementData;sId=205;ch=5"
    sensor:
      - name: "Consommation Wiser 205 5"
        value_template: "{{ value_json.P }}"

Par contre j’ai l’erreur

2022-02-11 17:45:58 ERROR (MainThread) [homeassistant.helpers.template] Template variable error: 'value_json' is undefined when rendering '{{ value_json.P }}'

Hey!
Je suis le fil intéressé sur EER31800.
Je ne suis pas un expert mais plutôt un débutant. Ce que je m’en tiens au départ, c’est comment obtenir les informations de connexion du module.
Si je comprends bien, vous devriez pouvoir, à l’aide de l’adresse MAC et d’une clé API, pouvoir réaliser l’authentification. Quelles étapes dois-je suivre pour obtenir des informations sur ma passerelle ?

Excusez la langue car le français n’est pas ma langue.

Salut Svenfabian,

Je vais te résumer les étapes pour calculer la clé et faire les premières requêtes.

Pré-requis :

  • python installé
  • adresse MAC du module wiser IP
  • adresse IP du module wiser IP

Il faut commencer par ouvrir un editeur de texte et copier le script python suivant en remplaçant l’adresse MAC avec celle de ton module (tu peux la trouver soit sur le module, soit dans l’appli Schneider) sur la première ligne :

mac_addr = '00:11:22:33:44:55'


replaceAll = mac_addr.replace(':', '')
my_char = "PzLaM2ZqOx5Ks3NwIcJ1Sd6NeUvH7WfBrY9AbGgVtTnGhVyTmG8EjVu0TkFi4QClRoDpX"


def generatePasswd(str1=replaceAll, i=len(replaceAll), str2=my_char):

    str3 = str1
    i2 = i
    str4 = str2
    cArr = ['']*12  # 12 elements

    if str3 != '':

        i3 = 6
        if i2 >= 6:
            substring = str3[-6:]
            i4 = 0
            while (i4 < i2) & (i4 < i3):

                hexToInt = int(f"0x{substring[i4]}",0)
                i5 = 15 - (hexToInt % 15)
                d2 = float(hexToInt)
                i6 = i4
                d3 = float(i5)

                round_ = int(
                    round(d3 ** 3.0) * 8 +
                    round(d3 ** 2.0) * 3 +
                    (i5 * 5)) % (len(str2) + 1)


                i7 = i6 * 2
                idx = int(round(d2 ** 3.0) * 6 +
                          round(d2 ** 2.0) * 9 +
                          (hexToInt * 7) )% (len(str2) + 1)


                cArr[i7] = str4[idx]
                cArr[i7 + 1] = str4[round_]
                i4 = i6 + 1
                i3 = 6
    return ''.join(cArr)

if __name__ == '__main__':

    key = generatePasswd()

    print("Key:" + key)

Ensuite il faut lancer le script:

francois@hp:~/python/wiserKey$ python3 wiserKey.py 
Key:ububDZDZfSfS

On va tester de récupérer des infos avec un navigateur. Mettre dans la barre d’adresse :

https://WISER_IP/rsa1/MeterInstantData

Le navigateur va afficher une alerte de sécurité, c’est normal, il faut passer et continuer en acceptant les risques, puis il demande un user et mot de passe:
user m2madmin
passwd: la clé calculée par le script python
→ Le navigateur affiche une trame json:

{ "MeterInstantData": [ { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 662, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 5 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 0 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 1 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 224, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 2 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 0, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 3 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 437, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 205, "channel": 4 }, { "currentA": 0, "currentB": 0, "currentC": 0, "voltageAB": 0, "voltageBC": 0, "voltageCA": 0, "voltageAN": 0, "voltageBN": 0, "voltageCN": 0, "powerA": 0, "powerB": 0, "powerC": 0, "powerTActive": 25, "powerTReactive": 0, "powerTApparent": 0, "powerFactorT": 0, "frequency": 0, "slaveId": 201, "channel": 2 } ] }

On peut faire la même requête en ligne de commande :

curl -X GET -k -u m2madmin:xxxx  "https://WISER_IP/rsa1/MeterInstantData"

Et là tu en es a peu prés au même point que moi :slight_smile:

Merci francois82 !!
J’ai également trouvé une suite possible pour obtenir ces valeurs à Home Assistant.
Il s’agit d’un convertisseur Wiser vers MQTT qui peut ensuite transférer des données vers à Home Assistant.
https github com/NicolaiPetri/wiser2mqtt

Salut,

C’est une solution de backup possible mais je préfèrerais arriver a décoder la trame JSON sans passer par MQTT.

J’ai lancé un post pour en parler… ça progresse même si je ne suis pas arrivé au bout !

Bonjour,

Pour « décoder » les retours JSON et remonter les infos dans homeassistant:

  • WISER EM5, pour les puissances actives (les mesures par tor et issu du Télé-Info du compteur électrique):
sensor:

rest:
  - authentication: basic
    username: m2madmin
    password: XXXXXXXX
    verify_ssl: False
    scan_interval: 10
    timeout: 200
    resource:  https://192.168.1.104/rsa1/MeterInstantData
    sensor:
      - name: Wiser1_Total
        value_template: "{{ value_json.MeterInstantData[5].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Tor_1
        value_template: "{{ value_json.MeterInstantData[6].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Tor_2
        value_template: "{{ value_json.MeterInstantData[7].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Tor_3
        value_template: "{{ value_json.MeterInstantData[8].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Tor_4
        value_template: "{{ value_json.MeterInstantData[9].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Tor_5
        value_template: "{{ value_json.MeterInstantData[10].powerTActive }}"
        unit_of_measurement: "W"
      - name: Wiser1_Autre
        value_template: "{{ value_json.MeterInstantData[4].powerTActive }}"
        unit_of_measurement: "W"

Ici Wiser1_Eau est remonté via un EER31500 dont une entrée est configurée en compteur d’eau à impulsion et Wiser1_Tor_1-Total par un EM5

- authentication: basic
    username: m2madmin
    password: XXXXXXX
    verify_ssl: False
    scan_interval: 10
    timeout: 200
    resource:  https://192.168.1.104/rsa1/MeterCumulatedData
    sensor:
      - name: Wiser1_Eau
        value_template: "{{ value_json.MeterCumulatedData[11].energyPActive / 1000 }}"
        unit_of_measurement: "m3"
        
      - name: Wiser1_Tor_1-Total
        value_template: "{{ value_json.MeterCumulatedData[6].energyPActive / 1000 }}"
        device_class: energy
        unit_of_measurement: "KWh"

Dans customize.yaml (afin de remonter correctement pour le suivi d’énergie):

sensor.wiser1_tor_1_total:
  unit_of_measurement: kWh
  friendly_name: Wiser1_Tor_1-Total
  device_class: energy
  state_class: measurement
  last_reset: "2021-03-25T20:19:52+00:00"  

Ensuite si vous avez des EER31500 le contrôle des sorties est possible via des swiths.

https://jsonpathfinder.com/ m’a bien aidé pendant mes recherches.

Trés intéressant ta solution.
J’ai essayé de récupérer les infos de conso électrique mais avec la commande MeasurementData;sId=%d;ch=%d mais ça implique une requête par canal et j’ai l’impression que s’il y a trop de requêtes en peu de temps que le module ne réponds plus.

Est-ce que tu pourrais mettre le json récupéré par MeterInstantData parce que je suis étonné de la valeur entre crochets.

Bonjour/Bonsoir François02,

Désolé de la réponse tardive, ci-dessous le Json complet pour MeterInstantData (non tronqué comme plus haut dans le fil de discussion, mais vide car pas en prod pour le moment):

{
	"MeterInstantData": [
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 5
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 0
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 1
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 2
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 3
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 205,
			"channel": 4
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 201,
			"channel": 0
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 201,
			"channel": 1
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 201,
			"channel": 2
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 201,
			"channel": 3
		},
		{
			"currentA": 0,
			"currentB": 0,
			"currentC": 0,
			"voltageAB": 0,
			"voltageBC": 0,
			"voltageCA": 0,
			"voltageAN": 0,
			"voltageBN": 0,
			"voltageCN": 0,
			"powerA": 0,
			"powerB": 0,
			"powerC": 0,
			"powerTActive": 0,
			"powerTReactive": 0,
			"powerTApparent": 0,
			"powerFactorT": 0,
			"frequency": 0,
			"slaveId": 201,
			"channel": 4
		}
	]
}

C’est pas très lisible à première vu mais avec https://jsonpathfinder.com/ par exemple, on peut facilement créer ses « value_template: »

Bonne journée/nuit.
++

PS: UsageMeters aide à identifier les « consommateurs »

{
	"UsageMeters": [
		{
			"slaveId": 205,
			"channel": 5,
			"usage": "Main_Incomer",
			"unitEnergy": "ElectricWh"
		},
		{
			"slaveId": 205,
			"channel": 0,
			"usage": "Heating",
			"unitEnergy": "ElectricWh"
		},
		{
			"slaveId": 205,
			"channel": 1,
			"usage": "Cooling",
			"unitEnergy": "ElectricWh"
		},
		{
			"slaveId": 205,
			"channel": 2,
			"usage": "SanitaryHotWater",
			"unitEnergy": "ElectricWh"
		},
		{
			"slaveId": 205,
			"channel": 3,
			"usage": "Sockets",
			"unitEnergy": "ElectricWh"
		},
		{
			"slaveId": 205,
			"channel": 4,
			"usage": "Others",
			"unitEnergy": "ElectricWh"
		}
	]
}