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 !