Control your Daikin Airzone Cloud (dkn.airzonecloud.com) HVAC systems natively from Home Assistant.
Optimized for the "DAIKIN ES.DKNWSERVER Wi-Fi adapter" — climate, fan, diagnostics, and temperature at your fingertips.
GitHub Release hassfest validation HACS validation Lint CodeQL License HACS Default Python Ko-fi PayPal
- Fully integrated climate control: Power, mode (heat/cool/fan/dry, optional HEAT_COOL), target temperature, and fan speed for each unit.
- Native climate presets:
Use Home Assistant preset modes (home,away,sleep) directly on the climate entity.
The integration maps these presets to backend fields internally — noselect.scenaryentity. - Automatic device/sensor creation:
Creates climate, temperature, diagnostic, and connectivity entities for each device. - Sleep timer & unoccupied limits:
Tune Sleep time via
number.sleep_time, unoccupied min/max vianumber.min_temp_unoccupied/number.max_temp_unoccupied. - Privacy-sensitive sensors (opt-in): MAC, PIN, installation/location and related fields are available only when the Expose PII identifiers option is enabled. These sensors are not diagnostic, remain disabled by default, and should be used with care.
- The backend keeps reporting Sleep even after the timer finishes and the unit powers off. The integration now auto-exits Sleep before any HA-driven wake action (turn on, mode changes from off, main power switch).
- An opt-in timeout treats long-running Sleep sessions as Home in the UI and also sends a one-off scenary cleanup to the backend (best effort) once the configured sleep time plus a grace period has elapsed. Leave it disabled to mirror raw backend state.
- Timeout handling only applies when the device exposes a valid
sleep_time(vianumber.*_sleep_time) greater than zero; otherwise the backend’s native state remains the source of truth and no local expiry is applied.
- The integration exposes
sensor.<id>_last_connection(timestamp, enabled by default) andbinary_sensor.<id>_wserver_online(connectivity, enabled by default). - Online/offline is derived passively from the age of
connection_date(no extra pings). - Offline detection uses a fixed 10-minute internal threshold with a 90 s debounce shared between connectivity sensors and persistent notifications.
- When a control request fails with HTTP 422, Home Assistant shows: "DKN WServer not connected (422)".
| P2 Value | Home Assistant Mode | Description |
|---|---|---|
"1" |
COOL | Cooling (setpoint via P7, fan via P3). |
"2" |
HEAT | Heating (setpoint via P8, fan via P4). |
"3" |
FAN_ONLY | Ventilation (cold-type fan, sent with P3). |
"4" |
HEAT_COOL (opt-in) | Experimental dual logic; single setpoint (P7) + fan (P3). |
"5" |
DRY | Dehumidify (no temperature or fan controls). |
"6" |
— (telemetry only) | "Cool air" variant; shown as unknown in Home Assistant. |
"7" |
— (telemetry only) | "Heat air" variant; shown as unknown in Home Assistant. |
"8" |
FAN_ONLY (fallback) | Heat-type ventilation fallback (fan commands routed to P4). |
About HEAT_COOL (API label "heat-cold-auto") This mode is opt-in and experimental/beta. It appears only when both the device bitmask exposes bit 3 and the new option Enable experimental HEAT_COOL mode is enabled. While active, the integration always uses P7 for the setpoint and P3 for fan speed.
- In Home Assistant, go to HACS → Integrations
- Search for DKN Cloud for HASS
- Click Install and then Restart Home Assistant
- Go to Settings → Devices & Services → Add Integration and search for DKN Cloud for HASS
Open your Home Assistant instance and start setting up DKN Cloud for HASS.
Manual (advanced; not needed when using HACS):
Copycustom_components/airzoneclouddaikin/into your<config>/custom_components/folder and restart.
After installation, go to Settings → Devices & Services → Add Integration and search for DKN Cloud for HASS.
Enter your Airzone Cloud username and password.
Optional parameters:
- Scan interval: Data refresh interval (seconds, default: 10)
- Expose PII identifiers: When enabled, creates extra privacy-sensitive sensors (MAC, PIN, installation/location, etc.). Disabled by default.
No YAML required!
All options are set via the Home Assistant UI.
- Climate entity:
- Modes: COOL, HEAT, FAN_ONLY, DRY (+ optional HEAT_COOL when enabled)
- Dynamic fan speed control
- Preset modes:
home,away,sleep(useclimate.set_preset_mode)
- Sensor entities:
- Current temperature (
local_temp) - Sleep timer (minutes)
- Diagnostics: modes, program status, slats, HEAT_COOL compatibility (opt-in)
- Current temperature (
- Switch entity:
- Power ON/OFF per device
- Number entities (config):
number.min_temp_unoccupied(12–22 °C)number.max_temp_unoccupied(24–34 °C)number.sleep_time(minutes)
- Binary sensor entities:
binary_sensor.<id>_device_on— reflects the device power state (enabled by default)binary_sensor.<id>_wserver_online— passive connectivity status (enabled by default)
Full API/command mapping and advanced usage in info.md.
- UI strings are localized for English, Spanish, French, German, Italian, and Portuguese.
- Translation coverage tests ensure new strings stay in sync across locales.
| Home Assistant | Python | Daikin Model/Adapter |
|---|---|---|
| 2025.5+ | 3.14.0+ | DAIKIN ES.DKNWSERVER (Cloud) |
Other Airzone or Daikin adapters may not be supported.
Python runtime vs tooling Home Assistant provides the Python runtime. As of 2025.10, HA runs on Python 3.13.x in many installations while Docker/OS images and CI are rolling out 3.14. This project targets 3.14 for development tooling (format/lint) to stay ahead; users don't need to change anything.
- HEAT_COOL (opt-in) — ongoing validation across devices/firmwares before enabling by default
- Auto Fan Speed (opt-in, experimental) — controller that selects fan speed (e.g., P3/P4) based on ΔT (discrete 1 °C steps & hysteresis), active only in HEAT/COOL
Q: How do I change scenes/presets?
A: Use climate presets on the climate entity (preset_modes: home, away, sleep) and the service climate.set_preset_mode. This supersedes the legacy select.scenary entity.
Q: Will HEAT_COOL (API label "heat-cold-auto") be supported? A: Yes — it is available as an opt-in experimental mode. When enabled, the integration uses P7 for the single setpoint and P3 for fan commands, mirroring the cold-channel behavior recommended by Daikin/Airzone. Compatibility still depends on the device bitmask and firmware.
Q: Will there be an automatic fan speed?
A: Planned/experimental. It will adapt fan speed (e.g., P3/P4) to the ΔT with 1 °C thresholds and hysteresis, only in HEAT/COOL.
Q: Can I control vertical/horizontal slats?
A: Slat state/position is shown in diagnostic sensors; control is not implemented.
Q: Where can I find advanced API usage, all device fields, and curl examples?
A: See info.md.
PRs for features, translations, and fixes are welcome!
- Open issues and PRs in GitHub Issues
- For translations: contribute keys under
translations/per HA guidelines - Follow the code style enforced by Ruff and Black (see CI)
If you find this integration useful, you can support development via:
This integration uses a per-request timeout of 30 s and exponential backoff with jitter for 429/5xx.
If the backend is temporarily unavailable, Home Assistant retries the config entry (ConfigEntryNotReady).
For privacy, logs never print your email or token.
Starting with 0.4.0:
- The legacy
select.scenaryentity is removed. Use climate preset modes:home,away,sleep. - The login token is stored in
config_entry.options['user_token']. Home Assistant does not encryptconfig_entries(dataoroptions) by default; we keep the token in Options to separate identity data (indata) from credentials-like settings and to reduce churn when editing options. Passwords are never persisted.
Reauth: You’ll be asked for the account password only if the backend returns HTTP 401 or the token becomes invalid.
This project was inspired by and originally based on:
- AirzoneCloudDaikin (PyPI) and its Home Assistant integration by max13fr
Many thanks to those projects and authors for their groundwork and inspiration!
MIT © eXPerience83
This project is not affiliated with or endorsed by Daikin or Airzone. All trademarks are property of their respective owners.