JeffSteinbok / hass-dreo

Dreo Smart Device Integration for Home Assistant
MIT License
129 stars 37 forks source link

Dreo wall mounted heater DR-HSH009S #62

Closed spacedoodle closed 7 months ago

spacedoodle commented 1 year ago

Model: DR-HSH009S Number of speeds: No speeds, heater modes instead. Does the fan support oscillating: Yes, the front baffle can oscillate or be in set in 1 of 3 static positions pointing to floor / mid / ceiling. What preset modes are supported: H1, H2, H3, and Eco mode which can be set to a specific temperature. Is temperature supported: yes when in Eco Mode.

thoughtleader commented 11 months ago

here is the diagnosic output under data.dreo.raw_devicelist.data.list[] { "deviceId": "redacted", "sn": "redacted", "brand": "Dreo", "model": "DR-HSH009S", "productId": "1643940769442639873", "productName": "Heater", "deviceName": "Theo Wall Heater", "shared": false, "series": null, "seriesName": "Wall-mounted Heater", "color": "w", "controlsConf": { "template": "DR-HSH009S", "lottie": { "key": "poweron", "frames": [ { "value": 0, "frame": [ 0 ] }, { "value": 1, "frame": [ 3 ] } ] }, "schedule": { "duration": [ { "text": "schedule_control_turnoff_never", "desc": "schedule_control_turnoff_never_desc", "time": 0 }, { "text": "schedule_control_turnoff_30min", "desc": "schedule_control_turnoff_30min_desc", "time": 1800 }, { "text": "schedule_control_turnoff_1h", "desc": "schedule_control_turnoff_1h_desc", "time": 3600 }, { "text": "schedule_control_turnoff_2h", "desc": "schedule_control_turnoff_2h_desc", "time": 7200 }, { "text": "schedule_control_turnoff_4h", "desc": "schedule_control_turnoff_4h_desc", "time": 14400 }, { "text": "schedule_control_turnoff_6h", "desc": "schedule_control_turnoff_6h_desc", "time": 21600 }, { "text": "schedule_control_turnoff_8h", "desc": "schedule_control_turnoff_8h_desc", "time": 28800 } ], "modes": [ { "icon": "ic_hsh_item_heat", "title": "device_heater_mode_heat", "cmd": "mode", "value": "hotair", "valueType": 2, "isSelected": true, "attention": [ "mode", "htalevel", "poweron", "oscangle" ], "controls": [ { "type": 1, "title": "device_control_mode_manual_level", "cmd": [ "htalevel" ], "value": 3, "valueType": 1, "startValue": 0, "validValue": 1, "periodColor": "#FF9500", "endValue": 3, "groupId": 0, "startColor": "#FFD666", "endColor": "#FF7214", "isSelected": false, "preUnit": "H" } ] }, { "icon": "ic_hsh_item_eco", "title": "device_heater_mode_eco", "cmd": "mode", "value": "eco", "valueType": 2, "isSelected": false, "attention": [ "mode", "ecolevel", "poweron", "oscangle" ], "controls": [ { "type": 4, "valueType": 1, "title": "device_control_temp", "startColor": "#FFD666", "endColor": "#FF7214", "cmd": [ "ecolevel" ], "value": 85, "startValue": 41, "endValue": 95, "groupId": 0, "isSelected": false, "unit": "\u2109" } ] }, { "icon": "ic_hsh_item_fanonly", "title": "device_heater_mode_fan_only", "cmd": "mode", "value": "coolair", "valueType": 2, "isSelected": false, "attention": [ "mode", "poweron", "oscangle" ], "controls": [] } ] }, "timer": { "maxHour": 23 }, "cards": [ { "type": 2, "title": "home_temp", "icon": "", "image": "", "url": "", "show": true }, { "type": 8, "title": "", "icon": "", "image": "", "url": "dreo://nav/device/schedule?deviceSn={sn}", "show": true, "key": "", "minVersion": "2.2.2" }, { "type": 6, "title": "device_settings_title", "icon": "ic_setting", "image": "", "url": "dreo://nav/device/setting?deviceSn=${sn}", "show": true, "key": "setting" } ], "feature": { "schedule": { "enable": true, "localSupport": true, "module": [ { "type": "HeFi", "version": "0.0.1" } ] } }, "preference": [ { "id": "270", "type": "Display List", "title": "dev_ctrl_heater_display", "image": "ic_display", "reverse": false }, { "id": "200", "type": "Panel Sound", "title": "device_control_panelsound", "image": "ic_mute", "reverse": true, "cmd": "muteon" }, { "id": "220", "type": "Child Lock", "title": "device_control_childlock", "image": "ic_child_lock", "reverse": false, "cmd": "childlockon" }, { "id": "250", "type": "Open Window Detection", "title": "dev_ctrl_open_win_dect", "image": "ic_winopen", "cmd": "winopenon" }, { "id": "280", "type": "Show Temp", "title": "ambient_temp_always_on", "image": "ic_temp_unit_show", "reverse": false, "cmd": "dispmode" }, { "id": "230", "type": "Temperature Unit", "title": "device_control_temp_unit", "image": "ic_temp_unit" }, { "id": "240", "type": "Temperature Calibration", "title": "device_control_temp_calibration", "image": "ic_temp_cal" } ], "control": [ { "swingtype": true, "hideSafeMode": true } ], "category": "Space Heater", "version": { "minControlVer": "2.2.2", "minPairingVer": "2.0.0" } }, "mainConf": { "isSmart": true, "isWifi": true, "isBluetooth": true, "isVoiceControl": true }, "resourcesConf": { "imageSmallSrc": "https://resources.dreo-cloud.com/app/202306/20bad19da722a44238bb81ae3a6b87b689.png", "imageFullSrc": "https://resources.dreo-cloud.com/app/202307/259dd80ef20e50432195beab4dc1939160.zip", "imageSmallDarkSrc": "", "imageFullDarkSrc": "" }, "servicesConf": [ { "key": "user_manual", "value": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf" } ], "userManuals": [ { "icon": "https://resources.dreo-cloud.com/app/202309/7c299b4e04b3842c3b7efe11e8b13b88d.png", "url": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf", "desc": "Wall-mounted Heater" }, { "icon": "https://resources.dreo-cloud.com/app/202309/71392605cead140a282abedfcdd49bbdf.png", "url": "https://resources.dreo-cloud.com/app/202310/12a5ec101b8fa04ce2a65956acdce8e0ab.pdf", "desc": "Wall-mounted Heater with ALCI Plug" }, { "icon": "https://resources.dreo-cloud.com/app/202309/75e96dbcf73e14cb1ba94172c55968c11.png", "url": "https://resources.dreo-cloud.com/app/202310/121c4cbb7fff054a72a105a74d1cb703aa.pdf", "desc": "Wall-mounted Heater with Safety Plug" } ] },

thoughtleader commented 11 months ago

2023-12-02 14:33:27.496 DEBUG (SyncWorker_10) [pydreo] pydreo._process_devices 2023-12-02 14:33:27.496 DEBUG (SyncWorker_10) [pydreo] New device list initialized 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] found device with model DR-HSH009S 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] DR-HSH009S found! 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] load_device_state: Theo Wall Heater 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] Calling Dreo API: {devicestate} 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] =======call_api============================= 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] [get] calling '/api/user-device/device/state' api 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] API call URL: https://app-api-us.dreo-cloud.com/api/user-device/device/state 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] API call headers: {"ua": "dreo/2.0.7 (sdk_gphone64_x86_64;android 13;Scale/2.625)", "lang": "en", "content-type": "application/json; charset=UTF-8", "accept-encoding": "gzip", "user-agent": "okhttp/4.9.1", "authorization": "redacted"} 2023-12-02 14:33:27.497 DEBUG (SyncWorker_10) [pydreo] API call json: {"deviceSn": "redacted"} 2023-12-02 14:33:27.812 DEBUG (SyncWorker_10) [pydreo] API response: { "code": 0, "msg": "OK", "data": { "mixed": { "lightsenon": { "state": false, "timestamp": 1701375992 }, "wifi_rssi": { "state": -34, "timestamp": 1701375992 }, "poweron": { "state": false, "timestamp": 1701378950 }, "scheid": { "state": 0, "timestamp": 1701375992 }, "timeron": { "state": { "du": 0, "ts": 0 }, "timestamp": null }, "scheon": { "state": false, "timestamp": 1701375992 }, "mode": { "state": "coolair", "timestamp": 1701377096 }, "mcuon": { "state": true, "timestamp": 1701375992 }, "network_latency": { "state": 176, "timestamp": 1701375992 }, "module_hardware_model": { "state": "HeFi", "timestamp": 1701375992 }, "mcu_firmware_version": { "state": "1.0.72", "timestamp": 1701375992 }, "otp_in_plug": { "state": false, "timestamp": 1701375992 }, "cooldown": { "state": 0, "timestamp": 1701375992 }, "temperature": { "state": 71, "timestamp": 1701556399 }, "winopened": { "state": 0, "timestamp": 1701375992 }, "frostproton": { "state": false, "timestamp": 1701375992 }, "winopenon": { "state": true, "timestamp": 1701375992 }, "module_hardware_mac": { "state": "redacted", "timestamp": 1701375992 }, "ptcon": { "state": false, "timestamp": 1701377096 }, "muteon": { "state": true, "timestamp": 1701556303 }, "mcu_hardware_model": { "state": "SC95F8613B", "timestamp": 1701375992 }, "wifi_ssid": { "state": "redacted", "timestamp": 1701375335 }, "tempunit": { "state": 1, "timestamp": 1701375992 }, "frostprotwk": { "state": false, "timestamp": 1701375992 }, "wrong": { "state": 0, "timestamp": 1701375992 }, "module_firmware_version": { "state": "2.0.1", "timestamp": 1701375992 }, "connected": { "state": true, "timestamp": 1701375992 }, "timeroff": { "state": { "du": 0, "ts": 0 }, "timestamp": null }, "_ota": { "state": 0, "timestamp": 1701375992 }, "ledkepton": { "state": false, "timestamp": 1701375992 }, "ecolevel": { "state": 73, "timestamp": 1701375992 }, "frostprottemp": { "state": 45, "timestamp": 1701375992 }, "childlockon": { "state": false, "timestamp": 1701375992 }, "htalevel": { "state": 1, "timestamp": 1701375992 }, "dispmode": { "state": "temp", "timestamp": 1701375992 }, "oscangle": { "state": 0, "timestamp": 1701375992 }, "tempoffset": { "state": 0, "timestamp": 1701375992 } }, "sn": "redacted", "productId": "1643940769442639873", "region": "us-east-2" } }

chris4824 commented 10 months ago

Think this is now listed as model WH719S on Dreos website. I would love to have this added as well

natodd commented 9 months ago

Here my 2 cents as well:

Model: DR-HSH009S

2024-01-16 10:22:20.426 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:20.426 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:20.426 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': '3769a045-b70a-4093-a8f5-3e37cfdc23dc', 'timestamp': 1705422140, 'reported': {'oscangle': 90}} 2024-01-16 10:22:34.377 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:34.377 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:34.377 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': '8034c922-4de9-4d34-bbaf-f079063866cf', 'timestamp': 1705422154, 'reported': {'oscangle': 120}} 2024-01-16 10:22:36.446 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:36.447 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:36.447 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': 'b69dbff6-f301-45fe-b9c7-d40859980b3c', 'timestamp': 1705422156, 'reported': {'oscangle': 60}} 2024-01-16 10:22:38.615 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:38.615 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:38.615 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': '00715d17-8a26-483f-955c-1fa005fe1c48', 'timestamp': 1705422158, 'reported': {'oscangle': 90}} 2024-01-16 10:22:40.127 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:40.128 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:40.128 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': '5c81dbe6-6d54-4ae5-bbc5-90928508abcc', 'timestamp': 1705422159, 'reported': {'oscangle': 120}} 2024-01-16 10:22:41.899 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:41.899 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:41.899 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': 'd296dd9c-8f5a-4959-98d2-8811fee29782', 'timestamp': 1705422161, 'reported': {'mode': 'hotair', 'htalevel': 1}} 2024-01-16 10:22:43.255 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-01-16 10:22:43.255 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-7a895322ab243f42:001:0000000000w 2024-01-16 10:22:43.255 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'control-report', 'devicesn': '1643940769442639873-7a895322ab243f42:001:0000000000w', 'messageid': 'f55c9134-0026-4a14-9299-139f739e65a9', 'timestamp': 1705422163, 'reported': {'mode': 'eco'}}

Shwalamazula commented 9 months ago

Happy to add any information needed for this unit. To add to initial post by @spacedoodle:

Unit has 5 modes:

Fan position has 4 settings:

Unit also has a shutdown timer that can be set from 1-24 hours.

image image

chris4824 commented 9 months ago

Would be great if we could add this heater. I'll help any way I can.

pringleprng commented 9 months ago

This would be great.

andy-cooper commented 9 months ago

@chris4824 @pringleprng @thoughtleader @spacedoodle @natodd @Shwalamazula:

I've created a PR that is waiting for @JeffSteinbok to take a look at it - https://github.com/JeffSteinbok/hass-dreo/pull/71 - it provides initial support for heaters (mine is the Atom One), and all of the above heaters should work with it as near as I can tell. The only thing that isn't (yet) fully supported is the fan oscillation when it's more than just a swing, but that shouldn't be too hard for me to add.

If you want to try it out, feel free to add my repo directly to your system - https://github.com/andy-cooper/hass-dreo

I'd love for this to be integrated into Jeff's work, because I don't think maintaining 2 different versions of this is a great idea, but if that's what it takes 😁

Naturally I'd have to add in those heaters for things to work. I'll see if I can quickly do that. ...

andy-cooper commented 9 months ago

OK, I've added the above heaters to my list of supported heaters @chris4824 @pringleprng @thoughtleader @spacedoodle @natodd @Shwalamazula

If you want to be brave and try this out by adding https://github.com/andy-cooper/hass-dreo to your list of custom HACS repositories (nothing will break, things just won't work properly from HA if I've got problems), that would be great.

Once we've got that functionality working, I can work on adding the oscillation angles to the heater support.

pringleprng commented 9 months ago

Ive got the wh739s. Thank you for your hqrd work though appreciated!

andy-cooper commented 9 months ago

@pringleprng - just added that model for you. Go ahead and try it out from my repo - https://github.com/andy-cooper/hass-dreo

chris4824 commented 9 months ago

thank you so much @andy-cooper .. working great.

andy-cooper commented 9 months ago

@chris4824 - fantastic! That's the DR-HSH009S / WH719S right? I'll see if I can find time shortly to add in the oscillation modes. That's definitely going to be experimental, because I don't actually have one of them. If you're willing to test it out and provide feedback on it, I'd be happy to do that.

chris4824 commented 9 months ago

That is correct. I'll be glad to test it. I don't use the oscillation so don't rush. Thanks again.

pringleprng commented 9 months ago

It works great. ECO mode is automode confused me for a moment. Only thing miasing is oscillation modes. I see you are already working on it. Awesome 👌

andy-cooper commented 9 months ago

@pringleprng excellent! Yeah - eco vs auto confused me too at first, but that's the terminology that the Home Assistant code uses. If I didn't do it that way, the H1/H2/H3 preset modes would have required a completely custom UI as well, so I wanted to fit it into the existing paradigm.

I'm going to try to look at the oscillation modes this week and get that out, but at the same time I'm trying to get the existing code merged into Jeff's core code base, so I want to wait until that's done before adding more code.

andy-cooper commented 9 months ago

@pringleprng , @chris4824 , @thoughtleader @spacedoodle @natodd @Shwalamazula:

I've added support for the oscillation angles to my fork of this project in a new branch because @JeffSteinbok hasn't merged my code changes as yet.

Please feel free to test it out - https://github.com/andy-cooper/hass-dreo/tree/oscangle - note that it is the "oscangle" branch, so you'd need to either manually copy the files into your installation, or add that URL as a custom repository.

I have added the oscillation angles to the "Swing Mode" drop-down, because that is the only location that I can find to make it work with the climate control. That said, it does seem to fit well there. Note that this is very experimental, because I don't have a heater with which I can test it out - it doesn't break my Atom One heater, so at least that is good.

--Andy

chris4824 commented 8 months ago

@andy-cooper tried your oscangle branch but no extra controls for oscillation shows up. and your latest commit about python 3.10 makes the heaters unavailable.

andy-cooper commented 8 months ago

Thanks @chris4824 - sorry about that :(.

Any chance you could enable debug logs, gather the logs and attach them to this? That way I can take a look at what went wrong and try to fix it?

andy-cooper commented 8 months ago

FYI - this is what it should look like

Screenshot 2024-03-02 at 11 56 41 AM
chris4824 commented 8 months ago

This is what I have

heater

chris4824 commented 8 months ago

I'll try to get the logs for you

chris4824 commented 8 months ago

here is the logs. turning the fan on and off.

2024-03-02 12:49:54.620 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:49:54.620 DEBUG (DreoWebSocketStream) [pydreo] {Matts Heater}: got {{'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': 'ab3a37b2-ddac-4667-9610-5e06d749f810', 'timestamp': 1709401794543, 'reported': {'temperature': 71}}} message 2024-03-02 12:49:54.620 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Matts Heater): {'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': 'ab3a37b2-ddac-4667-9610-5e06d749f810', 'timestamp': 1709401794543, 'reported': {'temperature': 71}} 2024-03-02 12:49:54.620 INFO (DreoWebSocketStream) [pydreo] temperature reported: 71 2024-03-02 12:49:54.636 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:54.636 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:54.636 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:54.636 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:54.636 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.055 DEBUG (SyncWorker_55) [dreo] DreoHeaterHA:set_hvac_mode(Tylers Heater) fan_only --> coolair 2024-03-02 12:49:59.055 DEBUG (SyncWorker_55) [pydreo] PyDreoHeater:mode(Tylers Heater) --> coolair 2024-03-02 12:49:59.055 DEBUG (SyncWorker_55) [pydreo] {"devicesn": "1643940769442639873-ee7012adbff327d2:001:0000000000w", "method": "control", "params": {"mode": "coolair"}, "timestamp": "1709401799055"} 2024-03-02 12:49:59.058 DEBUG (SyncWorker_55) [pydreo] PyDreoHeater:poweron.setter - True 2024-03-02 12:49:59.058 DEBUG (SyncWorker_55) [pydreo] {"devicesn": "1643940769442639873-ee7012adbff327d2:001:0000000000w", "method": "control", "params": {"poweron": true}, "timestamp": "1709401799058"} 2024-03-02 12:49:59.112 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:49:59.112 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401799076, 'reported': {'mode': 'coolair'}}} message 2024-03-02 12:49:59.112 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401799076, 'reported': {'mode': 'coolair'}} 2024-03-02 12:49:59.112 INFO (DreoWebSocketStream) [pydreo] mode reported: coolair 2024-03-02 12:49:59.129 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:49:59.129 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401799079, 'reported': {'poweron': True}}} message 2024-03-02 12:49:59.129 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401799079, 'reported': {'poweron': True}} 2024-03-02 12:49:59.129 INFO (DreoWebSocketStream) [pydreo] poweron reported: True 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.137 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.904 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:49:59.905 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-report', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'messageid': '09d21b8e-dd2d-4b8b-824f-6396437d9b2c', 'timestamp': 1709401799, 'reported': {'mode': 'coolair', 'poweron': True}}} message 2024-03-02 12:49:59.905 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-report', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'messageid': '09d21b8e-dd2d-4b8b-824f-6396437d9b2c', 'timestamp': 1709401799, 'reported': {'mode': 'coolair', 'poweron': True}} 2024-03-02 12:49:59.905 INFO (DreoWebSocketStream) [pydreo] poweron reported: True 2024-03-02 12:49:59.905 INFO (DreoWebSocketStream) [pydreo] mode reported: coolair 2024-03-02 12:49:59.910 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.910 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.910 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.910 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:49:59.910 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:04.759 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:50:04.759 DEBUG (DreoWebSocketStream) [pydreo] {Matts Heater}: got {{'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': 'ca6a931b-a51c-47d4-9df9-aa6cf6adec87', 'timestamp': 1709401804682, 'reported': {'temperature': 72}}} message 2024-03-02 12:50:04.759 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Matts Heater): {'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': 'ca6a931b-a51c-47d4-9df9-aa6cf6adec87', 'timestamp': 1709401804682, 'reported': {'temperature': 72}} 2024-03-02 12:50:04.759 INFO (DreoWebSocketStream) [pydreo] temperature reported: 72 2024-03-02 12:50:04.837 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:04.837 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:04.837 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:04.837 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:04.837 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.576 DEBUG (SyncWorker_45) [dreo] DreoHeaterHA:set_hvac_mode(Tylers Heater) off --> off 2024-03-02 12:50:07.576 DEBUG (SyncWorker_45) [pydreo] PyDreoHeater:mode(Tylers Heater) --> off 2024-03-02 12:50:07.576 DEBUG (SyncWorker_45) [pydreo] {"devicesn": "1643940769442639873-ee7012adbff327d2:001:0000000000w", "method": "control", "params": {"mode": "off"}, "timestamp": "1709401807576"} 2024-03-02 12:50:07.580 DEBUG (SyncWorker_45) [pydreo] PyDreoHeater:poweron.setter - False 2024-03-02 12:50:07.580 DEBUG (SyncWorker_45) [pydreo] {"devicesn": "1643940769442639873-ee7012adbff327d2:001:0000000000w", "method": "control", "params": {"poweron": false}, "timestamp": "1709401807580"} 2024-03-02 12:50:07.635 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:50:07.636 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401807599, 'reported': {'mode': 'off'}}} message 2024-03-02 12:50:07.636 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401807599, 'reported': {'mode': 'off'}} 2024-03-02 12:50:07.636 INFO (DreoWebSocketStream) [pydreo] mode reported: off 2024-03-02 12:50:07.652 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:50:07.652 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401807601, 'reported': {'poweron': False}}} message 2024-03-02 12:50:07.652 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-reply', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'timestamp': 1709401807601, 'reported': {'poweron': False}} 2024-03-02 12:50:07.652 INFO (DreoWebSocketStream) [pydreo] poweron reported: False 2024-03-02 12:50:07.688 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.688 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.688 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.688 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.688 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.689 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.689 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.689 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.689 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:07.689 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:08.303 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:50:08.303 DEBUG (DreoWebSocketStream) [pydreo] {Tylers Heater}: got {{'method': 'control-report', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'messageid': '7d903d83-2357-4f35-a85e-fa94901f9f2e', 'timestamp': 1709401808, 'reported': {'mode': 'coolair', 'poweron': False}}} message 2024-03-02 12:50:08.303 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Tylers Heater): {'method': 'control-report', 'devicesn': '1643940769442639873-ee7012adbff327d2:001:0000000000w', 'messageid': '7d903d83-2357-4f35-a85e-fa94901f9f2e', 'timestamp': 1709401808, 'reported': {'mode': 'coolair', 'poweron': False}} 2024-03-02 12:50:08.303 INFO (DreoWebSocketStream) [pydreo] poweron reported: False 2024-03-02 12:50:08.304 INFO (DreoWebSocketStream) [pydreo] mode reported: coolair 2024-03-02 12:50:08.386 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:08.386 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:08.386 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:08.386 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:08.386 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:09.735 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message 2024-03-02 12:50:09.735 DEBUG (DreoWebSocketStream) [pydreo] {Matts Heater}: got {{'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': '666d6d10-f948-4c32-9541-76906b73ee8c', 'timestamp': 1709401809662, 'reported': {'temperature': 71}}} message ** 2024-03-02 12:50:09.735 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Matts Heater): {'method': 'report', 'devicesn': '1643940769442639873-4ade862797544707:001:0000000000w', 'messageid': '666d6d10-f948-4c32-9541-76906b73ee8c', 'timestamp': 1709401809662, 'reported': {'temperature': 71}} 2024-03-02 12:50:09.735 INFO (DreoWebSocketStream) [pydreo] temperature reported: 71 2024-03-02 12:50:09.737 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:09.737 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:09.737 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:09.737 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on 2024-03-02 12:50:09.737 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on

and here is the diagnostic log

{ "home_assistant": { "installation_type": "Home Assistant OS", "version": "2024.3.0b3", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.12.2", "docker": true, "arch": "x86_64", "timezone": "America/New_York", "os_name": "Linux", "os_version": "6.6.16-haos", "supervisor": "2024.02.1", "host_os": "Home Assistant OS 12.0", "docker_version": "24.0.7", "chassis": "vm", "run_as_root": true }, "custom_components": { "cielo_home": { "version": "1.6.8", "requirements": [] }, "weatherdotcom": { "version": "1.1.6", "requirements": [] }, "smartlife": { "version": "0.1.0", "requirements": [ "tuya-device-sharing-sdk==0.1.9" ] }, "ttlock": { "version": "v0.6.1", "requirements": [ "pydantic" ] }, "alarmo": { "version": "v1.9.14", "requirements": [] }, "blueiris": { "version": "1.0.16", "requirements": [] }, "localtuya": { "version": "3.2.4.3", "requirements": [] }, "alexa_media": { "version": "4.9.2", "requirements": [ "alexapy==1.27.10", "packaging>=20.3", "wrapt>=1.14.0" ] }, "browser_mod": { "version": "2.3.0", "requirements": [] }, "dreo": { "version": "0.1.3", "requirements": [ "websockets" ] }, "meross_cloud": { "version": "1.2.13", "requirements": [ "meross_iot==0.4.6.1" ] }, "hacs": { "version": "1.34.0", "requirements": [ "aiogithubapi>=22.10.1" ] } }, "integration_manifest": { "domain": "dreo", "name": "Dreo", "codeowners": [ "@jeffsteinbok", "@andy-cooper" ], "config_flow": true, "dependencies": [], "documentation": "https://github.com/andy-cooper/hass-dreo/blob/master/README.md", "iot_class": "cloud_push", "issue_tracker": "https://github.com/andy-cooper/hass-dreo/issues", "loggers": [ "dreo", "pydreo" ], "requirements": [ "websockets" ], "version": "0.1.3", "is_built_in": false }, "data": { "dreo": { "fan_count": 0, "heater_count": 2, "raw_devicelist": { "code": 0, "msg": "OK", "data": { "currentPage": 1, "pageSize": 100, "totalNum": 2, "totalPage": 1, "list": [ { "deviceId": "...", "sn": "...", "brand": "Dreo", "model": "DR-HSH009S", "productId": "...", "productName": "Heater", "deviceName": "Tylers Heater", "shared": false, "series": null, "seriesName": "Wall-mounted Heater", "color": "w", "controlsConf": { "template": "DR-HSH009S", "lottie": { "key": "poweron", "frames": [ { "value": 0, "frame": [ 0 ] }, { "value": 1, "frame": [ 3 ] } ] }, "schedule": { "duration": [ { "text": "schedule_control_turnoff_never", "desc": "schedule_control_turnoff_never_desc", "time": 0 }, { "text": "schedule_control_turnoff_30min", "desc": "schedule_control_turnoff_30min_desc", "time": 1800 }, { "text": "schedule_control_turnoff_1h", "desc": "schedule_control_turnoff_1h_desc", "time": 3600 }, { "text": "schedule_control_turnoff_2h", "desc": "schedule_control_turnoff_2h_desc", "time": 7200 }, { "text": "schedule_control_turnoff_4h", "desc": "schedule_control_turnoff_4h_desc", "time": 14400 }, { "text": "schedule_control_turnoff_6h", "desc": "schedule_control_turnoff_6h_desc", "time": 21600 }, { "text": "schedule_control_turnoff_8h", "desc": "schedule_control_turnoff_8h_desc", "time": 28800 } ], "modes": [ { "icon": "ic_hsh_item_heat", "title": "device_heater_mode_heat", "cmd": "mode", "value": "hotair", "valueType": 2, "isSelected": true, "attention": [ "mode", "htalevel", "poweron", "oscangle" ], "controls": [ { "type": 1, "title": "device_control_mode_manual_level", "cmd": [ "htalevel" ], "value": 3, "valueType": 1, "startValue": 0, "validValue": 1, "periodColor": "#FF9500", "endValue": 3, "groupId": 0, "startColor": "#FFD666", "endColor": "#FF7214", "isSelected": false, "preUnit": "H" } ] }, { "icon": "ic_hsh_item_eco", "title": "device_heater_mode_eco", "cmd": "mode", "value": "eco", "valueType": 2, "isSelected": false, "attention": [ "mode", "ecolevel", "poweron", "oscangle" ], "controls": [ { "type": 4, "valueType": 1, "title": "device_control_temp", "startColor": "#FFD666", "endColor": "#FF7214", "cmd": [ "ecolevel" ], "value": 85, "startValue": 41, "endValue": 95, "groupId": 0, "isSelected": false, "unit": "\u2109" } ] }, { "icon": "ic_hsh_item_fanonly", "title": "device_heater_mode_fan_only", "cmd": "mode", "value": "coolair", "valueType": 2, "isSelected": false, "attention": [ "mode", "poweron", "oscangle" ], "controls": [] } ] }, "timer": { "maxHour": 23 }, "cards": [ { "type": 2, "title": "home_temp", "icon": "", "image": "", "url": "", "show": true }, { "type": 8, "title": "", "icon": "", "image": "", "url": "dreo://nav/device/schedule?deviceSn={sn}", "show": true, "key": "", "minVersion": "2.2.2" }, { "type": 6, "title": "device_settings_title", "icon": "ic_setting", "image": "", "url": "dreo://nav/device/setting?deviceSn=${sn}", "show": true, "key": "setting" } ], "feature": { "schedule": { "enable": true, "localSupport": true, "module": [ { "type": "HeFi", "version": "0.0.1" } ] } }, "preference": [ { "id": "270", "type": "Display List", "title": "dev_ctrl_heater_display", "image": "ic_display", "reverse": false }, { "id": "200", "type": "Panel Sound", "title": "device_control_panelsound", "image": "ic_mute", "reverse": true, "cmd": "muteon" }, { "id": "220", "type": "Child Lock", "title": "device_control_childlock", "image": "ic_child_lock", "reverse": false, "cmd": "childlockon" }, { "id": "250", "type": "Open Window Detection", "title": "dev_ctrl_open_win_dect", "image": "ic_winopen", "cmd": "winopenon" }, { "id": "280", "type": "Show Temp", "title": "ambient_temp_always_on", "image": "ic_temp_unit_show", "reverse": false, "cmd": "dispmode" }, { "id": "230", "type": "Temperature Unit", "title": "device_control_temp_unit", "image": "ic_temp_unit" }, { "id": "240", "type": "Temperature Calibration", "title": "device_control_temp_calibration", "image": "ic_temp_cal" } ], "control": [ { "swingtype": true, "hideSafeMode": true } ], "category": "Space Heater", "version": { "minControlVer": "2.2.2", "minPairingVer": "2.0.0" } }, "mainConf": { "isSmart": true, "isWifi": true, "isBluetooth": true, "isVoiceControl": true }, "resourcesConf": { "imageSmallSrc": "https://resources.dreo-cloud.com/app/202306/20bad19da722a44238bb81ae3a6b87b689.png", "imageFullSrc": "https://resources.dreo-cloud.com/app/202307/259dd80ef20e50432195beab4dc1939160.zip", "imageSmallDarkSrc": "", "imageFullDarkSrc": "" }, "servicesConf": [ { "key": "user_manual", "value": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf" } ], "userManuals": [ { "icon": "https://resources.dreo-cloud.com/app/202309/7c299b4e04b3842c3b7efe11e8b13b88d.png", "url": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf", "desc": "Wall-mounted Heater" }, { "icon": "https://resources.dreo-cloud.com/app/202309/71392605cead140a282abedfcdd49bbdf.png", "url": "https://resources.dreo-cloud.com/app/202310/12a5ec101b8fa04ce2a65956acdce8e0ab.pdf", "desc": "Wall-mounted Heater with ALCI Plug" }, { "icon": "https://resources.dreo-cloud.com/app/202309/75e96dbcf73e14cb1ba94172c55968c11.png", "url": "https://resources.dreo-cloud.com/app/202310/121c4cbb7fff054a72a105a74d1cb703aa.pdf", "desc": "Wall-mounted Heater with Safety Plug" } ] }, { "deviceId": "...", "sn": "...", "brand": "Dreo", "model": "DR-HSH009S", "productId": "...", "productName": "Heater", "deviceName": "Matts Heater", "shared": false, "series": null, "seriesName": "Wall-mounted Heater", "color": "w", "controlsConf": { "template": "DR-HSH009S", "lottie": { "key": "poweron", "frames": [ { "value": 0, "frame": [ 0 ] }, { "value": 1, "frame": [ 3 ] } ] }, "schedule": { "duration": [ { "text": "schedule_control_turnoff_never", "desc": "schedule_control_turnoff_never_desc", "time": 0 }, { "text": "schedule_control_turnoff_30min", "desc": "schedule_control_turnoff_30min_desc", "time": 1800 }, { "text": "schedule_control_turnoff_1h", "desc": "schedule_control_turnoff_1h_desc", "time": 3600 }, { "text": "schedule_control_turnoff_2h", "desc": "schedule_control_turnoff_2h_desc", "time": 7200 }, { "text": "schedule_control_turnoff_4h", "desc": "schedule_control_turnoff_4h_desc", "time": 14400 }, { "text": "schedule_control_turnoff_6h", "desc": "schedule_control_turnoff_6h_desc", "time": 21600 }, { "text": "schedule_control_turnoff_8h", "desc": "schedule_control_turnoff_8h_desc", "time": 28800 } ], "modes": [ { "icon": "ic_hsh_item_heat", "title": "device_heater_mode_heat", "cmd": "mode", "value": "hotair", "valueType": 2, "isSelected": true, "attention": [ "mode", "htalevel", "poweron", "oscangle" ], "controls": [ { "type": 1, "title": "device_control_mode_manual_level", "cmd": [ "htalevel" ], "value": 3, "valueType": 1, "startValue": 0, "validValue": 1, "periodColor": "#FF9500", "endValue": 3, "groupId": 0, "startColor": "#FFD666", "endColor": "#FF7214", "isSelected": false, "preUnit": "H" } ] }, { "icon": "ic_hsh_item_eco", "title": "device_heater_mode_eco", "cmd": "mode", "value": "eco", "valueType": 2, "isSelected": false, "attention": [ "mode", "ecolevel", "poweron", "oscangle" ], "controls": [ { "type": 4, "valueType": 1, "title": "device_control_temp", "startColor": "#FFD666", "endColor": "#FF7214", "cmd": [ "ecolevel" ], "value": 85, "startValue": 41, "endValue": 95, "groupId": 0, "isSelected": false, "unit": "\u2109" } ] }, { "icon": "ic_hsh_item_fanonly", "title": "device_heater_mode_fan_only", "cmd": "mode", "value": "coolair", "valueType": 2, "isSelected": false, "attention": [ "mode", "poweron", "oscangle" ], "controls": [] } ] }, "timer": { "maxHour": 23 }, "cards": [ { "type": 2, "title": "home_temp", "icon": "", "image": "", "url": "", "show": true }, { "type": 8, "title": "", "icon": "", "image": "", "url": "dreo://nav/device/schedule?deviceSn={sn}", "show": true, "key": "", "minVersion": "2.2.2" }, { "type": 6, "title": "device_settings_title", "icon": "ic_setting", "image": "", "url": "dreo://nav/device/setting?deviceSn=${sn}", "show": true, "key": "setting" } ], "feature": { "schedule": { "enable": true, "localSupport": true, "module": [ { "type": "HeFi", "version": "0.0.1" } ] } }, "preference": [ { "id": "270", "type": "Display List", "title": "dev_ctrl_heater_display", "image": "ic_display", "reverse": false }, { "id": "200", "type": "Panel Sound", "title": "device_control_panelsound", "image": "ic_mute", "reverse": true, "cmd": "muteon" }, { "id": "220", "type": "Child Lock", "title": "device_control_childlock", "image": "ic_child_lock", "reverse": false, "cmd": "childlockon" }, { "id": "250", "type": "Open Window Detection", "title": "dev_ctrl_open_win_dect", "image": "ic_winopen", "cmd": "winopenon" }, { "id": "280", "type": "Show Temp", "title": "ambient_temp_always_on", "image": "ic_temp_unit_show", "reverse": false, "cmd": "dispmode" }, { "id": "230", "type": "Temperature Unit", "title": "device_control_temp_unit", "image": "ic_temp_unit" }, { "id": "240", "type": "Temperature Calibration", "title": "device_control_temp_calibration", "image": "ic_temp_cal" } ], "control": [ { "swingtype": true, "hideSafeMode": true } ], "category": "Space Heater", "version": { "minControlVer": "2.2.2", "minPairingVer": "2.0.0" } }, "mainConf": { "isSmart": true, "isWifi": true, "isBluetooth": true, "isVoiceControl": true }, "resourcesConf": { "imageSmallSrc": "https://resources.dreo-cloud.com/app/202306/20bad19da722a44238bb81ae3a6b87b689.png", "imageFullSrc": "https://resources.dreo-cloud.com/app/202307/259dd80ef20e50432195beab4dc1939160.zip", "imageSmallDarkSrc": "", "imageFullDarkSrc": "" }, "servicesConf": [ { "key": "user_manual", "value": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf" } ], "userManuals": [ { "icon": "https://resources.dreo-cloud.com/app/202309/7c299b4e04b3842c3b7efe11e8b13b88d.png", "url": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf", "desc": "Wall-mounted Heater" }, { "icon": "https://resources.dreo-cloud.com/app/202309/71392605cead140a282abedfcdd49bbdf.png", "url": "https://resources.dreo-cloud.com/app/202310/12a5ec101b8fa04ce2a65956acdce8e0ab.pdf", "desc": "Wall-mounted Heater with ALCI Plug" }, { "icon": "https://resources.dreo-cloud.com/app/202309/75e96dbcf73e14cb1ba94172c55968c11.png", "url": "https://resources.dreo-cloud.com/app/202310/121c4cbb7fff054a72a105a74d1cb703aa.pdf", "desc": "Wall-mounted Heater with Safety Plug" } ] } ] } } }, "devices": { "fans": [], "heaters": [ { "_device_definition": { "type": "<class 'custom_components.dreo.pydreo.models.DreoDeviceDetails'>", "repr": "DreoDeviceDetails(preset_modes=['H1', 'H2', 'H3'], range={'heat_range': (1, 3), 'ecolevel_range': (41, 95)}, hvac_modes=['coolair', 'hotair', 'eco', 'off'], swing_modes=['off', 'on', <HeaterOscillationAngles.SIXTY: '60\u00b0'>, <HeaterOscillationAngles.NINETY: '90\u00b0'>, <HeaterOscillationAngles.ONE_TWENTY: '120\u00b0'>])" }, "_name": "Tylers Heater", "_device_id": "...", "_sn": "REDACTED", "_brand": "Dreo", "_model": "DR-HSH009S", "_productId": "...", "_productName": "Heater", "_deviceName": "Tylers Heater", "_shared": false, "_series": null, "_seriesName": "Wall-mounted Heater", "_color": "w", "_dreo": { "type": "<class 'custom_components.dreo.pydreo.PyDreo'>", "repr": "<custom_components.dreo.pydreo.PyDreo object at 0x7f39bd090ec0>" }, "_is_on": false, "_feature_key_names": {}, "raw_state": { "code": 0, "msg": "OK", "data": { "mixed": { "lightsenon": { "state": false, "timestamp": 1709166725 }, "wifi_rssi": { "state": -43, "timestamp": 1709166725 }, "poweron": { "state": false, "timestamp": 1709166725 }, "scheid": { "state": 0, "timestamp": 1709166725 }, "timeron": { "state": { "du": 0, "ts": 1708564846 }, "timestamp": null }, "scheon": { "state": false, "timestamp": 1709166725 }, "mode": { "state": "eco", "timestamp": 1709166725 }, "mcuon": { "state": true, "timestamp": 1709166725 }, "network_latency": { "state": 43, "timestamp": 1709166725 }, "module_hardware_model": { "state": "HeFi", "timestamp": 1709166725 }, "mcu_firmware_version": { "state": "1.0.72", "timestamp": 1709166725 }, "otp_in_plug": { "state": false, "timestamp": 1709166725 }, "cooldown": { "state": 0, "timestamp": 1709166725 }, "temperature": { "state": 69, "timestamp": 1709392566 }, "winopened": { "state": 0, "timestamp": 1709166725 }, "frostproton": { "state": false, "timestamp": 1709166725 }, "winopenon": { "state": false, "timestamp": 1709166725 }, "module_hardware_mac": "REDACTED", "ptcon": { "state": false, "timestamp": 1709166725 }, "muteon": { "state": false, "timestamp": 1709166725 }, "mcu_hardware_model": { "state": "SC95F8613B", "timestamp": 1709166725 }, "wifi_ssid": "REDACTED", "tempunit": { "state": 1, "timestamp": 1709166725 }, "frostprotwk": { "state": false, "timestamp": 1709166725 }, "wrong": { "state": 0, "timestamp": 1709166725 }, "module_firmware_version": { "state": "2.0.1", "timestamp": 1709166725 }, "connected": { "state": true, "timestamp": 1709166725 }, "timeroff": { "state": { "du": 0, "ts": 0 }, "timestamp": null }, "_ota": { "state": 0, "timestamp": 1709166725 }, "ledkepton": { "state": true, "timestamp": 1709166725 }, "ecolevel": { "state": 70, "timestamp": 1709166725 }, "frostprottemp": { "state": 45, "timestamp": 1709166725 }, "childlockon": { "state": false, "timestamp": 1709166725 }, "htalevel": { "state": 3, "timestamp": 1709166725 }, "dispmode": { "state": "temp", "timestamp": 1709166725 }, "oscangle": { "state": 120, "timestamp": 1709166725 }, "tempoffset": { "state": 0, "timestamp": 1709166725 } }, "sn": "REDACTED", "productId": "...", "region": "us-east-2" } }, "_attr_cbs": [ { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b80eccc0>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b80efe20>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b7e00c20>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6678400>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679a80>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679940>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679bc0>" }, { "__type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679d00>" } ], "_lock": { "type": "<class '_thread.lock'>", "repr": "<unlocked _thread.lock object at 0x7f39bccdbe40>" }, "_mode": "coolair", "_htalevel": 3, "_oscon": null, "_oscangle": 120, "_temperature": 74, "_mute_on": false, "_fixed_conf": null, "_dev_on": null, "_timer_on": 0, "_cooldown": 0, "_ptc_on": false, "_light_on": null, "_ctlstatus": null, "_timer_off": 0, "_ecolevel": 70, "_childlockon": false, "_tempoffset": 0 }, { "_device_definition": { "type": "<class 'custom_components.dreo.pydreo.models.DreoDeviceDetails'>", "repr": "DreoDeviceDetails(preset_modes=['H1', 'H2', 'H3'], range={'heat_range': (1, 3), 'ecolevel_range': (41, 95)}, hvac_modes=['coolair', 'hotair', 'eco', 'off'], swing_modes=['off', 'on', <HeaterOscillationAngles.SIXTY: '60\u00b0'>, <HeaterOscillationAngles.NINETY: '90\u00b0'>, <HeaterOscillationAngles.ONE_TWENTY: '120\u00b0'>])" }, "_name": "Matts Heater", "_device_id": "...", "_sn": "REDACTED", "_brand": "Dreo", "_model": "DR-HSH009S", "_productId": "...", "_productName": "Heater", "_deviceName": "Matts Heater", "_shared": false, "_series": null, "_seriesName": "Wall-mounted Heater", "_color": "w", "_dreo": { "type": "<class 'custom_components.dreo.pydreo.PyDreo'>", "repr": "<custom_components.dreo.pydreo.PyDreo object at 0x7f39bd090ec0>" }, "_is_on": false, "_feature_key_names": {}, "raw_state": { "code": 0, "msg": "OK", "data": { "mixed": { "lightsenon": { "state": false, "timestamp": 1709171913 }, "wifi_rssi": { "state": -47, "timestamp": 1709171913 }, "poweron": { "state": false, "timestamp": 1709305250 }, "scheid": { "state": 0, "timestamp": 1709171913 }, "timeron": { "state": { "du": 0, "ts": 0 }, "timestamp": null }, "scheon": { "state": false, "timestamp": 1709171913 }, "mode": { "state": "eco", "timestamp": 1709171913 }, "mcuon": { "state": true, "timestamp": 1709171913 }, "network_latency": { "state": 52, "timestamp": 1709171913 }, "module_hardware_model": { "state": "HeFi", "timestamp": 1709171913 }, "mcu_firmware_version": { "state": "1.0.72", "timestamp": 1709171913 }, "otp_in_plug": { "state": false, "timestamp": 1709171913 }, "cooldown": { "state": 0, "timestamp": 1709278516 }, "temperature": { "state": 70, "timestamp": 1709393372 }, "winopened": { "state": 0, "timestamp": 1709171913 }, "frostproton": { "state": false, "timestamp": 1709171913 }, "winopenon": { "state": false, "timestamp": 1709171913 }, "module_hardware_mac": "REDACTED", "ptcon": { "state": false, "timestamp": 1709305158 }, "muteon": { "state": false, "timestamp": 1709171913 }, "mcu_hardware_model": { "state": "SC95F8613B", "timestamp": 1709171913 }, "wifi_ssid": "REDACTED", "tempunit": { "state": 1, "timestamp": 1709171913 }, "frostprotwk": { "state": false, "timestamp": 1709171913 }, "wrong": { "state": 0, "timestamp": 1709171913 }, "module_firmware_version": { "state": "2.0.1", "timestamp": 1709171913 }, "connected": { "state": true, "timestamp": 1709171913 }, "timeroff": { "state": { "du": 0, "ts": 0 }, "timestamp": null }, "_ota": { "state": 0, "timestamp": 1709171913 }, "ledkepton": { "state": true, "timestamp": 1709171913 }, "ecolevel": { "state": 75, "timestamp": 1709301149 }, "frostprottemp": { "state": 45, "timestamp": 1709171913 }, "childlockon": { "state": false, "timestamp": 1709171913 }, "htalevel": { "state": 1, "timestamp": 1709171913 }, "dispmode": { "state": "temp", "timestamp": 1709171913 }, "oscangle": { "state": 120, "timestamp": 1709171913 }, "tempoffset": { "state": 0, "timestamp": 1709171913 } }, "sn": "REDACTED", "productId": "...", "region": "us-east-2" } }, "_attr_cbs": [ { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b80ecb80>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b7e00220>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b7e00ae0>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679e40>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6679f80>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b667a0c0>" }, { "type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6b0d300>" }, { "__type": "<class 'function'>", "repr": "<function DreoBaseDeviceHA.async_added_to_hass..update_state at 0x7f39b6b0cea0>" } ], "_lock": { "type": "<class '_thread.lock'>", "repr": "<unlocked _thread.lock object at 0x7f39bcf45c40>" }, "_mode": "eco", "_htalevel": 1, "_oscon": null, "_oscangle": 120, "_temperature": 72, "_mute_on": false, "_fixed_conf": null, "_dev_on": null, "_timer_on": 0, "_cooldown": 0, "_ptc_on": false, "_light_on": null, "_ctlstatus": null, "_timer_off": 0, "_ecolevel": 75, "_childlockon": false, "_tempoffset": 0 } ] } } }

pringleprng commented 8 months ago

BTW I tried to get the fan oscillating angles to show up but it doesnt for me either. I thought it was my fault for maybe messing up the repo on HACS but I just got that update and 0.0.4 beta so I'm thinking it's not me.

andy-cooper commented 8 months ago

OK, thanks @pringleprng - I screwed stuff up with v0.0.4 - removed that and put in v0.0.5, but I don't think that will fix it. Could I ask you to enable debug logging for dreo, then post your debug logs from a restart of homeassistant core - that will have dumps that I hope will give me some insight into what's going on.

mikeoertli commented 8 months ago

FWIW I have the WH739S (which is identical to the WH719S and WH729S except for the type of plug that each offers) and I tried adding it today, but the log is reporting it is an unsupported model.

2024-03-11 16:20:25.156 WARNING (SyncWorker_0) [pydreo] Unknown fan model: DR-HSH009S

I restarted HASS with debug enabled and here's the interesting part:

2024-03-15 15:21:33.752 INFO (SyncWorker_7) [pydreo] Dreo Auth reports user region as: NA
2024-03-15 15:21:33.752 DEBUG (SyncWorker_7) [pydreo] Login successful
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] Calling Dreo API: {devicelist}
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] =======call_api=============================
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] [get] calling '/api/v2/user-device/device/list' api
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] API call URL: 
  https://app-api-us.dreo-cloud.com/api/v2/user-device/device/list
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] API call headers: 
  {"ua": "dreo/2.5.12 (sdk_gphone64_arm64;android 13;Scale/2.625)", "lang": "en", "content-type": "application/json; charset=UTF-8", "accept-encoding": "gzip", "user-agent": "okhttp/4.9.1", "authorization": "Bearer 6015d70f-6e06-47c5-bfa0-<REDACTED>"}
2024-03-15 15:21:33.869 DEBUG (SyncWorker_3) [pydreo] API call json: 
  {"acceptLanguage": "en", "method": "devices", "pageNo": "1", "pageSize": "100"}
2024-03-15 15:21:34.200 DEBUG (SyncWorker_3) [pydreo] API response: 

  {"code": 0, "msg": "OK", "data": {"currentPage": 1, "pageSize": 100, "totalNum": 1, "totalPage": 1, "list": [{"deviceId": "1750982642146217985", "sn": "1643940769442639873-0566ab60c5581a88:001:0000000000w", "brand": "Dreo", "model": "DR-HSH009S", "productId": "1643940769442639873", "productName": "Heater", "deviceName": "Garage Heater", "shared": false, "series": null, "seriesName": "Wall-mounted Heater", "color": "w", "controlsConf": {"template": "DR-HSH009S", "lottie": {"key": "poweron", "frames": [{"value": 0, "frame": [0]}, {"value": 1, "frame": [3]}]}, "schedule": {"duration": [{"text": "schedule_control_turnoff_never", "desc": "schedule_control_turnoff_never_desc", "time": 0}, {"text": "schedule_control_turnoff_30min", "desc": "schedule_control_turnoff_30min_desc", "time": 1800}, {"text": "schedule_control_turnoff_1h", "desc": "schedule_control_turnoff_1h_desc", "time": 3600}, {"text": "schedule_control_turnoff_2h", "desc": "schedule_control_turnoff_2h_desc", "time": 7200}, {"text": "schedule_control_turnoff_4h", "desc": "schedule_control_turnoff_4h_desc", "time": 14400}, {"text": "schedule_control_turnoff_6h", "desc": "schedule_control_turnoff_6h_desc", "time": 21600}, {"text": "schedule_control_turnoff_8h", "desc": "schedule_control_turnoff_8h_desc", "time": 28800}], "modes": [{"icon": "ic_hsh_item_heat", "title": "device_heater_mode_heat", "cmd": "mode", "value": "hotair", "valueType": 2, "isSelected": true, "attention": ["mode", "htalevel", "poweron", "oscangle"], "controls": [{"type": 1, "title": "device_control_mode_manual_level", "cmd": ["htalevel"], "value": 3, "valueType": 1, "startValue": 0, "validValue": 1, "periodColor": "#FF9500", "endValue": 3, "groupId": 0, "startColor": "#FFD666", "endColor": "#FF7214", "isSelected": false, "preUnit": "H"}]}, {"icon": "ic_hsh_item_eco", "title": "device_heater_mode_eco", "cmd": "mode", "value": "eco", "valueType": 2, "isSelected": false, "attention": ["mode", "ecolevel", "poweron", "oscangle"], "controls": [{"type": 4, "valueType": 1, "title": "device_control_temp", "startColor": "#FFD666", "endColor": "#FF7214", "cmd": ["ecolevel"], "value": 85, "startValue": 41, "endValue": 95, "groupId": 0, "isSelected": false, "unit": "\u2109"}]}, {"icon": "ic_hsh_item_fanonly", "title": "device_heater_mode_fan_only", "cmd": "mode", "value": "coolair", "valueType": 2, "isSelected": false, "attention": ["mode", "poweron", "oscangle"], "controls": []}]}, "timer": {"maxHour": 23}, "cards": [{"type": 2, "title": "home_temp", "icon": "", "image": "", "url": "", "show": true}, {"type": 8, "title": "", "icon": "", "image": "", "url": "dreo://nav/device/schedule?deviceSn={sn}", "show": true, "key": "", "minVersion": "2.2.2"}, {"type": 6, "title": "device_settings_title", "icon": "ic_setting", "image": "", "url": "dreo://nav/device/setting?deviceSn=${sn}", "show": true, "key": "setting"}], "feature": {"schedule": {"enable": true, "localSupport": true, "module": [{"type": "HeFi", "version": "0.0.1"}]}}, "preference": [{"id": "270", "type": "Display List", "title": "dev_ctrl_heater_display", "image": "ic_display", "reverse": false}, {"id": "200", "type": "Panel Sound", "title": "device_control_panelsound", "image": "ic_mute", "reverse": true, "cmd": "muteon"}, {"id": "220", "type": "Child Lock", "title": "device_control_childlock", "image": "ic_child_lock", "reverse": false, "cmd": "childlockon"}, {"id": "250", "type": "Open Window Detection", "title": "dev_ctrl_open_win_dect", "image": "ic_winopen", "cmd": "winopenon"}, {"id": "280", "type": "Show Temp", "title": "ambient_temp_always_on", "image": "ic_temp_unit_show", "reverse": false, "cmd": "dispmode"}, {"id": "230", "type": "Temperature Unit", "title": "device_control_temp_unit", "image": "ic_temp_unit"}, {"id": "240", "type": "Temperature Calibration", "title": "device_control_temp_calibration", "image": "ic_temp_cal"}], "control": [{"swingtype": true, "hideSafeMode": true}], "category": "Space Heater", "version": {"minControlVer": "2.2.2", "minPairingVer": "2.0.0"}}, "mainConf": {"isSmart": true, "isWifi": true, "isBluetooth": true, "isVoiceControl": true}, "resourcesConf": {"imageSmallSrc": "https://resources.dreo-cloud.com/app/202306/20bad19da722a44238bb81ae3a6b87b689.png", "imageFullSrc": "https://resources.dreo-cloud.com/app/202307/259dd80ef20e50432195beab4dc1939160.zip", "imageSmallDarkSrc": "", "imageFullDarkSrc": ""}, "servicesConf": [{"key": "user_manual", "value": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf"}], "userManuals": [{"icon": "https://resources.dreo-cloud.com/app/202309/7c299b4e04b3842c3b7efe11e8b13b88d.png", "url": "https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf", "desc": "Wall-mounted Heater"}, {"icon": "https://resources.dreo-cloud.com/app/202309/71392605cead140a282abedfcdd49bbdf.png", "url": "https://resources.dreo-cloud.com/app/202310/12a5ec101b8fa04ce2a65956acdce8e0ab.pdf", "desc": "Wall-mounted Heater with ALCI Plug"}, {"icon": "https://resources.dreo-cloud.com/app/202309/75e96dbcf73e14cb1ba94172c55968c11.png", "url": "https://resources.dreo-cloud.com/app/202310/121c4cbb7fff054a72a105a74d1cb703aa.pdf", "desc": "Wall-mounted Heater with Safety Plug"}]}]}} 

2024-03-15 15:21:34.205 DEBUG (SyncWorker_3) [pydreo] pydreo._process_devices
2024-03-15 15:21:34.205 DEBUG (SyncWorker_3) [pydreo] New device list initialized
2024-03-15 15:21:34.205 DEBUG (SyncWorker_3) [pydreo] found device with model DR-HSH009S
2024-03-15 15:21:34.206 WARNING (SyncWorker_3) [pydreo] Unknown fan model: DR-HSH009S
2024-03-15 15:21:34.206 DEBUG (SyncWorker_3) [pydreo] {'deviceId': '1750982642146217985', 'sn': '1643940769442639873-0566ab60c5581a88:001:0000000000w', 'brand': 'Dreo', 'model': 'DR-HSH009S', 'productId': '1643940769442639873', 'productName': 'Heater', 'deviceName': 'Garage Heater', 'shared': False, 'series': None, 'seriesName': 'Wall-mounted Heater', 'color': 'w', 'controlsConf': {'template': 'DR-HSH009S', 'lottie': {'key': 'poweron', 'frames': [{'value': 0, 'frame': [0]}, {'value': 1, 'frame': [3]}]}, 'schedule': {'duration': [{'text': 'schedule_control_turnoff_never', 'desc': 'schedule_control_turnoff_never_desc', 'time': 0}, {'text': 'schedule_control_turnoff_30min', 'desc': 'schedule_control_turnoff_30min_desc', 'time': 1800}, {'text': 'schedule_control_turnoff_1h', 'desc': 'schedule_control_turnoff_1h_desc', 'time': 3600}, {'text': 'schedule_control_turnoff_2h', 'desc': 'schedule_control_turnoff_2h_desc', 'time': 7200}, {'text': 'schedule_control_turnoff_4h', 'desc': 'schedule_control_turnoff_4h_desc', 'time': 14400}, {'text': 'schedule_control_turnoff_6h', 'desc': 'schedule_control_turnoff_6h_desc', 'time': 21600}, {'text': 'schedule_control_turnoff_8h', 'desc': 'schedule_control_turnoff_8h_desc', 'time': 28800}], 'modes': [{'icon': 'ic_hsh_item_heat', 'title': 'device_heater_mode_heat', 'cmd': 'mode', 'value': 'hotair', 'valueType': 2, 'isSelected': True, 'attention': ['mode', 'htalevel', 'poweron', 'oscangle'], 'controls': [{'type': 1, 'title': 'device_control_mode_manual_level', 'cmd': ['htalevel'], 'value': 3, 'valueType': 1, 'startValue': 0, 'validValue': 1, 'periodColor': '#FF9500', 'endValue': 3, 'groupId': 0, 'startColor': '#FFD666', 'endColor': '#FF7214', 'isSelected': False, 'preUnit': 'H'}]}, {'icon': 'ic_hsh_item_eco', 'title': 'device_heater_mode_eco', 'cmd': 'mode', 'value': 'eco', 'valueType': 2, 'isSelected': False, 'attention': ['mode', 'ecolevel', 'poweron', 'oscangle'], 'controls': [{'type': 4, 'valueType': 1, 'title': 'device_control_temp', 'startColor': '#FFD666', 'endColor': '#FF7214', 'cmd': ['ecolevel'], 'value': 85, 'startValue': 41, 'endValue': 95, 'groupId': 0, 'isSelected': False, 'unit': '℉'}]}, {'icon': 'ic_hsh_item_fanonly', 'title': 'device_heater_mode_fan_only', 'cmd': 'mode', 'value': 'coolair', 'valueType': 2, 'isSelected': False, 'attention': ['mode', 'poweron', 'oscangle'], 'controls': []}]}, 'timer': {'maxHour': 23}, 'cards': [{'type': 2, 'title': 'home_temp', 'icon': '', 'image': '', 'url': '', 'show': True}, {'type': 8, 'title': '', 'icon': '', 'image': '', 'url': 'dreo://nav/device/schedule?deviceSn={sn}', 'show': True, 'key': '', 'minVersion': '2.2.2'}, {'type': 6, 'title': 'device_settings_title', 'icon': 'ic_setting', 'image': '', 'url': 'dreo://nav/device/setting?deviceSn=${sn}', 'show': True, 'key': 'setting'}], 'feature': {'schedule': {'enable': True, 'localSupport': True, 'module': [{'type': 'HeFi', 'version': '0.0.1'}]}}, 'preference': [{'id': '270', 'type': 'Display List', 'title': 'dev_ctrl_heater_display', 'image': 'ic_display', 'reverse': False}, {'id': '200', 'type': 'Panel Sound', 'title': 'device_control_panelsound', 'image': 'ic_mute', 'reverse': True, 'cmd': 'muteon'}, {'id': '220', 'type': 'Child Lock', 'title': 'device_control_childlock', 'image': 'ic_child_lock', 'reverse': False, 'cmd': 'childlockon'}, {'id': '250', 'type': 'Open Window Detection', 'title': 'dev_ctrl_open_win_dect', 'image': 'ic_winopen', 'cmd': 'winopenon'}, {'id': '280', 'type': 'Show Temp', 'title': 'ambient_temp_always_on', 'image': 'ic_temp_unit_show', 'reverse': False, 'cmd': 'dispmode'}, {'id': '230', 'type': 'Temperature Unit', 'title': 'device_control_temp_unit', 'image': 'ic_temp_unit'}, {'id': '240', 'type': 'Temperature Calibration', 'title': 'device_control_temp_calibration', 'image': 'ic_temp_cal'}], 'control': [{'swingtype': True, 'hideSafeMode': True}], 'category': 'Space Heater', 'version': {'minControlVer': '2.2.2', 'minPairingVer': '2.0.0'}}, 'mainConf': {'isSmart': True, 'isWifi': True, 'isBluetooth': True, 'isVoiceControl': True}, 'resourcesConf': {'imageSmallSrc': 'https://resources.dreo-cloud.com/app/202306/20bad19da722a44238bb81ae3a6b87b689.png', 'imageFullSrc': 'https://resources.dreo-cloud.com/app/202307/259dd80ef20e50432195beab4dc1939160.zip', 'imageSmallDarkSrc': '', 'imageFullDarkSrc': ''}, 'servicesConf': [{'key': 'user_manual', 'value': 'https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf'}], 'userManuals': [{'icon': 'https://resources.dreo-cloud.com/app/202309/7c299b4e04b3842c3b7efe11e8b13b88d.png', 'url': 'https://resources.dreo-cloud.com/app/202310/12e3d6cbd972e04025a44e8ff09f096552.pdf', 'desc': 'Wall-mounted Heater'}, {'icon': 'https://resources.dreo-cloud.com/app/202309/71392605cead140a282abedfcdd49bbdf.png', 'url': 'https://resources.dreo-cloud.com/app/202310/12a5ec101b8fa04ce2a65956acdce8e0ab.pdf', 'desc': 'Wall-mounted Heater with ALCI Plug'}, {'icon': 'https://resources.dreo-cloud.com/app/202309/75e96dbcf73e14cb1ba94172c55968c11.png', 'url': 'https://resources.dreo-cloud.com/app/202310/121c4cbb7fff054a72a105a74d1cb703aa.pdf', 'desc': 'Wall-mounted Heater with Safety Plug'}]}

followed by a couple notifications that a message was received for an unsupported device:

2024-03-15 15:21:44.209 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message
2024-03-15 15:21:44.209 DEBUG (DreoWebSocketStream) [pydreo] Received message for unknown or unsupported device. SN: 1643940769442639873-0566ab60c5581a88:001:0000000000w
2024-03-15 15:21:44.209 DEBUG (DreoWebSocketStream) [pydreo] Message: {'method': 'report', 'devicesn': '1643940769442639873-0566ab60c5581a88:001:0000000000w', 'messageid': '18a2c5be-964f-4d49-baaf-289cc66213f6', 'timestamp': 1710537704081, 'reported': {'temperature': 45}}

Hope that helps!

ptmgcorp commented 8 months ago

@andy-cooper

This is what I have

heater

I'm also having the same card with an DR-HSH009AS model. On the debug it does appears supported but it won't show up.

andy-cooper commented 8 months ago

@mikeoertli - Hmm. That's interesting, because if it's an unknown model, what should show up is this message (yes, there is a redundant heater word in the message):

"Unknown fan, heater or heater model: XXX"`

So what that tells me is that you're not running the version that I have published out of my repo - https://github.com/andy-cooper/hass-dreo/tree/oscangle. You should set that as a custom repository in HACS and then install that after uninstalling the Dreo integration that you currently have installed.

@ptmgcorp - your image shows up as empty, unfortunately. However, if yours is a DR-HSH009AS, then it wasn't supported by my code because I didn't know that existed. I've just added it.

The current release on my fork is https://github.com/andy-cooper/hass-dreo/releases/tag/v0.0.8-beta

ptmgcorp commented 8 months ago

@andy-cooper - Thank you for your response. The DR-HSH009AS is new model same as the DR-HSH009S. The difference is that it has an ALCI Safety Plug, not much of a difference. As of right now, according to the debug. The unit model number shows up as a DR-HSH009S, but it is working. Just that the climate card doesn't load. So for me, by removing 3 lines of codes in your climate.py.

 if self.device.poweron is not None:
     supported_features |= ClimateEntityFeature.TURN_OFF
     supported_features |= ClimateEntityFeature.TURN_ON

The climate card shows up and works as expected, except that is missing the OSCILATE button or option from Device Info and the climate card itself as shown here https://github.com/JeffSteinbok/hass-dreo/issues/62#issuecomment-1974863139 You may know why :)

andy-cooper commented 8 months ago

On the part of removing the code, that's weird. What version of home assistant core are you running? I had to put those lines in because there's a deprecated warning for defining poweron but not specifying ClimateEntityFeature.TURN_ON and TURN_OFF, so I tried to fix that. I also updated the requirements to be 2024.2 required.

@ptmgcorp - can you try enabling debug mode and restarting home assistant to get debug logs for me? From the System > Logs area? I want to see if my latest logging statements show up.

Also, when you've done that, could you also use the wall heater's remote and set the different oscillation angles so that we can get debug logs of what commands show up? I'm a little baffled by what's going on, TBH.

andy-cooper commented 8 months ago

@ptmgcorp - Oh, and could you update to the latest release on the oscangle branch before you do any of the above?

ptmgcorp commented 8 months ago

@andy-cooper - Yeah, I've done that but no avail. But that can be the issue since I'm in version 2023.11 due to other plug-ins incompatibilities. It's why I haven't move to any other versions. But I will do some tests and upgrade the HA version. Let me work on my end and follow your requirements first. After that, I will do as requested.

andy-cooper commented 8 months ago

@ptmgcorp - Ah, gotcha. Yeah - that will explain why you have to remove those 3 lines of code. Without those 3 lines you should be fine on 2023.11. The debug logs are far more important, and I'll see if I can find a way to make it work with both 2023.11 and 2024.2 without re-introducing the deprecation warnings. Thanks so much for being a guinea pig here!

ptmgcorp commented 8 months ago

@andy-cooper - Well, I did a bench test on a separate HA VM. Updated to 2024.2. Download your master branch codes. Everything pops up normal without removing the 3 lines of codes in the climate.py file. Except I still don't have the osculate angle shown on the card. Here is the debug codes when pressing the 4 different modes on the remote.

2024-03-17 16:37:40.575 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message
2024-03-17 16:37:40.575 DEBUG (DreoWebSocketStream) [pydreo] {Living Room}: got {{'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': '2a04b649-1bdc-4a55-8d1d-e98a97740e6c', 'timestamp': 1710707860, 'reported': {'oscangle': 120}}} message **
2024-03-17 16:37:40.575 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Living Room): {'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': '2a04b649-1bdc-4a55-8d1d-e98a97740e6c', 'timestamp': 1710707860, 'reported': {'oscangle': 120}}
2024-03-17 16:37:40.575 INFO (DreoWebSocketStream) [pydreo] oscangle reported: 120
2024-03-17 16:37:40.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:40.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:40.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:40.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:40.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:43.807 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message
2024-03-17 16:37:43.807 DEBUG (DreoWebSocketStream) [pydreo] {Living Room}: got {{'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': '50956fb7-ba21-40e8-a550-539b3c7bf31a', 'timestamp': 1710707863, 'reported': {'oscangle': 90}}} message **
2024-03-17 16:37:43.808 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Living Room): {'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': '50956fb7-ba21-40e8-a550-539b3c7bf31a', 'timestamp': 1710707863, 'reported': {'oscangle': 90}}
2024-03-17 16:37:43.808 INFO (DreoWebSocketStream) [pydreo] oscangle reported: 90
2024-03-17 16:37:43.832 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:43.832 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:43.832 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:43.832 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:43.832 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:46.244 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message
2024-03-17 16:37:46.244 DEBUG (DreoWebSocketStream) [pydreo] {Living Room}: got {{'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': 'a994967e-55e9-4520-8989-b9e10b562e92', 'timestamp': 1710707866, 'reported': {'oscangle': 60}}} message **
2024-03-17 16:37:46.244 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Living Room): {'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': 'a994967e-55e9-4520-8989-b9e10b562e92', 'timestamp': 1710707866, 'reported': {'oscangle': 60}}
2024-03-17 16:37:46.244 INFO (DreoWebSocketStream) [pydreo] oscangle reported: 60
2024-03-17 16:37:46.351 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:46.351 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:46.351 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:46.351 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:46.351 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:48.559 DEBUG (DreoWebSocketStream) [pydreo] CommandTransport::_ws_consumer_handler - got message
2024-03-17 16:37:48.559 DEBUG (DreoWebSocketStream) [pydreo] {Living Room}: got {{'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': 'da8b686d-cef7-4071-a304-d89dda4ba986', 'timestamp': 1710707868, 'reported': {'oscangle': 0}}} message **
2024-03-17 16:37:48.559 DEBUG (DreoWebSocketStream) [pydreo] PyDreoHeater:handle_server_update(Living Room): {'method': 'report', 'devicesn': '1643940769442639873-65e50fbd10551564:001:0000000000w', 'messageid': 'da8b686d-cef7-4071-a304-d89dda4ba986', 'timestamp': 1710707868, 'reported': {'oscangle': 0}}
2024-03-17 16:37:48.559 INFO (DreoWebSocketStream) [pydreo] oscangle reported: 0
2024-03-17 16:37:48.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:48.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:48.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:48.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
2024-03-17 16:37:48.638 DEBUG (MainThread) [dreo] DreoSwitchHA:is_on
andy-cooper commented 8 months ago

OK, thanks. The master branch doesn't have fixes for the oscangle, whereas the oscangle branch does, so I'm not surprised it doesn't show up with the master branch. The good news is that the correct parameter - oscangle - is what I'm using, so when you do get to see the oscillation angles in "swing mode", you should be able to set them.

So we have to figure out why you're not seeing them if you're using the oscangle branch. Any chance you could download the code from that branch and test with it? The URL is https://github.com/andy-cooper/hass-dreo/tree/oscangle - note the "oscangle" in the URL name.

JeffSteinbok commented 8 months ago

@andy-cooper - I don't see a PR for your OscAngle branch; is that forthcoming? Also, I went ahead and published a new release with the latest from main.

Lastly, @andy-cooper - Can I make you a contributor to this repo so you can approve PRs and such? If you want to reach me, you can find me at @jeffstei on discord.

andy-cooper commented 8 months ago

Hi @JeffSteinbok - I was working off of the fork because I wanted to try to get things going with a quick test/re-test cycle, so hadn't gotten a PR to main together as yet. That's because a lot of what I'm doing w.r.t. the wall-mounted fans is a bit of guesswork and experimentation because I don't have one.

Regarding being a contributor - of course; that's entirely your prerogative, and I'd be quite happy to approve PRs and such. I think I still have a discord account, but don't generally use it - I'll take a look and see what it is :).

Regarding PRs - let me put one together for the latest changes I have on the branch.

JeffSteinbok commented 8 months ago

Thanks - I may have to pull back 0.6.3 because as soon as I moved to it, I lost my horizontal/vertical angle controls. Does it need your update that's not in main yet? I hardly ever use discord, let me check out the Discussion feature on GitHub, see if it works.

From: andy-cooper @.> Sent: Sunday, March 17, 2024 7:27 PM To: JeffSteinbok/hass-dreo @.> Cc: Jeff Steinbok @.>; Mention @.> Subject: Re: [JeffSteinbok/hass-dreo] Dreo wall mounted heater DR-HSH009S (Issue #62)

Hi @JeffSteinbokhttps://github.com/JeffSteinbok - I was working off of the fork because I wanted to try to get things going with a quick test/re-test cycle, so hadn't gotten a PR to main together as yet. That's because a lot of what I'm doing w.r.t. the wall-mounted fans is a bit of guesswork and experimentation because I don't have one.

Regarding being a contributor - of course; that's entirely your prerogative, and I'd be quite happy to approve PRs and such. I think I still have a discord account, but don't generally use it - I'll take a look and see what it is :).

Regarding PRs - let me put one together for the latest changes I have on the branch.

- Reply to this email directly, view it on GitHubhttps://github.com/JeffSteinbok/hass-dreo/issues/62#issuecomment-2002762554, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABX5XT3PVJUPP6SQKD5PTXDYYZGF3AVCNFSM6AAAAAA6MYNG3WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBSG43DENJVGQ. You are receiving this because you were mentioned.Message ID: @.**@.>>

andy-cooper commented 8 months ago

Ohhh - that's bad, sorry! It's possible that it's because of 3 lines of code that I added to deal with a deprecation warning that came in 2024.2 - https://github.com/JeffSteinbok/hass-dreo/pull/77/commits/0e2347b747feb2564d6c2779eed8ad94bd963fff#diff-bf878eff7e3e02ed865b7bcdd74c96686fb2538e83fc72fa8a07c96452bea210R201

but I'm not sure if that's in the release or not, it's been a few weeks since I looked at it.

I've made a PR with all of the latest changes that I've made to my fork's branch - LOL, I see you just merged it.

Test with that before a release to see if that solves the issue.

JeffSteinbok commented 8 months ago

Where did you see the deprecation warning? I've been so swamped with work recently I haven't had time to play with this.

From: andy-cooper @.> Sent: Sunday, March 17, 2024 7:39 PM To: JeffSteinbok/hass-dreo @.> Cc: Jeff Steinbok @.>; Mention @.> Subject: Re: [JeffSteinbok/hass-dreo] Dreo wall mounted heater DR-HSH009S (Issue #62)

Ohhh - that's bad, sorry! It's possible that it's because of 3 lines of code that I added to deal with a deprecation warning that came in 2024.2 - 0e2347b#diff-bf878eff7e3e02ed865b7bcdd74c96686fb2538e83fc72fa8a07c96452bea210R201https://github.com/JeffSteinbok/hass-dreo/commit/0e2347b747feb2564d6c2779eed8ad94bd963fff#diff-bf878eff7e3e02ed865b7bcdd74c96686fb2538e83fc72fa8a07c96452bea210R201

but I'm not sure if that's in the release or not, it's been a few weeks since I looked at it.

I've made a PR with all of the latest changes that I've made to my fork's branch - LOL, I see you just merged it.

Test with that before a release to see if that solves the issue.

- Reply to this email directly, view it on GitHubhttps://github.com/JeffSteinbok/hass-dreo/issues/62#issuecomment-2002771306, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABX5XTZT5GQHMNMWKXUS33LYYZHTTAVCNFSM6AAAAAA6MYNG3WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMBSG43TCMZQGY. You are receiving this because you were mentioned.Message ID: @.**@.>>

andy-cooper commented 8 months ago

https://developers.home-assistant.io/blog/2024/01/24/climate-climateentityfeatures-expanded/

I found that after I saw the deprecation warning in the HA core log.

JeffSteinbok commented 7 months ago

Should be working in latest release.

JeffSteinbok commented 2 months ago

@andy-cooper - I'm pretty sure the WH model nubmers aren't what's in the JSON and they should be fixed to prefix with DR instead. Can you have a look at models.py?

andy-cooper commented 2 months ago

@JeffSteinbok - if I recall correctly, the WH model numbers were added for people who had those and were reporting them in issues. I only have the DR-HSH004S, so can't really check too much what the JSON contains. Let me look and see what I can find ...

andy-cooper commented 2 months ago

So it's possible that those were put in as an attempt to get WH719S, WH729S and WH739S working, but those may well be reported as a DR-HSH009S or DRHSH009AS. That said - see above https://github.com/JeffSteinbok/hass-dreo/issues/62#issuecomment-1936847858 where @pringleprng has a WH739S. Perhaps we can get a JSON from them?