Разрабатываю чисто для себя кастомное устройство-поливалку с zigbee-подключением.
Прошивка пишется на ESP-IDF, подлючается к zigbee2mqtt, дальше у к homeassistant.
Собственно в чем затык. Устройство в z2m видно, определяется, конечно после написания экстеншна. Через дев-консоль z2m я могу получить параметры устройства (пока только температура). Однако в Exposes температура все время N/A (а значит и в HA она тоже не определена). ЧЯДНТ?
Код экстеншна для z2m:
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 yourTemperatureConverter = {
// This will be the key in the 'fromZigbee' and 'toZigbee' converters
cluster: 'msTemperatureMeasurement',
type: ['attributeReport', 'readResponse'],
convert: (model, msg, publish, options, meta) => {
const temperature = msg.data['measuredValue'];
// Convert temperature to Celsius if it's not already
const temperatureC = temperature / 100;
// Return an object with the temperature property
return {temperature: temperatureC};
},
};
// Add your converter to the 'fromZigbee' converters
fz.yourTemperatureConverter = yourTemperatureConverter.convert;
const definition = {
zigbeeModel: ['m1'],
model: 'm1',
vendor: 'm1',
description: 'My super switch!',
supports: 'temperature,genBasic',
fromZigbee: [fz.yourTemperatureConverter],
toZigbee: [],
exposes: [e.temperature()]
};
module.exports = definition;