simbaja / ha_gehome

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

GE Dehumidifier; Willing to assist #114

Closed atflack closed 7 months ago

atflack commented 1 year ago

Smart dehumidifier from GE. Linked to app, willing to provide any assistance/logs I can. 48890F00-8BF3-471D-91C3-2E7F41A3ADD0

simbaja commented 1 year ago

Thanks for the offer of assistance. Can you go to the sdk repository, run the application to get the raw data, then post here?

atflack commented 1 year ago

Of course! Let me know if you need anything else. I have a window AC and the dehumidifier on my GE account, seeing output from both here. The window AC is offline for the season.

2022-10-11 18:35:09,375 DEBUG Using selector: SelectSelector 2022-10-11 18:35:09,376 DEBUG Getting OAuth2 token 2022-10-11 18:35:09,407 DEBUG Client changed state: GeClientState.INITIALIZING to GeClientState.AUTHORIZING_OAUTH 2022-10-11 18:35:11,943 DEBUG Getting WS credentials 2022-10-11 18:35:11,944 DEBUG Client changed state: GeClientState.AUTHORIZING_OAUTH to GeClientState.AUTHORIZING_CLIENT 2022-10-11 18:35:12,460 INFO Starting GE Appliances client 2022-10-11 18:35:12,494 DEBUG Client changed state: GeClientState.AUTHORIZING_CLIENT to GeClientState.CONNECTING 2022-10-11 18:35:12,579 DEBUG = connection is CONNECTING 2022-10-11 18:35:12,849 DEBUG > GET /?access_token=ue1cpisskqs7ux17dhbb28rku9s9hk8a HTTP/1.1 2022-10-11 18:35:12,850 DEBUG > Host: ws-us-east-1.brillion.geappliances.com 2022-10-11 18:35:12,851 DEBUG > Upgrade: websocket 2022-10-11 18:35:12,852 DEBUG > Connection: Upgrade 2022-10-11 18:35:12,853 DEBUG > Sec-WebSocket-Key: OhRGKGnPl6ErRS4o1B4y4A== 2022-10-11 18:35:12,853 DEBUG > Sec-WebSocket-Version: 13 2022-10-11 18:35:12,853 DEBUG > User-Agent: Python/3.10 websockets/10.3 2022-10-11 18:35:13,033 DEBUG < HTTP/1.1 101 Switching Protocols 2022-10-11 18:35:13,033 DEBUG < Date: Tue, 11 Oct 2022 22:35:14 GMT 2022-10-11 18:35:13,035 DEBUG < Connection: upgrade 2022-10-11 18:35:13,035 DEBUG < upgrade: websocket 2022-10-11 18:35:13,036 DEBUG < sec-websocket-accept: x2gSNgPQk977fBcPLLReSjYNo6Y= 2022-10-11 18:35:13,036 DEBUG = connection is OPEN 2022-10-11 18:35:13,037 DEBUG > TEXT '{"kind": "websocket#subscribe", "action": "subs...["/appliance//erd/"]}' [91 bytes] 2022-10-11 18:35:13,038 DEBUG > TEXT '{"kind": "websocket#api", "action": "api", "hos...id": "List-appliances"}' [150 bytes] 2022-10-11 18:35:13,038 DEBUG Client changed state: GeClientState.CONNECTING to GeClientState.CONNECTED 2022-10-11 18:35:13,150 DEBUG < TEXT '{"kind":"websocket#subscribe","success":true}' [45 bytes] 2022-10-11 18:35:13,213 DEBUG < TEXT '{"kind":"websocket#connect","success":true}' [43 bytes] 2022-10-11 18:35:13,231 DEBUG < TEXT '{"kind":"websocket#api","id":"List-appliances",...9-20T22:21:20.948Z"}]}}' [628 bytes] 2022-10-11 18:35:13,231 DEBUG D828C9BEEFB2 marked available 2022-10-11 18:35:13,232 DEBUG Adding appliance D828C9BEEFB2 2022-10-11 18:35:13,232 DEBUG Requesting update for client D828C9BEEFB2 2022-10-11 18:35:13,233 DEBUG > TEXT '{"kind": "websocket#api", "action": "api", "hos... "D828C9BEEFB2-allErd"}' [171 bytes] 2022-10-11 18:35:13,233 DEBUG Registering update callback for GeAppliance(D828C9BEEFB2) (Unknown Type) 2022-10-11 18:35:13,234 DEBUG Requesting features for client D828C9BEEFB2 2022-10-11 18:35:13,234 DEBUG > TEXT '{"kind": "websocket#api", "action": "api", "hos...d": "Request-features"}' [172 bytes] 2022-10-11 18:35:13,236 DEBUG Adding appliance D828C992D90E 2022-10-11 18:35:13,237 DEBUG Requesting update for client D828C992D90E 2022-10-11 18:35:13,238 DEBUG > TEXT '{"kind": "websocket#api", "action": "api", "hos... "D828C992D90E-allErd"}' [171 bytes] 2022-10-11 18:35:13,239 DEBUG Registering update callback for GeAppliance(D828C992D90E) (Unknown Type) 2022-10-11 18:35:13,239 DEBUG Requesting features for client D828C992D90E 2022-10-11 18:35:13,240 DEBUG > TEXT '{"kind": "websocket#api", "action": "api", "hos...d": "Request-features"}' [172 bytes] 2022-10-11 18:35:13,453 DEBUG < TEXT '{"kind":"websocket#api","id":"Request-features"...IER_V1_NONSTOP_MODE"]}}' [358 bytes] 2022-10-11 18:35:13,454 DEBUG Received features ['DEHUMIDIFIER_V1_FOUNDATION', 'DEHUMIDIFIER_V1_NONSTOP_MODE'] for D828C9BEEFB2 2022-10-11 18:35:13,505 DEBUG < TEXT '{"kind":"websocket#api","id":"D828C992D90E-allE...9-20T18:09:41.126Z"}]}}' [1473 bytes] 2022-10-11 18:35:13,506 DEBUG Setting ErdCode.MODEL_NUMBER to PHC06LY 2022-10-11 18:35:13,507 DEBUG Setting ErdCode.SERIAL_NUMBER to 2022-10-11 18:35:13,508 DEBUG Setting ErdCode.TEMPERATURE_UNIT to ErdMeasurementUnits.IMPERIAL 2022-10-11 18:35:13,510 DEBUG Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.AIR_CONDITIONER 2022-10-11 18:35:13,510 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.0.7.102 2022-10-11 18:35:13,511 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0 2022-10-11 18:35:13,511 DEBUG Setting ErdCode.ACM_UPDATING to False 2022-10-11 18:35:13,512 DEBUG Setting ErdCode.AC_TARGET_TEMPERATURE to 68 2022-10-11 18:35:13,513 DEBUG Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.HIGH 2022-10-11 18:35:13,513 DEBUG Setting ErdCode.AC_OPERATION_MODE to ErdAcOperationMode.FAN_ONLY 2022-10-11 18:35:13,514 DEBUG Setting ErdCode.AC_AMBIENT_TEMPERATURE to 73 2022-10-11 18:35:13,514 DEBUG Setting ErdCode.AC_FILTER_STATUS to ErdAcFilterStatus.OK 2022-10-11 18:35:13,515 DEBUG Setting ErdCode.AC_POWER_STATUS to ErdOnOff.OFF 2022-10-11 18:35:13,515 DEBUG Setting ErdCode.AC_UNKNOWN7A12 to b'\x00\x01~w' 2022-10-11 18:35:13,516 DEBUG Setting ErdCode.WAC_DEMAND_RESPONSE_POWER to 0.0 2022-10-11 18:35:13,516 DEBUG Setting ErdCode.WAC_DEMAND_RESPONSE_STATE to ErdWacDemandResponseState.NOT_IN_DEMAND_RESPONSE 2022-10-11 18:35:13,517 DEBUG Got initial appliance type for GeAppliance(D828C992D90E) (ErdApplianceType.AIR_CONDITIONER) 2022-10-11 18:35:13,520 DEBUG Appliance state change detected in GeAppliance(D828C992D90E) (ErdApplianceType.AIR_CONDITIONER). Updated keys: ErdCode.MODEL_NUMBER, ErdCode.SERIAL_NUMBER, ErdCode.TEMPERATURE_UNIT, ErdCode.APPLIANCE_TYPE, ErdCode.WIFI_MODULE_SW_VERSION, ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE, ErdCode.ACM_UPDATING, ErdCode.AC_TARGET_TEMPERATURE, ErdCode.AC_FAN_SETTING, ErdCode.AC_OPERATION_MODE, ErdCode.AC_AMBIENT_TEMPERATURE, ErdCode.AC_FILTER_STATUS, ErdCode.AC_POWER_STATUS, ErdCode.AC_UNKNOWN7A12, ErdCode.WAC_DEMAND_RESPONSE_POWER, ErdCode.WAC_DEMAND_RESPONSE_STATE 2022-10-11 18:35:13,521 DEBUG Appliance state change detected in GeAppliance(D828C992D90E) (ErdApplianceType.AIR_CONDITIONER) 2022-10-11 18:35:13,577 DEBUG < TEXT '{"resource":"/appliance//erd/","kind":"websoc...:true,"change":"ADDED"}' [97 bytes] 2022-10-11 18:35:13,630 DEBUG < TEXT '{"kind":"websocket#api","id":"D828C9BEEFB2-allE...0-11T22:18:42.534Z"}]}}' [1887 bytes] 2022-10-11 18:35:13,631 DEBUG Setting ErdCode.MODEL_NUMBER to AWHR50LB 2022-10-11 18:35:13,632 DEBUG Setting ErdCode.SERIAL_NUMBER to 2022-10-11 18:35:13,633 DEBUG Setting ErdCode.APPLIANCE_TYPE to ErdApplianceType.DEHUMIDIFIER 2022-10-11 18:35:13,633 DEBUG Setting ErdCode.UNIT_TYPE to ErdUnitType.UNKNOWN 2022-10-11 18:35:13,634 DEBUG Setting ErdCode.WIFI_MODULE_UPDATING to True 2022-10-11 18:35:13,634 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION to 0.1.11.50 2022-10-11 18:35:13,635 DEBUG Setting ErdCode.WIFI_MODULE_SW_VERSION_AVAILABLE to 0.0.0.0 2022-10-11 18:35:13,635 DEBUG Setting ErdCode.ACM_UPDATING to False 2022-10-11 18:35:13,636 DEBUG Setting ErdCode.APPLIANCE_SW_VERSION to 0.0.0.0 2022-10-11 18:35:13,636 DEBUG Setting ErdCode.APPLIANCE_SW_VERSION_AVAILABLE to 0.0.0.0 2022-10-11 18:35:13,637 DEBUG Setting ErdCode.APPLIANCE_UPDATING to False 2022-10-11 18:35:13,637 DEBUG Setting 0x7832 to b'\x00\x00\x00\x00\x00\x00' 2022-10-11 18:35:13,638 DEBUG Setting 0x7833 to b'\x00' 2022-10-11 18:35:13,638 DEBUG Setting 0x7834 to b'\x00' 2022-10-11 18:35:13,639 DEBUG Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.DEFAULT 2022-10-11 18:35:13,639 DEBUG Setting ErdCode.AC_POWER_STATUS to ErdOnOff.ON 2022-10-11 18:35:13,640 DEBUG Setting ErdCode.AC_UNKNOWN7A12 to b'\x00\x00\x01\xc7' 2022-10-11 18:35:13,640 DEBUG Setting 0x7B01 to b'\x01(' 2022-10-11 18:35:13,641 DEBUG Setting 0x7B02 to b'(' 2022-10-11 18:35:13,644 DEBUG Setting 0x7B03 to b'#P' 2022-10-11 18:35:13,644 DEBUG Setting 0x7B0B to b'\x1e' 2022-10-11 18:35:13,645 DEBUG Setting ErdCode.WAC_DEMAND_RESPONSE_POWER to 0.505 2022-10-11 18:35:13,645 DEBUG Got initial appliance type for GeAppliance(D828C9BEEFB2) (ErdApplianceType.DEHUMIDIFIER) 2022-10-11 18:35:13,646 DEBUG Appliance state change detected in GeAppliance(D828C9BEEFB2) (ErdApplianceType.DEHUMIDIFIER). Updated keys: ErdCode.MODEL_NUMBER, ErdCode.SERIAL_NUMBER, ErdCode.APPLIANCE_TYPE, ErdCode.UNIT_TYPE, ErdCode.WIFI_MODULE_UPDATING, 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, 0x7832, 0x7833, 0x7834, ErdCode.AC_FAN_SETTING, ErdCode.AC_POWER_STATUS, ErdCode.AC_UNKNOWN7A12, 0x7B01, 0x7B02, 0x7B03, 0x7B0B, ErdCode.WAC_DEMAND_RESPONSE_POWER 2022-10-11 18:35:13,647 DEBUG Appliance state change detected in GeAppliance(D828C9BEEFB2) (ErdApplianceType.DEHUMIDIFIER) 2022-10-11 18:35:13,657 DEBUG < TEXT '{"kind":"websocket#api","id":"Request-features"...92D90E","features":[]}}' [299 bytes] 2022-10-11 18:35:13,658 DEBUG Received features [] for D828C992D90E

kksligh commented 1 year ago

Smart dehumidifier from GE. Linked to app, willing to provide any assistance/logs I can.

48890F00-8BF3-471D-91C3-2E7F41A3ADD0

Can you provide the model number for this Dehumidifier? I've been looking for a smart one for a while that works with HA - now that yall are working on this, I'm going to get this one!

atflack commented 1 year ago

It's the AWHR50LB. Very happy with its performance overall!

kksligh commented 1 year ago

Awesome, thanks!

Thanks,

Kale Sligh


From: atflack @.> Sent: Tuesday, October 11, 2022 5:46:34 PM To: simbaja/ha_gehome @.> Cc: kksligh @.>; Comment @.> Subject: Re: [simbaja/ha_gehome] GE Dehumidifier; Willing to assist (Issue #114)

It's the AWHR50LB. Very happy with its performance overall!

— Reply to this email directly, view it on GitHubhttps://github.com/simbaja/ha_gehome/issues/114#issuecomment-1275365496, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AT3AQU4Q3MVQ6OR5723HH4TWCXU4VANCNFSM6AAAAAAQ7BDMP4. You are receiving this because you commented.Message ID: @.***>

simbaja commented 1 year ago

So, the only one that I'm pretty sure on is 0x7B02 = target humidity. 0x7833 and 0x7834 are probably the filter/bucket statuses, but I can't tell which is which. Can you basically change settings and watch it using that application to see what corresponds to what? Also, let the bucket fill up and change status so we can differentiate those. Is there a list of fan settings? Looks like it's reusing the AC fan setting, so I might have to modify the logic there to show the right fan options.

atflack commented 1 year ago

Hopefully this helps. When I get the filter alert, I will send that over as well (supposed to flag after running for 250 hours).

0x7B01 was changing periodically during this testing, I believe that corresponds to the Current Humidity reading. The seem to use the same ‘X’ values from the Target Humidity chart (ex. Setting 0x7B01 to b'\x01-' showed a Current Humidity reading of 45%).

Target Humidity

App Value

Script Data

Nonstop

Setting 0x7833 to b'\x01'

Setting 0x7834 to b'\x01'

35%

Setting 0x7833 to b'\x00' (shows anytime value switches from Nonstop)

Setting 0x7834 to b'\x00' (show anytime value switches from Nonstop)

Setting 0x7B02 to b'#'

40%

Setting 0x7B02 to b'('

45%

Setting 0x7B02 to b'-'

50%

Setting 0x7B02 to b'2'

55%

Setting 0x7B02 to b'7'

60%

Setting 0x7B02 to b'<'

65%

Setting 0x7B02 to b'A'

70%

Setting 0x7B02 to b'F'

75%

Setting 0x7B02 to b'K'

80%

Setting 0x7B02 to b'P'

Fan

App Value

Script Data

Low

Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.LOW

Medium

Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.MED

High

Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.HIGH

Smart Dry

Setting ErdCode.AC_FAN_SETTING to ErdAcFanSetting.DEFAULT

Bucket

App Value

Script Data

Empty Bucket

Setting 0x7832 to b'\x01\x00\x00\x00\x00\x00'

OK

Setting 0x7832 to b'\x00\x00\x00\x00\x00\x00'

Appliance Status

App Value

Script Data

Off

Setting ErdCode.AC_POWER_STATUS to ErdOnOff.OFF

On

Setting ErdCode.AC_POWER_STATUS to ErdOnOff.ON

From: simbaja @.> Sent: Sunday, October 16, 2022 10:30 AM To: simbaja/ha_gehome @.> Cc: atflack @.>; Author @.> Subject: Re: [simbaja/ha_gehome] GE Dehumidifier; Willing to assist (Issue #114)

So, the only one that I'm pretty sure on is 0x7B02 = target humidity. 0x7833 and 0x7834 are probably the filter/bucket statuses, but I can't tell which is which. Can you basically change settings and watch it using that application to see what corresponds to what? Also, let the bucket fill up and change status so we can differentiate those. Is there a list of fan settings? Looks like it's reusing the AC fan setting, so I might have to modify the logic there to show the right fan options.

— Reply to this email directly, view it on GitHub https://github.com/simbaja/ha_gehome/issues/114#issuecomment-1279981340 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ASZ4JD3V52YRALSC24DCYOTWDQGP3ANCNFSM6AAAAAAQ7BDMP4 . You are receiving this because you authored the thread. https://github.com/notifications/beacon/ASZ4JD5B32OE242OBCRIE53WDQGP3A5CNFSM6AAAAAAQ7BDMP6WGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTSMJL3RY.gif Message ID: @. @.> >

kksligh commented 1 year ago

I've got one of these now as well. Any help I can provide, please let me know.

atflack commented 1 year ago

It looks like key 0x7832 is used for overall "maintenance tasks", since it appears to be used for both the bucket and filter alerts. The Clean Filter alert finally flagged as Setting 0x7832 to b'\x02\x00\x00\x00\x00\x00' Once reset, it went back to Setting 0x7832 to b'\x00\x00\x00\x00\x00\x00'. I didn't think to fake a bucket fill while the filter light was on, but will do so next time to confirm that value setting. (unless @kksligh can beat me to it!).

kksligh commented 1 year ago

I'm traveling a bit over the next few weeks but if you haven't knocked it out by then - I'll definitely do some debuggin when I get back.

Thanks,

Kale Sligh


From: atflack @.> Sent: Wednesday, November 2, 2022 5:21:14 PM To: simbaja/ha_gehome @.> Cc: kksligh @.>; Mention @.> Subject: Re: [simbaja/ha_gehome] GE Dehumidifier; Willing to assist (Issue #114)

It looks like key 0x7832 is used for overall "maintenance tasks", since it appears to be used for both the bucket and filter alerts. The Clean Filter alert finally flagged as Setting 0x7832 to b'\x02\x00\x00\x00\x00\x00' Once reset, it went back to Setting 0x7832 to b'\x00\x00\x00\x00\x00\x00'. I didn't think to fake a bucket fill while the filter light was on, but will do so next time to confirm that value setting. (unless @kkslighhttps://github.com/kksligh can beat me to it!).

— Reply to this email directly, view it on GitHubhttps://github.com/simbaja/ha_gehome/issues/114#issuecomment-1301288888, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AT3AQU5Y4FEPVG7KVNZ3H53WGLLMVANCNFSM6AAAAAAQ7BDMP4. You are receiving this because you were mentioned.Message ID: @.***>

atflack commented 1 year ago

Finally had my filter light turn back on so I simulated a bucket fill. Final maintenance task Setting 0x7832 to b'\x03\x00\x00\x00\x00\x00' is used to indicate both Empty Bucket and Clean Filter.

simbaja commented 1 year ago

Latest version of SDK code in github has these updates now (I think). Let me know if we need any additional sensors, if not, I'll code up the home assistant entity in the next release.

atflack commented 1 year ago

Couple questions; apologize if I'm just not reading the code correctly. Been a long time. 1 - In gehomesdk/erd/converters/dehumidifier/erd_dehumidifier_maintenance_converter.py, I didn't see 0x03 converting to Empty Bucket and Clean Filter, unless that's handled by the >>1. 2 - I couldn't find any reference to 0x7833/0x7834 being Non-Stop mode. This is an option under the Target Humidity menu in the app.

Thanks!

simbaja commented 1 year ago

Yes, the 0x03 is handled via bit shifting. This is a case where there are multiple boolean values in a single integer (they do that throughout), so it should map it to the individual tuple properties properly. If you run the program (as described in the readme), hopefully this will show up for you.

I didn't know which one to set for non-stop mode, so didn't do that. Also, are there other options there besides non-stop mode?

atflack commented 1 year ago

Thanks for the explanation, makes sense. I can't force the Clean Filter alarm to verify unfortunately.

There's two user-configurable controls available, aside from On/Off. Target Humidity has Nonstop and values (35 through 80 in increments of 5). Fan has Low, Medium, High, and Smart Dry.

I believe you've captured all of the read-only controls listed from what I've seen.

Thanks!

jhndrx commented 1 year ago

Is this to a point that it can be used in home assistant? I tried 0.6.7 and no devices were found. I have the same model dehumidifier. Happy to help as well.

jhndrx commented 1 year ago

It appears that this setting Setting 0x7B03 to b'#P' corresponds to the minimum and maximum humidity levels supported by the unit. The first byte as integer is 80 an the second byte as integer is 35 which is the selectable range of my dehumidifier.

simbaja commented 11 months ago

I believe it's probably as close as it'll get, I've just added the range to the SDK (though I probably should have reversed the min/max), I can try to work on getting more of it into HA

simbaja commented 11 months ago

Ok, try the pre-release and let me know if the dehumidifier appears. Hopefully I got it close.

Edit: Crap, I forgot to add the new platform so the dehumidifier entity won't show up yet. I'll try to get that in tonight.

simbaja commented 11 months ago

Ok, platform should be in 0.6.8-dev1, hopefully it all shows up for you all

jhndrx commented 11 months ago

Yes it does show up in home assistant. The power slider, fan sensor, current humidity, and target humidity all appear to be working correctly as well. However, neither maintenance mode shows up correctly. Running the gehomesdk websocket example also is printing out the humidity min/max backwards. I put up a pull request in the other repo to fix both of these issues.

Are you planning on creating a humidifier entity that inherits the home assistant HumidiferEntity for more controls?

Edit: I could attempt to create the humidifier entity class to help out but I know it wouldn't be fully correct as my knowledge of the codebase is minimal. However, if nothing else, it could be a starting point for you. Just let me know :)

simbaja commented 11 months ago

That humidifier entity should be in the code, so something must have gone wrong. Can you check the logs and see what it's saying?

For the min/max, I presumed it needed to be in ascending order to work correctly with that new entity (that's the only place I exposed it), so I intentionally reversed them so it reads 30-80%

atflack commented 11 months ago

Reloaded the integration to get this:

2023-08-01 18:34:01.989 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, switch.d828c9beefb2_ac_power_status) 2023-08-01 18:34:01.990 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_fan_setting, sensor.d828c9beefb2_ac_fan_setting) 2023-08-01 18:34:01.991 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_current_humidity, sensor.d828c9beefb2_dhum_current_humidity) 2023-08-01 18:34:01.991 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_target_humidity, sensor.d828c9beefb2_dhum_target_humidity) 2023-08-01 18:34:01.992 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket, sensor.d828c9beefb2_dhum_maintenance_empty_bucket) 2023-08-01 18:34:01.993 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter, sensor.d828c9beefb2_dhum_maintenance_clean_filter) 2023-08-01 18:34:01.993 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 279, in on_device_update _LOGGER.debug(f"Updating {entity} ({entity.unique_id}, {entity.entity_id})") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1184, in repr return f"<entity {self.entity_id}={self._stringify_state(self.available)}>" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 748, in _stringify_state if (state := self.state) is None: ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1233, in state if (is_on := self.is_on) is None: ^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 68, in is_on return self.appliance.get_erd_value(self.power_status_erd_code) == ErdOnOff.ON ^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'GeDehumidifier' object has no attribute 'power_status_erd_code' 2023-08-01 18:34:03.555 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, switch.d828c9beefb2_ac_power_status) 2023-08-01 18:34:03.555 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_fan_setting, sensor.d828c9beefb2_ac_fan_setting) 2023-08-01 18:34:03.556 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_current_humidity, sensor.d828c9beefb2_dhum_current_humidity) 2023-08-01 18:34:03.556 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_target_humidity, sensor.d828c9beefb2_dhum_target_humidity) 2023-08-01 18:34:03.557 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket, sensor.d828c9beefb2_dhum_maintenance_empty_bucket) 2023-08-01 18:34:03.558 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter, sensor.d828c9beefb2_dhum_maintenance_clean_filter) 2023-08-01 18:34:03.558 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 279, in on_device_update _LOGGER.debug(f"Updating {entity} ({entity.unique_id}, {entity.entity_id})") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1184, in repr return f"<entity {self.entity_id}={self._stringify_state(self.available)}>" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 748, in _stringify_state if (state := self.state) is None: ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1233, in state if (is_on := self.is_on) is None: ^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 68, in is_on return self.appliance.get_erd_value(self.power_status_erd_code) == ErdOnOff.ON ^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'GeDehumidifier' object has no attribute 'power_status_erd_code' 2023-08-01 18:34:04.454 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] resetting the coordinator 2023-08-01 18:34:04.458 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Setting up coordinator 2023-08-01 18:34:04.458 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Creating and starting client 2023-08-01 18:34:04.458 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Beginning session 2023-08-01 18:34:04.468 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Adding GE Binary Sensor Entities 2023-08-01 18:34:04.468 DEBUG (MainThread) [custom_components.ge_home.sensor] Adding GE Home sensors 2023-08-01 18:34:04.469 DEBUG (MainThread) [custom_components.ge_home.switch] Adding GE Home switches 2023-08-01 18:34:04.469 DEBUG (MainThread) [custom_components.ge_home.water_heater] Adding GE "Water Heaters" 2023-08-01 18:34:04.469 DEBUG (MainThread) [custom_components.ge_home.select] Adding GE Home selects 2023-08-01 18:34:04.469 DEBUG (MainThread) [custom_components.ge_home.climate] Adding GE Climate Entities 2023-08-01 18:34:04.469 DEBUG (MainThread) [custom_components.ge_home.light] Adding GE Home lights 2023-08-01 18:34:04.470 DEBUG (MainThread) [custom_components.ge_home.button] Adding GE Button Entities 2023-08-01 18:34:04.470 DEBUG (MainThread) [custom_components.ge_home.number] Adding GE Number Entities 2023-08-01 18:34:04.470 DEBUG (MainThread) [custom_components.ge_home.humidifier] Adding GE "Humidifiers" 2023-08-01 18:34:09.949 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Client running 2023-08-01 18:34:10.886 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got roster update 2023-08-01 18:34:11.058 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got initial update for D828C9BEEFB2 2023-08-01 18:34:11.059 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Adding appliance api for appliance D828C9BEEFB2 (ErdApplianceType.DEHUMIDIFIER) 2023-08-01 18:34:11.059 DEBUG (MainThread) [custom_components.ge_home.devices] Found device type: ErdApplianceType.DEHUMIDIFIER 2023-08-01 18:34:11.059 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Requesting updates for D828C9BEEFB2 2023-08-01 18:34:11.094 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got initial update for D828C992D90E 2023-08-01 18:34:11.094 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Adding appliance api for appliance D828C992D90E (ErdApplianceType.AIR_CONDITIONER) 2023-08-01 18:34:11.095 DEBUG (MainThread) [custom_components.ge_home.devices] Found device type: ErdApplianceType.AIR_CONDITIONER 2023-08-01 18:34:11.095 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Ready to go, sending ready signal 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 2 appliance APIs 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 1 unregistered binary sensors 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 2 appliance APIs 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 11 unregistered sensors 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 appliance APIs 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 unregistered switches 2023-08-01 18:34:11.096 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 2 appliance APIs 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 0 unregistered water heaters 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.select] Found 2 appliance APIs 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.select] Found 0 unregistered selects 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.climate] Found 2 appliance APIs 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.climate] Found 1 unregistered climate entities 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.light] Found 2 appliance APIs 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.light] Found 0 unregistered lights 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.button] Found 2 appliance APIs 2023-08-01 18:34:11.097 DEBUG (MainThread) [custom_components.ge_home.button] Found 0 unregistered buttons
2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.number] Found 2 appliance APIs 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.number] Found 0 unregisterd numbers 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 2 appliance APIs 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 1 unregistered humidifiers 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 2 appliance APIs 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 1 unregistered binary sensors 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 2 appliance APIs 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 11 unregistered sensors 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 appliance APIs 2023-08-01 18:34:11.098 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 unregistered switches 2023-08-01 18:34:11.099 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 2 appliance APIs 2023-08-01 18:34:11.102 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 0 unregistered water heaters 2023-08-01 18:34:11.102 DEBUG (MainThread) [custom_components.ge_home.select] Found 2 appliance APIs 2023-08-01 18:34:11.102 DEBUG (MainThread) [custom_components.ge_home.select] Found 0 unregistered selects 2023-08-01 18:34:11.102 DEBUG (MainThread) [custom_components.ge_home.climate] Found 2 appliance APIs 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.climate] Found 1 unregistered climate entities 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.light] Found 2 appliance APIs 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.light] Found 0 unregistered lights 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.button] Found 2 appliance APIs 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.button] Found 0 unregistered buttons
2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.number] Found 2 appliance APIs 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.number] Found 0 unregisterd numbers 2023-08-01 18:34:11.103 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 2 appliance APIs 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 1 unregistered humidifiers 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 2 appliance APIs 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.binary_sensor] Found 1 unregistered binary sensors 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 2 appliance APIs 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.sensor] Found 11 unregistered sensors 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 appliance APIs 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.switch] Found 2 unregistered switches 2023-08-01 18:34:11.104 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 2 appliance APIs 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.water_heater] Found 0 unregistered water heaters 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.select] Found 2 appliance APIs 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.select] Found 0 unregistered selects 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.climate] Found 2 appliance APIs 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.climate] Found 1 unregistered climate entities 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.light] Found 2 appliance APIs 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.light] Found 0 unregistered lights 2023-08-01 18:34:11.105 DEBUG (MainThread) [custom_components.ge_home.button] Found 2 appliance APIs 2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.button] Found 0 unregistered buttons
2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.number] Found 2 appliance APIs 2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.number] Found 0 unregisterd numbers 2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 2 appliance APIs 2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.humidifier] Found 1 unregistered humidifiers 2023-08-01 18:34:11.106 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Requesting updates for D828C992D90E 2023-08-01 18:34:11.112 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_fan_setting already exists - ignoring sensor.d828c9beefb2_ac_fan_setting 2023-08-01 18:34:11.117 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_current_humidity already exists - ignoring sensor.d828c9beefb2_dhum_current_humidity 2023-08-01 18:34:11.120 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_target_humidity already exists - ignoring sensor.d828c9beefb2_dhum_target_humidity 2023-08-01 18:34:11.123 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_empty_bucket 2023-08-01 18:34:11.123 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_clean_filter 2023-08-01 18:34:11.127 ERROR (MainThread) [homeassistant.components.switch] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_power_status already exists - ignoring switch.d828c9beefb2_ac_power_status 2023-08-01 18:34:11.128 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_fan_setting already exists - ignoring sensor.d828c9beefb2_ac_fan_setting 2023-08-01 18:34:11.129 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_current_humidity already exists - ignoring sensor.d828c9beefb2_dhum_current_humidity 2023-08-01 18:34:11.129 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_target_humidity already exists - ignoring sensor.d828c9beefb2_dhum_target_humidity 2023-08-01 18:34:11.129 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_empty_bucket 2023-08-01 18:34:11.129 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_clean_filter 2023-08-01 18:34:11.130 ERROR (MainThread) [homeassistant.components.switch] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_power_status already exists - ignoring switch.d828c9beefb2_ac_power_status 2023-08-01 18:34:11.131 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_fan_setting already exists - ignoring sensor.d828c9beefb2_ac_fan_setting 2023-08-01 18:34:11.131 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_current_humidity already exists - ignoring sensor.d828c9beefb2_dhum_current_humidity 2023-08-01 18:34:11.132 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_target_humidity already exists - ignoring sensor.d828c9beefb2_dhum_target_humidity 2023-08-01 18:34:11.132 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_empty_bucket 2023-08-01 18:34:11.132 ERROR (MainThread) [homeassistant.components.sensor] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter already exists - ignoring sensor.d828c9beefb2_dhum_maintenance_clean_filter 2023-08-01 18:34:11.133 ERROR (MainThread) [homeassistant.components.switch] Platform ge_home does not generate unique IDs. ID ge_home_D828C9BEEFB2_ac_power_status already exists - ignoring switch.d828c9beefb2_ac_power_status 2023-08-01 18:34:11.134 ERROR (MainThread) [homeassistant.components.humidifier] Error adding entities for domain humidifier with platform ge_home Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 709, in _async_add_entity original_device_class=entity.device_class, ^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ [Previous line repeated 984 more times] RecursionError: maximum recursion depth exceeded 2023-08-01 18:34:11.171 ERROR (MainThread) [homeassistant.components.humidifier] Error adding entities for domain humidifier with platform ge_home Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 561, in _async_add_entity entity.add_to_platform_start( File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 974, in add_to_platform_start raise HomeAssistantError( homeassistant.exceptions.HomeAssistantError: Entity None cannot be added a second time to an entity platform 2023-08-01 18:34:11.172 ERROR (MainThread) [homeassistant.components.humidifier] Error adding entities for domain humidifier with platform ge_home Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 561, in _async_add_entity entity.add_to_platform_start( File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 974, in add_to_platform_start raise HomeAssistantError( homeassistant.exceptions.HomeAssistantError: Entity None cannot be added a second time to an entity platform 2023-08-01 18:34:11.173 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 709, in _async_add_entity original_device_class=entity.device_class, ^^^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ File "/config/custom_components/ge_home/entities/common/ge_humidifier.py", line 72, in device_class return self.device_class ^^^^^^^^^^^^^^^^^ [Previous line repeated 984 more times] RecursionError: maximum recursion depth exceeded 2023-08-01 18:34:11.209 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 561, in _async_add_entity entity.add_to_platform_start( File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 974, in add_to_platform_start raise HomeAssistantError( homeassistant.exceptions.HomeAssistantError: Entity None cannot be added a second time to an entity platform 2023-08-01 18:34:11.210 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 504, in async_add_entities await asyncio.gather(tasks) File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 561, in _async_add_entity entity.add_to_platform_start( File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 974, in add_to_platform_start raise HomeAssistantError( homeassistant.exceptions.HomeAssistantError: Entity None cannot be added a second time to an entity platform 2023-08-01 18:34:24.200 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got roster update 2023-08-01 18:34:24.991 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:34:24.991 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:34:32.001 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:34:32.002 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:34:33.531 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:34:33.532 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:34:41.262 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:34:41.263 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:34:54.921 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:34:54.921 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:01.928 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:01.929 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:03.583 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:03.583 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:11.218 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:11.219 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:25.037 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:25.038 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:31.534 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got roster update 2023-08-01 18:35:32.006 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:32.006 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:33.588 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:33.588 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for 2023-08-01 18:35:41.285 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, None) 2023-08-01 18:35:41.285 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved Traceback (most recent call last): File "/config/custom_components/ge_home/update_coordinator.py", line 280, in on_device_update entity.async_write_ha_state() File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 719, in async_write_ha_state raise RuntimeError(f"Attribute hass is None for {self}") RuntimeError: Attribute hass is None for

simbaja commented 11 months ago

try the newest, fixed a few typos

atflack commented 11 months ago

Definitely getting there!

The Dehumidifer entity shows up now, got two issues that stick out though.

1 - the Target Humidity doesn't seems to be stuck at the current setting. I'm unable to adjust using the slider bar. 2 - I'm unable to change the fan mode. It results in the error _Failed to call service humidifier/setmode. connection lost

Screenshot of the entity showing the stuck slider bar and log below.

image

AttributeError: 'GeDehumidifier' object has no attribute 'erd_code' 2023-08-01 20:44:25.408 DEBUG (MainThread) [custom_components.ge_home.entities.dehumidifier.dehumidifier] Setting mode from Smart Dry to Low 2023-08-01 20:44:25.408 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140466860610128] 'GeDehumidifier' object has no attribute 'erd_code' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1965, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2005, in _execute_service return await cast( ^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service return await service.entity_service_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 848, in entity_service_call response_data = task.result() # pop exception if have ^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1192, in async_request_call return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 892, in _handle_entity_call result = await task ^^^^^^^^^^ File "/config/custom_components/ge_home/entities/dehumidifier/dehumidifier.py", line 74, in async_set_mode await self.appliance.async_set_erd_value(self.erd_code, new_state) ^^^^^^^^^^^^^ AttributeError: 'GeDehumidifier' object has no attribute 'erd_code' 2023-08-01 20:44:27.568 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, switch.d828c9beefb2_ac_power_status) 2023-08-01 20:44:27.568 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_fan_setting, sensor.d828c9beefb2_ac_fan_setting) 2023-08-01 20:44:27.569 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_current_humidity, sensor.d828c9beefb2_dhum_current_humidity) 2023-08-01 20:44:27.570 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_target_humidity, sensor.d828c9beefb2_dhum_target_humidity) 2023-08-01 20:44:27.570 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket, sensor.d828c9beefb2_dhum_maintenance_empty_bucket) 2023-08-01 20:44:27.571 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter, sensor.d828c9beefb2_dhum_maintenance_clean_filter) 2023-08-01 20:44:27.572 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dehumidifier, humidifier.d828c9beefb2_dehumidifier) 2023-08-01 20:44:57.628 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_power_status, switch.d828c9beefb2_ac_power_status) 2023-08-01 20:44:57.629 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_ac_fan_setting, sensor.d828c9beefb2_ac_fan_setting) 2023-08-01 20:44:57.630 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_current_humidity, sensor.d828c9beefb2_dhum_current_humidity) 2023-08-01 20:44:57.631 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_target_humidity, sensor.d828c9beefb2_dhum_target_humidity) 2023-08-01 20:44:57.632 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_empty_bucket, sensor.d828c9beefb2_dhum_maintenance_empty_bucket) 2023-08-01 20:44:57.632 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dhum_maintenance_clean_filter, sensor.d828c9beefb2_dhum_maintenance_clean_filter) 2023-08-01 20:44:57.633 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating (ge_home_D828C9BEEFB2_dehumidifier, humidifier.d828c9beefb2_dehumidifier) 2023-08-01 20:45:09.196 DEBUG (MainThread) [custom_components.ge_home.entities.dehumidifier.dehumidifier] Setting mode from Smart Dry to Low 2023-08-01 20:45:09.197 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140466860610128] 'GeDehumidifier' object has no attribute 'erd_code' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 205, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1965, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2005, in _execute_service return await cast( ^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service return await service.entity_service_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 848, in entity_service_call response_data = task.result() # pop exception if have ^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1192, in async_request_call return await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 892, in _handle_entity_call result = await task ^^^^^^^^^^ File "/config/custom_components/ge_home/entities/dehumidifier/dehumidifier.py", line 74, in async_set_mode await self.appliance.async_set_erd_value(self.erd_code, new_state) ^^^^^^^^^^^^^ AttributeError: 'GeDehumidifier' object has no attribute 'erd_code' 2023-08-01 20:45:12.051 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35 2023-08-01 20:45:12.179 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35 2023-08-01 20:45:12.758 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35 2023-08-01 20:45:12.927 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35 2023-08-01 20:45:13.395 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35 2023-08-01 20:45:13.597 DEBUG (MainThread) [custom_components.ge_home.entities.common.ge_humidifier] Setting Target Humidity from 45 to 35

simbaja commented 11 months ago

Found the mode issue (I copy/pasted and didn't adjust right). For the slider, can you check what the min/max are from the developer tools? Can you try to use developer tools to set the target as well? Suspect I have to implement @jhndrx's updates to the library to make it all work right...

jhndrx commented 11 months ago

I haven't checked out the developer tools but i was able to grab the slider and try to move it. It never moved but the value on the popup showed up. All the way to the far right was 35 as seen in the attached picture. And when I tried to move left, the slider didn't move but the number went up to 80. So it does appear to be backwards. image

simbaja commented 11 months ago

Ok, the changes to the SDK are incorporated, let me know if things work a bit better now.

jhndrx commented 11 months ago

The fan mode controls are working. I was able to swap between all of them just fine.

However, setting the target humidity isn't doing anything. I don't see any errors in the home assistant logs either. I'll have more free time after work to dig deeper.

Another potential consideration, I can only set humidity levels in increments of 5 at my dehumidifier so I'm not exactly sure what it will do if i try to set it to something else like 52. However, I don't know if it's possible to tell home assistant that or if that's how all GE dehumidifiers function. If we can't tell home assistant that, maybe some round to nearest increment of 5 code could be put in place in the code.

simbaja commented 11 months ago

I bet that it was the int length - try the latest and see if it works now. It's picky on how many bytes you send it when setting values.

jhndrx commented 11 months ago

SUCCESS!

However, It would not accept any values that were not increments of 5. I could live with that if its not a generic enough to implement in your libraries. If you do implement here's a quick rounding to 5 formula: newVal = round( oldVal / 5 ) * 5

atflack commented 11 months ago

This is excellent, thanks very much for all your work on it!

One other small thing I came across besides the increment of 5 part, any way to update the ac_fan_setting translation from Default to Smart Dry to match setting? The Low, Med, and High all show up properly.

image

simbaja commented 11 months ago

try the newest version and let me know if it resolves your issues

atflack commented 11 months ago

I think this is exactly where it needs to be. I can't find anything else that needs tweaking. Everything is toggling/reporting as I'd expect it to. Thanks again!

jhndrx commented 11 months ago

Agreed. Thanks!