Skip to content

AdvantiumCookAction and AdvantiumWarmStatus raise ValueError for valid appliance values #109

@floydpink

Description

@floydpink

Environment

  • gehomesdk version: 2026.2.0 (via pip, installed by ha_gehome)
  • ha_gehome version: 2026.2.0
  • Home Assistant Core: 2026.3.4
  • Python: 3.14
  • Appliance: GE Profile Advantium microwave/oven

Problem

The AdvantiumCookAction and AdvantiumWarmStatus enums raise ValueError for values that the appliance regularly sends. The converter catches the exception and falls back to a default, so there's no functional impact — but the error logs every ~30 seconds, filling the HA log with noise.

AdvantiumCookAction — value 38 not handled

2026-04-01 23:12:34.878 ERROR (MainThread) [gehomesdk.erd.converters.advantium.erd_advantium_cook_setting_converter]
Could not construct cook setting (value: 9026FA02540000399669E185CB0C7A109126FA), using default.
Traceback (most recent call last):
  File ".../gehomesdk/erd/converters/advantium/erd_advantium_cook_setting_converter.py", line 24, in erd_decode
    cook_action = AdvantiumCookAction(int_values[1]),
ValueError: 38 is not a valid AdvantiumCookAction

AdvantiumWarmStatus — value 250 not handled

ValueError: 250 is not a valid AdvantiumWarmStatus

Root Cause

In gehomesdk/erd/values/advantium/advantium_enums.py, both enums have _missing_ methods that only handle a few specific fallback values and raise ValueError for everything else:

class AdvantiumCookAction(enum.IntEnum):
    STOP = 0
    START = 1
    UPDATED = 2
    PAUSE = 3
    RESUME = 4
    UNKNOWN = 255

    @classmethod
    def _missing_(cls, value):
        if value in (20, 178):
            return cls.STOP
        return super()._missing_(value)  # <-- raises ValueError for 38
class AdvantiumWarmStatus(enum.IntEnum):
    OFF = 0
    CRISP = 1
    MOIST = 2
    UNKNOWN = 255

    @classmethod
    def _missing_(cls, value):
        if value == 223:
            return cls.OFF
        return super()._missing_(value)  # <-- raises ValueError for 250

Suggested Fix

Return the UNKNOWN/OFF fallback for any unrecognized value instead of raising:

class AdvantiumCookAction(enum.IntEnum):
    # ... existing values ...

    @classmethod
    def _missing_(cls, value):
        if value in (20, 178):
            return cls.STOP
        return cls.UNKNOWN  # graceful fallback instead of ValueError


class AdvantiumWarmStatus(enum.IntEnum):
    # ... existing values ...

    @classmethod
    def _missing_(cls, value):
        if value == 223:
            return cls.OFF
        return cls.OFF  # graceful fallback instead of ValueError

This matches the pattern already used by AdvantiumCookMode._missing_ which returns cls.NO_MODE for unrecognized values (153, 223, 253).

The converter already has a try/except that catches the ValueError and uses a default ErdAdvantiumCookSetting, so the fix just eliminates unnecessary exception logging while preserving the same behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions