| Developer: | Simon's Plugins |
| Category: | Hubs and Protocol Bridges |
| Github: | Github Repo |
| License: | MIT License |
| Assistance: | Get help! |
| Plugin ID: | com.simons-plugins.homeconnect |
| Latest release: | v2026.1.5 released on Aug. 4, 2026 |
| Release downloaded: | 7 times |
| Requires: | Indigo v2024.2.0 or higher |
| (Check the Releases tab below for older releases that may have different requirements) | |
| Download latest release |
An Indigo plugin for Bosch / Siemens / Neff / Gaggenau home appliances, via the official Home Connect cloud API.
Your dishwasher, dryer, washer, oven, coffee maker and fridge-freezer become Indigo devices with live state — operation state, selected/active program, progress, remaining time, door, and appliance events — streamed in real time, plus control (start / stop / pause / resume programs, power, settings, and commands such as Open Door).
State arrives over the Home Connect Server-Sent Events stream and control goes out over REST, so appliances participate in Indigo triggers, schedules, control pages, and Domio like any other device.
Home.Connect.indigoPlugin.zip from the
latest release
and unzip it.Home Connect.indigoPlugin on the Mac running Indigo Server.
Indigo offers to install and enable the plugin.Six appliance types get a dedicated Indigo device with type-specific states, and a generic fallback covers everything else Home Connect exposes:
| Device type | Home Connect appliance | Programs |
|---|---|---|
| Dishwasher | Dishwasher | Yes |
| Dryer | Dryer | Yes |
| Washer | Washer | Yes |
| Oven | Oven | Yes |
| Coffee Maker | CoffeeMaker | Yes |
| Fridge Freezer | FridgeFreezer | No (settings/status/events only) |
| Home Connect Appliance (generic) | anything else — hob, hood, cleaning robot, washer-dryer, wine cooler, microwave, warming drawer, air conditioner… | If the appliance has them |
The generic type carries the full common state set and picks up any appliance-specific keys as dynamic states. Add a dedicated type on request if you have hardware to validate it against.
Field-validated: Dishwasher (Siemens) and Dryer (Bosch) are exercised end-to-end on real hardware. The other four are validated against the Home Connect simulator. See
docs/APPLIANCES.mdfor per-type capability notes and quirks.
There are three steps: register an application on the Home Connect developer portal, authorize the plugin against it, then create Indigo devices.
This is a one-time step on the Home Connect developer portal. A few details must be exactly right or authorization will silently fail.
Copy the Client ID from the application's page. If your application defines a Client Secret, copy that too (most Device Flow applications do not need one).
Home Connect authorization successful.Simulator (no hardware): tick Use the Home Connect simulator before pressing Authorize to run against the six preloaded simulator appliances. The simulator uses an auto-approved grant, so there is no browser step.
Every device type carries this common state set:
| State | Type | Meaning |
|---|---|---|
connected |
bool | Appliance reachable on the Home Connect cloud |
operationState |
string | Ready, DelayedStart, Run, Pause, ActionRequired, Finished, Aborting, … |
powerState |
string | On, Off, Standby (as the appliance reports/allows) |
doorState |
string | Open, Closed, Locked |
programActive |
string | Key tail of the running program (e.g. Auto2) |
programSelected |
string | Key tail of the staged/selected program |
programProgress |
integer | 0–100 % |
remainingTime |
integer | Seconds remaining |
remainingTimeFormatted |
string | H:MM (e.g. 1:24) |
remoteControlActive |
bool | Remote control enabled on the appliance |
remoteStartAllowed |
bool | Remote start currently permitted (see the 24 h rule) |
localControlActive |
bool | Someone is operating the appliance at the panel |
lastEvent |
string | Most recent Home Connect event |
lastEventTime |
string | Timestamp of lastEvent |
status |
string | UI summary shown on the device (e.g. Run · Eco 50 · 1:24 remaining) |
Type-specific additions:
| Type | Extra states |
|---|---|
| Dishwasher | saltNearlyEmpty, rinseAidNearlyEmpty |
| Dryer | dryingTarget |
| Washer | spinSpeed, temperature |
| Oven | setpointTemperature, currentCavityTemperature, preheatFinished |
| Coffee Maker | beanContainerEmpty, waterTankEmpty, dripTrayFull |
| Fridge Freezer | setpointTemperatureRefrigerator, setpointTemperatureFreezer, doorAlarmRefrigerator, doorAlarmFreezer, superModeRefrigerator, superModeFreezer |
| Home Connect Appliance | common set only |
Home Connect adds and renames enum keys without notice. Any key the plugin does not map
explicitly surfaces automatically as an extra string state on the device (via
getDeviceStateList). Unknown keys therefore appear as raw states rather than crashing
the plugin — if new states show up after an appliance update, that is expected.
All actions are device-scoped (pick the Home Connect device in the action's dialog). Every control call is pre-flight-checked locally before any request is sent, so a call the appliance would reject is refused with an actionable message instead of burning your request budget.
| Action | What it does | Preconditions (checked locally) |
|---|---|---|
| Start Program | Starts a program now (optionally powering the appliance on first) | Connected · Remote Control on · Remote Start allowed · not locally controlled · operationState = Ready |
| Select Program | Stages a program without starting | Connected · powered on |
| Stop Program | Aborts the active program | Connected · a program is active or paused |
| Pause Program | Pauses (if supported) | Connected · appliance exposes the Pause command |
| Resume Program | Resumes a paused program | Connected · appliance exposes the Resume command |
| Send Command | Sends a supported command (e.g. Open Door, Partly Open Door) | Connected · command is in the appliance's command list |
| Set Power State | On / Off / Standby | Connected · value is in the appliance's allowed power states (when known) |
| Set Setting (advanced) | Writes any BSH setting key (e.g. BSH.Common.Setting.ChildLock) |
Connected · a setting key is given (the appliance validates the key/value) |
Start / Select dialogs offer a Program menu (built from the appliance's full
program list) and an optional Option overrides field — one key=value per line, e.g.
BSH.Common.Option.StartInRelative=3600. Values coerce to true/false (bool), whole
numbers (int), otherwise text. Leave it blank to start with the program's defaults.
Both dialogs also have a Power on first if needed checkbox (on by default). Many
dishwashers power themselves off after a cycle and on door events, which would otherwise
leave a scheduled Start Program refused as "not ready". With this ticked, the plugin
powers the appliance on and waits for it to become Ready before starting — so a schedule
works even if the machine has switched itself off. Power-on cannot grant Remote Start
(you still enable that on the appliance — see the 24-hour rule),
and appliances whose power is read-only (some dryers) cannot be powered on remotely and
are refused with a clear message. Only a powered-off (or Inactive) appliance is woken —
Standby is treated as on and is not woken by this option.
Menus for programs, commands and power states are served from a 24-hour capability cache, so opening an action dialog costs at most one request the first time that day.
Home Connect only lets the cloud start a program while
BSH.Common.Status.RemoteControlStartAllowed is true, and you can only enable it at the
appliance itself — there is no API to turn it on. Critically, the appliance
auto-expires this permission roughly 24 hours after you enable it. This is a Home
Connect platform rule, not a plugin bug.
Consequences:
The plugin exposes the live permission as the remoteStartAllowed device state so you
can build a notification for when it lapses — for example a trigger on
remoteStartAllowed becoming false that sends you a reminder to re-arm it before your
next scheduled wash.
The Home Connect API budget is per Client ID + account and is strict:
What the plugin does to stay well inside it:
Retry-After for every
request, plus local limiters that refuse a 6th start/stop within a minute before
any request goes out.What you must NOT do:
Everything surfaces as device states, so native Indigo state-change triggers cover the common cases without any custom event type:
operationState changing to Finished, or on lastEvent.remoteStartAllowed becoming false.saltNearlyEmpty, rinseAidNearlyEmpty, waterTankEmpty,
beanContainerEmpty, dripTrayFull, doorAlarmFreezer, doorAlarmRefrigerator,
preheatFinished.Duplicate appliance events (some dishwashers re-send ProgramFinished on reconnect) are
de-duplicated before they reach state, so a trigger fires once per real event.
The program menu is empty. Program menus are built from the appliance. If the appliance is off, or has just finished a cycle with the door still closed, Home Connect may report only the program on the dial (or none). The plugin works around this by listing the appliance's full program set and marking entries (not currently available) rather than the momentary available-list — but the appliance must be on and reachable. Power the appliance on (open the door after a finished cycle) and reopen the action dialog.
The appliance turns itself off, so scheduled starts are refused as "not ready".
Many dishwashers power down after a finished cycle and on door events. A Start Program
guard rail requires operationState = Ready, so it refuses while the machine is off. Leave
the Power on first if needed checkbox ticked on the Start (and Select) action — the
plugin powers the appliance on and waits for Ready before starting. Note the two limits:
the appliance must still have Remote Start enabled (power-on cannot grant it — see the
24-hour rule), and appliances whose power is read-only
cannot be powered on remotely (you get "cannot be powered on remotely — press its power
button").
A control action fails with a "409" / conflict. The appliance rejected the request. Common causes and fixes: - RemoteControlNotActive — enable Remote Control on the appliance. - RemoteControlStartAllowed lapsed — re-enable Remote Start on the appliance (see the 24-hour rule). - LocalControlActive — someone is using the appliance at the panel; wait until they finish. - Door open — close the door before starting. The plugin's error message names the concrete next step; follow it, then retry.
"Authorization required" appears / control stops working. The refresh token was revoked or went unused for more than 60 days (e.g. the plugin was disabled over a long holiday). Re-open Configure… and press Authorize again to mint fresh tokens. The Event Log carries the "authorization lost" error and the Configure… dialog's status line shows Authorization required; device state stops updating until you re-authorize.
No appliances in the picker. Confirm the appliances are paired in the Home Connect phone app, that authorization succeeded (Event Log), and that your developer account email exactly matches your SingleKey ID email in lowercase. A just-created application may still be propagating.
Some appliances report power-off as a disconnect, making "off" and "offline" indistinguishable over the API. Each device therefore has a Treat "disconnected" as Off checkbox:
Home Connect (BSH) cloud outages produce error floods and empty reads. The plugin throttles its own error logging and falls back to cached capabilities during an outage, but if nothing is updating, check the community-run unofficial status page before digging further: https://homeconnect.thouky.co.uk.
Retry-After-honouring request gate, 24-hour
capability cache, and local pre-flight checks — all to live within the 1000/day budget.pip install on the Indigo
server. Tokens live in a 0600 JSON file under Indigo's Preferences (not in plugin
prefs), and tokens/appliance IDs are redacted in log output.The architecture of this plugin owes a great deal to homebridge-homeconnect by Alexander Thoukydides (ISC licensed) — years of documented, battle-tested handling of the Home Connect API's rate limits, event stream quirks, and appliance edge cases informed this design. No code was copied; the plugin is an independent Python implementation.
The author of homebridge-homeconnect also runs an unofficial Home Connect API status page.
MIT — see LICENSE.
Home Connect and the Home Connect logo are trademarks of BSH Hausgeräte GmbH. This
plugin is an independent open-source project, not affiliated with or endorsed by BSH.
The logo (in docs/assets/) is used solely to identify the service the plugin connects
to and is not covered by this repository's MIT license.
| Released on: | Aug. 4, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 7 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.1.4...v2026.1.5
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 4 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.1.3...v2026.1.4
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 5 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.1.2...v2026.1.3
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 6 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.1.1...v2026.1.2
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 5 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.1.0...v2026.1.1
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 5 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.0.5...v2026.1.0
| Released on: | Aug. 3, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 7 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.0.4...v2026.0.5
| Released on: | Aug. 2, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 7 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.0.3...v2026.0.4
| Released on: | Aug. 2, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 7 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.0.2...v2026.0.3
| Released on: | Aug. 2, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 8 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/compare/v2026.0.1...v2026.0.2
| Released on: | Aug. 2, 2026 |
| Requires: | Indigo v2024.2.0+ |
| Downloaded: | 6 times |
| Download this release | |
Full Changelog: https://github.com/simons-plugins/indigo-home-connect/commits/v2026.0.1