Skip to main content

Daikin BRP WiFi (EMEA / APAC)

GEM controls Daikin residential split-system air conditioners sold outside North America via the local HTTP API exposed by the BRP-series WiFi adapters (BRP069A4x, BRP069B4x, BRP072A4x, BRP072C4x, BRP15, BRP16) and the built-in WiFi modules on newer units. Each indoor unit is one GEM device with one zone — mode, setpoint, fan speed, and swing direction are written atomically, and indoor / outdoor temperature plus humidity are polled.

This is not the right driver for North American Daikin One+ / Skyport thermostats — use the daikin_skyport driver for those. The two product lines speak entirely different protocols and are not interchangeable.

Prerequisites

  • Indoor unit with a BRP-series WiFi adapter or built-in WiFi commissioned via the Daikin Mobile Controller / Daikin Online Controller app at least once.
  • LAN-reachable IP for the adapter (DHCP reservation is strongly recommended — the adapter has no DDNS).
  • (Optional) A registration UUID from the Daikin app if the firmware enforces it. Older firmware accepts unauthenticated requests; newer revisions require the UUID in an X-Daikin-uuid header.

Setup

  1. Add a device with driver daikin_brp.
  2. Set ip to the adapter's LAN address.
  3. (Optional) Set uuid if your unit's firmware requires registration. Generate it under the Daikin app's settings.
  4. Save and connect. The connect path hits /common/basic_info and surfaces the unit name in the boot log.
  5. Add one zone. The zone address is unused by the protocol but GEM macros reference zones by address, so pick something stable like unit or living_room.
  6. Run get_status to confirm both control and sensor info are returning sensible values.

Attribute Reference

Device

NameTypeRequiredDefaultNotes
ipstringyesAdapter IP.
portintno80HTTP port. Most BRP adapters do not support HTTPS.
uuidstringnoX-Daikin-uuid header for firmware that requires registration. Encrypted at rest.
status_intervalintno30000Polling cadence (ms).

Zone (state published by the driver)

AttributeTypeSource
statestringon / off from pow.
modestringauto, cool, heat, dry, fan from mode.
setpointrealTarget temperature in °C from stemp.
fan_speedstringauto, silent, low, medium_low, medium, medium_high, high from f_rate.
fan_directionstringstop, vertical, horizontal, both from f_dir.
indoor_temprealIndoor coil temperature in °C from /aircon/get_sensor_info htemp.
outdoor_temprealOutdoor coil temperature in °C from otemp. Valid only when the outdoor unit is online.
humidityrealIndoor humidity from hhum (only on units with humidity sensors).

Commands

CommandArgsDescription
on / offToggle pow.
set_temptempSet the cooling/heating setpoint. Resolution is 0.5 °C.
set_modemodeOne of auto, cool, heat, dry, fan. Implicitly powers on.
set_fan_speedfan_speedOne of auto, silent, low, medium_low, medium, medium_high, high.
set_fan_directionfan_directionOne of stop, vertical, horizontal, both.
set_statepow, mode, temp, fan_speed, fan_directionAtomic multi-field write. Unspecified fields preserve current values.
get_statusRefresh control + sensor info and republish zone attributes.

Known Limitations

  • /aircon/set_control_info is atomic: every parameter (pow, mode, stemp, shum, f_rate, f_dir) must be supplied on every write or the unit ignores the request. The driver reads the current control state before each write and merges new values into it. Polling cadence determines how stale that baseline can be.
  • Setpoint resolution is 0.5 °C. Heat-mode minimum and cool-mode maximum are unit-dependent (commonly 10 °C / 32 °C).
  • Mode codes overlap (0, 1, and 7 all surface as auto depending on firmware). The driver writes mode=1 for auto.
  • The shum (humidity setpoint) field is unit-dependent and ignored on most splits. The driver echoes the current value rather than forcing zero so it doesn't fight units that do honor it.
  • Only one indoor unit per device — the protocol is not multi-zone. Sky Air / VRV cassette systems with multiple indoor heads need one GEM device per unit.

Troubleshooting

  • Connect timeouts — confirm the adapter responds to curl http://<ip>/common/basic_info from the GEM host. The reply should be a comma-separated ret=OK,type=aircon,... string.
  • ret=PARAM NG on writes — the atomic write didn't include all fields, or one of the values is out of range. Read get_status first and compare to what you sent.
  • All writes succeed but the unit doesn't react — newer firmware silently drops writes from un-registered clients. Set the uuid attribute to the registered UUID from the Daikin app.
  • Outdoor temperature always 0 or implausibleotemp is only valid when the outdoor unit is online and has been running. Cold-start values may be stale for the first few minutes.