Integration of Daikin Air Conditioning over WiFi

Introduction

It’s not exactly a secret that Daikin makes air conditioning devices that are the easiest to integrate over Wifi. I got one for myself and have successfully integrated it with my Loxone smart home system. Integration described below covers most of features supported by Daikin API. It is also a full-duplex integration, what means that if you change AC settings from IR remote or Daikin app - Loxone will instantly get updated.

Today I'll describe the first part of my integration – only Remote control part. I still keep developing my cooling automation logic and when I finish it – most probably I'll post the update here.

Presentation

The air conditioner I’ve installed is Daikin Emura. I’ve chosen it primarily because of its features, but it has a nice design and I like the way it opens up :)

Emura already has a WiFi module included but you may buy optional WiFi module BRP0xxxx to virtually any Daikin AC unit. Please see this table:

Daikin Wifi module provides a local HTTP API which is quite well documented on the Internet. Moreover; there is ioBroker adapter for it which I have diligently used in this integration.



This is how the AC control looks like in Loxone app. Virtually everything that API provides is here. After a few days of usage I believe this is enough for a day-to-day AC management.



Control buttons in detailed view. The screen is obvious and requires no additional description,

Interestingly, as the integration is a duplex type, in case of changing operating mode, e,g, to ventilation, Loxone is being updated with Fan Level that was previously set in ventilation mode. In addition I made displaying my own temperature measurements from the living room and the loggia, because Daikin provides only integer values unfortunately and they are not exactly very accurate.

Diagram

The basic control diagram is quite simple:

I use EIB Switch block more and more often in duplex integrations, twice again this time. Nice feature and I regret that there are only a few blocks with ‘silent’ status update in Loxone Config. That logic in bottom right corner is for my own condensate removal rig, shown as a bonus at the end of this How-To.

Communication

This integration assumes that you already have MQTT infrastructure (made with LoxBerry and MQTT Plugin preferably) working fine with your Loxone Miniserver.

You will also need ioBroker, so get yourself one if you don't have it yet. Mine is running in a docker container on LoxBerry, but feel free to install it your way.

In your ioBroker you will need a working MQTT-client adapter. Please install it and configure to your MQTT broker (most probably Mosquitto on your LoxBerry).

Finally, you will need your Daikin AC to be connected to your Wifi network (obviously).

Please note

Those prerequisites are out of the scope of this HowTo. Please search for and read dedicated manuals on each matter.



Note on MQTT alternative

Please mind, that there is an alternative way of integrating Daikin objects / states from ioBroker to Loxone - using Loxone ioBroker adapter. It communicates directly with Miniserver over Websocket API. For some people it might be even better solution. But because of few reasons that are out of scope of this manual, I personally just prefer using MQTT as unified communication bus for all of my integrations.



After you've checked all requirements above, add Daikin adapter to your ioBroker setup:



After adapter installation you need to configure its instance with your Daikin IP. Put 60s as update interval (doesn't matter really) and check "Send changes with GET" (more reliable).



Now go to Objects. Daikin adapter for ioBroker - in contrast to Daikin native API - allows you to change individual AC parameters separately. The most important parameters are in the ‘control’ and ‘sensorInfo’ branches. On the right you may see which objects in I have enabled MQTT publish option. Those in the ‘control’ group are also subscribed to MQTT topics for AC control.

 



Here is an example of the MQTT-client configuration of the object from ‘control’ group. MQTT publish is used to update Loxone with current state, while MQTT subscribe is for controlling object from Loxone. The MQTT-client instance has the following prefixes configured: ‘iobroker’ for MQTT-publish, ‘loxone’ for MQTT-subscribe.



After configuring MQTT options in all relevant object it's worth to look at how it looks in the MQTT broker. And it looks nice!



To communicate with Loxone over MQTT I’ve used MQTT Gateway, my favorite LoxBerry plugin.

Summary

Complete list of Virtual Inputs and Virtual Outputs I have used here and MQTT topics assigned to them. In the last column of the table I provide some key parameters, expected values and other important notes. The only VI that I did not use in my diagram is Daikin targetHum - it has a base value of 50% and IMO does not require modification.



Virtual Input

MQTT topic (for command recognition)

Expected Values

Daikin indoorTemp

iobroker/daikin/0/sensorInfo/indoorTemperature

analog, deg C

Daikin outdoorTemp

iobroker/daikin/0/sensorInfo/outdoorTemperature

analog, deg C

Daikin targetTemp

iobroker/daikin/0/control/targetTemperature

analog, deg C

Daikin targetHum

iobroker/daikin/0/control/targetHumidity

analog, % hum

Daikin power

iobroker/daikin/0/control/power

0=off, 1=on

Daikin mode

iobroker/daikin/0/control/mode

1=auto, 2=dehumi, 3=cold, 4=hot, 6=fan

Daikin fanRate

iobroker/daikin/0/control/fanRate

1=Auto, 2=Silence, 3=Level1, 4=Level2, 5=Level3, 6=Level4, 7=Level5
Please mind: A converted to 1, B converted to 2; Conversion done @ MQTT Gateway LoxBerry plugin

Daikin fanDirection

iobroker/daikin/0/control/fanDirection

0=stopped, 1=horizontal, 2=vertical, 3=both

Daikin specPowerful

iobroker/daikin/0/control/specialPowerful

0=off, 1=on

Daikin specEcono

iobroker/daikin/0/control/specialEcono

0=off, 1=on



Virtual Output

MQTT topic  (for command output)

Notes

Daikin targetTemp

loxone/daikin/0/control/targetTemperature <v>

analog output; value temp deg C (18-31)

Daikin power

loxone/daikin/0/control/power 1
loxone/daikin/0/control/power 0

Command for ON
Command for OFF

Daikin mode auto

loxone/daikin/0/control/mode 1



Daikin mode dehumi

loxone/daikin/0/control/mode 2



Daikin mode cold

loxone/daikin/0/control/mode 3



Daikin mode hot

loxone/daikin/0/control/mode 4



Daikin mode fan

loxone/daikin/0/control/mode 6



Daikin fanRate auto

loxone/daikin/0/control/fanRate A



Daikin fanRate silence

loxone/daikin/0/control/fanRate B



Daikin fanRate level1

loxone/daikin/0/control/fanRate 3



Daikin fanRate level2

loxone/daikin/0/control/fanRate 4



Daikin fanRate level3

loxone/daikin/0/control/fanRate 5



Daikin fanRate level4

loxone/daikin/0/control/fanRate 6



Daikin fanRate level5

loxone/daikin/0/control/fanRate 7



Daikin fanDirection

loxone/daikin/0/control/fanDirection <v>

analog output; 0=stopped, 1=vertical, 2=horizontal, 3=both

Daikin specPowerful

loxone/daikin/0/control/specialPowerful 1
loxone/daikin/0/control/specialPowerful 0

Command for ON
Command for OFF

Daikin specEcono

loxone/daikin/0/control/specialEcono 1
loxone/daikin/0/control/specialEcono 0

Command for ON
Command for OFF

Bonus

As a bonus, i present my proprietary condensate removal system! It was not appropriate to drop the condensate from my loggia on peoples head, so I had to figure something out. Forging in walls of half of my flat was not an option, so the condensate line had to go outside to loggia, then return inside under the radiator and from there a small water-filtration-type hose (ext. fi 6 mm) stuck to the slats goes for 12 meters to the kitchen, where it goes under the cupboards and eventually goes to the siphon under the sink. Generally it is quite a long story not finished with full success but after long experiments I managed to build this:

I forgot to say that an additional requirement was very quiet operation of the pump, so that AC might operate night time without annoying my neighbors. The first pump I bought unfortunately did not meet this requirement - it worked like a little compressor. That one, Swiss made, turned out to be really quiet. I'd say it's almost silent.

I’ve connected Shelly 1 to the pump controller, which sends an alarm state to Loxone (e.g. if there was any problem with condensate removal). There is also an Aqara Water Sensor which watches for any leakage and two DS18B20 temperature probes connected to 1-wire adapter on Shelly 1. Those four signals are connected over VI to water alarm block of my condensate removal system. In case of any issues it turns the AC Unit off by the Daikin Emergency Stop flag.

And this how condensate removal system supervision looks like in Loxone app: