Daikin Integration - Updated 2022-09-26

Ok, that makes sense then. But what is the model number of your adapter? Because mine never worked with the local integration (HA default one).

I have recently updated my firmware on Daikin AC and the integration with local IP control stopped working for me.
I looked into the protocol between the app and AC and instead of http://ac-ip/aircon/get_sensor_info
it now uses http://ac-ip/dsiot/multireq and there is so much data and it is not static so I cannot just save some request for ON/OFF or temperature change, it is generated based on a previous status request and all that info is unreadable and huge.

Does anyone have any idea what to do other then replacing this AC with another brand and losing a lot of money?

Just out of curiosity what is the model of your wifi adapter and the firmware version? Because I just tried the endpoint you mention on my BRP069C4 and it doesn’t work.

Model is Daikin Zetas Inverter FTKZ09VV2S.
Don’t know the adapter model, it is a built-in model. Manufacture year is 2022
Firmware is 2.8.0

The adapter model should be listed inside the ONECTA app. Even though it’s built in you can still check the model.

Replace the wifi controller board with this:

1 Like

Can you elaborate how you found that protocol changed to http://192.168.0.229/dsiot/multireq?
I tried it and now get “GET Method Not Allowed”
Compared to the previous “http://192.168.0.229/aircon/get_sensor_info” get response
“Page Not Found /aircon/get_sensor_info”

I install proxy app (Charles) on my phone and captured the requests that the Daikin mobile controller does.
Problem with this mulrireq request is that it is always different. You cannot “save” specific json request to stop or start the AC and then fire these specific requests. i.e. same request to stop that AC will not work twice. (weird right?)
First there is a request for AC’s data and parameters. And then as I suspect all request are generated based on that one. Which is a very stupid thing to do because this does not really makes the whole thing secure, just more complicated.

If you like I can attach some examples but you can easily capture them on your own and maybe get lucky and understand how they work.

Is there another free app that could be used, instead of this paid app?
I’ll give WireShark on the PC a go to capture data on the IP address, but not sure if that will work.

Oh yea, I forgot that Charles is a paid app.
But as an alternative I think you can install an Android simulator on a PC, Daikin app and use WireShark to log the requests from it. But for me Charles looked like a good solution totally worth the money because it is not an easy task to log requests from the phone - it creates a virtual VPN to get the traffic. Also - it can also grab SSL requests succesfully which is amazing (but not required for Daikin protocol). And 10 bucks is not 100 so it’s ok for me.

I also send some example of my AC usage - stop and start the AC. Maybe you can understand it better than me.
start
stop

Yep, did what you suggested, Wireshark +Daikin App on Bluestacks.
This is what I got, but can’t work out the URL structure to send.
There must be a way!!
The key to this is obviously AC-IP/dsiot/multireq
But what a about a single request, instead of multiple request (how?).

PUT /dsiot/multireq HTTP/1.1…
Content-Type: application/json…
User-Agent: Dalvik/2.1.0 (Linux; U; Android 7.1.1; ONEPLUS A5000 Build/NMF26X)…
Host: 192.168.0.229…
Connection: Keep-Alive…Accept-Encoding: gzip…
Content-Length: 339…{
“requests”:[{“op”:3,“pc”:{“pch”:[{“pch”:[{“pch”:[{“pn”:“p_01”,“pv”:“00”}],“pn”:“e_A002”},{“pch”:[{“pn”:“p_2F”,“pv”:“02”},{“pn”:“p_01”,“pv”:“0300”},{“pn”:“p_1D”,“pv”:“2c”},{“pn”:“p_26”,“pv”:“0A00”}],“pn”:“e_3001”},{“pch”:[{“pn”:“p_2D”,“pv”:“01”}],“pn”:“e_3003”}],“pn”:“e_1002”}],“pn”:“dgc_status”},“to”:"/dsiot/edge/adr_0100.dgc_status"}]}

I think they wanted to make life better and for example when you want to change fan speed and temperature and something else in one second they will combine the requests. No idea how that can save traffic or something else. If they wanted encryption - they could have just done it and send a base64 string with command that is encrypted for example
So as far as I understand - first we request some things from AC and then use this information and generate requests based on that.
But as I said - I was not able to understand how everything works. And AC refuses to accept the same request again (looks like it is generated for one time only). But I may be wrong and just sending wrong requests.

I just learnt by another user that Daikin is planning to make the cloud API opensource for DIY at the end of this year, I hoe this is true.

It seems the important parts are the requests and responses, “requests” are sent to make changes and “responses” are sent constant changes on every parameter (some parameters will constantly change).

Also I see that similar traces have been done to what you and I have done and further work is being done to decipher the codes, hope they can work it out and re-implement a working integration again in HA.
see last comments in Daikin WIFI controller BRP084Cxx firmware update from 1.19.0 to 2.8.0 breaks local API · Issue #99251 · home-assistant/core · GitHub

Still, you would have lost local control for cloud.

Yes, and I think most of HA community don’t like clouds and prefer local smart home system.
Some don’t like but some (like me) just hate them. Being a software developer for 15+ years I know how everyone try to monitor and control you and squeeze every tiny bit of information about you as they could. And nobody gives a damn about privacy policy and agreements. So I am strongly against proprietary apps and clouds when it comes to home automation.
Sorry, that is a bit off-topic and too much information.

Still, opening up the cloud API is a huge step for Daikin.

Totally agree, local API is the way!!

BTW: I downloaded the Windows version of Charles Proxy, set the proxy on my iphone to the PC IP for port 8888 and it is great to see the data flow, requests, responses. It is obviously not encrypted, so local access should be possible, the settings are sent with POST and PUT method, as a software developer do you understand this method better?

I just ordered one and will try on one of my 5 new devices. If it works i will order 4 more.

2 Likes

Oh I was so stupid. I took the request example from the proxy and replaced \\" for \" but did not notice \\/ that need replacing to \/
so I had "\\/dsiot\\/edge\\/adr_0100.dgc_status" instead of "\/dsiot\/edge\/adr_0100.dgc_status"
and the command obviously failed.
so now everything works. just need to record commands with proxy and then can implement them and later add to home assistant too.

I have a Faikin installed. Super simple setup and completely local. The developer is very responsive to issues. Very happy I went that route instead of one of the official Daikin modules.

1 Like

great, may i contact you if i run into problems ?