Closed guny74 closed 1 year ago
After first pairing a lot of fields are empty in the UI and the MQTT/Status (Json), so the UI does not work for a lot of fields, but after setting the missing fields (corresponding to a BHT-002) via mqtt, the UI and the device seams to work like a BHT-002 including the limitations (e.g. direct setting of "current_heating_setpoint" only with integer - via program it could be 20.5)
Any Idea why the fields are first missing ?
Any idea if there are really the same limitations or is this because of the wrong(?) "recognition" ?
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days
Any update on support for 006? Showing as 002 in Z2M and many features not working.
I’m also waiting for some modified converter. Same problems.
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days
Any update? I'm interested to buy a zigbee thermostat, i don't find other thermostat.
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days
Just purchased Moes BHT-006GAZB and got this error when try to add the device: 45Received message from unsupported device with Zigbee model 'TS0601' and manufacturer name '_TZE204_aoclfnxz' What it the solution for this? I found this converter https://github.com/Koenkk/zigbee2mqtt/issues/17435 but it didn`t work, because it is for another device.
Threw mine away in the end. Not sure why this hasn't been fixed as there are multiple tickets open since January but never a fix.
const legacy = require('zigbee-herdsman-converters/lib/legacy'); const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee}; const tz = {...require('zigbee-herdsman-converters/converters/toZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').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 ota = require('zigbee-herdsman-converters/lib/ota'); const tuya = require('zigbee-herdsman-converters/lib/tuya'); const utils = require('zigbee-herdsman-converters/lib/utils'); const globalStore = require('zigbee-herdsman-converters/lib/store'); const e = exposes.presets; const ea = exposes.access;
const exposesLocal = { hour: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('h').withValueMin(0).withValueMax(23), minute: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('m').withValueMin(0).withValueMax(59), program_temperature: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('°C') .withValueMin(5).withValueMax(35).withValueStep(0.5), };
const definition = { zigbeeModel: ['TS0601'], model: 'BHT-006-GCLZB', vendor: 'Moes', description: 'Moes Thermostat', fromZigbee: [fz.legacy.moes_thermostat], toZigbee: [tz.legacy.moes_thermostat_child_lock, tz.legacy.moes_thermostat_current_heating_setpoint, tz.legacy.moes_thermostat_mode, tz.legacy.moes_thermostat_standby, tz.legacy.moes_thermostat_sensor, tz.legacy.moes_thermostat_calibration, tz.legacy.moes_thermostat_deadzone_temperature, tz.legacy.moes_thermostat_max_temperature_limit, tz.legacy.moes_thermostat_min_temperature_limit], exposes: [e.child_lock(), e.deadzone_temperature(), e.max_temperature_limit(), e.min_temperature_limit(), exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 1, ea.STATE_SET) .withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET) .withSystemMode(['off', 'heat'], ea.STATE_SET).withRunningState(['idle', 'heat', 'cool'], ea.STATE) .withPreset(['hold', 'program']), e.temperature_sensor_select(['IN', 'AL', 'OU']), exposes.composite('program', 'program', ea.STATE_SET).withDescription('Time of day and setpoint to use when in program mode') .withFeature(exposesLocal.hour('weekdays_p1_hour')) .withFeature(exposesLocal.minute('weekdays_p1_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p1_temperature')) .withFeature(exposesLocal.hour('weekdays_p2_hour')) .withFeature(exposesLocal.minute('weekdays_p2_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p2_temperature')) .withFeature(exposesLocal.hour('weekdays_p3_hour')) .withFeature(exposesLocal.minute('weekdays_p3_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p3_temperature')) .withFeature(exposesLocal.hour('weekdays_p4_hour')) .withFeature(exposesLocal.minute('weekdays_p4_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p4_temperature')) .withFeature(exposesLocal.hour('saturday_p1_hour')) .withFeature(exposesLocal.minute('saturday_p1_minute')) .withFeature(exposesLocal.program_temperature('saturday_p1_temperature')) .withFeature(exposesLocal.hour('saturday_p2_hour')) .withFeature(exposesLocal.minute('saturday_p2_minute')) .withFeature(exposesLocal.program_temperature('saturday_p2_temperature')) .withFeature(exposesLocal.hour('saturday_p3_hour')) .withFeature(exposesLocal.minute('saturday_p3_minute')) .withFeature(exposesLocal.program_temperature('saturday_p3_temperature')) .withFeature(exposesLocal.hour('saturday_p4_hour')) .withFeature(exposesLocal.minute('saturday_p4_minute')) .withFeature(exposesLocal.program_temperature('saturday_p4_temperature')) .withFeature(exposesLocal.hour('sunday_p1_hour')) .withFeature(exposesLocal.minute('sunday_p1_minute')) .withFeature(exposesLocal.program_temperature('sunday_p1_temperature')) .withFeature(exposesLocal.hour('sunday_p2_hour')) .withFeature(exposesLocal.minute('sunday_p2_minute')) .withFeature(exposesLocal.program_temperature('sunday_p2_temperature')) .withFeature(exposesLocal.hour('sunday_p3_hour')) .withFeature(exposesLocal.minute('sunday_p3_minute')) .withFeature(exposesLocal.program_temperature('sunday_p3_temperature')) .withFeature(exposesLocal.hour('sunday_p4_hour')) .withFeature(exposesLocal.minute('sunday_p4_minute')) .withFeature(exposesLocal.program_temperature('sunday_p4_temperature')), ], onEvent: tuya.onEventSetLocalTime, };
module.exports = definition;
works for me
@v00g100skr worked for me too. Thank you!
Works. Thank you. :)
Does this unit have 6 programmable periods in a day?
Pls help me. I have create js file with text in comment Add name of file in external converters in z2m But my device still “_TZE200_aoclfnxz”
Works for me too
for me it NOT working.... I put the code in an JS fiel an add it as external converter...but on UI all feild are Empty and no apply button is there.... It also still “_TZE200_aoclfnxz”
This worked for me. Thank you!
Pls help me. I have create js file with text in comment Add name of file in external converters in z2m But my device still “_TZE200_aoclfnxz”
Have you added this js-filename to the configuration.yaml file?
@v00g100skr - Thanks, but in HA something works not correct. Heating indicator show power state (not heating state), and power indicator always have off-state.
Pls help me too. Also create file js, add it to config. But device still “_TZE200_aoclfnxz”. I’ve also tried to delete and add device again, but without result
guys, i think its not working for TZE200 only for TZE204
but TZE200 is supported in last z2m version
https://t.me/smarthomesell/6790 dont mind for rus lang, just see pictures in comments
it is important to tab correctly `const legacy = require('zigbee-herdsman-converters/lib/legacy'); const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee}; const tz = {...require('zigbee-herdsman-converters/converters/toZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').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 ota = require('zigbee-herdsman-converters/lib/ota'); const tuya = require('zigbee-herdsman-converters/lib/tuya'); const utils = require('zigbee-herdsman-converters/lib/utils'); const globalStore = require('zigbee-herdsman-converters/lib/store'); const e = exposes.presets; const ea = exposes.access;
const exposesLocal = { hour: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('h').withValueMin(0).withValueMax(23), minute: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('m').withValueMin(0).withValueMax(59), program_temperature: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('°C') .withValueMin(5).withValueMax(35).withValueStep(0.5), };
const definition = { fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE204_aoclfnxz'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ztvwu4nk'}, {modelID: 'TS0601', manufacturerName: '_TZE204_5toc8efa'}, {modelID: 'TS0601', manufacturerName: '_TZE200_5toc8efa'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ye5jkfsb'}, {modelID: 'TS0601', manufacturerName: '_TZE200_u9bfwha0'}], model: 'BHT-002-GCLZB', vendor: 'Moes', description: 'Moes BHT series Thermostat', fromZigbee: [fz.legacy.moes_thermostat], toZigbee: [tz.legacy.moes_thermostat_child_lock, tz.legacy.moes_thermostat_current_heating_setpoint, tz.legacy.moes_thermostat_mode, tz.legacy.moes_thermostat_standby, tz.legacy.moes_thermostat_sensor, tz.legacy.moes_thermostat_calibration, tz.legacy.moes_thermostat_deadzone_temperature, tz.legacy.moes_thermostat_max_temperature_limit, tz.legacy.moes_thermostat_min_temperature_limit], exposes: [e.child_lock(), e.deadzone_temperature(), e.max_temperature_limit(), e.min_temperature_limit(), exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 1, ea.STATE_SET) .withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET) .withSystemMode(['off', 'heat'], ea.STATE_SET).withRunningState(['idle', 'heat', 'cool'], ea.STATE) .withPreset(['hold', 'program']), e.temperature_sensor_select(['IN', 'AL', 'OU']), exposes.composite('program', 'program', ea.STATE_SET).withDescription('Time of day and setpoint to use when in program mode') .withFeature(exposesLocal.hour('weekdays_p1_hour')) .withFeature(exposesLocal.minute('weekdays_p1_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p1_temperature')) .withFeature(exposesLocal.hour('weekdays_p2_hour')) .withFeature(exposesLocal.minute('weekdays_p2_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p2_temperature')) .withFeature(exposesLocal.hour('weekdays_p3_hour')) .withFeature(exposesLocal.minute('weekdays_p3_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p3_temperature')) .withFeature(exposesLocal.hour('weekdays_p4_hour')) .withFeature(exposesLocal.minute('weekdays_p4_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p4_temperature')) .withFeature(exposesLocal.hour('saturday_p1_hour')) .withFeature(exposesLocal.minute('saturday_p1_minute')) .withFeature(exposesLocal.program_temperature('saturday_p1_temperature')) .withFeature(exposesLocal.hour('saturday_p2_hour')) .withFeature(exposesLocal.minute('saturday_p2_minute')) .withFeature(exposesLocal.program_temperature('saturday_p2_temperature')) .withFeature(exposesLocal.hour('saturday_p3_hour')) .withFeature(exposesLocal.minute('saturday_p3_minute')) .withFeature(exposesLocal.program_temperature('saturday_p3_temperature')) .withFeature(exposesLocal.hour('saturday_p4_hour')) .withFeature(exposesLocal.minute('saturday_p4_minute')) .withFeature(exposesLocal.program_temperature('saturday_p4_temperature')) .withFeature(exposesLocal.hour('sunday_p1_hour')) .withFeature(exposesLocal.minute('sunday_p1_minute')) .withFeature(exposesLocal.program_temperature('sunday_p1_temperature')) .withFeature(exposesLocal.hour('sunday_p2_hour')) .withFeature(exposesLocal.minute('sunday_p2_minute')) .withFeature(exposesLocal.program_temperature('sunday_p2_temperature')) .withFeature(exposesLocal.hour('sunday_p3_hour')) .withFeature(exposesLocal.minute('sunday_p3_minute')) .withFeature(exposesLocal.program_temperature('sunday_p3_temperature')) .withFeature(exposesLocal.hour('sunday_p4_hour')) .withFeature(exposesLocal.minute('sunday_p4_minute')) .withFeature(exposesLocal.program_temperature('sunday_p4_temperature')), ], onEvent: tuya.onEventSetLocalTime, };
module.exports = definition;`
guys, i think its not working for TZE200 only for TZE204
I have 204, but the power indicator is always "off" and the heating indicator shows the power state, not the heating state... The heating status is displayed correctly in the text box
+1 to the issue because the easiest modification to the list is waiting approval for half a year now :)
_TZE204_aoclfnxz
should be supported in the dev branch
Changes will be available in the dev branch in a few hours from now. (https://www.zigbee2mqtt.io/advanced/more/switch-to-dev-branch.html)
What about _TZE200_aoclfnxz It is model of first message and I’m waiting for something. Just update edge z2m without any result
@v00g100skr I notice this has 4 programmable periods but it billed as having 6 is that a limit of this definition? or the Unit?
i dont need this functional, so i have no idea how it works all this code - just copypaste from different sources in one converter
Can anyone with the unt confirm if the unit does have 6 programmable day periods? if so I will probably get one and look at adding the missing code to make it work...
This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 7 days
it is important to tab correctly `const legacy = require('zigbee-herdsman-converters/lib/legacy'); const fz = {...require('zigbee-herdsman-converters/converters/fromZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').fromZigbee}; const tz = {...require('zigbee-herdsman-converters/converters/toZigbee'), legacy: require('zigbee-herdsman-converters/lib/legacy').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 ota = require('zigbee-herdsman-converters/lib/ota'); const tuya = require('zigbee-herdsman-converters/lib/tuya'); const utils = require('zigbee-herdsman-converters/lib/utils'); const globalStore = require('zigbee-herdsman-converters/lib/store'); const e = exposes.presets; const ea = exposes.access;
const exposesLocal = { hour: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('h').withValueMin(0).withValueMax(23), minute: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('m').withValueMin(0).withValueMax(59), program_temperature: (name) => exposes.numeric(name, ea.STATE_SET).withUnit('°C') .withValueMin(5).withValueMax(35).withValueStep(0.5), };
const definition = { fingerprint: [{modelID: 'TS0601', manufacturerName: '_TZE204_aoclfnxz'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ztvwu4nk'}, {modelID: 'TS0601', manufacturerName: '_TZE204_5toc8efa'}, {modelID: 'TS0601', manufacturerName: '_TZE200_5toc8efa'}, {modelID: 'TS0601', manufacturerName: '_TZE200_ye5jkfsb'}, {modelID: 'TS0601', manufacturerName: '_TZE200_u9bfwha0'}], model: 'BHT-002-GCLZB', vendor: 'Moes', description: 'Moes BHT series Thermostat', fromZigbee: [fz.legacy.moes_thermostat], toZigbee: [tz.legacy.moes_thermostat_child_lock, tz.legacy.moes_thermostat_current_heating_setpoint, tz.legacy.moes_thermostat_mode, tz.legacy.moes_thermostat_standby, tz.legacy.moes_thermostat_sensor, tz.legacy.moes_thermostat_calibration, tz.legacy.moes_thermostat_deadzone_temperature, tz.legacy.moes_thermostat_max_temperature_limit, tz.legacy.moes_thermostat_min_temperature_limit], exposes: [e.child_lock(), e.deadzone_temperature(), e.max_temperature_limit(), e.min_temperature_limit(), exposes.climate().withSetpoint('current_heating_setpoint', 5, 35, 1, ea.STATE_SET) .withLocalTemperature(ea.STATE).withLocalTemperatureCalibration(-30, 30, 0.1, ea.STATE_SET) .withSystemMode(['off', 'heat'], ea.STATE_SET).withRunningState(['idle', 'heat', 'cool'], ea.STATE) .withPreset(['hold', 'program']), e.temperature_sensor_select(['IN', 'AL', 'OU']), exposes.composite('program', 'program', ea.STATE_SET).withDescription('Time of day and setpoint to use when in program mode') .withFeature(exposesLocal.hour('weekdays_p1_hour')) .withFeature(exposesLocal.minute('weekdays_p1_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p1_temperature')) .withFeature(exposesLocal.hour('weekdays_p2_hour')) .withFeature(exposesLocal.minute('weekdays_p2_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p2_temperature')) .withFeature(exposesLocal.hour('weekdays_p3_hour')) .withFeature(exposesLocal.minute('weekdays_p3_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p3_temperature')) .withFeature(exposesLocal.hour('weekdays_p4_hour')) .withFeature(exposesLocal.minute('weekdays_p4_minute')) .withFeature(exposesLocal.program_temperature('weekdays_p4_temperature')) .withFeature(exposesLocal.hour('saturday_p1_hour')) .withFeature(exposesLocal.minute('saturday_p1_minute')) .withFeature(exposesLocal.program_temperature('saturday_p1_temperature')) .withFeature(exposesLocal.hour('saturday_p2_hour')) .withFeature(exposesLocal.minute('saturday_p2_minute')) .withFeature(exposesLocal.program_temperature('saturday_p2_temperature')) .withFeature(exposesLocal.hour('saturday_p3_hour')) .withFeature(exposesLocal.minute('saturday_p3_minute')) .withFeature(exposesLocal.program_temperature('saturday_p3_temperature')) .withFeature(exposesLocal.hour('saturday_p4_hour')) .withFeature(exposesLocal.minute('saturday_p4_minute')) .withFeature(exposesLocal.program_temperature('saturday_p4_temperature')) .withFeature(exposesLocal.hour('sunday_p1_hour')) .withFeature(exposesLocal.minute('sunday_p1_minute')) .withFeature(exposesLocal.program_temperature('sunday_p1_temperature')) .withFeature(exposesLocal.hour('sunday_p2_hour')) .withFeature(exposesLocal.minute('sunday_p2_minute')) .withFeature(exposesLocal.program_temperature('sunday_p2_temperature')) .withFeature(exposesLocal.hour('sunday_p3_hour')) .withFeature(exposesLocal.minute('sunday_p3_minute')) .withFeature(exposesLocal.program_temperature('sunday_p3_temperature')) .withFeature(exposesLocal.hour('sunday_p4_hour')) .withFeature(exposesLocal.minute('sunday_p4_minute')) .withFeature(exposesLocal.program_temperature('sunday_p4_temperature')), ], onEvent: tuya.onEventSetLocalTime, };
module.exports = definition;`
Using this "i got an error when setting Values over the UI: "No converter available for 'program'....."
How can I fix it ?
maybe check #19991 to get this sorted out?
@pssc
Can anyone with the unt confirm if the unit does have 6 programmable day periods? if so I will probably get one and look at adding the missing code to make it work...
I got this unit from Moes, they sell it with SKU ZHT-006-GC-WH-MS
(it's the variant for gas water boilers)
If I try to navigate the interface I can set 6 different time and setpoint triggers for each of the 7 days of the week.
Using the latest 1.39.0 version of Zigbee2MQTT this device was discovered as
TS0601
_TZE204_aoclfnxz
I tried to load the external converter provided here by @v00g100skr (for the latest Z2M version it is required to delete the const extend
apparently, as noted here), however I am pretty sure that it is being ignored in favor of the builtin convernter since my custom description is not showing up (I left the rest the same just to test that I could in fact use an external converter with it).
Do you have any advice on how to proceed with the converter? After managing to let Z2M use it I will try to figure out how to expose the remaining controls for the other programs - at this stage Z2M shows only 4 time and setpoints for mon to fri and then other 4 for each weekend day, also I will have to test where are actually mapped on the device those times and setpoints since I don't think they will be applied automagically if the converter is not correct.
Link
https://moeshouse.com/collections/smart-thermostat/products/zigbee-smart-thermostat-gas-water-heater-room-thermostat-digital-programmable
Database entry
{"id":3,"type":"Router","ieeeAddr":"0x003c84fffef2da13","nwkAddr":35491,"manufId":4098,"manufName":"_TZE200_aoclfnxz","powerSource":"Mains (single phase)","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[0,4,5,61184],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"modelId":"TS0601","manufacturerName":"_TZE200_aoclfnxz","powerSource":1,"zclVersion":3,"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":72,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1674498767774,"defaultSendRequestWhen":"immediate"}
Comments
After Pairing of this device it would be registered as TS0601 / _TZE200_aoclfnxz (BHT-002-GCLZB), but only a very view function will work.
Status
{ "current_heating_setpoint": 20, "heat": "OFF", "linkquality": 33, "local_temperature": 21, "running_state": "idle", "system_mode": "heat", "device": { "applicationVersion": 72, "dateCode": "", "friendlyName": "Thermostat AZ", "hardwareVersion": 1, "ieeeAddr": "0x003c84fffef2da13", "manufacturerID": 4098, "manufacturerName": "_TZE200_aoclfnxz", "model": "BHT-002-GCLZB", "networkAddress": 35491, "powerSource": "Mains (single phase)", "stackVersion": 0, "type": "Router", "zclVersion": 3 }, "preset": "hold", "preset_mode": "hold" }
I am sorry, I could not go the normal way with external converter, because z2m say it it a "TS0601 / _TZE200_aoclfnxz" and suported.... or it is a Issue ?
ZHT-006-GC-WH-MS it not listed as supported, so I write this request.
It would be nice to know timely if there ist a change to support it in the next time or to know if I should send it back.
thank you very much
Regards
External converter
No response
Supported color modes
No response
Color temperature range
No response