Skip to content

Repository files navigation

Enki Siroco+ for Home Assistant

A custom Home Assistant integration that controls the Inspire Siroco+ ceiling fan (and its light kit) through the Enki cloud (Leroy Merlin / Adeo). The Siroco+ can normally only be controlled from the Enki mobile app; this integration exposes it as native Home Assistant fan and light entities.

It talks exclusively to the official Enki servers (keycloak-prod.iot.leroymerlin.fr for authentication and enki.api.devportal.adeo.cloud for the API) using your Enki account credentials. No third-party service is involved.

Features

Feature Entity Details
Fan on/off fan Speed 0 = off
Fan speed fan 6 speeds mapped to the Home Assistant percentage slider
Breeze mode fan Exposed as the breeze preset mode; picking a speed returns to manual mode
Rotation direction fan Summer/winter (forward/reverse), when the device reports support
Light on/off light Independent from the fan motor
Light brightness light Home Assistant 0-255 mapped to the API 0.0-1.0 range
Light color temperature light 2748 K to 6500 K, snapped to the discrete values the device supports
Config flow UI setup with email, password and polling interval
Reauthentication Guided flow when your Enki password changes
Translations English and French

Installation

HACS (recommended)

The integration is installable as a HACS custom repository:

  1. In Home Assistant, open HACS.
  2. Click the menu (top right) → Custom repositories.
  3. Add this repository URL (https://github.com/ghislainfrs/enki-siroco-ha) with type Integration.
  4. Search for Enki Siroco+ in HACS and install it.
  5. Restart Home Assistant.

Updates are then offered directly through HACS.

Manual installation (fallback)

  1. Download this repository (or a release archive).
  2. Copy the custom_components/enki/ folder into the custom_components/ folder of your Home Assistant configuration directory (e.g. via Samba or SSH: /config/custom_components/enki/).
  3. Restart Home Assistant.

Configuration

  1. Go to Settings → Devices & services → Add integration.
  2. Search for Enki.
  3. Enter your Enki account email and password (the same credentials as the Enki mobile app).
  4. Optionally adjust the polling interval (default 120 seconds, allowed range 30 to 3600 seconds).
  5. Submit. Your Siroco+ fan and its light kit appear as one device with a fan entity and a light entity.

You can later change the account or the polling interval through the integration's Reconfigure option, and Home Assistant will prompt you to re-enter the password (Reauthenticate) if it stops being accepted.

Polling and responsiveness

  • The Enki cloud does not offer a public push channel, so this integration polls device states (a few lightweight requests per cycle).
  • Default interval: 120 seconds. Lower values (down to 30 s) make state changes made from the Enki app show up faster, at the cost of more cloud requests; higher values (up to 3600 s) minimize traffic.
  • Commands sent from Home Assistant are reflected immediately in the UI (optimistic updates), and a confirmation refresh runs a few seconds after each command — you do not have to wait for the next polling cycle.

Before publishing

  • Double-check that no personal data is committed (see the privacy note below): no credentials, no home/device identifiers, no diagnostic dumps.
  • Push and verify that the Lint and Validate GitHub Actions pass.

Privacy note

  • Your Enki credentials are stored only in Home Assistant's local storage (the config entry), and are sent only to the official Enki servers. Tokens and passwords are never logged.
  • Never share the contents of tools/out/ (diagnostic dumps): the Enki homes API returns your postal address along with home and device identifiers. That folder is git-ignored on purpose — keep it that way.

Development

  • Diagnostic tool: tools/diagnose.py is a standalone test bench that runs outside Home Assistant. It can log in, list your devices, dump the Siroco+ state and exercise each command (speed, breeze, rotation, light) one by one. Its output goes to the git-ignored tools/out/ folder.
  • Unit tests: the API client is covered by tests with mocked HTTP responses (no real account needed). Run them with pytest from the repository root.
  • Lint: ruff check custom_components (also enforced by CI).

License

MIT

About

Home Assistant custom integration for the Inspire Siroco+ ceiling fan (Enki / Leroy Merlin cloud)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages