Zigbee2MQTT device not supported !

Salutation, je viens d’avoir un petit problème avec Zigbee2MQTT, j’ai acheté des prises NOUS A1Z qui n’ont pas été reconnu tout de suite et il y a une solution à ça, donc comme d’habitude je te partage mon expérience.
C’est parti !

Voici le message que j’ai eu dans les logs de Z2M

Warning 2022-11-29 21:15:49Device '0xa4c1382b4db308b5' with Zigbee model 'TS011F' and manufacturer name '_TZ3000_2putqrmw' is NOT supported, please follow https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html

Pour trouver les logs vous pouvez aller dans config\zigbee2mqtt\log ou via l’interface dans journaux dans le menu du haut

Dans ce cas pas de panique, Z2M permet d’ajouter du matériel soit même en « injectant » un fichier JS avec les paramètres qui vont bien

Tout d’abord rendez-vous sur le GitHub Z2M dans la partie issues et rechercher le code du manufacturer name sur Git, dans mon cas : _TZ3000_2putqrmw qui se trouve dans les logs.

je tombe sur cette article https://github.com/Koenkk/zigbee2mqtt/issues/15212

En parcourant la page il y a du code dans External Converter.
Le but est de récupérer ce bout de code que l’on va intégrer à Z2M.

Maintenant il faut aller dans le répertoire de Z2M, moi c’est un module complémentaire de HA donc j’y accède soit via le partage SAMBA soit via File editor.

Crées un fichier nous.js, par exemple, dans le répertoire config\zigbee2mqtt et copier/coller le code trouvé sur le GitHub, dans mon cas :

const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').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 globalStore = require('zigbee-herdsman-converters/lib/store')
const ota = require('zigbee-herdsman-converters//lib/ota');
const e = exposes.presets;
const ea = exposes.access;

module.exports = [
    {
        zigbeeModel: ['TS011F'],
        model: 'A1Z_2putqrmw',
        description: 'Smart plug (with power monitoring)',
        vendor: 'Nous',
        ota: ota.zigbeeOTA,
        fromZigbee: [fz.on_off, fz.electrical_measurement, fz.metering, fz.ignore_basic_report, fz.tuya_switch_power_outage_memory,
            fz.ts011f_plug_indicator_mode, fz.ts011f_plug_child_mode],
        toZigbee: [tz.on_off, tz.tuya_switch_power_outage_memory, tz.ts011f_plug_indicator_mode, tz.ts011f_plug_child_mode],
        configure: async (device, coordinatorEndpoint, logger) => {
            const endpoint = device.getEndpoint(1);
            await reporting.bind(endpoint, coordinatorEndpoint, ['genOnOff', 'haElectricalMeasurement', 'seMetering']);
            await reporting.rmsVoltage(endpoint, {change: 5});
            await reporting.rmsCurrent(endpoint, {change: 50});
            await reporting.activePower(endpoint, {change: 10});
            await reporting.currentSummDelivered(endpoint);
            endpoint.saveClusterAttributeKeyValue('haElectricalMeasurement', {acCurrentDivisor: 1000, acCurrentMultiplier: 1});
            endpoint.saveClusterAttributeKeyValue('seMetering', {divisor: 100, multiplier: 1});
            device.save();
        },
        exposes: [e.switch(), e.power(), e.current(), e.voltage().withAccess(ea.STATE),
            e.energy(), exposes.enum('power_outage_memory', ea.STATE_SET, ['on', 'off', 'restore'])
                .withDescription('Recover state after power outage'),
            exposes.enum('indicator_mode', ea.ALL, ['off', 'off/on', 'on/off', 'on'])
                .withDescription('Plug LED indicator mode'), e.child_lock()],
    },
];

Il reste à modifier le fichier configuration.yaml de Z2M pour lui dire de charger ce fichier au démarrage en ajoutant :

external_converters:
  - nous.js

Voici le début de mon fichier configuration.yaml :

homeassistant: true
external_converters:
  - nous.js
advanced:
  channel: 15

Ensuite il suffit de redémarrer Z2M est normalement le matériel est reconnu !

Attention, petit retour d’expérience :
A la suite d’une mise à jour de Zigbee2MQTT si ils ont intégré le matériel, Z2M va planter au démarrage car il aura 2 instructions pour le même matériel, il faudra donc aller dans configuration.yaml et supprimer la ligne du fichier JS correspondant !

2 Comments

  1. steve

    Bonjour,
    Super tutos Merci de nous partager ton expérience. J’ai une question; sur mon zigbee2Mqtt j’ai ajouté mon module pour piloter ma climatisation. Je le pilote bien mais sur ma tuile j’ai deux valeur de consigne de température (chaud et froid) comment je peut faire pour supprimé ça et n’avoir qu’une valeur qui change en fonction de l’état de la clim (chaud/froid)
    en gros je cherche a modifier le fichier de config de mon appareil mais je ne sais pas ou il est.
    Merci de votre réponse

    • Tof

      Bonjour Steve,
      Merci pour ton retour.
      Je ne pense pas que tu pourras faire ça au niveau de la configuration de ton appareil mais il faudra faire ça au niveau de la carte de ton dashboard.

      Il y a pas mal de carte Thermostat et plein de tuto sur d’autre site come HACF ou My Canaletto

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Back to Top