-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[New device support]: Smart home radiator valves TRV-705ZB (BEOK Controls) #24247
Comments
Hi, I have the same wish! Thanks for it! |
Hello, i have the same unsupperted device |
Go for it (: |
Because it is a tuya device, I created this beok.js - File - but it doesn't work. I don't see anything in the debug log file. I'm new in any programming, and my english isn't the best.
|
Hi, @larryson309, @mrumskiy, @dobmeierr, i have bought one of this valves. I have crafted a basic converter to use. This is not a complete converter which is ready to upload to zigbee2mqtt but it does the job. @4ug3r @Koenkk When i have a complete converter i will do a pull request. For all the people that are searching 'TRV-705ZB zigbee2mqtt' or similar in Google i have to say that this is the best quality construcion tuya valve i have purchased, and i have 8 models. The battery cap doesn't drop, screen is well lit, buttons work... 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 e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const definition = {
fingerprint: [
{
// The model ID from: Device with modelID 'TS0601' is not supported
// You may need to add \u0000 at the end of the name in some cases
modelID: 'TS0601',
// The manufacturer name from: Device with modelID 'TS0601' is not supported.
manufacturerName: '_TZE284_ltwbm23f',
},
],
model: 'TRV-705ZB',
vendor: 'TuYa',
description: 'Thermostat Radiator Valve',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
onEvent: tuya.onEventSetTime, // Add this if you are getting no converter for 'commandMcuSyncTime'
configure: tuya.configureMagicPacket,
exposes: [
e.climate()
.withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
.withLocalTemperature(ea.STATE).withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET),
e.enum('preset', ea.STATE_SET, ['off', 'antifrost', 'eco', 'comfort', 'program', 'valve_open']).withDescription('Off deactivates valve operation, '
+ 'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
e.enum('valve_status', ea.STATE_SET, ['valve_closed', 'valve_open']).withDescription('Off deactivates valve operation, '
+ 'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
e.child_lock(),
],
meta: {
tuyaDatapoints: [
[2, 'preset', tuya.valueConverterBasic.lookup({
'off': tuya.enum(0),
'antifrost': tuya.enum(1),
'eco': tuya.enum(2),
'comfort': tuya.enum(3),
'program': tuya.enum(4),
'valve_open': tuya.enum(5),
})],
[2, 'valve_status', tuya.valueConverterBasic.lookup({
'valve_closed': tuya.enum(0),
'auto': tuya.enum(1),
'auto': tuya.enum(2),
'auto': tuya.enum(4),
'auto': tuya.enum(3),
'valve_open': tuya.enum(5),
}, 'auto')],
[4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
[5, 'local_temperature', tuya.valueConverter.divideBy10],
[7, 'child_lock', tuya.valueConverter.lockUnlock],
[47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
],
},
};
module.exports = definition; For zigbee2mqtt starting guys:
external_converters:
- tuya_trv705.js If you have in your file an 'external_converters' add bellow the file line. Bye |
Some additional endpoint added: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 e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const definition = {
fingerprint: [
{
// The model ID from: Device with modelID 'TS0601' is not supported
// You may need to add \u0000 at the end of the name in some cases
modelID: 'TS0601',
// The manufacturer name from: Device with modelID 'TS0601' is not supported.
manufacturerName: '_TZE284_ltwbm23f',
},
],
model: 'TRV-705ZB',
vendor: 'TuYa',
description: 'Thermostat Radiator Valve',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
onEvent: tuya.onEventSetTime, // Add this if you are getting no converter for 'commandMcuSyncTime'
configure: tuya.configureMagicPacket,
exposes: [
e.battery(),
e.child_lock(),
e.position(),
e.window_detection(),
e.binary('window', ea.STATE, 'OPEN', 'CLOSE').withDescription('Window status closed or open '),
e.binary('valve_state', ea.STATE, 'OPEN', 'CLOSE').withDescription('Valve status closed or opened '),
e.climate()
.withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
.withLocalTemperature(ea.STATE)
.withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET)
.withPreset( ['off', 'antifrost', 'eco', 'comfort', 'program', 'valve_open'],
'Off deactivates valve operation, ' +
'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
e.enum('valve_status', ea.STATE_SET, ['valve_closed', 'valve_open']).withDescription('Off deactivates valve operation, '
+ 'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
e.enum('display_brightness', ea.STATE_SET, ['high', 'medium', 'low']).withDescription('Display brightness'),
e.enum('screen_orientation', ea.STATE_SET, ['up', 'down']).withDescription('Screen orientation'),
e
.enum('mode', ea.STATE_SET, ['comfort', 'eco'])
.withDescription(
'Hysteresis - comfort > switches off/on exactly at reached ' +
'temperature with valve smooth from 0 to 100%, eco > 0.5 degrees above or below, valve either 0 or 100%',
),
],
meta: {
tuyaDatapoints: [
[2, 'preset', tuya.valueConverterBasic.lookup({
'off': tuya.enum(0),
'antifrost': tuya.enum(1),
'eco': tuya.enum(2),
'comfort': tuya.enum(3),
'program': tuya.enum(4),
'valve_open': tuya.enum(5),
})],
[2, 'valve_status', tuya.valueConverterBasic.lookup({
'valve_closed': tuya.enum(0),
'auto': tuya.enum(1),
'auto': tuya.enum(2),
'auto': tuya.enum(4),
'auto': tuya.enum(3),
'valve_open': tuya.enum(5),
}, 'auto')],
[
3,
'valve_state',
tuya.valueConverterBasic.lookup({
CLOSE: tuya.enum(0),
OPEN: tuya.enum(1),
}),
],
[4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
[5, 'local_temperature', tuya.valueConverter.divideBy10],
[6, 'battery', tuya.valueConverter.raw],
[7, 'child_lock', tuya.valueConverter.lockUnlock],
[14, 'window_detection', tuya.valueConverter.onOff],
[
15,
'window',
tuya.valueConverterBasic.lookup({
CLOSE: tuya.enum(0),
OPEN: tuya.enum(1),
}),
],
[47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
[102, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(1)],
[103, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(2)],
[104, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(3)],
[105, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(4)],
[106, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(5)],
[107, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(6)],
[108, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber(7)],
[111, 'display_brightness', tuya.valueConverterBasic.lookup({high: tuya.enum(0), medium: tuya.enum(1), low: tuya.enum(2)})],
[
113,
'screen_orientation',
tuya.valueConverterBasic.lookup({
up: tuya.enum(0),
down: tuya.enum(1),
}),
],
[114, 'position', tuya.valueConverter.divideBy10],
[127, 'mode', tuya.valueConverterBasic.lookup({comfort: tuya.enum(0), eco: tuya.enum(1)})],
],
},
};
module.exports = definition; more
regards, |
and how could this be converted to a ZHA python file? |
Hi @harryzz, thanks for all that new endpoints that make this device usable ! Can you provide the "thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber" function in order to be able to use the schedule ? Thanks. |
I did some tests (got the function from current master branch) but it's not working... the function does not correctly handle the temperatures on schedule (30° is rounded to 4.4 => 300 written on 2 bytes). I tried to adapt the function but without success... Hope someone get mode luck on this as this TRV is exactly what I need in terms of features. BTW: The battery does not report anything... maybe wrong DPID. Thanks for any help on supporting this device. |
Hi I use the converter as described by @adelaiglesia. Also, to find the additional endpoints I used "tuya-mqtt" modified by me to support the zigbee tuya coordinators ( https://github.com/harryzz/tuya-mqtt ) . For me battery and scheduler displayed correctly.
I don't have in-depth knowledge of the zigbee2mqtt source so I can't help you more if some of the endpoints do not work correctly. regards, |
And about schedule - not exactly the same as this function: thermostatScheduleDayMultiDP_TRV602Z_WithDayNumber.
regards, |
Thanks a lot for your message that made me "insist" on the device, and after an update of zigbee2mqtt (to 1.42.0, I was not on the last 😞 ) + a reset on the device, the battery level started to report correctly... The schedule was still not working because only the last byte of converted temperature was sent so for 30° you get 4.5° on schedule (300 - 255) with the TRV602Z function. You last message is just gold !!! Thanks a lot, I will try to send a raw payload with a desired value to check is that works correctly on the device, and if so I will have to improve my JS skills to create a converter I try to explain your discovery in human readable format using ascii art 😄
|
Hi, I've created a converter based on the 602Z. Now the schedule works but for an unknown reason, I have a shift on days. The schedule for Thursday is controlled by the Tuesday (day 2) line... I have to determine if there is a pattern or not... In the meantime, please find attached my converter. Don't hesitate to make comments as the JS is not my native language 😄 tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB = {
from: (v) => {
const schedule = [];
for (let index = 1; index < 24; index = index + 4) {
const minutesSinceMidnight = parseInt((v[index] & 0x0f) << 8 | v[index + 1]);
const temperature = parseFloat((v[index + 2] & 0x0f) << 8 | v[index + 3]) / 10.0;
const hour = Math.floor(minutesSinceMidnight / 60);
const minutes = minutesSinceMidnight % 60;
schedule.push(
String(hour).padStart(2, '0') + ':' + String(minutes).padStart(2, '0') + '/' + temperature.toFixed(1),
);
}
return schedule.join(' ');
},
to: (v) => {
const payload = [];
const transitions = v.split(' ');
if (transitions.length != 6) {
throw new Error('Invalid schedule: there should be 6 transitions');
}
for (const transition of transitions) {
const timeTemp = transition.split('/');
if (timeTemp.length != 2) {
throw new Error('Invalid schedule: wrong transition format: ' + transition);
}
const hourMin = timeTemp[0].split(':');
const hour = parseInt(hourMin[0]);
const min = parseInt(hourMin[1]);
const temperature = Math.floor(parseFloat(timeTemp[1]) * 10);
if (hour < 0 || hour > 24 || min < 0 || min > 60 || temperature < 50 || temperature > 300) {
throw new Error('Invalid hour, minute or temperature of: ' + transition);
}
const minutesSinceMidnight = hour * 60 + min;
const firstByte = 0xa0 | (minutesSinceMidnight >> 8);
const secondByte = minutesSinceMidnight & 0xff;
const thirdByte = 0x40 | (temperature >> 8);
const fourthByte = temperature & 0xff;
payload.push(firstByte, secondByte, thirdByte, fourthByte);
}
return payload;
},
}
tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber = (dayNum) => {
return {
from: (v) => tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB.from(v),
to: (v) => {
const data = tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB.to(v);
data.unshift(dayNum);
return data;
},
};
} And then my config is ...
[102, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(1)],
[103, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(2)],
[104, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(3)],
[105, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(4)],
[106, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(5)],
[107, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(6)],
[108, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(7)],
... |
Hi
more endpoints: regards, |
There almost complete working convertor with fixed scheduler from @Lestat-GitHub (in manual mode for now ), some additional endpoints for setting different modes temperature. 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 e = exposes.presets;
const ea = exposes.access;
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const utils = require('zigbee-herdsman-converters/lib/utils');
tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB = {
from: (v) => {
const schedule = [];
for (let index = 1; index < 24; index = index + 4) {
const minutesSinceMidnight = parseInt((v[index] & 0x0f) << 8 | v[index + 1]);
const temperature = parseFloat((v[index + 2] & 0x0f) << 8 | v[index + 3]) / 10.0;
const hour = Math.floor(minutesSinceMidnight / 60);
const minutes = minutesSinceMidnight % 60;
schedule.push(
String(hour).padStart(2, '0') + ':' + String(minutes).padStart(2, '0') + '/' + temperature.toFixed(1),
);
}
return schedule.join(' ');
},
to: (v) => {
const payload = [];
const transitions = v.split(' ');
if (transitions.length != 6) {
throw new Error('Invalid schedule: there should be 6 transitions');
}
for (const transition of transitions) {
const timeTemp = transition.split('/');
if (timeTemp.length != 2) {
throw new Error('Invalid schedule: wrong transition format: ' + transition);
}
const hourMin = timeTemp[0].split(':');
const hour = parseInt(hourMin[0]);
const min = parseInt(hourMin[1]);
const temperature = Math.floor(parseFloat(timeTemp[1]) * 10);
if (hour < 0 || hour > 24 || min < 0 || min > 60 || temperature < 50 || temperature > 300) {
throw new Error('Invalid hour, minute or temperature of: ' + transition);
}
const minutesSinceMidnight = hour * 60 + min;
const firstByte = 0xa0 | (minutesSinceMidnight >> 8);
const secondByte = minutesSinceMidnight & 0xff;
const thirdByte = 0x40 | (temperature >> 8);
const fourthByte = temperature & 0xff;
payload.push(firstByte, secondByte, thirdByte, fourthByte);
}
return payload;
},
}
tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber = (dayNum) => {
return {
from: (v) => tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB.from(v),
to: (v) => {
const data = tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB.to(v);
data.unshift(dayNum);
return data;
},
};
}
const definition = {
fingerprint: [
{
// The model ID from: Device with modelID 'TS0601' is not supported
// You may need to add \u0000 at the end of the name in some cases
modelID: 'TS0601',
// The manufacturer name from: Device with modelID 'TS0601' is not supported.
manufacturerName: '_TZE284_ltwbm23f',
},
],
model: 'TRV-705ZB',
vendor: 'TuYa',
description: 'Thermostat Radiator Valve',
fromZigbee: [tuya.fz.datapoints],
toZigbee: [tuya.tz.datapoints],
onEvent: tuya.onEventSetLocalTime, // Add this if you are getting no converter for 'commandMcuSyncTime'
configure: tuya.configureMagicPacket,
exposes: [
e.battery(),
e.child_lock(),
e.position(),
e.window_detection(),
e.binary('window', ea.STATE, 'OPEN', 'CLOSE').withDescription('Window status closed or open '),
e.binary('valve_state', ea.STATE, 'OPEN', 'CLOSE').withDescription('Valve status closed or opened '),
e.climate()
.withLocalTemperatureCalibration(-5, 5, 0.1, ea.STATE_SET)
.withLocalTemperature(ea.STATE)
.withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET)
.withPreset( ['off', 'antifrost', 'eco', 'comfort', 'program', 'valve_open'],
'Off deactivates valve operation, ' +
'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
e.binary('frost_protection', ea.STATE_SET, 'ON', 'OFF').withDescription('Antifreeze function'),
e.enum('valve_status', ea.STATE_SET, ['valve_closed', 'valve_open']).withDescription('Off deactivates valve operation, '
+ 'the other modes presets when setting on 5º (antifrost), from 15º (eco) and from 20º (comfort). ' +
'It is better to set directly the temperature to deactivate off mode.'),
...tuya.exposes.scheduleAllDays(ea.STATE_SET, 'HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C HH:MM/C'),
e.comfort_temperature().withValueMin(15.5).withValueMax(30.0).withValueStep(0.5).withDescription('Comfort mode temperature'),
e.eco_temperature().withValueMin(5.5).withValueMax(20).withValueStep(0.5).withDescription('Eco mode temperature'),
e.holiday_temperature().withValueMin(5).withValueMax(15).withValueStep(0.5).withDescription('Antifreeze mode temperature'),
e.enum('display_brightness', ea.STATE_SET, ['high', 'medium', 'low']).withDescription('Display brightness'),
e.enum('screen_orientation', ea.STATE_SET, ['up', 'down']).withDescription('Screen orientation'),
e
.enum('mode', ea.STATE_SET, ['comfort', 'eco'])
.withDescription(
'Hysteresis - comfort > switches off/on exactly at reached ' +
'temperature with valve smooth from 0 to 100%, eco > 0.5 degrees above or below, valve either 0 or 100%',
),
],
meta: {
tuyaDatapoints: [
[2, 'preset', tuya.valueConverterBasic.lookup({
'off': tuya.enum(0),
'antifrost': tuya.enum(1),
'eco': tuya.enum(2),
'comfort': tuya.enum(3),
'program': tuya.enum(4),
'valve_open': tuya.enum(5),
})],
[2, 'valve_status', tuya.valueConverterBasic.lookup({
'valve_closed': tuya.enum(0),
'auto': tuya.enum(1),
'auto': tuya.enum(2),
'auto': tuya.enum(4),
'auto': tuya.enum(3),
'valve_open': tuya.enum(5),
}, 'auto')],
[
3,
'valve_state',
tuya.valueConverterBasic.lookup({
CLOSE: tuya.enum(0),
OPEN: tuya.enum(1),
}),
],
[4, 'current_heating_setpoint', tuya.valueConverter.divideBy10],
[5, 'local_temperature', tuya.valueConverter.divideBy10],
[6, 'battery', tuya.valueConverter.raw],
[7, 'child_lock', tuya.valueConverter.lockUnlock],
[14, 'window_detection', tuya.valueConverter.onOff],
[
15,
'window',
tuya.valueConverterBasic.lookup({
CLOSE: tuya.enum(0),
OPEN: tuya.enum(1),
}),
],
[47, 'local_temperature_calibration', tuya.valueConverter.localTempCalibration1],
[102, 'schedule_monday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(1)],
[103, 'schedule_tuesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(2)],
[104, 'schedule_wednesday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(3)],
[105, 'schedule_thursday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(4)],
[106, 'schedule_friday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(5)],
[107, 'schedule_saturday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(6)],
[108, 'schedule_sunday', tuya.valueConverter.thermostatScheduleDayMultiDP_TRV705ZB_WithDayNumber(7)],
[111, 'display_brightness', tuya.valueConverterBasic.lookup({high: tuya.enum(0), medium: tuya.enum(1), low: tuya.enum(2)})],
[
113,
'screen_orientation',
tuya.valueConverterBasic.lookup({
up: tuya.enum(0),
down: tuya.enum(1),
}),
],
[114, 'position', tuya.valueConverter.divideBy10],
[119, 'comfort_temperature', tuya.valueConverter.divideBy10], //--
[120, 'eco_temperature', tuya.valueConverter.divideBy10], //--
[121, 'holiday_temperature', tuya.valueConverter.divideBy10], //--
[122, 'frost_protection', tuya.valueConverter.onOff], //--
[127, 'mode', tuya.valueConverterBasic.lookup({comfort: tuya.enum(0), eco: tuya.enum(1)})],
],
},
};
module.exports = definition; regards, |
Thanks ! During testing I discovered the following: Send Command to 0xXXXXXXXXXXXXXXXX failed with no error code (undefined) J.R. |
After update to zigbee2mqtt 2.0.0 seems that the converter is unavailable/unknown to zigbee2mqtt. Where i have to store the converter now? Before that the converter works fine, also the battery sensor. I found it look here... |
The PR for this is here: Koenkk/zigbee-herdsman-converters#8581 |
Hi @RobertRad, Thanks for coordinating the PR, but I don't totally agree the fact that you decided to silently change the name of the device to TRV-706Z (probably to match your own device model). All this thread is about the TRV-705ZB and even if we know that many Tuya devices share the same hardware, I think that its a question of respect to keep other's contributions unchanged (converter name, device name, etc...) or at least to ask before pushing such a change. Regards. |
First of all, you're right. I should have mentioned the change and discuss it. |
I thought, the 'B' in TRV-705ZB stands for 'Beok'. What is the full name of your device? 'Tuya TRV-705ZB' or 'Beok TRV-705ZB'? |
The device is the one mentioned in this thread: Seems like the ZB means "ZigBee" as there is a WiFi version named TRV-705WF |
Wow, I overlooked the first link in this thread. |
Link
https://www.beok-controls.com/thermostatic-radiator-valve/zigbee-trv-actuator/zigbee-smart-home-radiator-valves.html
Database entry
{"id":19,"type":"EndDevice","ieeeAddr":"0xa4c138dd1abf3cbc","nwkAddr":26479,"manufId":4417,"manufName":"_TZE284_ltwbm23f","powerSource":"Battery","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[4,5,61184,0,60672],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"65487":14400,"65503":"b��.\u0011","65506":56,"65508":0,"modelId":"TS0601","manufacturerName":"_TZE284_ltwbm23f","powerSource":3,"zclVersion":3,"appVersion":77,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":77,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1728223302713}
Zigbee2MQTT version
1.40.2
Comments
I tried to add this new device but appears in the list as not supported yet. Please include this device in the list of supported devices
External definition
What does/doesn't work with the external definition?
It shows that the device is Not supported
The text was updated successfully, but these errors were encountered: