Capteur(s) de température # TuYa CX-0726 sur Zigbee2MQTT

Bonjour,
à la recherche de capteur de température « pas cher » j’ai trouvé un modèle correct sur Ali. Il est parfaitement remonté sur HA et est vu comme le modèle TuYa CX-0726 et la photo correspond bien.

Quelques semaine plus tard, à la suite de mes tests j’en commande 4 de plus, même vendeur même modèle mais là ils sont bien appairés mais aucun n’est reconnu et ils sont indiqués comme « Constructeur Non Supporté » et modèle « TS0601 » alors que physiquement c’est les mêmes…

J’imagine qu’il doit y avoir une différence, mais comment en sortir ? Comment les faire reconnaitre ?
Je suis récent sur HA et sur Zigbee2MQTT, je suis sur un synology en VM.
Je ne sais pas si c’est permis de partager un lien mais voici la page du capteur : https://fr.aliexpress.com/item/1005004064535901.html

Merci

Salut,

Classique avec les différents lot de fabrication et les marques blanches…
En principe il devrait fonctionner sans rien faire

Refait et vérifie que tu ne vas pas trop vite dans le processus d’appairage et presse régulièrement le bouton pendant ce temps là

Bon, du coup je viens d’effacer les objets et retenter. Le thermomètre est trouvé dès les 1ières secondes mais une seconde plus tard j’ai de nouveau les messages…

As-tu accès au fichier database.db de zigbee2mqtt ?
Si oui, peux-tu donner toute la ligne correspondant à ton capteur que tu viens d’intégrer ?

Oui, mais par contre entre les 2 thermomètre un fonctionne et l’autre pas reconnu, mais je ne sais pas lequel est lequel :

le premier :
{« id »:6,« type »:« EndDevice »,« ieeeAddr »:« 0xa4c138bdacc70c94 »,« nwkAddr »:59609,« manufId »:4417,« manufName »:« _TZE200_znbl8dj5 »,« powerSource »:« Battery »,« modelId »:« TS0601 »,« epList »:[1],« endpoints »:{« 1 »:{« profId »:260,« epId »:1,« devId »:770,« inClusterList »:[1,1026,1029,0],« outClusterList »:[25,10],« clusters »:{« genBasic »:{« attributes »:{« stackVersion »:0,« dateCode »:«  »}}},« binds »:[],« configuredReportings »:[],« meta »:{}}},« appVersion »:66,« stackVersion »:0,« hwVersion »:1,« dateCode »:«  »,« zclVersion »:3,« interviewCompleted »:true,« meta »:{},« lastSeen »:1662638756297,« defaultSendRequestWhen »:« immediate »}

Le second :
{« id »:9,« type »:« EndDevice »,« ieeeAddr »:« 0xa4c1386952013572 »,« nwkAddr »:45025,« manufId »:4417,« manufName »:« _TZE200_qoy0ekbd »,« powerSource »:« Battery »,« modelId »:« TS0601 »,« epList »:[1],« endpoints »:{« 1 »:{« profId »:260,« epId »:1,« devId »:770,« inClusterList »:[1,1026,1029,0],« outClusterList »:[25,10],« clusters »:{« genBasic »:{« attributes »:{« modelId »:« TS0601 »,« manufacturerName »:« _TZE200_qoy0ekbd »,« powerSource »:3,« zclVersion »:3,« appVersion »:64,« stackVersion »:0,« hwVersion »:1,« dateCode »:«  »}}},« binds »:[],« configuredReportings »:[],« meta »:{}}},« appVersion »:64,« stackVersion »:0,« hwVersion »:1,« dateCode »:«  »,« zclVersion »:3,« interviewCompleted »:true,« meta »:{},« lastSeen »:1662638610602,« defaultSendRequestWhen »:« immediate »}

Merci

La combinaison device + manufacturer (TS0601 / _TZE200_znbl8dj5) n’existe pas : il faut donc ajouter celui-ci dans la base en passant pas une issue z2m

Celui qui marche est un peu plus haut (_TZE200_qoy0ekbd)

Nickel. Dans ce cas, fais cette petite manip’ pour pouvoir l’intégrer :

  • Crée un fichier TS0601.js dans le dossier zigbee2mqtt et colle ce code à l’intérieur :
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const e = exposes.presets;
const ea = exposes.access;

const definition = {
    fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE200_znbl8dj5'}],
        model: 'CX-0726',
        vendor: 'TuYa',
        description: 'Temperature & humidity LCD sensor',
        fromZigbee: [fz.tuya_temperature_humidity_sensor, fz.ignore_tuya_set_time],
        toZigbee: [],
        onEvent: tuya.onEventSetLocalTime,
        exposes: [e.temperature(), e.humidity(), e.battery()],
};

module.exports = definition;
  • modifie le fichier configuration.yaml de zigbee2mqtt en y ajoutant/modifiant :
external_converters:
  - TS0601.js
  • Redémarre zigbee2mqtt et normalement, ça devrait fonctionner !

ça fait 2 fois que je refais la manip, modification / suppression device / appairage et ensuite re-erreur. A chaque fois quand je retourne voir le fichier configuration.yaml les lignes ajoutées ont disparu, pourtant je suis sur d’avoir validé la modification…

Par contre je ne sais pas redémarrer Zigbee2MQTT et je redémarre HA.

Le fichier configuration.yaml que tu modifies est bien celui de zigbee2mqtt et pas celui de HA ?
Et tu le modifie avec un éditeur de texte ou via l’interface Z2M ?
Ca me paraît bizarre que les lignes disparaissent…

Je viens encore de le refaire. J’utilise File editor

Chronologie :

  1. J’ajoute les lignes au bon endroit.
  2. Je ferme puis je retourne vérifier, elles y sont.
  3. Je redémarre HA (outils dev / redémarrer)
  4. Une fois redémarré je vais vérifier le fichier et les lignes y sont.
  5. Je supprime le device
  6. Je relance un appairage, il me le trouve puis passe en erreur quelques secondes ensuite.
  7. Je retourne voir le fichier les lignes n’y sont plus !

Tu n’as pas besoin de supprimer ton device.
Au pire, tu l’appaires, tu crées/modifies les fichiers indiqués, tu redémarre Z2M et il devrait le reconnaître via ton external_converter

Comment je ne redémarre que Z2M ?

Dans HA, tu vas dans Paramètres > Modules complémentaires > Zigbee2MQTT et tu devrais avoir un bouton Redémarrer

ça se complique ! :smiley:

Pour le coup je l’ai redémarré une première fois pas par cet endroit mais dans les pages du module, et depuis la page est vide ! le module est encore visible, j’ai arrêté puis redémarré par l’endoit que tu viens d’indiquer mais la page de l’interface est vide…

Mais utilisation CPU 69,7% !

J’ai rebooté le NAS mais plus de zigbee !

Elle est bien bonne celle là… :smiley:
N’ayant jamais installé HA sur un NAS, je ne pourrai malheureusement t’aiguiller là dessus

@varioflux J’ai balancé un PR pour ton device. Il sera disponible nativement lors de la prochaine mise à jour de Z2M (pour le 1er octobre)

1 « J'aime »

En cherchant l’erreur, je jette un oeil au journal de Z2M et je vois (répété pas mal de fois)
ReferenceError: tuya is not defined
at /app/dist/util/externally-loaded.js:16:18
at Script.runInContext (node:vm:139:12)
at Script.runInNewContext (node:vm:144:17)
at Object.runInNewContext (node:vm:298:38)
at loadModuleFromText (/app/lib/util/utils.ts:148:8)
at loadModuleFromFile (/app/lib/util/utils.ts:155:12)
at Object.getExternalConvertersDefinitions (/app/lib/util/utils.ts:165:25)
at getExternalConvertersDefinitions.next ()
at new ExternalConverters (/app/lib/extension/externalConverters.ts:12:20)
at new Controller (/app/lib/controller.ts:84:58)
[17:27:04] INFO: Handing over control to Zigbee2MQTT Core …
/app/dist/util/externally-loaded.js:16
onEvent: tuya.onEventSetLocalTime,
^

C’est une VM normale que ça soit un NAS ou autre, et la panne Z2M a eu lieu avant que je redémarre la machine…

Si je désinstalle Z2M il va falloir tout reconfigurer ensuite ?
j’avais pas mal galéré au début !

Dans ce cas, ajoutes ceci :

const tuya = require('zigbee-herdsman-converters/lib/tuya');

en dessous de :

const extend = require('zigbee-herdsman-converters/lib/extend');

Encore un truc zarbi, en farfouillant je regarde le répertoire des log et depuis le plantage, soit 15:43:39 il me créé un répertoire log toutes les 5 secondes !