Koenkk / zigbee2mqtt

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

ROB_200-040-0 thermostat gets detected as HK-LN-HEATER-A #15972

Closed jws1992 closed 1 year ago

jws1992 commented 1 year ago

What happened?

Upon including the ROB_200-040-0 floor heating thermostat into Z2M, it recognised the device as a Sunricher HK-LN-HEATER-A, which is not supported. Thus, Z2M disables it and it is not visible in Home Assistant.

Friendly name: 0x1fff000300000079 Description: Last seen: 3 minutes ago Availability: [Disabled] Device type: Router Zigbee Model: HK-LN-HEATER-A Zigbee Manufacturer: Sunricher Support status: Not supported IEEE Address: 0x1fff000300000079 Network address: 0x2655 Firmware build date: NULL Firmware version: 6.9.1.0_r4 Power: Interview completed: True

What did you expect to happen?

For Z2M to recognise the device as ROB_200-040-0, and enable it with the correct parameters.

How to reproduce it (minimal and precise)

Include the ROB_200-040-0 in the zigbee network

Zigbee2MQTT version

1.29.0

Adapter firmware version

20211217

Adapter

SONOFF Zigbee 3.0 dongle

Debug log

2023-01-05 21:36:04Received message from unsupported device with Zigbee model 'HK-LN-HEATER-A' and manufacturer name 'Sunricher' 2023-01-05 21:36:04Please see: https://www.zigbee2mqtt.io/advanced/support-new-devices/01_support_new_devices.html

pitkaha commented 1 year ago

Thanks, now it boots, but seems like it doesn't accept the update file for Namrons thermostat, ROBBV22.ota, or am I reading the logs right? Any way to force that?

Debug 2023-05-02 07:57:14Received MQTT message on 'zigbee2mqtt/bridge/request/device/ota_update/check' with data '0x1fff000300000068'
Info 2023-05-02 07:57:14Checking if update available for '0x1fff000300000068'
Debug 2023-05-02 07:57:14Check if update available for '0x1fff000300000068' (HK-LN-HEATER-A)
Debug 2023-05-02 07:57:14Using endpoint '2'
Debug 2023-05-02 07:57:14Received Zigbee message from '0x1fff000300000068', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":20,"imageType":6003,"manufacturerCode":4644}' from endpoint 2 with groupID 0
Debug 2023-05-02 07:57:14Got OTA request '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}'
Debug 2023-05-02 07:57:14ZigbeeOTA: downloaded main index
Debug 2023-05-02 07:57:14ZigbeeOTA: Loading override index /config/zigbee2mqtt/my_index.json
Debug 2023-05-02 07:57:14ZigbeeOTA: getting local firmware file /config/zigbee2mqtt/ROBBV22.ota
Info 2023-05-02 07:57:14MQTT publish: topic 'zigbee2mqtt/bridge/response/device/ota_update/check', payload '{"data":{"id":"0x1fff000300000068"},"error":"Failed to check if update available for '0x1fff000300000068' (No image available for imageType '6003')","status":"error"}'
Error 2023-05-02 07:57:14Failed to check if update available for '0x1fff000300000068' (No image available for imageType '6003')
Debug 2023-05-02 07:57:15Error: No image available for imageType '6003' at getImageMeta (/app/node_modules/zigbee-herdsman-converters/lib/ota/zigbeeOTA.js:113:15) at processTicksAndRejections (node:internal/process/task_queues:96:5) at Object.isNewImageAvailable (/app/node_modules/zigbee-herdsman-converters/lib/ota/common.js:260:18) at Object.isUpdateAvailable (/app/node_modules/zigbee-herdsman-converters/lib/ota/common.js:251:29) at OTAUpdate.onMQTTMessage (/app/lib/extension/otaUpdate.ts:203:45)
Debug 2023-05-02 07:57:17Received Zigbee message from '0x1fff000300000068', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":20,"imageType":6003,"manufacturerCode":4644}' from endpoint 2 with groupID 0
Debug 2023-05-02 07:57:17Device '0x1fff000300000068' requested OTA
Debug 2023-05-02 07:57:17Responded to OTA request of '0x1fff000300000068' with 'NO_IMAGE_AVAILABLE'

Interestingly after disabling my custom converter, which was copy from Sunricher SR-ZG9092A it now uses Sunricher SR-ZG9092A by default and for last day the one thermostat thats on Z2M has been free of away_mode. Cannot figure out why, but that would be great. Will test some more and report back. Only difference in converters I could find was const utils = require('zigbee-herdsman-converters/lib/utils');, but it doesn't help if I add it to custom converter.

EDIT: Nevermind, it does jump back to away_mode no matter the converter, default or custom.

Also Namrons converter has a few little things that Sunricher doesn't and that work with ZG9092A, have to take a look at those as well.

Koenkk commented 1 year ago

What is the imageType of ROBBV22.ota? You can find it out by running add.js on it.

pitkaha commented 1 year ago

What is the imageType of ROBBV22.ota? You can find it out by running add.js on it.

Don't really know how to do that but it is from https://github.com/Koenkk/zigbee-OTA/blob/master/index.json, this very file just renamed so imageType is 6001

    {
        "modelId": "4512737",
        "fileVersion": 22,
        "fileSize": 245148,
        "manufacturerCode": 4644,
        "imageType": 6001,
        "sha512": "ce40cfc670692384590fc58b84fd9b0d1a6f7b1fa28c6a34ea46fd404b536135151e0fa70bef5ff0c1eeca3fe0d27174806fd1b4863e5bc10afaeca49e0b14f0",
        "url": "https://github.com/Koenkk/zigbee-OTA/raw/master/images/Namron/NAMRON_AS_4512737%286001%29%20V22.ota",
        "path": "images/Namron/NAMRON_AS_4512737(6001) V22.ota"
    },
Koenkk commented 1 year ago

Could you post the ota file here?

pitkaha commented 1 year ago

Could you post the ota file here?

Sure, here you go. Uploaded this one to HA and renamed it after uploading. NAMRON_AS_4512737(6001) V22.ota.zip

Koenkk commented 1 year ago

The device requests imageType 6003:

Debug 2023-05-02 07:57:14Got OTA request '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}'

while the ota has imageType 6001, which according to the Zigbee spec would mean that your device is not compatible with this OTA file.

pitkaha commented 1 year ago

The device requests imageType 6003:

Debug 2023-05-02 07:57:14Got OTA request '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}'

while the ota has imageType 6001, which according to the Zigbee spec would mean that your device is not compatible with this OTA file.

Okay, thanks, understandable. Is there a way to force it, as the devices are pretty much identical? Not worried about bricking one, have an extra.

Koenkk commented 1 year ago

What if you put the imageType in your custom index.json (like this https://github.com/Koenkk/zigbee-OTA/blob/00b37df2d4f4a6fce8208ddfb7a8b04cd63a0d80/index.json#L15)

pitkaha commented 1 year ago

What if you put the imageType in your custom index.json (like this https://github.com/Koenkk/zigbee-OTA/blob/00b37df2d4f4a6fce8208ddfb7a8b04cd63a0d80/index.json#L15)

[
    {
        "imageType": 6003,
        "url": "NAMRON_AS_4512737(6001) V22.ota"
    }
]

That clears zigbee2mqtt/bridge/request/device/ota_update/check without errors:

Debug 2023-05-04 21:00:16Received MQTT message on 'zigbee2mqtt/bridge/request/device/ota_update/check' with data '0x1fff000300000068'
Info 2023-05-04 21:00:16Checking if update available for '0x1fff000300000068'
Debug 2023-05-04 21:00:16Check if update available for '0x1fff000300000068' (HK-LN-HEATER-A)
Debug 2023-05-04 21:00:16Using endpoint '2'
Debug 2023-05-04 21:00:16Received Zigbee message from '0x1fff000300000068', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":20,"imageType":6003,"manufacturerCode":4644}' from endpoint 2 with groupID 0
Debug 2023-05-04 21:00:16Got OTA request '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}'
Debug 2023-05-04 21:00:16ZigbeeOTA: downloaded main index
Debug 2023-05-04 21:00:16ZigbeeOTA: Loading override index /config/zigbee2mqtt/my_index.json
Debug 2023-05-04 21:00:16ZigbeeOTA: getting local firmware file /config/zigbee2mqtt/NAMRON_AS_4512737(6001) V22.ota
Debug 2023-05-04 21:00:16Is new image available for '0x1fff000300000068', current '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}', latest meta '{"fileVersion":22,"url":"NAMRON_AS_4512737(6001) V22.ota"}'
Debug 2023-05-04 21:00:16Update available for '0x1fff000300000068': YES
Info 2023-05-04 21:00:16Update available for '0x1fff000300000068'
Info 2023-05-04 21:00:16MQTT publish: topic 'zigbee2mqtt/0x1fff000300000068', payload '{"alarm_airtemp_overvalue":27,"away_mode":"ON","button_vibration_level":"low","child_lock":"UNLOCK","current":0,"display_auto_off_enabled":"disabled","dry_time":5,"energy":0,"floor_sensor_calibration":0,"floor_sensor_type":"10k","hysterersis":0.5,"lcd_brightness":"mid","linkquality":91,"local_temperature":20.4,"local_temperature_calibration":0,"mode_after_dry":"auto","occupancy":false,"occupied_heating_setpoint":23.5,"outdoor_temperature":0,"power":0,"powerup_status":"last_status","running_state":"idle","sensor":"air","system_mode":"heat","temperature_display":"room","unoccupied_heating_setpoint":6,"update":{"installed_version":20,"latest_version":22,"state":"available"},"update_available":null,"voltage":0,"window_open_check":0}'
Info 2023-05-04 21:00:16MQTT publish: topic 'zigbee2mqtt/bridge/response/device/ota_update/check', payload '{"data":{"id":"0x1fff000300000068","updateAvailable":true},"status":"ok"}'

But zigbee2mqtt/bridge/request/device/ota_update/update gives Image Type Mismatch. Logs give 6001 in image header, is this read from the update file itself? .ota file seems encrypted, is it possible to change image type in the file or for the device?

Debug 2023-05-04 21:02:12Received MQTT message on 'zigbee2mqtt/bridge/request/device/ota_update/update' with data '{"id":"0x1fff000300000068","transaction":"ef2cn-1"}'
Info 2023-05-04 21:02:12Updating '0x1fff000300000068' to latest firmware
Debug 2023-05-04 21:02:13Received Zigbee message from '0x1fff000300000068', type 'readResponse', cluster 'genBasic', data '{"dateCode":"NULL","swBuildId":"6.9.1.0_r4"}' from endpoint 1 with groupID 0
Debug 2023-05-04 21:02:13Updating to latest '0x1fff000300000068' (HK-LN-HEATER-A)
Debug 2023-05-04 21:02:13Using endpoint '2'
Debug 2023-05-04 21:02:13Received Zigbee message from '0x1fff000300000068', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":20,"imageType":6003,"manufacturerCode":4644}' from endpoint 2 with groupID 0
Debug 2023-05-04 21:02:13Got OTA request '{"fieldControl":0,"manufacturerCode":4644,"imageType":6003,"fileVersion":20}'
Debug 2023-05-04 21:02:13ZigbeeOTA: downloaded main index
Debug 2023-05-04 21:02:13ZigbeeOTA: Loading override index /config/zigbee2mqtt/my_index.json
Debug 2023-05-04 21:02:13ZigbeeOTA: getting local firmware file /config/zigbee2mqtt/NAMRON_AS_4512737(6001) V22.ota
Debug 2023-05-04 21:02:13getNewImage for '0x1fff000300000068', meta {"fileVersion":22,"url":"NAMRON_AS_4512737(6001) V22.ota"}
Debug 2023-05-04 21:02:13ZigbeeOTA: getting local firmware file /config/zigbee2mqtt/NAMRON_AS_4512737(6001) V22.ota
Debug 2023-05-04 21:02:13getNewImage for '0x1fff000300000068', image header {"otaUpgradeFileIdentifier":{"type":"Buffer","data":[30,241,238,11]},"otaHeaderVersion":256,"otaHeaderLength":56,"otaHeaderFieldControl":0,"manufacturerCode":4644,"imageType":6001,"fileVersion":22,"zigbeeStackVersion":2,"otaHeaderString":"Encrypted GBL Z3_HVAC_Router\u0000\u0000\u0000\u0000","totalImageSize":245148}
Debug 2023-05-04 21:02:13Update of '0x1fff000300000068' failed (AssertionError [ERR_ASSERTION]: Image type mismatch)
Info 2023-05-04 21:02:13MQTT publish: topic 'zigbee2mqtt/0x1fff000300000068', payload '{"alarm_airtemp_overvalue":27,"away_mode":"ON","button_vibration_level":"low","child_lock":"UNLOCK","current":0,"display_auto_off_enabled":"disabled","dry_time":5,"energy":0,"floor_sensor_calibration":0,"floor_sensor_type":"10k","hysterersis":0.5,"lcd_brightness":"mid","linkquality":94,"local_temperature":20.4,"local_temperature_calibration":0,"mode_after_dry":"auto","occupancy":false,"occupied_heating_setpoint":23.5,"outdoor_temperature":0,"power":0,"powerup_status":"last_status","running_state":"idle","sensor":"air","system_mode":"heat","temperature_display":"room","unoccupied_heating_setpoint":6,"update":{"installed_version":20,"latest_version":22,"state":"available"},"update_available":null,"voltage":0,"window_open_check":0}'
Info 2023-05-04 21:02:13MQTT publish: topic 'zigbee2mqtt/bridge/response/device/ota_update/update', payload '{"data":{"id":"0x1fff000300000068"},"error":"Update of '0x1fff000300000068' failed (Image type mismatch)","status":"error","transaction":"ef2cn-1"}'
Error 2023-05-04 21:02:13Update of '0x1fff000300000068' failed (Image type mismatch)
Debug 2023-05-04 21:02:13AssertionError [ERR_ASSERTION]: Image type mismatch at getNewImage (/app/node_modules/zigbee-herdsman-converters/lib/ota/common.js:441:5) at runMicrotasks (<anonymous>) at processTicksAndRejections (node:internal/process/task_queues:96:5) at Object.updateToLatest (/app/node_modules/zigbee-herdsman-converters/lib/ota/common.js:282:19) at OTAUpdate.onMQTTMessage (/app/lib/extension/otaUpdate.ts:267:41)
Debug 2023-05-04 21:02:15Received Zigbee message from '0x1fff000300000068', type 'commandQueryNextImageRequest', cluster 'genOta', data '{"fieldControl":0,"fileVersion":20,"imageType":6003,"manufacturerCode":4644}' from endpoint 2 with groupID 0
Debug 2023-05-04 21:02:15Device '0x1fff000300000068' requested OTA
Debug 2023-05-04 21:02:15Responded to OTA request of '0x1fff000300000068' with 'NO_IMAGE_AVAILABLE'
Koenkk commented 1 year ago

@pitkaha yes it comes from the fw, how are you running z2m? If running bare metal you can uncomment the check. You can find zigbee-herdsmam-converters in the z2m node_modules directory

pitkaha commented 1 year ago

@pitkaha yes it comes from the fw, how are you running z2m? If running bare metal you can uncomment the check. You can find zigbee-herdsmam-converters in the z2m node_modules directory

I'm on HA OS, x86-64. I understood that addons are in their own dockers, so not easily accessible, or have I misunderstood? Didn't find the folder with a quick look around on file editors or command line, addons folder was empty

Koenkk commented 1 year ago

In that case you can follow https://github.com/zigbee2mqtt/hassio-zigbee2mqtt#testing-changes-locally

pitkaha commented 1 year ago

In that case you can follow https://github.com/zigbee2mqtt/hassio-zigbee2mqtt#testing-changes-locally

Didn't get this to work with CLI. Didn't try for that long really, because I got new firmware from the manufarturer, and that updated nicely. Now six thermostats back on Z2M, on V22.00, no problems with away_mode any more.

@Koenkk thanks for all the help and for the great software!

github-actions[bot] commented 1 year ago

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

ruant commented 1 year ago

This issue can be closed since it's resolved by firmware updates from the manufacturers.

pvainio commented 11 months ago

In that case you can follow https://github.com/zigbee2mqtt/hassio-zigbee2mqtt#testing-changes-locally

Didn't get this to work with CLI. Didn't try for that long really, because I got new firmware from the manufarturer, and that updated nicely. Now six thermostats back on Z2M, on V22.00, no problems with away_mode any more.

@Koenkk thanks for all the help and for the great software!

@pitkaha If you got the firmware from Robb, could it be released publicly to update firmware for Robb version of this thermostat?

pitkaha commented 11 months ago

In that case you can follow https://github.com/zigbee2mqtt/hassio-zigbee2mqtt#testing-changes-locally

Didn't get this to work with CLI. Didn't try for that long really, because I got new firmware from the manufarturer, and that updated nicely. Now six thermostats back on Z2M, on V22.00, no problems with away_mode any more. @Koenkk thanks for all the help and for the great software!

@pitkaha If you got the firmware from Robb, could it be released publicly to update firmware for Robb version of this thermostat?

I was asked not to share the firmware, don't know why really. But yes, I suppose Robb could release it, you better ask them, servicedesk@robbshop.nl.