Daikin Airbase Binding

Hey @JimT

On my controller at least, when I press the fan button, it toggles through low, medium, high, then auto low, auto medium, auto high.

Does yours show the same thing

@Paul_Smedley - mine does the same! I didn’t notice that before. So when it’s “Auto Low”, the binding will say Level 1, and so on. Perhaps to be more accurate it should report Auto Level1, Auto Level2, Auto Level3?

Do you know what they mean? I thought “auto” means it changes from low/med/high depending on temperature difference.

@JimT if you get a chance, can you run http://192.168.1.148/skyfi/aircon/get_control_info with each of ‘Auto Low’, ‘Auto Medium’ and ‘Auto High’ - use your IP address of course :wink:

Looking for the corresponding value of ‘f_rate’ for each setting.

I’m currently working on a ‘virtual mode’ for the Daikin binding - to work with homekit/google assistant that only support Auto, Heat, Cool & Off.

Cheers,

Paul

Hi @Paul_Smedley

I got the following, by changing only the fan settings. The lines are prefixed with “ac-xxx” where “ac-low” means fan low- not auto, vs. “ac-low-auto” means fan on auto low. There’s also another mode for just “auto” and it doesn’t show the fan speed at all. This one is prefixed as “ac-auto”.

ac-auto:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=1,dfr0=1,dfr1=1,dfr2=1,dfr3=1,f_airside=1,airside0=0,airside1=0,airside2=1,airside3=0,f_auto=0,auto0=1,auto1=0,auto2=0,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-hig-auto:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=5,dfr0=1,dfr1=1,dfr2=5,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=1,auto0=1,auto1=0,auto2=1,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-hig-manu:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=5,dfr0=1,dfr1=1,dfr2=5,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=0,auto0=1,auto1=0,auto2=0,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-low-auto:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=1,dfr0=1,dfr1=1,dfr2=1,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=1,auto0=1,auto1=0,auto2=1,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-low-manu:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=1,dfr0=1,dfr1=1,dfr2=1,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=0,auto0=1,auto1=0,auto2=0,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-med-auto:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=3,dfr0=1,dfr1=1,dfr2=3,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=1,auto0=1,auto1=0,auto2=1,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

ac-med-manu:ret=OK,pow=1,mode=2,stemp=24,dt1=22,dt2=24,dt3=25,f_rate=3,dfr0=1,dfr1=1,dfr2=3,dfr3=1,f_airside=0,airside0=0,airside1=0,airside2=0,airside3=0,f_auto=0,auto0=1,auto1=0,auto2=0,auto3=1,f_dir=0,dfd0=0,dfd1=1,dfd2=0,dfd3=0,dfd7=0,filter_sign_info=0,cent=0,en_cent=0,remo=2

Here’s the difference between auto and manual:

hig-manu vs hig-auto
f_auto=0						      |	f_auto=1
auto2=0							      |	auto2=1

low-manu vs low-auto
f_auto=0						      |	f_auto=1
auto2=0							      |	auto2=1

med-manu vs med-auto
f_auto=0						      |	f_auto=1
auto2=0							      |	auto2=1

Regarding Google Assistant integration, I created a dummy item called Aircon_Mode_Google to be presented to Google, i.e.

String Aircon_Mode "Mode" { channel="daikin:airbase_ac_unit:central_ac:mode" }
String Aircon_Mode_Google "Mode" (gAircon) [ "homekit:TargetHeatingCoolingMode" ]

Then I wrote a rule to translate between the Binding’s mode and Google’s mode as such:

// Daikin's modes: AUTO, DEHUMIDIFIER, COLD, HEAT, FAN
// Google's modes: off, heat, cool, on 

rule "Update Gogle Home Mode"
when
    Item Aircon_Mode changed
    or 
    Item Aircon_Power changed
then
    if (Aircon_Power.state == OFF) {
        Aircon_Mode_Google.sendCommand("off")
        return
    }
    switch (Aircon_Mode.state.toString) {
        case "COLD": Aircon_Mode_Google.sendCommand("cool")

        case "HEAT": Aircon_Mode_Google.sendCommand("heat")

        case "AUTO",
        case "FAN",
        case "DEHUMIDIFIER": Aircon_Mode_Google.sendCommand("on")
    }
end

rule "Received changes from Google Home mode"
when
    Item Aircon_Mode_Google received update
then
    var command = ""

    switch (Aircon_Mode_Google.state.toString) {
        case "off": Aircon_Power.sendCommand(OFF)

        case "on": Aircon_Power.sendCommand(ON)

        case "cool": command = "COLD"
        
        case "heat": command = "HEAT"
    }

    if (command != "") {
        if (Aircon_Power.state != ON) {
            Aircon_Power.sendCommand(ON)
        }
        Aircon_Mode.sendCommand(command)
    }
end

Note that Google’s “on” mode is actually “Auto” mode (I think), but since it’s summer here (QLD) right now I’m just setting it to power on the aircon at whatever the last mode was. To be correct, it should (probably??) also set the mode to Daikin’s Auto mode which I didn’t do in my rule above, as I wouldn’t want to use the aircon’s Auto mode.

It would also be nice to be able to get the “Change filter” alert (filter_sign_info??) into the binding.

Hi @JimT,

Thanks for your analysis of the auto fan modes. I’ll try fix this when I get time. Re: how these operate, there’s a whirlpool thread at https://forums.whirlpool.net.au/archive/2459942 which describes how it works.

For Google Home - I’m trying to implement what you’ve done with a dummy item and rule from within the binding - which should make it much easier for newbies. I really want to get this in before the code freeze for 2.5, but we just bought a holiday house so I have a million things to organise right now!!

Thanks for your help!

Paul

@Paul_Smedley btw, I keep seeing this in the log, for all zone1 - zone8

17:25:41.824 [WARN ] [.internal.handler.DaikinAcUnitHandler] - Received command of wrong type for thing 'daikin:airbase_ac_unit:central_ac' on channel zone6

Hey @JimT, that message has been changed to DEBUG in the git code. Will be fixed for Milestone 6.

1 Like

@Paul_Smedley, it seems that the fan setting isn’t quite working 100% from the binding. It might need to support all the 7 modes to match the 7 fan modes supported by the controller?

  • Level 1
  • Level 2
  • Level 3
  • Level 1 - Auto
  • Level 2 - Auto
  • Level 3 - Auto

Specifically, currently there’s no way for the binding to change from Level 1 Auto to Level 1 (non auto) and vice versa, for example.

PS all the best with the new house! What aircon does it have? :wink:

Hi @JimT,

Question: I can support Low, Medium High, Auto Low, Auto Medium, Auto High

Is there value in this? Given how Auto works - doesn anyone use it?

Coincidentally, the holiday house has a Daikin reverse cycle ducted system - so I’ve ordered another Airbase unit, so we can turn on the heating/cooling whilst we’re on our way down to the house :stuck_out_tongue:

@Paul_Smedley, It would be nice to be able to accurately reflect and control the real modes as reported by the system. I am still trying to understand what the “Auto” setting (without any fan level) does. There is a difference between “Level X” and “Auto Level X” too: on “Level X”, the fan is always on, whereas “Auto Level X” the fan isn’t always on. So in short, it would be great to be able to differentiate and set the exact fan mode, whether it is “Level X” or “Auto Level X” or just “Auto” for that matter.

Great news about the Daikin! It means you’ll maintain your interest in the binding :slight_smile: :slight_smile: :slight_smile:

I’ve been experimenting with rules that automatically turn on the AC early in the morning if the outside gets hot so we don’t wake up in sweat, automatically turn it off if the outside temperature became cooler than the inside, which still happens now in “spring”, etc. I’m curious to know what other people have in their rules.

Hey @JimT - don’t worry - interest in the binding will be maintained regardless - the new place is a holiday house that we will rent out :slight_smile:

I’m working on some similar automation rules to turn the air off if the inside temperature is below the setpoint and above the outside temperature. I also have a bunch of rules for heating to turn it on/off and change temperatures and zones automatically - ie turn off lounge room zone at a certain time - unless the TV is on (ie we’re still in there).

With the Auto fan settings, I can do this - I’m thinking it may be more logical to have a switch for Auto Fan On/Off; and change the fan speed to Low / Medium / High and remove Auto. (I personally think Low / Medium / High is more logical than Level_1 / Level_2 / Level_3.

Thoughts appreciated.

Cheers,

Paul

Hi @Paul_Smedley ,

I agree that Low/Medium/High is better, although, who knows, in the future, Daikin might introduce level 1, 2, 3, 4, 5… there seems to be the ability to display it on the LCD.

If you split this into two things: a) Auto Fan On/Off and b) Fan Level, it may not make sense. For example, what would the fan level be when it’s on the “Auto” mode (i.e. the one with f_auto=0,f_airside=1)?

It would be more consistent if we simply allow 7 different settings for fan speed:
AUTO, LEVEL_1, LEVEL_2, LEVEL_3, LEVEL1_AUTO, LEVEL2_AUTO, LEVEL3_AUTO

Although yes, at a glance this looks kinda silly, but these are the values that the physical controller cycles through when pressing the fan button.

I’d like to know exactly what f_airside means. The f_airside equals 1 when it’s on the “just Auto” mode, and it equals 0 when it’s on all other modes, including “auto low”, “auto medium” and “auto_high”

As of right now (the binding that came with 2.5M5), setting the binding fan to “AUTO” seems to make no difference at the controller. On the other hand, when the controller is on “Auto” (i.e. no fan level shown, f_airside=1, f_auto=0), I cannot change the fan setting using the binding no matter what value I sent.

I suspect that this “Auto” mode is the “true” auto mode that most people may actually expect ie. ramp up the fan when needed, and ramp down the fan when it reached the set temperature. Therefore when this mode is active, the f_rate might change around depending on the actual fan speed as it ramps up/down. I hope this makes sense - and this is just my speculation.

This gives me an idea to automatically turn on the room zone when the TV in that room is turned on.

Could you elaborate what you do with the temperatures?

Another rule I have:
Since each room is a separate zone, and I don’t have an “always on” zone, there is a possibility to turn off all the zones which would upset the aircon. So I wrote a rule to check when all zones are off it will turn on one zone. I had to set the binding refresh time to 15s to make it more responsive.

@Paul_Smedley

Update, I figured out what the “Auto” (f_airside=1) means. Daikin’s manual calls it “AIRSIDE” mode, and on the Airbase app, it also says Airside. Quoted from the manual:

Note on AIRSIDE function
This function may not be available depends on the connecting model

  • The percentage of fan speed is automatically set based on active zones and air flow settings for each different zones
  • Suitable Air flow settings can be selected during commissioning through field settings option

So it seems that for the binding, it should have the following options:
AIRSIDE, LEVEL_1, LEVEL_2, LEVEL_3, LEVEL1_AUTO, LEVEL2_AUTO, LEVEL3_AUTO

From the binding side, I believe you’ll need to send and check three things to determine the fan mode: f_airside, f_rate, and f_auto

Hi Guys,

Im using Paul’s binding with the Airbase unit here in Australia. All functions work correctly using the Android Airbase app

It reads just fine the settings from the unit, but I cant send commands from OH2 to the Airbase.

my things file:

daikin:airbase_ac_unit:ducted_ac [ host="192.168.0.84" ]

items:


Switch DaikinACUnit_Power  "AC"     (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:power" }
Switch DaikinACUnit_Zone1  "Zone 1" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:Front_Room" }
Switch DaikinACUnit_Zone2  "Zone 2" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:Study" }
Switch DaikinACUnit_Zone3  "Zone 3" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:Bedroom" }
Switch DaikinACUnit_Zone4  "Zone 4" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:Living" }

Number:Temperature DaikinACUnit_SetPoint    "Air Temp"         (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:setpoint", alexa="ThermostatController.targetSetpoint" [scale="Celsius"] }
String DaikinACUnit_Mode                    "Air Mode"         (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:mode", alexa="TemperatureSensor.temperature" [scale="Celsius"] }
String DaikinACUnit_Fan                     "Air Fan"          (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:fanspeed", alexa="ThermostatController.thermostatMode" }
Number:Temperature DaikinACUnit_IndoorTemp  "Indoor Temp"  (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:indoortemp", alexa="TemperatureSensor.temperature" [scale="Celsius"] }
Number:Temperature DaikinACUnit_OutdoorTemp "Outdoor Temp" (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:outdoortemp" }

I have 4 zones. Am i missing something??

Thanks!

@dastrix80

Wrong channels. I’ve written here the ones that you got wrong:

Switch DaikinACUnit_Zone1  "Zone 1" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:zone1" }
Switch DaikinACUnit_Zone2  "Zone 2" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:zone2" }
Switch DaikinACUnit_Zone3  "Zone 3" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:zone3" }
Switch DaikinACUnit_Zone4  "Zone 4" (Group_HabPanel_Dashboard)                           { channel="daikin:airbase_ac_unit:ducted_ac:zone4" }
 
Number:Temperature DaikinACUnit_SetPoint    "Air Temp"         (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:settemp", alexa="ThermostatController.targetSetpoint" [scale="Celsius"] }
String DaikinACUnit_Fan                     "Air Fan"          (Group_HabPanel_Dashboard) { channel="daikin:airbase_ac_unit:ducted_ac:airbasefanspeed", alexa="ThermostatController.thermostatMode" }

On mine, the outdoortemp isn’t working. Not sure if it’s the binding’s fault or that my system has no outdoor temp reporting. Since I have a separate outdoor thermometer, I haven’t bothered digging into it.

Thank you Jim! Yes my unit doesnt have an outdoor sensor either, so ive now deleted the channel

Are you using Alexa V3 with your Daikin? I need to name the zones right to allow my to turn them on/off

Hi @JimT

Outdoor temp worked for me when I first installed the Airbase. At some point, it stopped working. It’s not the binding’s fault as it doesn’t work in the Airbase app either. I keep hoping a firmware update will bring it back.

Cheers,

Paul

I’m using Google Home, so I’m unfamiliar with how Alexa integration works, sorry.

For Google Assistant, the item name is what it sees, so to call it Bedroom Zone, you’ll need to name the item as such:

Switch DaikinACUnit_Zone1  "Bedroom Zone" [ "Switchable" ] ...

I used the “Switchable” tag for each zone treating them as a normal on/off switch independent of the AC. I’ll ask “Hey Google, Turn on Bedroom Zone”

1 Like

Yep, that works for Alexa too! Lovely :slight_smile: It’s working great :smiley:
I just need to work out the modes with alexa…heating, cooling etc

1 Like