Intégration d'un module Tuya Wifi compteur d'énergie bidirectionnel double "WIFI Dual Meter"

Bonjour,
Un petit retour sur l’intégration du module Tuya Wifi compteur d’énergie bidirectionnel double « WIFI Dual Meter », modéle PJ1103A qu’on peut trouver facilement notamment chez AliExpress pour une vingtaine d’euros
Tuya Zigequation-Compteur d’énergie intelligent, compteur de surveillance bidirectionnel, Andrea Control avec CT

Ce module est non-intrusif et bidirectionnel, donc intéressant dans le cas d’utilisation avec des panneaux solaires, il peut mesurer les énergies consommées et aussi injectées dans le réseau.

Il faut tout d’abord intégrer le module avec l’application Tuya Smart et verifier que tout est opérationnel.

Ensuite, personnellement j’ai utilisé le tuto dont le lien est fourni dans la doc de bernardfr.caron, créateur du plugin WiFiLightV2.

Ce tuto (en anglais) permet de récupérer l’Id et la localKey de l’équipement ainsi l’Access Id et l’Access Secret.
A noter que pour créer le compte developpeur sur le site Tuya loT Development Platform, je ne recevais pas le « verification code », j’ai du utiliser une adresse email en gmail.com, les emails en sfr.fr ou même en hotmail.com ne fonctionnant pas.
On renseigne alors l’Access Id et l’Access Secret dans la configuration du plugin WiFiLightV2, on sauvegarde.
Ensuite, on crée un équipement WiFiLigthV2 :
-on renseigne l’adresse IP du module, adresse qu’on aura eu soin de rendre fixe à l’aide de son DHCP au niveau de la box internet ou du routeur, selon le cas,
-on positionne le champ « Marque ou type de périphérique » à « Tuya Smart Life fw 3.4 »,
-on sauvegade.
Ensuite au niveau du plugin, on lance « Tuya passer en inclusion ». Le module est alors reconnu par le plugin.
Quelques commandes sont alors créées, dont une commande action « stateGet » permettant de lancer une demande de lecture, mais on ne retrouve pas toutes les informations fournies par le module telles qu’on peut les voir dans l’application Tuya Smart.
Heureusement, en cherchant un peu au niveau du site Tuya loT Development Platform (Cloud, IoTCore) on peut trouver les informations nécessaires pour interfacer toutes les commandes.
Les voici :

<json>{
"result": {
    "properties": [
    {
        "code": "forward_energy_total",
        "custom_name": "",
        "dp_id": 1,
        "time": 1698790886187,
        "value": 24
    },
    {
        "code": "reverse_energy_total",
        "custom_name": "",
        "dp_id": 2,
        "time": 1698789745079,
        "value": 18
    },
    {
        "code": "power_a",
        "custom_name": "",
        "dp_id": 101,
        "time": 1698790874868,
        "value": 0
    },
    {
        "code": "direction_a",
        "custom_name": "",
        "dp_id": 102,
        "time": 1698789802199,
        "value": "FORWARD"
    },
    {
        "code": "tbd",
        "custom_name": "",
        "dp_id": 103,
        "time": 1698660520654,
        "value": false
    },
    {
        "code": "direction_b",
        "custom_name": "",
        "dp_id": 104,
        "time": 1698789802364,
        "value": "FORWARD"
    },
    {
        "code": "power_b",
        "custom_name": "",
        "dp_id": 105,
        "time": 1698790874920,
        "value": 0
    },
    {
        "code": "energy_forword_a",
        "custom_name": "",
        "dp_id": 106,
        "time": 1698790886200,
        "value": 10
    },
    {
        "code": "energy_reverse_a",
        "custom_name": "",
        "dp_id": 107,
        "time": 1698789745079,
        "value": 18
    },
    {
        "code": "energy_forword_b",
        "custom_name": "",
        "dp_id": 108,
        "time": 1698790886209,
        "value": 14
    },
    {
        "code": "energy_reserse_b",
        "custom_name": "",
        "dp_id": 109,
        "time": 1698789745079,
        "value": 0
    },
    {
        "code": "power_factor",
        "custom_name": "",
        "dp_id": 110,
        "time": 1698790874880,
        "value": 100
    },
    {
        "code": "freq",
        "custom_name": "",
        "dp_id": 111,
        "time": 1698791902592,
        "value": 4926
    },
    {
        "code": "voltage_a",
        "custom_name": "",
        "dp_id": 112,
        "time": 1698791902494,
        "value": 2452
    },
    {
        "code": "current_a",
        "custom_name": "",
        "dp_id": 113,
        "time": 1698790874855,
        "value": 0
    },
    {
        "code": "current_b",
        "custom_name": "",
        "dp_id": 114,
        "time": 1698790874907,
        "value": 0
    },
    {
        "code": "total_power",
        "custom_name": "",
        "dp_id": 115,
        "time": 1698790874893,
        "value": 0
    },
    {
        "code": "voltage_coef",
        "custom_name": "",
        "dp_id": 116,
        "time": 1698789742634,
        "value": 1000
    },
    {
        "code": "current_a_calibration",
        "custom_name": "",
        "dp_id": 117,
        "time": 1698789867094,
        "value": 1133
    },
    {
        "code": "power_a_calibration",
        "custom_name": "",
        "dp_id": 118,
        "time": 1698789822821,
        "value": 1170
    },
    {
        "code": "energy_a_calibration_fwd",
        "custom_name": "",
        "dp_id": 119,
        "time": 1698789742745,
        "value": 1000
    },
    {
        "code": "coef_a_reset",
        "custom_name": "",
        "dp_id": 120,
        "time": 1698660520654,
        "value": false
    },
    {
        "code": "power_factor_b",
        "custom_name": "",
        "dp_id": 121,
        "time": 1698790874934,
        "value": 100
    },
    {
        "code": "freq_calibration",
        "custom_name": "",
        "dp_id": 122,
        "time": 1698789742641,
        "value": 1000
    },
    {
        "code": "current_b_calibration",
        "custom_name": "",
        "dp_id": 123,
        "time": 1698789742790,
        "value": 1000
    },
    {
        "code": "power_b_calibration",
        "custom_name": "",
        "dp_id": 124,
        "time": 1698789742792,
        "value": 1000
    },
    {
        "code": "energy_b_calibration_fwd",
        "custom_name": "",
        "dp_id": 125,
        "time": 1698789742794,
        "value": 1000
    },
    {
        "code": "coef_b_reset",
        "custom_name": "",
        "dp_id": 126,
        "time": 1698660520654,
        "value": false
    },
    {
        "code": "energy_a_calibration_rev",
        "custom_name": "",
        "dp_id": 127,
        "time": 1698789742754,
        "value": 1000
    },
    {
        "code": "energy_b_calibration_rev",
        "custom_name": "",
        "dp_id": 128,
        "time": 1698789745079,
        "value": 1000
    },
    {
        "code": "report_rate_control",
        "custom_name": "",
        "dp_id": 129,
        "time": 1698789745079,
        "value": 10
    }
    ]
},
"success": true,
"t": 1698791911308,
"tid": ""
}

Il suffit alors d’implémenter toutes les commandes info dont on a besoin avec leurs noms et leurs dps.
En revanche, je n’ai pas trouvé de commandes actions permettant de remettre à zéro les valeurs des commandes info donnant les energies, forward_energy_total, reverse_energy_total, forward_energy_a et b, reverse_energy_a et b, ce qui serait bien pratique, on ne peut d’ailleurs pas le faire au niveau de l’appli Tuya Smart.
A noter que ce type de module permet de calibrer les différents capteurs. La calibration doit se faire avec une charge purement résistive (facteur de puissance = 1), un radiateur électrique sans électronique ou mieux un simple grille-pain. Avec un multimètre, on mesure la tension secteur, la résistance (hors tension !), on en déduit l’intensité (I=U/R), la puissance consommée (P=U²/R) et on calibre dans l’application Tuya Smart.

Edit: Il est impossible d’obtenir le champ « unité » dans les commandes info ajoutées manuellement, même en changeant de widget d’affichage, le champ unité n’apparait pas… Si quelqu’un a une solution ?

tu pourrais preciser le chemin pour trouver les dp_id,cloud\iot core\device management.…
merci

Le problème c’est que je ne réussis plus à refaire la manip qui donne ces infos…
C’est dans le site developer de chez tuya, mais c’est un vrai labyrinthe…
C’est manifestement un log puisqu’il y a les infos de temps…
Édit: Passé 2 heures à rechercher, pas trouvé…

Normalement,il ne faut pas créer le périphérique mais :

  • passer en inclusion Tuya
  • le périphérique est créé avec son adresse IP
  • les dps sont justement récupérés depuis le cloud Tuya.

Bien lire la doc avec le lien pour modifier le cloud Tuya afin de récupérer tous les dps
Peux tu refaire cette manip ?
Pour ne pas casser ce que tu as fait, change le devid en mettant @ à la fin par exemple et son adresse IP et applique la procédure ci-dessus.
Si KO, revenir ici et me donner les logs wifilightV2_inc (effacer avant inclusion)

Ne pas créer le périphérique au niveau du plugin et juste lancer la découverte, c’est ce que j’avais fait au départ, et rien n’avait été créé. Il est vrai que je n’avais pas encore renseigné mon Access Id et mon Access Secret au niveau de la configuration du plugin.
J’ai donc suivi la procédure du tuto, création d’un équipement wifilightv2, récupéré l’Id et la local Key du device, renseigné l’Access Id et l’Access Secret, lancé la découverte et là j’ai vu apparaître dans l’équipement wifilightv2 quelques commandes que j’ai ensuite corrigées et complétées grâce aux infos que j’avais trouvées dans le site développeur iot.

Sinon je n’ai pas bien compris la manip que tu me demandes de faire…

Pour ne pas casser ce que tu as fait, change le devid en mettant @ à la fin par exemple et son adresse IP et applique la procédure ci-dessus.

À quel niveau dois-je changer le devid, dans l’équipement jeedom et donc ainsi la procédure va créer un nouvel équipement wifilightv2 ?

Aucune procédure n’indique de faire comme cela.

C’est ce que j’ai écrit.

Je vais essayer.

Je viens donc d’ajouter @192.168.0.182 au champ devid de l’équipement wifilightv2, sauvegarder, et lancer « Tuya passer en inclusion ».
Les morceaux de cercle colorés se mettent à tourner, et après une dizaine de secondes on obtient le résultat suivant :
« Aucun nouveau périphérique Tuya trouvé ».

La procédure n’est pas celle ci, je n’ai pas indiqué de mettre une adresse IP et de créer un périphérique
je l’ai indiquée plus haut, je répète car je suis intéressé par la résolution d’un éventuel problème :

Pour le périphérique existant :
changer le devid en mettant @ à la fin par exemple et son adresse IP
passer en inclusion Tuya
le périphérique est créé avec son adresse IP
les dps sont justement récupérés depuis le cloud Tuya.
Bien lire la doc avec le lien pour modifier le cloud Tuya afin de récupérer tous les dps

Si KO, revenir ici et me donner les logs wifilightV2_inc (effacer avant inclusion)

Je viens de refaire la manip.
-ajouter @ à la fin des champs devid, localKey
-on ne peut pas ajouter le caractère @ à l’adresse ip, je l’ai donc changée en 192.168.0.183 (au lieu de 182)
-j’ai lancé la procédure d’inclusion en cliquant le bouton « Tuya passer en inclusion ».
Même résultat : aucun équipement n’a été créé.

Au vu du log, le fait de changer le devid, le localkey ou même l’adresse ip ne change rien, le plugin voit toujours l’équipement déjà créé.

Log wifilightV2_inc:

[2023-11-04 11:32:00]DEBUG : Tuya cloud
[2023-11-04 11:32:00]DEBUG : try:openapi.tuyaeu.com
[2023-11-04 11:32:00]DEBUG : token:af26f313296998c572a102d44095f75e
[2023-11-04 11:32:01]DEBUG : ad:192.168.0.182 ret:204
[2023-11-04 11:32:01]DEBUG : msg:[0][0][55][aa][0][0][0][0][0][0][0][23][0][0][0][bc][0][0][0][0][23][d0][1e][5f][ef][56][83][33][14][ce][f6][f][b0][86][ed][33][5a][f7][1c][8f][71][12][fb][b8][3][13][ac][4a][fd][bf][4c][bc][5][24][66][d0][25][25][9f][4d][c1][b6][27][88][16][cb][5d][6f][19][59][df][4f][cc][c2][35][af][1b][39][1][66][ba][89][26][4d][72][56][f9][92][ef][b][b3][c9][94][6f][6c][a8][e2][e1][48][53][2e][d][bc][9a][92][c3][31][72][86][eb][f2][38][be][57][97][86][d3][91][7d][2c][88][cc][53][ed][5f][73][be][22][a2][27][c0][e1][93][23][17][4f][b7][9e][a1][7e][7c][a3][86][63][e0][94][d][97][6f][bd][ac][3e][9d][d4][c5][9e][d6][7][7a][37][13][a1][f5][34][c5][f7][5c][c6][9c][6a][e][15][31][60][a1][7b][c4][a][cc][9b][f7][10][aa][e3][2][75][84][57][4][b3][47][69][a7][f2][18][1a][3b][fe][ce][95][0][0][aa][55]
[2023-11-04 11:32:01]DEBUG : len:16
[2023-11-04 11:32:01]DEBUG :  updkeymd5:[6c][1e][c8][e2][bb][9b][b5][9a][b5][b][d][af][64][9b][41][a]
[2023-11-04 11:32:01]DEBUG : port:6667
[2023-11-04 11:32:01]DEBUG : data:55
[2023-11-04 11:32:01]DEBUG : 3.3 or 3.4 => decode
[2023-11-04 11:32:01]DEBUG :  cmd:23 - {"ip":"192.168.0.182","gwId":"bf31e9b112862fba27eiok","active":2,"ablilty":0,"encrypt":true,"productKey":"z95s7p3z54xbsjnl","version":"3.4","token":true,"wf_cfg":true}     ip|192.168.0.182 gwId|bf31e9b112862fba27eiok active|2 ablilty|0 encrypt|1 productKey|z95s7p3z54xbsjnl version|3.4 token|1 wf_cfg|1 ip|192.168.0.182 gwId|bf31e9b112862fba27eiok active|2 ablilty|0 encrypt|1 productKey|z95s7p3z54xbsjnl version|3.4 token|1 wf_cfg|1  - Read Json OK
[2023-11-04 11:32:01]DEBUG : info:{"ip":"192.168.0.182","gwId":"bf31e9b112862fba27eiok","active":2,"ablilty":0,"encrypt":true,"productKey":"z95s7p3z54xbsjnl","version":"3.4","token":true,"wf_cfg":true}
[2023-11-04 11:32:03]DEBUG :  wait 17 s
[2023-11-04 11:32:06]DEBUG :  wait 14 s
[2023-11-04 11:32:09]DEBUG :  wait 11 s
[2023-11-04 11:32:12]DEBUG :  wait 8 s
[2023-11-04 11:32:15]DEBUG :  wait 5 s
[2023-11-04 11:32:18]DEBUG :  wait 2 s
[2023-11-04 11:32:20]DEBUG : info:{"addresses":["192.168.0.182"],"version":["3.4"],"id":["bf31e9b112862fba27eiok"]}
[2023-11-04 11:32:20]DEBUG : id:bf31e9b112862fba27eiok
[2023-11-04 11:32:20]DEBUG : res
[2023-11-04 11:32:20]DEBUG :  [{"code":"forward_energy_total","value":43},{"code":"reverse_energy_total","value":99},{"code":"total_power","value":0}],"sub":false,"time_zone":"+01:00","uid":"eu1684440904669TKLCE","update_time":1699035047,"ner_id":"156327103","product_id":"z95s7p3z54xbsjnl","product_name":"WIFI Dual Meter","status":[{"code":"forward_energy_total","value":43},{"code":"reverse_energy_total","value":99},{"code":"total_power","value":0}],"sub":false,"time_zone":"+01:00","uid":"eu1684440904669TKLCE","update_time":1699035047,"WIFI Dual Meter","online":true,""product_id":"z95s7p3z54xbsjnl","product_name":"WIFI Dual Meter","status":[{"code":"forward_energy_total","value":43},{"code":"reverse_energy_total","value":99},{"code":"total_power","value":0}],"sub":false,"time_zone":"+01:00","uid":"eu1684440904669TKLCE","update_time":1699035047,"uuid":"ca11342d27a7254d"}]
[2023-11-04 11:32:21]DEBUG :  gw found:{"local_key":[],"id":[]}
[2023-11-04 11:32:21]DEBUG : ** name|WIFI Dual Meter
[2023-11-04 11:32:21]DEBUG : >> id|bf31e9b112862fba27eiok
[2023-11-04 11:32:21]DEBUG : >> cat|zndb
[2023-11-04 11:32:21]DEBUG : >> node_id|
[2023-11-04 11:32:21]DEBUG : >> local_key|kOA'~E90!ztT1Aw?
[2023-11-04 11:32:21]DEBUG :
[2023-11-04 11:32:21]DEBUG : type:wifi
[2023-11-04 11:32:21]DEBUG : Create or update:WIFI Dual Meter
[2023-11-04 11:32:21]DEBUG : exist is:1
[2023-11-04 11:32:21]DEBUG :    local key:kOA'~E90!ztT1Aw?
[2023-11-04 11:32:21]DEBUG : Attach nodes to GW for 3.4/3.5 only
[2023-11-04 11:32:21]DEBUG : End Tuya cloud

Par ailleurs, on peut voir que seuls les champs
{« code »:« forward_energy_total »,« value »:43},
{« code »:« reverse_energy_total »,« value »:99},
{« code »:« total_power »,« value »:0}],
sont présents.

Je n’ai pas écrit de mettre @ derrière l’adresse ip mais de la changer
le plugin détecte qu’il y a déjà un périphérique de nodeid : bf31e9b112862fba27eiok
et je viens de vérifier le code,il ne peut pas en être autrement.
Revérifier et supprimer ce périphérique ou changer son id
Si ça persiste et que cela n’est pas gênant, supprimer carrément tout périphérique wifilightV2 pour ne pas passer trop de temps la dessus.
Eventuellement, faire une copie d’écran des périphériques

Bon de toutes façons on voit bien dans les logs que le plugin ne remonte que 3 dp.
Il ne remonte ni la tension, ni le facteur de puissance, et pour chaque canal, ni la direction du flux d’énergie, ni l’intensité, ni la puissance instantanée.
Et comme j’ai réussi à remonter ces infos et que le bignou fonctionne correctement, je reste comme ça.
Je n’ai utilisé ce plugin, payé 6€, que parce que j’ai fait une erreur de commande, wifi au lieu de zigbee.
J’avais juste fait ce post pour aider les personnes ayant rencontré les mêmes problèmes de mise en œuvre de ce plugin.

j’aimerai bien que l’on aille au bout de 2 soucis.
ce n’est pas normal que le plugin trouve un périphérique qui n’existe pas
De plus la doc explique comment récupérer les dps manquants

Si vous voulez aller plus loin, donnez des explications claires, avec des 1) 2) etc…, pas des « allez lire la doc ».
Votre doc est très mal faite, je l’ai lue, on y trouve tout et son contraire, c’est un magma de choses que vous avez ajoutées au fil de l’eau sans reprendre ce qui avait déjà écrit et c’est la raison pour laquelle elle est si longue, sans compter les indications sur la droite de la page de l’équipement qui ne font qu’obscurcir l’ensemble.
J’ai dirigé un service de développement électronique puis informatique pendant 30 ans, je peux vous affirmer que si on m’avait remis une telle doc, c’était directement à la poubelle.

Dommage de finir comme cela
Merci de mettre résolu

Je n’ai jamais demandé de résolution de quoi que ce soit.
Le seul problème est quil est impossible de faire apparaître les champs unités dans les commandes info que j’ai ajoutées manuellement.
Problème qui n’est pas résolu.

Bon courage, je sors et je plonke.

Bonjour Bernard,
Je viens de lire ces posts car je suis concerné par le sujet pour l’intégration de ce nouveau module. Je ne pars pas de zero car j’ai déjà inclu des équipements Tuya selon ta procédure et cela fonctionne. Je viens d’ajouter tout simplement ce module sans problème en inclusion, le seul souci c’est que je n’ai pas toutes les commandes (et en écart avec l’appli smartlife) et de plus il y a deux voies et dans les commandes remontées il y en aurait plutôt qu’une?voir PJ:


Merci d’avance pour ton retour

effectivement j’ai eu le même souci.Donc j’ai créé les commandes manquantes avec les dps correspondants

1 « J'aime »