Integration with Daikin Skyfi app (Air conditioning)

Hi kabongsteve, I really appreciate your work to integrate Daikin. Could I kindly ask you to better explain what I need to do to activate that component after I download the code? Where I put the code? and which definition I need to setup in HA config file? Sorry, I’m not so familiar with customisation of the platform. Thank you very much. Bye

Hi alpat69,

I have updated the archive, so you’ll need to re get the files from my archive

The files go into a custom_components folder that is inside your config folder (where your configuration.yaml file is)

Once you’ve done that, you need to add the following to your configuration.yaml

climate:
platform: skyfi
host: xx.xx.xx.xx
password: nnnnn

where xx.xx.xx.xx is the ip address of your daikin skyfi.
and nnnnn is the passcode associated with the skyfi (I think it was written on the side), but it should be in your skify app as well.

restart hass and you should be good to go

Steve

Thank you very much kabongsteve for your fast and clear answer.
I tried to follow your instructions but something doesn’t work.
I’m not able to control Daikin and I received the following messages:

2017-09-01 00:33:15 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.daikin is taking over 10 seconds
2017-09-01 00:34:06 WARNING (MainThread) [homeassistant.components.climate] Updating skyfi climate took longer than the scheduled update interval 0:01:00
2017-09-01 00:35:07 WARNING (MainThread) [homeassistant.components.climate] Updating skyfi climate took longer than the scheduled update interval 0:01:00
2017-09-01 00:35:12 WARNING (Thread-9) [custom_components.climate.skyfi] GetState: Daikin failed
2017-09-01 00:36:18 WARNING (MainThread) [homeassistant.helpers.entity] Update of climate.daikin is taking over 10 seconds

Could you suggest me something to do to fix or at least debug the problem?
Thank you again

Hi there,

I’m about to undertake the same thing but with the SkyZone version of this app.
From what I’ve gathered to far, interfaces are the same, but for some reason Daikin decided to encrypt the transmission packet.

I’ve decoded the .apk’s form the android app to hopefully get an idea on their encryption method, but its a super PITA.
Wondering if you want to join forces and get this component to work with both Skyfi and SkyZone.

Not fully sure how to help.

I decoded the system by running Packet Capture on my android tablet, along with the skyfi app.

This allowed me to trace what was going on with the app and then write my own apps (various on different platforms) to get it to control the skyfi.

The taking over 10 seconds probably means your IP address or password is incorrect, so its timing out trying to connect to the controller.

Steve

This is great stuff, @kabongsteve. I’ve just ordered a Daikin heat pump that uses Skyfi, hoping to integrate it into HA once it gets installed. Thanks again for decoding the API, now that you have gotten us this far, it shouldn’t be too difficult to get this properly included as an official component in HA. I’ll see if I get time to contribute after I get my unit.

I’m having troubles even getting the component loaded.
I have ‘skyfi.py’ in a dir “custom_components” directory and I have added

----- cut here -----
climate:
platform: skyfi
host: xx.xx.xx.xx
password: nnnnn
----- cut here -----

to my configuration.yaml.

When I do a ‘check config’ I get this…

----- cut here -----
2017-09-15 14:04:40 INFO (MainThread) [homeassistant.setup] Setting up sun
2017-09-15 14:04:40 ERROR (MainThread) [homeassistant.loader] Unable to find component climate.skyfi
2017-09-15 14:04:40 INFO (MainThread) [homeassistant.setup] Setting up climate
2017-09-15 14:04:40 INFO (MainThread) [homeassistant.setup] Setting up sensor
[[snip]]
Failed config
General Errors:
- Platform not found: climate.skyfi
----- cut here -----

I’m clearly doing something wrong (and I haven’t installed custom components before). Any ideas if there’s a basic thing I am missing in setting up a custom component?

Cheers - N

Update: I’m an idiot. Didn’t put skyfi.py in a directory called ‘climate’

Back to seeing if it works now :slight_smile:

Now it works except for the famous unreliability of the responses from the Skyfi unit… It frequently reports as not responding for the set and get state, but does respond eventually

This is progress. It’s certainly better than their own phone app!

Cheers - N

Yeah no worries.
Got about 60% of the component coded up.
New protocol is a serious PITA, but I’ve got it all sorted.

Alot more data and options with SkyZone so should be fun to write automations for.
Will create a seperate component for HA too.

We should try and get some commission from Daikin for increased sales :stuck_out_tongue:

hi
i’m trying to connect HA to my daikin.
I’m in EU, the wifi module is BRP069A41
i naively tought I could use the same protocol but now i’m not so sure anymore. Connection times out. I’m pretty sure the password is right

even with a simple
curl http://192.168.x.x:2000/ac.cgi?pass=xxx

does not connects. any idea?
does the unit have to be set as AP mode?

I think I’ve got it. The BRP069A41 wifi module is indeed a different beast
With wireshark I sniffed the initial request endpoint (/common/basic_info)

And searching about that endpoint I found out that the api has been fully documented and @Leji posted a link about it in this same thread one year ago

so if @Leji doesn’t have any already written code to share, it’s time for me to write some plugin

1 Like

@ekt Have you seen this: https://www.domoticz.com/forum/viewtopic.php?f=65&t=19120&p=154508&hilit=Daikin&sid=78dcc5f13d2e3281308659ad07956706#p154508

Is that something that could be used?

@charlieball

I think I’ve stumbled on that when I was researching, but I haven’t checked the code.
however, communication with these modules is really simple (and scary! totally open, no security at all). once you know the endpoints (documented in the link @Leji posted) it’s just almost a matter of a string parse

I actually started looking at it, in order to write something and submit a PR (or whatever the procedure is here)
but then I got lost

it seems there is already some code in the discovery code (daikin.py, netdisco component). that code is probing for exactly the protocol i’m interested in. but it’s not finished. or outdated. or both. or I don’t get it

given I know very little of hass internal architecture, I’m unsure if I should write a new device, and in this case does it share any info from the discovery phase? or the discovery thing should just be finished/fixed. or scrapped altogether.

work seemed a little too much, so I lost faith :sweat_smile:

Have you contacted @rofrantz (https://github.com/rofrantz) he seems to be the main contributor for the Daikin integration in netdisco?

no I didn’t. thanks to pointing out

Thank you @kabongsteve for all your work with the github page.

I’ve managed to get it up and running by placing the skyfi.py file here: “\HASSIO\config\custom_components\climate”

I can see the climate.daikin component appearing and seem to be able to set controls but nothing happens.

When I check the logs, this keeps appearing around once per min.
“WARNING (SyncWorker_9) [custom_components.climate.skyfi] GetState: Daikin failed”

Also the following will appear once per hr.
“WARNING (MainThread) [homeassistant.components.climate] Updating skyfi climate took longer than the scheduled update interval 0:01:00”

I’m running HASS.IO on rpi3 (keeping up to date with the latest version) with Let’s Encrypt if that helps.

Would appreciate any insights on how to get the skyfi module to actually connect to Home Assistant.

Thanks again,
Reed

Hi Reed,

You should be able to communicate with the SkyFi controller from a web browser.
you need to know the ip address

eg to get the current details you use the ip address and put in your password
http://192.168.0.25:2000/ac.cgi?pass=XXXX

this should return a string like
opmode=0&units=.&settemp=21.0&fanspeed=3&fanflags=1&acmode=2&tonact=0&toffact=0&prog=0&time=04:02&day=6&roomtemp=34&outsidetemp=0&louvre=1&zone=0&flt=0&test=0&errdata=48&sensors=1

or to set it with
http://192.168.0.25:2000/set.cgi?pass=XXXXX&p=1&t=23.5&f=2

if you can get this to work, then the skyfi.py should work.

If you use Android and the skyfi app.
Install “Packet Capture”
run it and start capturing
then run the skify app and do some setting
return to packet capture and see the traffic to/from the controller.

hopefully you’ll find all the details you need

Steve

I also have the European BRP069A42. I used to have Domoticz (linked above) and wrote the python/lua integration for that (https://www.domoticz.com/wiki/Daikin_wifi#Domoticz_integrated_Daikin_support), based on the links in the start of this thread. However, I switched to home assistant, so I will need a new integration. My conclusion from this thread is that there is no such integration, so I have to make a custom file myself, or is anyone already working on that?

Second question, why is the Skify integration not added to Home Assistent?

I wrote a climate platform for Daikin BRP069A42

https://github.com/robhuls/home-assistant/blob/dev/homeassistant/components/climate/daikin.py

From the fact that I forked home-assistant, you could conclude that I will make an attempt for a pull request to get this into future versions of home assistant.

2 Likes