simbaja / ha_gehome

GE Home Appliances (SmartHQ) for Home Assistant
MIT License
305 stars 72 forks source link

Water Heater support #107

Open cshiffler opened 1 year ago

cshiffler commented 1 year ago

I have this integration running for my GE range and it works wonderfully.

Would we be able to add support for water heaters? I've got a heat pump water heater that is in the SmartHQ app along side my range.

I know a bit about programming, but not that particulars of the GE api you've setup. I'd be happy to provide any additional info or help that I can.

simbaja commented 1 year ago

I've got some initial support in the latest dev version, give that a shot and let me know what is missing. I think there's a few more things (like setting the right min/max temps), but the basics should hopefully be working

cshiffler commented 1 year ago

Looks pretty good. Thanks for the quick response. Few notes:

We're reading Set Temp, Current Temp, Operating Mode, and a time until some scheduled change.

Changing manually through the GE app, I can see updates come into home assistant. Although the temperature reading always exactly matches the target temperature.

Home assistant doesn't seem to be able to make updates back to the water heater.

Other minor quibble, my app allows temperatures from 100-140 degF and yours allows 100-200F. I see it's hardcoded and not pulled. This could be an issue once home assistant can send updates.

cshiffler commented 1 year ago

Correction. Seems I can change temperature setpoint, but not operating mode.

simbaja commented 1 year ago

Yeah, the latest sdk (not yet incorporated) provides the right min/max. Not sure if you are able to, but if you run the sdk (simbaja/gehome), you can monitor the responses as you change things - might give us insight into codes that might not be right (such as the operating mode). We can then fix it, which will fix the integration.

simbaja commented 1 year ago

0.6.5-dev2 should add the correct min/max temperatures. If you can help with identifying what's amiss with the operation/temperature/other entities, that would be appreciated.

cshiffler commented 1 year ago

Min/Max works now. Thanks for the update.

We're getting two new items: Electric Mode Max Time, Vacation Mode Max Time

Still unable to change operating mode, and reading temperature is always the same as target temperature. The temperature one might just be how the appliance reports it though.

If there's an easy way for me to run detailed debugging, I'll gladly help out. I'd have to set something up outside of home assistant to get that? Would be new to me if I had to, but can give it a go.

barcherf5 commented 1 year ago

I'll jump in, since I can guess what @simbaja is going to suggest. :D

You'll need to install the SDK directly: https://github.com/simbaja/gehome/

Not sure how you have HA installed, but I was able to get the SDK running by logging in (SSH), and running the pip install gehomesdk as show in the README. I hadn't used pip on that box, yet, so I had to install the dependencies first, but after that it worked like a charm. After it's installed, run gehome-appliance-data [-h] -u USERNAME -p PASSWORD [-r {US,EU}], filling in your values as needed.

Of course, I could be 100% wrong and this isn't the way to go about it. :D

Assuming I'm /not/, you'll want to find your heat pump in the output and then find the temp reading there.

cshiffler commented 1 year ago

Thanks for the pointers, wasn't sure if I'd have to create a client. But that was easy.

  1. Made small change to temperature device_class_override to get them as degF values.

  2. Was able to see logs from the sdk when changing setpoint and modes through GE app. Looks like the appliance always reports WH_HEATER_TEMPERATURE and WH_HEATER_TARGET_TEMPERATURE as the same value. Might not have a way around that. Oh well.

  3. Updating modes from home assistant provides error in HA logs. Error in formatting in request somewhere. [31m2022-09-20 09:22:14.439 ERROR (MainThread) [gehomesdk.clients.websocket_client] Could not process request Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/gehomesdk/clients/websocket_client.py", line 119, in _async_run_client await self._process_message(message) File "/usr/local/lib/python3.10/site-packages/gehomesdk/clients/websocket_client.py", line 250, in _process_message raise GeRequestError(message, message_dict.get("code"), message_dict.get("reason")) gehomesdk.exception.ge_request_error.GeRequestError: There was an error while processing a message: Code=400, Reason=None, Message={"kind":"websocket#api","id":"D828C9061B13-setErd-0x4020","request":{"host":"api.brillion.geappliances.com","method":"POST","path":"/v1/appliance/D828C9061B13/erd/0x4020"},"success":true,"code":400,"body":{"kind":"error","resource":"/v1/appliance/D828C9061B13/erd/0x4020","code":400,"message":"The request could not be understood by the server due to malformed syntax","reason":"value is not valid"}}

The sdk provides the following output when changing temperatures and modes from the app (ids redacted)

Temp Change

2022-09-20 07:21:53,610 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:21:53,610 DEBUG Setting ErdCode.WH_HEATER_TEMPERATURE to 137.0 2022-09-20 07:21:53,610 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_TEMPERATURE 2022-09-20 07:21:53,661 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:21:53,661 DEBUG Setting ErdCode.WH_HEATER_TARGET_TEMPERATURE to 137.0 2022-09-20 07:21:53,662 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_TARGET_TEMPERATURE

Standard Electric

2022-09-20 07:18:45,167 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:18:45,167 DEBUG Setting ErdCode.WH_HEATER_MODE_HOURS_REMAINING to 1 day, 0:00:00 2022-09-20 07:18:45,168 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE_HOURS_REMAINING 2022-09-20 07:18:45,262 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:18:45,262 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4021 to b'\x02' 2022-09-20 07:18:45,262 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4021 2022-09-20 07:18:45,298 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:18:45,299 DEBUG Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.STANDARD_ELECTRIC 2022-09-20 07:18:45,299 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE 2022-09-20 07:18:45,340 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:18:45,341 DEBUG Setting ErdCode.WH_HEATER_MODE_HOURS_REMAINING to 0:00:00 2022-09-20 07:18:45,341 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE_HOURS_REMAINING

Hybrid

2022-09-20 07:19:01,367 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:19:01,368 DEBUG Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.HYBRID 2022-09-20 07:19:01,368 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE 2022-09-20 07:19:02,310 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:19:02,311 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4021 to b'\x01' 2022-09-20 07:19:02,311 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4021

HeatPump

2022-09-20 07:17:43,417 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:17:43,418 DEBUG Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.HEAT_PUMP 2022-09-20 07:17:43,418 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE 2022-09-20 07:17:43,533 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:17:43,533 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4021 to b'\x03' 2022-09-20 07:17:43,533 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4021

HighDemand

2022-09-20 07:18:22,138 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:18:22,139 DEBUG Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.HIGH_DEMAND 2022-09-20 07:18:22,140 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE 2022-09-20 07:18:22,157 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:18:22,158 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4021 to b'\x04' 2022-09-20 07:18:22,158 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4021

Vacation Mode

2022-09-20 07:15:55,997 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:15:55,997 DEBUG Setting ErdCode.WH_HEATER_TEMPERATURE to 50.0 2022-09-20 07:15:55,997 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_TEMPERATURE 2022-09-20 07:15:56,038 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:15:56,039 DEBUG Setting ErdCode.WH_HEATER_MODE_HOURS_REMAINING to 1 day, 0:00:00 2022-09-20 07:15:56,039 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE_HOURS_REMAINING 2022-09-20 07:15:56,166 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:15:56,167 DEBUG Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.VACATION 2022-09-20 07:15:56,167 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE 2022-09-20 07:15:56,297 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:15:56,298 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4023 to b'\x03' 2022-09-20 07:15:56,298 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4023 2022-09-20 07:15:57,162 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [199 bytes] 2022-09-20 07:15:57,162 DEBUG Setting ErdCode.WH_HEATER_MODE_HOURS_REMAINING to 0:00:00 2022-09-20 07:15:57,163 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE_HOURS_REMAINING 2022-09-20 07:15:57,220 DEBUG < TEXT '{"item":{"applianceId":"XXXXXXXXXXXX","erd":"0x...rId":"XXXXXXXXXXXXXXX"}' [197 bytes] 2022-09-20 07:15:57,220 DEBUG Setting ErdCode.WH_HEATER_UNKNOWN4021 to b'\x03' 2022-09-20 07:15:57,221 DEBUG Appliance state change detected in GeAppliance(XXXXXXXXXXXX) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_UNKNOWN4021

barcherf5 commented 1 year ago

Hooray! Glad that I was able to help! I hope that's enough info for @simbaja to weigh in! :D

simbaja commented 1 year ago

Thanks @barcherf5, you were correct in what I would have said :). I think I should have enough to hopefully fix the operating mode logic. I am curious to what unknown 4021 could represent, looks like it's either 03 or 04. Is there something else changing on the SmartHQ app that might correspond to that change?

cshiffler commented 1 year ago

That Unknown4021 is nearly aligned with the raw Erd codes for the modes. Maybe writing that is required.

The app basically has just target temperature and operating mode. There's a scheduling option as well that I have not really used. Quick test shows that it seems to live server side and just have change commands sent to the appliance when needed.

allivshits commented 1 year ago

Facing same problem. Anything I can do to help debug?

Logger: gehomesdk.clients.websocket_client Source: /usr/local/lib/python3.10/site-packages/gehomesdk/clients/websocket_client.py:121 First occurred: 7:38:47 PM (1 occurrences) Last logged: 7:38:47 PM

Could not process request Traceback (most recent call last): File "/usr/local/lib/python3.10/site-packages/gehomesdk/clients/websocket_client.py", line 119, in _async_run_client await self._process_message(message) File "/usr/local/lib/python3.10/site-packages/gehomesdk/clients/websocket_client.py", line 277, in _process_message raise GeRequestError(message, message_dict.get("code"), message_dict.get("reason")) gehomesdk.exception.ge_request_error.GeRequestError: There was an error while processing a message: Code=400, Reason=None, Message={"kind":"websocket#api","id":"REDACTED-setErd-0x4020","request":{"host":"api.brillion.geappliances.com","method":"POST","path":"/v1/appliance/REDACTED/erd/0x4020"},"success":true,"code":400,"body":{"kind":"error","resource":"/v1/appliance/REDACTED/erd/0x4020","code":400,"message":"The request could not be understood by the server due to malformed syntax","reason":"value is not valid"}}

suodrazah commented 1 month ago

We just got one of these heaters, I'll try to help more as soon as I have time.

2024-06-10 19:17:55.611 ERROR (MainThread) [gehomesdk.clients.websocket_client] Could not process request
Traceback (most recent call last):
  File "/config/.local/lib/python3.12/site-packages/gehomesdk/clients/websocket_client.py", line 119, in _async_run_client
    await self._process_message(message)
  File "/config/.local/lib/python3.12/site-packages/gehomesdk/clients/websocket_client.py", line 277, in _process_message
    raise GeRequestError(message, message_dict.get("code"), message_dict.get("reason"))
gehomesdk.exception.ge_request_error.GeRequestError: There was an error while processing a message: Code=400, Reason=None, Message={"kind":"websocket#api","id":"XXXXXXXXXXXX-setErd-0x4020","request":{"host":"api.brillion.geappliances.com","method":"POST","path":"/v1/appliance/XXXXXXXXXXXX/erd/0x4020"},"success":true,"code":400,"body":{"kind":"error","resource":"/v1/appliance/XXXXXXXXXXXX/erd/0x4020","code":400,"message":"The request could not be understood by the server due to malformed syntax","reason":"value is not valid"}}

2024-06-10 19:18:38.289 ERROR (MainThread) [gehomesdk.clients.websocket_client] Could not process request
Traceback (most recent call last):
  File "/config/.local/lib/python3.12/site-packages/gehomesdk/clients/websocket_client.py", line 119, in _async_run_client
    await self._process_message(message)
  File "/config/.local/lib/python3.12/site-packages/gehomesdk/clients/websocket_client.py", line 277, in _process_message
    raise GeRequestError(message, message_dict.get("code"), message_dict.get("reason"))
gehomesdk.exception.ge_request_error.GeRequestError: There was an error while processing a message: Code=400, Reason=None, Message={"kind":"websocket#api","id":"XXXXXXXXXXXX-setErd-0x4020","request":{"host":"api.brillion.geappliances.com","method":"POST","path":"/v1/appliance/XXXXXXXXXXXX/erd/0x4020"},"success":true,"code":400,"body":{"kind":"error","resource":"/v1/appliance/XXXXXXXXXXXX/erd/0x4020","code":400,"message":"The request could not be understood by the server due to malformed syntax","reason":"value is not valid"}}
suodrazah commented 1 month ago

Haven't had much time but here are some initial details from the SDK. I'll have to go through and map out the "UNKNOWN" crud.

Auth

2024-06-13 20:51:22,662 DEBUG    Getting OAuth2 token
2024-06-13 20:51:22,662 DEBUG    received event: state_changed, processing callbacks...
2024-06-13 20:51:22,662 DEBUG    processing callback: <bound method GeBaseClient._on_state_change of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 20:51:22,672 DEBUG    Client changed state: GeClientState.INITIALIZING to GeClientState.AUTHORIZING_OAUTH
2024-06-13 20:51:25,839 DEBUG    Getting WS credentials
2024-06-13 20:51:25,840 DEBUG    received event: state_changed, processing callbacks...
2024-06-13 20:51:25,840 DEBUG    processing callback: <bound method GeBaseClient._on_state_change of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 20:51:25,840 DEBUG    Client changed state: GeClientState.AUTHORIZING_OAUTH to GeClientState.AUTHORIZING_CLIENT
2024-06-13 20:51:26,344 INFO     Starting GE Appliances client
2024-06-13 20:51:26,345 DEBUG    received event: state_changed, processing callbacks...
2024-06-13 20:51:26,345 DEBUG    processing callback: <bound method GeBaseClient._on_state_change of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 20:51:26,355 DEBUG    Client changed state: GeClientState.AUTHORIZING_CLIENT to GeClientState.CONNECTING
2024-06-13 20:51:26,543 DEBUG    = connection is CONNECTING
2024-06-13 20:51:26,739 DEBUG    > GET /?access_token=AAAAAAAAAAAAAAAAAAAA HTTP/1.1
2024-06-13 20:51:26,739 DEBUG    > Host: ws-us-west-2.brillion.geappliances.com
2024-06-13 20:51:26,739 DEBUG    > Upgrade: websocket
2024-06-13 20:51:26,739 DEBUG    > Connection: Upgrade
2024-06-13 20:51:26,739 DEBUG    > Sec-WebSocket-Key: AAAAAAAAAAAAAAAAAAAAAA
2024-06-13 20:51:26,739 DEBUG    > Sec-WebSocket-Version: 13
2024-06-13 20:51:26,739 DEBUG    > User-Agent: Python/3.12 websockets/12.0
2024-06-13 20:51:27,059 DEBUG    < HTTP/1.1 101 Switching Protocols
2024-06-13 20:51:27,059 DEBUG    < Date: Thu, 13 Jun 2024 10:51:26 GMT
2024-06-13 20:51:27,059 DEBUG    < Connection: upgrade
2024-06-13 20:51:27,059 DEBUG    < upgrade: websocket
2024-06-13 20:51:27,059 DEBUG    < sec-websocket-accept: AAAAAAAAAAAAAAAAAAAA
2024-06-13 20:51:27,059 DEBUG    = connection is OPEN
2024-06-13 20:51:27,059 DEBUG    > TEXT '{"kind": "websocket#subscribe", "action": "subs...["/appliance/*/erd/*"]}' [91 bytes]
2024-06-13 20:51:27,059 DEBUG    received event: state_changed, processing callbacks...
2024-06-13 20:51:27,059 DEBUG    processing callback: <bound method GeBaseClient._on_state_change of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 20:51:27,059 DEBUG    > TEXT '{"kind": "websocket#api", "action": "api", "hos...id": "List-appliances"}' [150 bytes]
2024-06-13 20:51:27,060 DEBUG    Client changed state: GeClientState.CONNECTING to GeClientState.CONNECTED
2024-06-13 20:51:27,060 DEBUG    received event: connected, processing callbacks...
2024-06-13 20:51:27,291 DEBUG    < TEXT '{"kind":"websocket#subscribe","success":true}' [45 bytes]
2024-06-13 20:51:27,410 DEBUG    < TEXT '{"kind":"websocket#api","id":"List-appliances",...6-13T06:35:15.996Z"}]}}' [426 bytes]
2024-06-13 20:51:27,410 DEBUG    0200003005E7 marked available
2024-06-13 20:51:27,410 DEBUG    Adding appliance 0200003005E7
2024-06-13 20:51:27,410 DEBUG    received event: add_appliance, processing callbacks...
2024-06-13 20:51:27,410 DEBUG    processing callback: <function do_periodic_update at 0x7f45dffb2a20>
2024-06-13 20:51:27,410 DEBUG    Requesting update for client 0200003005E7
2024-06-13 20:51:27,410 DEBUG    > TEXT '{"kind": "websocket#api", "action": "api", "hos... "0200003005E7-allErd"}' [171 bytes]
2024-06-13 20:51:27,410 DEBUG    Registering update callback for GeAppliance(0200003005E7) (Unknown Type)
2024-06-13 20:51:27,410 DEBUG    Requesting features for client 0200003005E7
2024-06-13 20:51:27,410 DEBUG    > TEXT '{"kind": "websocket#api", "action": "api", "hos...d": "Request-features"}' [172 bytes]
2024-06-13 20:51:27,411 DEBUG    received event: got_appliance_list, processing callbacks...
2024-06-13 20:51:27,604 DEBUG    < TEXT '{"kind":"websocket#connect","success":true}' [43 bytes]
2024-06-13 20:51:27,747 DEBUG    < TEXT '{"kind":"websocket#api","id":"Request-features"...EATER_V1_FOUNDATION"]}}' [327 bytes]
2024-06-13 20:51:27,748 DEBUG    Received features ['WATER_HEATER_V1_FOUNDATION'] for 0200003005E7
2024-06-13 20:51:27,748 DEBUG    received event: got_appliance_features, processing callbacks...
2024-06-13 20:51:27,754 DEBUG    < TEXT '{"kind":"websocket#api","id":"0200003005E7-allE...6-13T06:37:17.066Z"}]}}' [2063 bytes]
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.MODEL_NUMBER to P250M1-U1
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.SERIAL_NUMBER to GK0GX0E0E
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.WATER_HEATER
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.UNIT_TYPE to ErdUnitType.UNKNOWN
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.BRAND to ErdBrand.HEIER_AU
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.3.15.116
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0
2024-06-13 20:51:27,754 DEBUG    Setting ErdCode.ACM_UPDATING to False
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.APPLIANCE_SW_VERSION to 0.0.0.0
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.APPLIANCE_SW_VERSION_AVAILABLE to 0.0.0.0
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.APPLIANCE_UPDATING to False
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.HYBRID
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_UNKNOWN4023 to b'\x00'
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_TARGET_TEMPERATURE to 140.0
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_UNKNOWN4025 to b'\x05\xd2'
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_TEMPERATURE to 135.0
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_MODE_HOURS_REMAINING to 0:00:00
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_UNKNOWN4040 to b'\x17'
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_UNKNOWN4041 to b'B'
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_MIN_MAX_TEMPERATURE to ErdWaterHeaterMinMaxTemperature(lower=95.0, upper=167.0)
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_UNKNOWN4048 to b'\x03\xb6\x06\x86'
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_VACATION_MODE_MAX_TIME to 99 days, 0:00:00
2024-06-13 20:51:27,755 DEBUG    Setting ErdCode.WH_HEATER_ELECTRIC_MODE_MAX_TIME to 0:00:00
2024-06-13 20:51:27,755 DEBUG    Setting 0x4220 to b'\x00'
2024-06-13 20:51:27,755 DEBUG    Setting 0x4225 to b'\x01'
2024-06-13 20:51:27,755 DEBUG    received event: appliance_state_change, processing callbacks...
2024-06-13 20:51:27,755 DEBUG    processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 20:51:27,755 DEBUG    processing callback: <function log_state_change at 0x7f45e0ea47c0>
2024-06-13 20:51:27,756 DEBUG    received event: appliance_update_received, processing callbacks...
2024-06-13 20:51:27,756 DEBUG    Got initial appliance type for GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER)
2024-06-13 20:51:27,756 DEBUG    received event: appliance_got_type, processing callbacks...
2024-06-13 20:51:27,756 DEBUG    processing callback: <function detect_appliance_type at 0x7f45dfb2fa60>
2024-06-13 20:51:27,756 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.MODEL_NUMBER, ErdCode.SERIAL_NUMBER, ErdCode.APPLIANCE_TYPE, ErdCode.UNIT_TYPE, ErdCode.BRAND, ErdCode.WIFI_MODULE_SW_VERSION, ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE, ErdCode.ACM_UPDATING, ErdCode.APPLIANCE_SW_VERSION, ErdCode.APPLIANCE_SW_VERSION_AVAILABLE, ErdCode.APPLIANCE_UPDATING, ErdCode.WH_HEATER_MODE, ErdCode.WH_HEATER_UNKNOWN4023, ErdCode.WH_HEATER_TARGET_TEMPERATURE, ErdCode.WH_HEATER_UNKNOWN4025, ErdCode.WH_HEATER_TEMPERATURE, ErdCode.WH_HEATER_MODE_HOURS_REMAINING, ErdCode.WH_HEATER_UNKNOWN4040, ErdCode.WH_HEATER_UNKNOWN4041, ErdCode.WH_HEATER_MIN_MAX_TEMPERATURE, ErdCode.WH_HEATER_UNKNOWN4048, ErdCode.WH_HEATER_VACATION_MODE_MAX_TIME, ErdCode.WH_HEATER_ELECTRIC_MODE_MAX_TIME, 0x4220, 0x4225
2024-06-13 20:51:27,756 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER)
2024-06-13 20:51:27,767 DEBUG    < TEXT '{"resource":"/appliance/*/erd/*","kind":"websoc...:true,"change":"ADDED"}' [97 bytes]
2024-06-13 20:51:47,068 DEBUG    % sending keepalive ping

Off

2024-06-13 21:05:23,310 DEBUG    < TEXT '{"item":{"applianceId":"0200003005E7","erd":"0x...rId":"67ppth1xtt9r1e3"}' [197 bytes]
2024-06-13 21:05:23,311 DEBUG    Setting 0x4225 to b'\x00'
2024-06-13 21:05:23,311 DEBUG    received event: appliance_state_change, processing callbacks...
2024-06-13 21:05:23,311 DEBUG    processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 21:05:23,311 DEBUG    processing callback: <function log_state_change at 0x7f45e0ea47c0>
2024-06-13 21:05:23,311 DEBUG    received event: appliance_update_received, processing callbacks...
2024-06-13 21:05:23,311 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER). Updated keys: 0x4225
2024-06-13 21:05:27,277 DEBUG    Sending keepalive ping
2024-06-13 21:05:27,277 DEBUG    > TEXT '{"kind": "websocket#ping", "id": "keepalive-ping", "action": "ping"}' [68 bytes]
2024-06-13 21:05:27,425 DEBUG    Requesting update for GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER)
2024-06-13 21:05:27,425 DEBUG    Requesting update for client 0200003005E7
2024-06-13 21:05:27,425 DEBUG    > TEXT '{"kind": "websocket#api", "action": "api", "hos... "0200003005E7-allErd"}' [171 bytes]
2024-06-13 21:05:27,482 DEBUG    < TEXT '{"kind":"websocket#pong","id":"keepalive-ping"}' [47 bytes]
2024-06-13 21:05:27,803 DEBUG    < TEXT '{"kind":"websocket#api","id":"0200003005E7-allE...6-13T11:05:21.590Z"}]}}' [2063 bytes]
2024-06-13 21:05:27,803 DEBUG    received event: appliance_update_received, processing callbacks...

Electric

2024-06-13 21:00:51,073 DEBUG    < TEXT '{"item":{"applianceId":"0200003005E7","erd":"0x...rId":"67ppth1xtt9r1e3"}' [197 bytes]
2024-06-13 21:00:51,073 DEBUG    Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.STANDARD_ELECTRIC
2024-06-13 21:00:51,073 DEBUG    received event: appliance_state_change, processing callbacks...
2024-06-13 21:00:51,073 DEBUG    processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 21:00:51,073 DEBUG    processing callback: <function log_state_change at 0x7f45e0ea47c0>
2024-06-13 21:00:51,073 DEBUG    received event: appliance_update_received, processing callbacks...
2024-06-13 21:00:51,073 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE

Auto

2024-06-13 21:02:59,650 DEBUG    < TEXT '{"item":{"applianceId":"0200003005E7","erd":"0x...rId":"67ppth1xtt9r1e3"}' [197 bytes]
2024-06-13 21:02:59,651 DEBUG    Setting ErdCode.WH_HEATER_MODE to ErdWaterHeaterMode.HYBRID
2024-06-13 21:02:59,651 DEBUG    received event: appliance_state_change, processing callbacks...
2024-06-13 21:02:59,651 DEBUG    processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 21:02:59,651 DEBUG    processing callback: <function log_state_change at 0x7f45e0ea47c0>
2024-06-13 21:02:59,651 DEBUG    received event: appliance_update_received, processing callbacks...
2024-06-13 21:02:59,651 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER). Updated keys: ErdCode.WH_HEATER_MODE

Boost (While in Auto)

2024-06-13 21:06:41,330 DEBUG    Setting 0x4220 to b'\x01'
2024-06-13 21:06:41,330 DEBUG    received event: appliance_state_change, processing callbacks...
2024-06-13 21:06:41,330 DEBUG    processing callback: <bound method GeBaseClient._maybe_trigger_appliance_init_event of <gehomesdk.clients.websocket_client.GeWebsocketClient object at 0x7f45df49df10>>
2024-06-13 21:06:41,330 DEBUG    processing callback: <function log_state_change at 0x7f45e0ea47c0>
2024-06-13 21:06:41,330 DEBUG    received event: appliance_update_received, processing callbacks...
2024-06-13 21:06:41,330 DEBUG    Appliance state change detected in GeAppliance(0200003005E7) (ErdApplianceType.WATER_HEATER). Updated keys: 0x4220