Environment
- pydaikin 2.18.1 (via Home Assistant core 2026.7.2,
daikin integration)
- Daikin split, Thailand market; Model FTKZ25WVM (
data_model_code: 26). WLAN adapter firmware 3_12_3 (rev e5a8ebd, reg: th, api_ver: 2_2) per POST /dsiot/multireq → /dsiot/edge.adp_i
- New-firmware local API only:
POST http://<unit>/dsiot/multireq works, legacy /aircon/* endpoints return 404 → pydaikin selects DaikinBRP084
Symptom
- HA
climate.turn_on and switch.turn_on (power toggle) report success, but the unit never turns on; the optimistic state reverts on the next poll.
climate.set_hvac_mode (e.g. cool) physically starts the unit.
- Power OFF works via every path.
Evidence the command is never sent
The unit keeps its own operation log in dgc_status: /dsiot/edge/adr_0100.dgc_status → dgc_status → last_ope → time (ISO timestamp).
Method: read last_ope.time → call climate.turn_on (or switch.turn_on) → read again: timestamp unchanged, nothing registered. Call climate.set_hvac_mode cool → timestamp updates and the unit starts. So the unit isn't rejecting a malformed command — no command arrives.
Root cause
Both HA turn-on paths call device.set({}) (homeassistant/components/daikin/climate.py async_turn_on, switch.py DaikinToggleSwitch.async_turn_on). The old-firmware class honors the empty-dict power-on contract — daikin_brp069.py::_update_settings:
# if changing the mode to something other than off assume the unit should be
# powered on OR if the request is empty power on
elif 'mode' in settings or not settings:
self.values['pow'] = '1'
DaikinBRP084 doesn't: _handle_power_setting returns immediately when 'mode' not in settings; with settings == {} no handler appends anything, requests == [], and set() returns without making any HTTP call (and without update_status()), i.e. silent success (daikin_brp084.py, v2.18.1).
Suggested fix
Treat empty settings as bare power-on in _handle_power_setting — exactly the hunk already present in open PR #122:
if not settings:
self.add_request(requests, self.get_path("power"), "01")
return
Text prepared with AI.
If #122 (bundled FTXM71 fixes) needs longer validation, this hunk would work as a minimal standalone fix. Happy to test either on this hardware.
Cross-references
Environment
daikinintegration)data_model_code: 26). WLAN adapter firmware3_12_3(reve5a8ebd,reg: th,api_ver: 2_2) perPOST /dsiot/multireq→/dsiot/edge.adp_iPOST http://<unit>/dsiot/multireqworks, legacy/aircon/*endpoints return 404 → pydaikin selectsDaikinBRP084Symptom
climate.turn_onandswitch.turn_on(power toggle) report success, but the unit never turns on; the optimistic state reverts on the next poll.climate.set_hvac_mode(e.g.cool) physically starts the unit.Evidence the command is never sent
The unit keeps its own operation log in
dgc_status:/dsiot/edge/adr_0100.dgc_status→dgc_status→last_ope→time(ISO timestamp).Method: read
last_ope.time→ callclimate.turn_on(orswitch.turn_on) → read again: timestamp unchanged, nothing registered. Callclimate.set_hvac_mode cool→ timestamp updates and the unit starts. So the unit isn't rejecting a malformed command — no command arrives.Root cause
Both HA turn-on paths call
device.set({})(homeassistant/components/daikin/climate.pyasync_turn_on,switch.pyDaikinToggleSwitch.async_turn_on). The old-firmware class honors the empty-dict power-on contract —daikin_brp069.py::_update_settings:DaikinBRP084doesn't:_handle_power_settingreturns immediately when'mode' not in settings; withsettings == {}no handler appends anything,requests == [], andset()returns without making any HTTP call (and withoutupdate_status()), i.e. silent success (daikin_brp084.py, v2.18.1).Suggested fix
Treat empty settings as bare power-on in
_handle_power_setting— exactly the hunk already present in open PR #122:Text prepared with AI.
If #122 (bundled FTXM71 fixes) needs longer validation, this hunk would work as a minimal standalone fix. Happy to test either on this hardware.
Cross-references