Besoin d'aide a l'integration d'un thermostat on supporté par Zigbee2MQTT

Mon problème

Bonjour,

Je viens d’emménager dnas mon nouvel appartement, équipé de radiateurs connectables.
Ces radiateurs ont le module thermostat suivant :

Leur intégration wifi sur une appli mobile marche asez bien, mais c’est loin d’être l’idéal en terme de vie privée, et ce n’est évidemment pas intégré à mon système HA. (l’appli dépend de la marque du radiateur, mais en pratique ce sont toutes des forks du celle du vendeur du thermostat)

Mais fort heursement, le thermostat est indiqué comme compatible Zigbee.
Je me rends compte alors :

  • il n’est pas supporté dans la banque d’appareils Zigbee2MQTT
  • j’ai essayé un appareilalge via ZHA, mais je n’ai accès qu’a la valeur de température ambiante. Aucun controle posible du thermostat, ce qui est a contrario possible via leur appli et connecton Wifi.

J’essaye donc de suivre le tuto d’intégration d’appareils non supportés :

Seulement, je galère un peu !
Mon fichier .js de configuration est pour l’instant le suivant (j’ai utilisé le converter thermostat par défaut) :

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 e = exposes.presets;
const ea = exposes.access;

const definition = {
    zigbeeModel: ['PH25'], // The model ID from: Device with modelID 'lumi.sens' is not supported.
    model: 'PH25', // Vendor model number, look on the device for a model number
    vendor: 'Imhotep creation', // Vendor of the device (only used for documentation and startup logging)
    description: 'Heater thermostat', // Description of the device, copy from vendor site. (only used for documentation and startup logging)
    fromZigbee: [fz.thermostat], // added from log and following converter https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/fromZigbee.js
    toZigbee: [], // Should be empty, unless device can be controlled (e.g. lights, switches).
    exposes: [e.temperature()], // Defines what this device exposes, used for e.g. Home Assistant discovery and in the frontend
};

module.exports = definition;

Du coup : j’arrive a récupérer la température locale et la consigne de température via la console de dev

Mais impossible d’écrire une consigne,
Ce qui semble normal, car :
toZigbee: [],

seulement, si je change cette ligne par :
toZigbee: [tz.thermostat],
Alors Z2m ne se lance plus. Voici le log d’erreur au démarrage :

[17:49:52] INFO: Preparing to start...
[17:49:52] INFO: Socat not enabled
[17:49:53] INFO: Starting Zigbee2MQTT...
/app/node_modules/zigbee-herdsman-converters/index.js:91
        if (converter.options) {
                      ^
TypeError: Cannot read properties of undefined (reading 'options')
    at Object.addDefinition [as addDeviceDefinition] (/app/node_modules/zigbee-herdsman-converters/index.js:91:23)
    at new ExternalConverters (/app/lib/extension/externalConverters.ts:15:17)
    at new Controller (/app/lib/controller.ts:84:58)
    at start (/app/index.js:106:18)

Du coup je sèche.

Second problème, je n’arrive pas a sortir en expose les data que je vois en consile dev.
e.temperature() renvoie toujours null, et toutes mes tentatives de modifier cette ligne font crasher Z2m au démarrage.

Je planche vraiement, et ça m’embète pas mal. :confused:
Avez-vous une aide à m’apporter pour ajouter proprement cete appareil à Z2M ?

Merci d’avance

PS : j’ai contacté en amont le fabriquant pour avoir son aide, mais il fait visiblement la sourde oreille.
PSS : voici pour info ce à quoi ressemble l’onglet « état » de l’appareil sous Zigbee2mqtt:

{
    "linkquality": 87,
    "local_temperature": 17.96,
    "max_heat_setpoint_limit": 19,
    "min_heat_setpoint_limit": 5,
    "occupied_cooling_setpoint": null,
    "occupied_heating_setpoint": 15.5,
    "temperature_setpoint_hold": false,
    "unoccupied_heating_setpoint": null
}

Ma configuration


System Information

version core-2023.1.7
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.90
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4996
Installed Version 1.31.0
Stage running
Available Repositories 1247
Downloaded Repositories 5
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.5
update_channel stable
supervisor_version supervisor-2023.03.1
agent_version 1.4.1
docker_version 20.10.22
disk_total 30.8 GB
disk_used 7.9 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Grafana (8.1.0), InfluxDB (4.5.0), File editor (5.5.0), Node-RED (14.1.0), Mosquitto broker (6.1.3), Zigbee2MQTT (1.30.2-1), Terminal & SSH (9.6.1)
Dashboards
dashboards 1
resources 2
views 2
mode storage
Recorder
oldest_recorder_run 6 mars 2023 à 11:02
current_recorder_run 19 mars 2023 à 11:25
estimated_db_size 579.19 MiB
database_engine sqlite
database_version 3.38.5
___