Skip to content

Retry handshake collisions, start specless ovens, and fix microwave progress - #585

Merged
mbillow merged 4 commits into
mainfrom
claude/open-issue-fixes
Oct 6, 2026
Merged

mbillow merged 4 commits into
mainfrom
claude/open-issue-fixes

Conversation

@mbillow

@mbillow mbillow commented Oct 5, 2026 •

Copy link
Copy Markdown
Owner

Three fixes from a pass over the open issues.

Handshake collisions (#567)

  • PeerInitiatedHandshakeError means the appliance was opening its own session toward us. The library says an immediate retry normally clears it, but the coordinator treated it as any other failure, so it cost a poll cycle or a failed command.
  • _connect_session now retries it once on the same port, which is what config_flow._worth_retrying already does. This covers the poll path and the command path.
  • Port rediscovery now runs only after a timeout or an EndpointError. An appliance that answered with an alert is still on the stored port. The exception that triggered a lookup is now logged, where it used to be dropped.
  • Both behaviours have new tests in test_port_rediscovery.py, and both tests fail without the change.

Start a cook on boards with no modeSpec (#300)

  • The NW9000KD wall oven publishes no modeSpec, so it got no start. The reporter started Bake from Ready with the same Collection write every other board takes.
  • A board without a modeSpec now offers its own live modes, minus:
    • maintenance programs: Descale, Drain, PyroFree, SelfClean, SteamClean, and HomeCare;
    • modes that no board with a modeSpec declares Start&Setting: Broil*, Autocook/Easycook*, Defrost, BreadProof, Toast*, MicroWave*, and Speed*.
  • The setpoint uses the family's existing fixed range, and only on boards that report a temperature. Cook time is optional.
    • Ovens: 30–270 °C or 175–550 °F.
    • Microwaves: 40–200 °C. That range is Celsius only, so a Fahrenheit microwave offers no temperature, matching its setpoint control.
Board in the fixtures Start cooking now offers
NW9000KD wall oven Bake, ConvectionBake, ConvectionRoast, SteamBake, SteamRoast
EU oven (oven) Its 11 cooking modes
ME7500D microwave KeepWarm
NW9300MD combo Convection, with no temperature (Fahrenheit)
NV75N dual cook Nothing (HomeCare only)

Only Bake on the NW9000KD is confirmed on hardware, and that start included a cook time. Three tests that pinned the old "no modeSpec, no start" rule are updated. New tests cover:

  • the reporter's exact payload;
  • the optional cook time;
  • the oven and microwave temperature bounds;
  • the maintenance exclusion.

Microwave progress (#181)

  • TP1X microwaves report progressPercentage 201 for the whole of a cook, so the sensor showed 201 %.
  • The oven-family progress sensor, which microwaves share, now reports anything outside 0–100 as unknown.

Checks

ruff format --check, ruff check, ty check and pytest tests/ all pass locally on Python 3.13, with 2,691 tests.

Refs #567, #300, #181

🤖 Generated with Claude Code

https://claude.ai/code/session_01LvafUqpe5oSKcVcp5Z8c1N

…#567)

A PeerInitiatedHandshakeError means the appliance was opening its own
session toward us; the library says an immediate retry normally clears it.
The coordinator treated it like any failure, so it cost a poll cycle or a
failed command. _connect_session now retries it once on the same port, the
rule config_flow._worth_retrying already applies.

Port rediscovery now runs only after a timeout or endpoint error. An
appliance that answered with an alert is still on the stored port, and the
exception that triggered the lookup is now logged.
The NW9000KD wall oven publishes no modeSpec, so it got no start, yet it
started Bake from Ready with the same Collection write every other board
takes. A board without a modeSpec now offers its own live modes, less
maintenance programs and the modes no modeSpec ever declares startable
(Broil, Autocook, microwave power, self-clean and similar). The setpoint is
bounded by the oven's static range, and the cook time is optional.
TP1X microwaves report progressPercentage 201 from the start of a cook to
its end, so the sensor showed 201 %. The oven-family progress sensor now
reports anything outside 0-100 as unknown.
…300)

A microwave with no modeSpec picked up the oven's 175-550 F range, so the
NW9300MD would accept a 550 F convection start. It now gets the microwave
family's static range, which is Celsius only, matching its setpoint control.
In Fahrenheit it offers no temperature.
@mbillow
mbillow merged commit d299b99 into main Oct 6, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant