simbaja / ha_gehome

GE Home Appliances (SmartHQ) for Home Assistant
MIT License
332 stars 78 forks source link

Feature Request: Haier Dishwasher #187

Open ATinyChipmunk opened 1 year ago

ATinyChipmunk commented 1 year ago

Hello,

I recently purchased a Haier dishwasher and loaded up the integration. In the app I am unable to set a cycle and turn on the machine. The integration only shows information like wash cycles. Is it possible to add the functionality to turn on the machine?

My Dishwasher is model : HDW15F21

Thank you!

simbaja commented 1 year ago

If you'd like to send some debug information (using the gehomesdk repo), I might be able to figure it out, but no guarantees that I can identify the right command.

ATinyChipmunk commented 1 year ago

hello,

Ok I figured out the SDK :)

I initiated a wash from my phone, then canceled it and this was the output.

2023-09-11 12:18:29,379 DEBUG < TEXT '{"item":{"applianceId":"D828C9F3F6C3","erd":"0x...rId":"507b1comnhndr7g"}' [197 bytes] 2023-09-11 12:18:29,379 DEBUG raw cycle state value: ErdCycleStateRaw.PREWASH 2023-09-11 12:18:29,379 DEBUG Setting ErdCode.DISHWASHER_CYCLE_STATE to ErdCycleState.PRE_WASH 2023-09-11 12:18:29,379 DEBUG raw cycle state value: ErdCycleStateRaw.PREWASH 2023-09-11 12:18:29,379 DEBUG received event: appliance_state_change, processing callbacks... 2023-09-11 12:18:29,379 DEBUG processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x000002076F24DE10>> 2023-09-11 12:18:29,380 DEBUG processing callback: <function log_state_change at 0x000002076F21E520> 2023-09-11 12:18:29,380 DEBUG received event: appliance_update_received, processing callbacks... 2023-09-11 12:18:29,380 DEBUG Appliance state change detected in GeAppliance(D828C9F3F6C3) (ErdApplianceType.DISH_WASHER). Updated keys: ErdCode.DISHWASHER_CYCLE_STATE 2023-09-11 12:18:35,669 DEBUG < TEXT '{"item":{"applianceId":"D828C9F3F6C3","erd":"0x...rId":"507b1comnhndr7g"}' [201 bytes] 2023-09-11 12:18:35,669 DEBUG Setting ErdCode.DISHWASHER_USER_SETTING to ErdUserSetting(mute=<UserSetting.DISABLE: 0>, demo_mode=<UserSetting.ENABLE: 1>, lock_control=<UserSetting.DISABLE: 0>, sabbath=<UserSetting.DISABLE: 0>, cycle_mode=<UserCycleSetting.THIRTY_MIN: 4>, presoak=<UserSetting.DISABLE: 0>, bottle_jet=<UserSetting.DISABLE: 0>, wash_temp=<UserWashTempSetting.NORMAL: 0>, rinse_aid=<UserSetting.DISABLE: 0>, dry_option=<UserDryOptionSetting.POWER_DRY: 1>, wash_zone=<UserWashZoneSetting.UPPER: 2>, delay_hours=0, raw_value='600488') 2023-09-11 12:18:35,669 DEBUG received event: appliance_state_change, processing callbacks... 2023-09-11 12:18:35,669 DEBUG processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x000002076F24DE10>> 2023-09-11 12:18:35,669 DEBUG processing callback: <function log_state_change at 0x000002076F21E520> 2023-09-11 12:18:35,669 DEBUG received event: appliance_update_received, processing callbacks... 2023-09-11 12:18:35,669 DEBUG Appliance state change detected in GeAppliance(D828C9F3F6C3) (ErdApplianceType.DISH_WASHER). Updated keys: ErdCode.DISHWASHER_USER_SETTING 2023-09-11 12:18:38,045 DEBUG % sending keepalive ping 2023-09-11 12:18:38,045 DEBUG > PING 66 56 ab a5 [binary, 4 bytes] 2023-09-11 12:18:38,190 DEBUG < PONG 66 56 ab a5 [binary, 4 bytes] 2023-09-11 12:18:38,190 DEBUG % received keepalive pong 2023-09-11 12:18:45,266 DEBUG < TEXT '{"item":{"applianceId":"D828C9F3F6C3","erd":"0x...rId":"507b1comnhndr7g"}' [201 bytes] 2023-09-11 12:18:45,266 DEBUG Setting ErdCode.DISHWASHER_USER_SETTING to ErdUserSetting(mute=<UserSetting.DISABLE: 0>, demo_mode=<UserSetting.ENABLE: 1>, lock_control=<UserSetting.DISABLE: 0>, sabbath=<UserSetting.DISABLE: 0>, cycle_mode=<UserCycleSetting.THIRTY_MIN: 4>, presoak=<UserSetting.DISABLE: 0>, bottle_jet=<UserSetting.DISABLE: 0>, wash_temp=<UserWashTempSetting.NORMAL: 0>, rinse_aid=<UserSetting.DISABLE: 0>, dry_option=<UserDryOptionSetting.OFF: 0>, wash_zone=<UserWashZoneSetting.UPPER: 2>, delay_hours=0, raw_value='600088') 2023-09-11 12:18:45,267 DEBUG received event: appliance_state_change, processing callbacks... 2023-09-11 12:18:45,267 DEBUG processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x000002076F24DE10>> 2023-09-11 12:18:45,267 DEBUG processing callback: <function log_state_change at 0x000002076F21E520> 2023-09-11 12:18:45,267 DEBUG received event: appliance_update_received, processing callbacks... 2023-09-11 12:18:45,267 DEBUG Appliance state change detected in GeAppliance(D828C9F3F6C3) (ErdApplianceType.DISH_WASHER). Updated keys: ErdCode.DISHWASHER_USER_SETTING 2023-09-11 12:18:45,344 DEBUG < TEXT '{"item":{"applianceId":"D828C9F3F6C3","erd":"0x...rId":"507b1comnhndr7g"}' [197 bytes] 2023-09-11 12:18:45,344 DEBUG raw cycle state value: ErdCycleStateRaw.NO_CHANGE 2023-09-11 12:18:45,344 DEBUG Setting ErdCode.DISHWASHER_CYCLE_STATE to ErdCycleState.NA 2023-09-11 12:18:45,344 DEBUG raw cycle state value: ErdCycleStateRaw.NO_CHANGE 2023-09-11 12:18:45,344 DEBUG received event: appliance_state_change, processing callbacks... 2023-09-11 12:18:45,344 DEBUG processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x000002076F24DE10>> 2023-09-11 12:18:45,344 DEBUG processing callback: <function log_state_change at 0x000002076F21E520> 2023-09-11 12:18:45,345 DEBUG received event: appliance_update_received, processing callbacks... 2023-09-11 12:18:45,345 DEBUG Appliance state change detected in GeAppliance(D828C9F3F6C3) (ErdApplianceType.DISH_WASHER). Updated keys: ErdCode.DISHWASHER_CYCLE_STATE 2023-09-11 12:18:46,283 DEBUG Sending keepalive ping 2023-09-11 12:18:46,283 DEBUG > TEXT '{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}' [68 bytes] 2023-09-11 12:18:46,445 DEBUG < TEXT '{"kind":"websocket#pong","id":"keepalive-ping"}' [47 bytes]

roabyd commented 1 year ago

+1 for this

chrisolson91 commented 11 months ago

I just submitted a similar enhancement for my cafe dishwasher...happy to help any way I can to get this functionality working!

simbaja commented 9 months ago

Might be in the user settings as it looks like the value changed but I don't see a specific code in there... hopefully someone else can spot it and we can get it added.

haydio commented 3 months ago

Are there instructions on how to pull the debug logs? Is it as simple as operating the dishwasher while I have gather_data.py running?

I have a new Haier dishwasher and would love to be able to control it via HA

haydio commented 3 months ago

@simbaja this is my user setting section on an "auto" cycle

Setting ErdCode.DISHWASHER_USER_SETTING to ErdUserSetting(mute=<UserSetting.DISABLE: 0>, demo_mode=<UserSetting.ENABLE: 1>, lock_control=<UserSetting.DISABLE: 0>, sabbath=<UserSetting.DISABLE: 0>, cycle_mode=<UserCycleSetting.AUTO: 0>, presoak=<UserSetting.DISABLE: 0>, bottle_jet=<UserSetting.DISABLE: 0>, wash_temp=<UserWashTempSetting.NORMAL: 0>, rinse_aid=<UserSetting.DISABLE: 0>, dry_option=<UserDryOptionSetting.POWER_DRY: 1>, wash_zone=<UserWashZoneSetting.UPPER: 2>, delay_hours=0, raw_value='600480')

It does appear the rest of the attributes align to options within the app - let me know if I can provide any further information, I would love to be able to start a cycle from HA 😄