Koenkk / zigbee2mqtt

Zigbee 🐝 to MQTT bridge 🌉, get rid of your proprietary Zigbee bridges 🔨
https://www.zigbee2mqtt.io
GNU General Public License v3.0
11.72k stars 1.64k forks source link

[New device support]: Support for TS0601 - _TZE200_0dvm9mva Thermostat #14137

Closed zgredex closed 1 year ago

zgredex commented 1 year ago

Link

https://www.rtx24.pl/glowica-termostatyczna-termostat-zigbee-tuya-smart-p-434.html

Database entry

{"id":5,"type":"EndDevice","ieeeAddr":"0xa4c138a7ef3a790d","nwkAddr":47911,"manufId":4417,"manufName":"_TZE200_0dvm9mva","powerSource":"Battery","modelId":"TS0601","epList":[1],"endpoints":{"1":{"profId":260,"epId":1,"devId":81,"inClusterList":[4,5,61184,0],"outClusterList":[25,10],"clusters":{"genBasic":{"attributes":{"stackVersion":0,"dateCode":""}}},"binds":[],"configuredReportings":[],"meta":{}}},"appVersion":67,"stackVersion":0,"hwVersion":1,"dateCode":"","zclVersion":3,"interviewCompleted":true,"meta":{},"lastSeen":1663845533434,"defaultSendRequestWhen":"immediate"}

Comments

The device I bought is this one: https://www.zigbee2mqtt.io/devices/SEA801-Zigbee_SEA802-Zigbee.html It's similar to SEA802-Z01 model number on the box is ZB-RT1 and yet mine pairs and is not recognized as a supported device.

External converter

I tried to add model name to existing saswell converter

const exposes = require('../lib/exposes'); const fz = {...require('../converters/fromZigbee'), legacy: require('../lib/legacy').fromZigbee}; const tz = require('../converters/toZigbee'); const tuya = require('../lib/tuya'); const reporting = require('../lib/reporting'); const e = exposes.presets; const ea = exposes.access;

module.exports = [ { fingerprint: [{modelID: 'GbxAXL2\u0000', manufacturerName: '_TYST11_KGbxAXL2'}, {modelID: 'uhszj9s\u0000', manufacturerName: '_TYST11_zuhszj9s'}, {modelID: '88teujp\u0000', manufacturerName: '_TYST11_c88teujp'}, {modelID: 'w7cahqs\u0000', manufacturerName: '_TYST11_yw7cahqs'}, {modelID: 'w7cahqs', manufacturerName: '_TYST11_yw7cahqs'}, {modelID: 'TS0601', manufacturerName: '_TZE200_c88teujp'}, {modelID: 'TS0601', manufacturerName: '_TZE200_yw7cahqs'}, {modelID: 'TS0601', manufacturerName: '_TZE200_azqp6ssj'}, {modelID: 'TS0601', manufacturerName: '_TZE200_zuhszj9s'}, {modelID: 'TS0601', manufacturerName: '_TZE200_9gvruqf5'}, {modelID: 'TS0601', manufacturerName: '_TZE200_zr9c0day'}, {modelID: 'TS0601', manufacturerName: '_TZE200_0dvm9mva'}, ], model: 'SEA801-Zigbee/SEA802-Zigbee', vendor: 'Saswell', description: 'Thermostatic radiator valve', whiteLabel: [{vendor: 'HiHome', model: 'WZB-TRVL'}, {vendor: 'Hama', model: '00176592'}, {vendor: 'RTX', model: 'ZB-RT1'}], fromZigbee: [fz.saswell_thermostat, fz.ignore_tuya_set_time, fz.ignore_basic_report, fz.legacy.tuya_thermostat_weekly_schedule], toZigbee: [tz.saswell_thermostat_current_heating_setpoint, tz.saswell_thermostat_mode, tz.saswell_thermostat_away, tz.saswell_thermostat_child_lock, tz.saswell_thermostat_window_detection, tz.saswell_thermostat_frost_detection, tz.saswell_thermostat_calibration, tz.saswell_thermostat_anti_scaling, tz.tuya_thermostat_weekly_schedule], onEvent: tuya.onEventSetTime, meta: { thermostat: { weeklyScheduleMaxTransitions: 4, weeklyScheduleSupportedModes: [1], // bits: 0-heat present, 1-cool present (dec: 1-heat,2-cool,3-heat+cool) weeklyScheduleConversion: 'saswell', }, }, configure: async (device, coordinatorEndpoint, logger) => { const endpoint = device.getEndpoint(1); await reporting.bind(endpoint, coordinatorEndpoint, ['genBasic']); }, exposes: [e.battery_low(), e.window_detection(), e.child_lock(), e.away_mode(), exposes.binary('heating', ea.STATE, 'ON', 'OFF').withDescription('Device valve is open or closed (heating or not)'), exposes.climate() .withSetpoint('current_heating_setpoint', 5, 30, 0.5, ea.STATE_SET).withLocalTemperature(ea.STATE) .withSystemMode(['off', 'heat', 'auto'], ea.STATE_SET) // Range is -6 - 6 and step 1: https://github.com/Koenkk/zigbee2mqtt/issues/11777 .withLocalTemperatureCalibration(-6, 6, 1, ea.STATE_SET)], }, ];

Okay. After few hours of trial and error I figured out all I have to do is add my device name to the "fingerprints" so it will be recognized as the Saswell SEA802 I'm running zigbee2mqtt inside homeassistant as an addon. Where do I find the file so I could edit it?

Koenkk commented 1 year ago

Added in https://github.com/Koenkk/zigbee-herdsman-converters/pull/4693