Miele@LAN β Local control of Miele@home appliances, without breaking the Miele app
Hi all,
Releasing Miele@LAN β a HACS-installable Home Assistant integration that talks directly to Miele@home appliances on your LAN. No cloud polling, no sidecar server, and crucially: does not break the official Miele app.
GitHub / HACS: GitHub - tiehfood/ha-miele-at-lan: Home Assistant integration to control Miele devices via local API Β· GitHub
Release: v1.2.0
What it does
- mDNS auto-discovers every appliance in your household β one click in
Add Integration β Miele@LAN - Speaks Miele's native LAN protocol (
MieleH256HMAC-SHA256 + AES-CBC, signed with your household GroupKey) - Real-time state updates via Miele's own SuperVision push channel (sub-second on cycle devices); 1β30 s polling fallback
- Read-only display for cooling appliances (fridges/freezers β see Limitations)
How it relates to MieleRESTServer
This is not meant as a competitor to MieleRESTServer β that project is what made all of this possible in the first place, and
most of the protocol RE this integration relies on traces back to akappner's work. Huge thanks for consistent reverse-engineering in the open.
The difference is in approach. MieleRESTServer is a standalone Flask sidecar with a polling model; you proxy through it from HA via rest: sensors. Miele@LAN is a native HA
integration that runs entirely inside Home Assistant β no extra server to maintain β and uses Miele's own SuperVision push channel for state updates instead of polling. That
brings live state changes for cycle devices and avoids the polling spikes that hammer the appliance when something is actively cooking.
Two other differences worth calling out: setup is a guided HA config flow (mDNS auto-discovers every appliance in your household in one click, no per-device YAML), and the Miele
app keeps working alongside HA β Miele@LAN pairs through the official cloud OAuth flow once, fetches your household GroupKey from Miele's cloud, then talks LAN-only from then
on. If you've already extracted a GroupID/GroupKey via MieleRESTServer's provisioning, you can also paste those in and skip the cloud step entirely.
For factory-fresh appliances without an existing Miele app account, a tools/miele_lan_provision.py CLI is bundled for one-shot LAN-only commissioning.
How the pairing works
You log in once with your Miele account (standard OAuth via prod.map.miele-iot.com). HA fetches your household GroupKey from the cloud, then uses it locally over your LAN β afterwards no cloud traffic is needed. The Miele app continues to work alongside HA. If you already have a GroupID/GroupKey (e.g. from a previous MieleRESTServer provisioning), you can paste them directly and skip the cloud step.
For factory-fresh appliances without an existing Miele app account, a tools/miele_lan_provision.py CLI is bundled for one-shot LAN-only commissioning.
Limitations
- Cooling appliances are read-only on LAN. The K7000/EasyControl firmware blocks all LAN writes β confirmed by RE on a KF series fridge and matches Miele's own docs (MobileStart is permanently on for cooling appliances and isn't a togglable feature). State changes you make from the Miele app are still mirrored back to HA in real time via SuperVision push.
- Setpoint writes on cycle appliances (oven/dishwasher/laundry) require MobileStart to be activated on the appliance panel.
- Compatible with HA 2025.6+; tested with my devices at home.
Credits
Standing on the shoulders of akappner/MieleRESTServer and asyncmiele, the HA community thread #840093, and astrandb/miele (the upstream HA core integration; used here for cross-referencing the cloud surface and translation keys).
Feedback / issue reports welcome β particularly state captures from appliance types not in my testbed (washer-dryer combos, microwaves, robot vacuums, induction-extractor hobs). Open an issue on GitHub.