ha_gehome icon indicating copy to clipboard operation
ha_gehome copied to clipboard

Enhancement Request: Quad door fridge variable zone support

Open partsdotpdf opened this issue 2 years ago • 7 comments

Hi there,

I have a Quad door F&P fridge (RF605QUAA) which is detected by this integration. Basic functionality works really well. This is a great integration!

It has a few features which are not supported/detected - can I help fix this?

  1. Variable temperature zone - not picked up at all I'm not sure if this is a different ERD codes...? I guess this is part of the SDK?
  2. Ice maker on/off & turbo mode ability?

Let me know what I can provide to help. Have dumped some shorter log output below and attached a longer log.

I see the model sensor: FridgeModelInfo(has_fridge=True, has_freezer=True, has_convertable_drawer=False, doors=2, raw_value='107904')

Some logs extract: 2023-01-28 12:34:04.197 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Got initial update for D828C9BA6A66 2023-01-28 12:34:04.197 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Adding appliance api for appliance D828C9BA6A66 (ErdApplianceType.FRIDGE) 2023-01-28 12:34:04.197 DEBUG (MainThread) [custom_components.ge_home.devices] Found device type: ErdApplianceType.FRIDGE 2023-01-28 12:34:34.583 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Fridge Model Info: FridgeModelInfo(has_fridge=True, has_freezer=True, has_convertable_drawer=False, doors=2, raw_value='107904')> (ge_home_N7M005726551_fridge_model_info, sensor.n7m005726551_fridge_model_info) 2023-01-28 12:34:34.584 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] Turbo mode not supported. 2023-01-28 12:34:34.585 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Fridge: Normal> (ge_home_N7M005726551_fridge, water_heater.n7m005726551_fridge) 2023-01-28 12:34:34.585 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] No temperature setpoint limits available. Using hardcoded limits. 2023-01-28 12:34:34.592 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] No temperature setpoint limits available. Using hardcoded limits. 2023-01-28 12:34:34.593 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] Turbo mode not supported. 2023-01-28 12:34:34.594 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] Device doesn't report current temperature. 2023-01-28 12:34:34.594 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] Turbo mode not supported. 2023-01-28 12:34:34.594 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_fridge] Device does not report door status. 2023-01-28 12:34:34.595 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Water Filter Status: Good> (ge_home_N7M005726551_water_filter_status, sensor.n7m005726551_water_filter_status) 2023-01-28 12:34:34.596 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Freezer: Normal> (ge_home_N7M005726551_freezer, water_heater.n7m005726551_freezer) 2023-01-28 12:34:34.596 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] No temperature setpoint limits available. Using hardcoded limits. 2023-01-28 12:34:34.597 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] No temperature setpoint limits available. Using hardcoded limits. 2023-01-28 12:34:34.599 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_abstract_fridge] Device doesn't report current temperature. 2023-01-28 12:34:34.600 DEBUG (MainThread) [custom_components.ge_home.entities.fridge.ge_freezer] Device does not report door status. 2023-01-28 12:34:34.601 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Ice Maker Control Status Freezer: on> (ge_home_N7M005726551_ice_maker_control_status_freezer, binary_sensor.n7m005726551_ice_maker_control_status_freezer) 2023-01-28 12:35:04.537 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Sabbath Mode: off> (ge_home_N7M005726551_sabbath_mode, switch.n7m005726551_sabbath_mode) 2023-01-28 12:35:04.538 DEBUG (MainThread) [custom_components.ge_home.update_coordinator] Updating <Entity N7M005726551 Fridge Model Info: FridgeModelInfo(has_fridge=True, has_freezer=True, has_convertable_drawer=False, doors=2, raw_value='107904')> (ge_home_N7M005726551_fridge_model_info, sensor.n7m005726551_fridge_model_info)

partsdotpdf avatar Jan 28 '23 01:01 partsdotpdf

Ooops, debug log attached; log_fridge_2023-01-28T01-41-13.800Z.log

partsdotpdf avatar Jan 28 '23 01:01 partsdotpdf

Yeah, looks like it's probably using a different control/sensor scheme. Can you follow the directions over on the SDK repo and post that log? Let's see what it's exposing...

simbaja avatar Jan 29 '23 14:01 simbaja

Wew nice tool. Some output below and attached some dumps. Been a bit of a self education, feel a bit dumb, some of the 'features' on the fridge/app just change the temperature & lock out changes. Ie: Ice boost and fast freeze both lock the freezer temperature to -22C.

items of interest from the 'startup' of the script:

DEBUG    Received features ['REFRIGERATION_V1_CONVERTIBLE_DRAWER', 'REFRIGERATION_V1_FOUNDATION'] for D828C9BA6A66

Icemaker boost on/off - see on/off toggle log below. DEBUG Setting 0x100D to b'\x00'

Somehow related to the variable temperature zone. DEBUG Setting 0x1022 to b'\x00\x00'

No idea what this one is. Didn't see it at all. DEBUG Setting 0x1023 to b'\x00\xf8\x07\x00\x13\x0f\x17\x01 \x1c"\x02%")\x03'

the 'iceboost' feature turn on:

DEBUG    Setting 0x100D to b'\x01'
DEBUG    Setting ErdCode.TEMPERATURE_SETTING to FridgeSetPoints(fridge=37, freezer=-8)

turn off:

DEBUG    Setting 0x100D to b'\x00'
DEBUG    Setting ErdCode.TEMPERATURE_SETTING to FridgeSetPoints(fridge=37, freezer=1)

variable zone action, (change temperature to -17C):

DEBUG    Setting 0x1022 to b'\x00\x01'
DEBUG    Appliance state change detected in GeAppliance(D828C9BA6A66) (ErdApplianceType.FRIDGE). Updated keys: 0x1022

Few other examples changing the variable temperature below... all the same Setting 0x1022 to...

'freezer' -22C:     b'\x00\xf8'
'freezer' -20C:     b'\x00\xfc'
'freezer' -19C:     b'\x00\xfe'
'freezer' -18C:     b'\x00\x00'
'freezer' -14C:     b'\x00\x07'
'soft chill' -7C:   b'\x01\x13'
'chill' -2C:        b'\x02\x1c'
'chill' -1C:        b'\x02\x1e'
'chill' 0C:         b'\x02 '
'chill' 1C:         b'\x02"'
'fridge 1C':        b'\x03"'
'fridge 2C':        b'\x03$'
'fridge' 3C:        b'\x03%'

So my guess would be the first byte is the index/ID for the variable zone mode [freezer, soft chill, chill, fridge] & second is the temperature of some sort. Each mode has a limited temperature range in the app [[-22,-14],[-9,-5],[-2,1],[1,5]]. Hope that makes sense. Not sure why for positive temps it appears to no longer use hex for the second character. Fun fun!

fast-freeze-on-off.txt ice-maker-on-off.txt iceboost-on-off.txt log-start.txt varzone-set-neg14C.txt varZone-set-neg17C.txt

partsdotpdf avatar Feb 04 '23 12:02 partsdotpdf

I added in the new erd codes, converter & configuration to gehomesdk/erd/... Can't get the websocket example to recognise the erd new codes. I'm stumped. Any ideas?

I added: To erdconfiguration.py;

ErdConfigurationEntry(ErdCode.VARIABLE_ZONE_MODE_TEMP, ErdVariableZoneModeConverter(), ErdCodeClass.FRIDGE_SENSOR),`

To erdcodes.py

    ICE_MAKER_TURBO = "0x100d"
    VARIABLE_ZONE_MODE_TEMP = "0x1022"
    FRIDGE_UNKNOWN_1023 = "0x1023"

Made a new converter in its own file per the above and added all the gizmos to the inits...

partsdotpdf avatar Feb 09 '23 01:02 partsdotpdf

Did you pip install the development version using the -e flag? Otherwise, it may try to use the package from the web.

simbaja avatar Feb 09 '23 02:02 simbaja

SMH. Yeah that'll do it. Up and running now. Basic function working but getting the converter right is a little annoying with the inconsistent temperature values.

So far I get something like, which looks pretty good; Setting ErdCode.VARIABLE_ZONE_MODE_TEMP to ErdVariableZoneModeTemp(mode=<ErdVariableZoneMode.SOFT_FREEZE: '01'>, temperature=-9)

Are you happy for me to raise a pull request when I'm done?

partsdotpdf avatar Feb 10 '23 11:02 partsdotpdf

Yep, feel free to do so, happy to integrate.

simbaja avatar Feb 10 '23 14:02 simbaja