Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Daikin WIFI controller BRP084Cxx firmware update from 1.19.0 to 2.8.0 breaks local API #99251

Open
epajfl00 opened this issue Aug 29, 2023 · 73 comments

Comments

@epajfl00
Copy link

The problem

Recently, there was an update to the Daikin mobile app, when this was updated, it showed that a firmware update was available for the wifi controller which was running at 1.19.0, and all good.
The update was ver 2.8.0 so that was done. The mobile app is fine and controls as expected, all good.

However, HA latest on version 2023.8.3, failed to connect, so all entities are now unavailable.
Tried to communicate directly with the API commands on the host address, “page not found”, was the result for any commands. So I can no longer communicate with it directly, as before.

A firmware roll-back of the update is not possible.

BTW, for information I’ve found that my controller must be a “BRP084C44”.
See below link.
Daikin (daikinthai.com) 2

Any thoughts?

What version of Home Assistant Core has the issue?

2023.8.3

What was the last working version of Home Assistant Core?

No response

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Daikin AC

Link to integration documentation on our website

No response

Diagnostics information

No response

Example YAML snippet

No response

Anything in the logs that might be useful for us?

No response

Additional information

No response

@home-assistant
Copy link

Hey there @fredrike, mind taking a look at this issue as it has been labeled with an integration (daikin) you are listed as a code owner for? Thanks!

Code owner commands

Code owners of daikin can trigger bot actions by commenting:

  • @home-assistant close Closes the issue.
  • @home-assistant rename Awesome new title Renames the issue.
  • @home-assistant reopen Reopen the issue.
  • @home-assistant unassign daikin Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


daikin documentation
daikin source
(message by IssueLinks)

@starryalley
Copy link

starryalley commented Aug 29, 2023

I have 2 split systems (FTXM20WVMA and 35 one) installed today which both use BRP084C44. Both come with v1.1.30 firmware and I updated 1 of them to the latest 2.8.0 without knowing anything yet. And then I tried to configure both in Daikin Mobile Controller (I'm in Australia) and only the one with 2.8.0 can be controlled successfully. Weird thing is only in iOS can I see the "update firmware" choice. In Android I just see "adapter does not respond" error. Nothing I can do there in Android.

And now that I tried to configure them in HA, both can't be connected. When I tried to configure using Daikin AC integration and manually entered the IP, it just said Unexpected Error:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/daikin/config_flow.py", line 74, in _create_device
    device = await Appliance.factory(
             ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/pydaikin/daikin_base.py", line 86, in factory
    await appl.init()
  File "/usr/local/lib/python3.11/site-packages/pydaikin/daikin_airbase.py", line 68, in init
    raise Exception("Empty values.")
Exception: Empty values.

Not sure if this is related, but just sharing what I had.

@fredrike
Copy link
Contributor

There is a big warning on the integration page: https://www.home-assistant.io/integrations/daikin/

bild

This is probably the same issue with your BRP084C44.

Only solution as I see it is to use https://github.com/revk/ESP32-Faikin.

@hank418
Copy link

hank418 commented Sep 1, 2023

same issue with @epajfl00

@Zepherman
Copy link

Same here, have lost connection in HA, was working perfectly prior to updating the daikin wifi module from 1.19.0 to 2.8.0
Daikin mobile controller app is working.
Now getting Unexpected Error when trying to add to HA.

@DKSUSHI
Copy link

DKSUSHI commented Sep 1, 2023

Same issue. Is it possible to downgrade the firmware version 1.9.0 of the AC ?"

@fredrike
Copy link
Contributor

fredrike commented Sep 1, 2023

This is not a forum nor a support channel. Please open a discussion in the forum section of Home Assistant and file a complaint against Daikin that they have broken local integration.

@fredrike
Copy link
Contributor

fredrike commented Sep 1, 2023

@home-assistant rename Daikin WIFI controller BRP084Cxx firmware update from 1.19.0 to 2.8.0 breaks local API

@home-assistant home-assistant bot changed the title Daikin WIFI controller firmware update from 1.19.0 to 2.8.0, now it is broken! Daikin WIFI controller BRP084Cxx firmware update from 1.19.0 to 2.8.0 breaks local API Sep 1, 2023
@fredrike
Copy link
Contributor

fredrike commented Sep 1, 2023

@home-assistant close

@home-assistant home-assistant bot closed this as completed Sep 1, 2023
@chrisp250
Copy link

The local API must still work, as the app can still access the aircon locally without going to the cloud. Maybe it was changed to require encryption or some other breaking change.

@starryalley
Copy link

Yes the local API still works over http. I captured some using mitproxy from a iOS Daikin Mobile Controller just to take a quick look:

image

Unfortunately I can't figure out anything at all about the payload. For example this PUT payload is sent to adjust temperature from 19 to 18 in heat mode:

{
    "requests": [
        {
            "op": 3,
            "pc": {
                "pch": [
                    {
                        "pch": [
                            {
                                "pch": [
                                    {
                                        "pn": "p_01",
                                        "pv": "0100"
                                    },
                                    {
                                        "pn": "p_08",
                                        "pv": "000000"
                                    },
                                    {
                                        "pn": "p_03",
                                        "pv": "24"
                                    },
                                    {
                                        "pn": "p_07",
                                        "pv": "0F0000"
                                    },
                                    {
                                        "pn": "p_0A",
                                        "pv": "0A00"
                                    }
                                ],
                                "pn": "e_3001"
                            },
                            {
                                "pch": [
                                    {
                                        "pn": "p_01",
                                        "pv": "01"
                                    }
                                ],
                                "pn": "e_A002"
                            },
                            {
                                "pch": [
                                    {
                                        "pn": "p_2D",
                                        "pv": "02"
                                    }
                                ],
                                "pn": "e_3003"
                            }
                        ],
                        "pn": "e_1002"
                    }
                ],
                "pn": "dgc_status"
            },
            "to": "/dsiot/edge/adr_0100.dgc_status"
        }
    ]
}

And adjusting air flow direction also goes to the same endpoint for example. This is from vertical to off.

{
    "requests": [
        {
            "op": 3,
            "pc": {
                "pch": [
                    {
                        "pch": [
                            {
                                "pch": [
                                    {
                                        "pn": "p_2D",
                                        "pv": "02"
                                    }
                                ],
                                "pn": "e_3003"
                            },
                            {
                                "pch": [
                                    {
                                        "pn": "p_03",
                                        "pv": "24"
                                    },
                                    {
                                        "pn": "p_01",
                                        "pv": "0100"
                                    },
                                    {
                                        "pn": "p_07",
                                        "pv": "000000"
                                    },
                                    {
                                        "pn": "p_0A",
                                        "pv": "0A00"
                                    },
                                    {
                                        "pn": "p_08",
                                        "pv": "000000"
                                    }
                                ],
                                "pn": "e_3001"
                            },
                            {
                                "pch": [
                                    {
                                        "pn": "p_01",
                                        "pv": "01"
                                    }
                                ],
                                "pn": "e_A002"
                            }
                        ],
                        "pn": "e_1002"
                    }
                ],
                "pn": "dgc_status"
            },
            "to": "/dsiot/edge/adr_0100.dgc_status"
        }
    ]
}

@chrisp250
Copy link

chrisp250 commented Sep 9, 2023

Thanks for that @starryalley. I had a look but the two captures are not enough to reverse engineer the protocol. However it seems that register p_07 is where the key is. I've extracted the elements from e_3001 of the two captures, and put them in order. Only one register changed between the two commands, see below.

#Temperature from 19 to 18 in Heat mode
pn	:	p_01 #Same value as below
pv	:	0100

pn	:	p_03 #Same value as below
pv	:	24

pn	:	p_07 #This is different, I would guess this where the temperature is encoded
pv	:	0F0000

pn	:	p_08 #Same value as below
pv	:	000000

pn	:	p_0A #Same value as below
pv	:	0A00



#Direction from vertical to off
pn	:	p_01
pv	:	0100

pn	:	p_03
pv	:	24

pn	:	p_07
pv	:	000000

pn	:	p_08
pv	:	000000

pn	:	p_0A
pv	:	0A00

@fredrike
Copy link
Contributor

@home-assistant reopen

@home-assistant home-assistant bot reopened this Sep 10, 2023
@fredrike
Copy link
Contributor

With support for local api we might be able to make integration work again. Nice findings @starryalley!

Please send me pm in the forum so we can document the new api and implement support.

@fredrike
Copy link
Contributor

@icovada can you help us with decipher and implement support for 2.8?

@icovada
Copy link
Contributor

icovada commented Sep 10, 2023

Interesting, looks like they moved to a more correct use of APIs: POST/PUT with payload instead of GET with args to change stuff!

This of course breaks everything...

@starryalley could you provide us with a pcap/log file of the requests you saw, possibly starting from when you open the app on your phone?

Also as many commands as you can with detailed instructions of what you changed (one thing at a time, obviously)

@chrisp250
Copy link

Hi,
I have an M1 Mac, which allows you to run iOS apps, so I was able to install the Daikin phone app and use tcpdump.
Please see my findings below:

This is the with unit in heating mode, and OFF, switching the set point to 18.5C, note the value in p_03 is 25.

{"requests":[{"op":3,"to":"\/dsiot\/edge\/adr_0100.dgc_status","pc":{"pn":"dgc_status","pch":[{"pn":"e_1002","pch":[{"pn":"e_3001","pch":[{"pn":"p_08","pv":"000000"},{"pn":"p_03","pv":"25"},{"pn":"p_0A","pv":"0500"},{"pn":"p_2D","pv":"00"},{"pn":"p_01","pv":"0100"},{"pn":"p_07","pv":"0F0000"}]},{"pn":"e_3003","pch":[{"pn":"p_2D","pv":"02"}]},{"pn":"e_A002","pch":[{"pn":"p_01","pv":"00"}]}]}]}}]}

This is in the same state, now switching the set point to 19C, now p_03 is 26.

{"requests":[{"op":3,"to":"\/dsiot\/edge\/adr_0100.dgc_status","pc":{"pn":"dgc_status","pch":[{"pn":"e_1002","pch":[{"pn":"e_3001","pch":[{"pn":"p_07","pv":"0F0000"},{"pn":"p_08","pv":"000000"},{"pn":"p_03","pv":"26"},{"pn":"p_0A","pv":"0500"},{"pn":"p_2D","pv":"00"},{"pn":"p_01","pv":"0100"}]},{"pn":"e_A002","pch":[{"pn":"p_01","pv":"00"}]},{"pn":"e_3003","pch":[{"pn":"p_2D","pv":"02"}]}]}]}}]}

Now moving up to 19.5c, now p_03 is, you guessed it, 27.

{"requests":[{"op":3,"to":"\/dsiot\/edge\/adr_0100.dgc_status","pc":{"pn":"dgc_status","pch":[{"pn":"e_1002","pch":[{"pn":"e_3001","pch":[{"pn":"p_07","pv":"0F0000"},{"pn":"p_2D","pv":"00"},{"pn":"p_08","pv":"000000"},{"pn":"p_01","pv":"0100"},{"pn":"p_03","pv":"27"},{"pn":"p_0A","pv":"0500"}]},{"pn":"e_A002","pch":[{"pn":"p_01","pv":"00"}]},{"pn":"e_3003","pch":[{"pn":"p_2D","pv":"02"}]}]}]}}]}

I need to find a better way to do these captures, tcpdump is very basic.
Cheers
Christian

@chrisp250
Copy link

I also captured the regular handshake of the app. This happens regularly without touching anything on the GUI.
Please note:
All these transactions happen as part of a single regular update
Also as some of the responses consist on multiple packets, it's hard to see on tcpdump where the beginning of the payload is on subsequent packets, so I might have missed one or two characters.

{"requests":[{"op":2,"to":"\/dsiot\/edge.adp_i?filter=pv"},{"op":2,"to":"\/dsiot\/edge.adp_d?filter=pv"},{"op":2,"to":"\/dsiot\/edge.adp_f?filter=pv"},{"op":2,"to":"\/dsiot\/edge.dev_i?filter=pv"},{"op":2,"to":"\/dsiot\/edge\/adr_0100.dgc_status?filter=pv"}]}
{"responses":[{"fr":"/dsiot/edge.adp_i","pc":{"pn":"adp_i","pt":1,"pch":[{"pn":"kind","pt":3,"pv":4},{"pn":"ver","pt":3,"pv":"2_8_0"},{"pn":"rev","pt":3,"pv":"6714e2aa"},{"pn":"reg","pt":3,"pv":"th"},{"pn":"mac","pt":3,"pv":"9C50D1BD1AAE"},{"pn":"ssid","pt":3,"pv":"DaikinAP00530"},{"pn":"enlv","pt":3,"pv":"2.20"},{"pn":"edid","pt":3,"pv":"0000000002297705"},{"pn":"func","pt":1,"pch":[{"pn":"en_ipower","pt":3,"pv":1},{"pn":"en_ipw_sep","pt":3,"pv":0},{"pn":"en_scdltmr","pt":3,"pv":1},{"pn":"en_patrol","pt":3,"pv":0},{"pn":"en_demand","pt":3,"pv":0}]}]},"rsc":2000},{"fr":"/dsiot/edge.adp_d","pc":{"pn":"adp_d","pt":1,"pch":[{"pn":"timz","pt":1,"pch":[{"pn":"tmdf","pt":2,"pv":600},{"pn":"dst","pt":2,"pv":1},{"pn":"zone","pt":2,"pv":345}]},{"pn":"name","pt":2,"pv":"Studio"},{"pn":"icon","pt":2,"pv":4},{"pn":"location","pt":2,"pv":0},{"pn":"led","pt":2,"pv":1},{"pn":"holiday","pt":2,"pv":0},{"pn":"notify","pt":1,"pch":[{"pn":"auto_off_flg","pt":2,"pv":0},{"pn":"auto_off_tm","pt":2,"pv":"- -"}]},{"pn":"group","pt":1,"pch":[{"pn":"ena","pt":2,"pv":0},{"pn":"name","pt":2,"pv":null}]},{"pn":"method","pt":2,"pv":"polling"},{"pn":"lpw_flag","pt":2,"pv":0},{"pn":"adp_mode","pt":3,"pv":"ap_run"},{"pn":"disp_ssid","pt":2,"pv":0}]},"rsc":2000},{"fr":"/dsiot/edge.adp_f","pc":{"pn":"adp_f","pt":1,"pch":[{"pn":"firmware_type","pt":3,"pv":"wlan_adp_gen4"},{"pn":"auto_update","pt":2,"pv":0}]},"rsc"
{"fr":"/dsiot/edge.dev_i","pc":{"pn":"dev_i","pt":1,"pch":[{"pn":"pver","pt":3,"pv":"03.000"},{"pn":"type","pt":3,"pv":"RA"},{"pn":"n_inu","pt":3,"pv":1},{"pn":"n_oun","pt":3,"pv":1},{"pn":"n_rem","pt":3,"pv":0},{"pn":"comm_err","pt":3,"pv":0}]},"rsc":2000},{"fr":"/dsiot/edge/adr_0100.dgc_status","pc":{"pn":"dgc_status","pt":1,"pch":[{"pn":"data_model_code","pt":3,"pv":26},{"pn":"root_entity_name","pt":3,"pv":"e_1002"},{"pn":"e_1002","pt":1,"pch":[{"pn":"e_A001","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"20202020202020202020202020202020202020202020"},{"pn":"p_03","pt":3,"pv":"2300"},{"pn":"p_07","pt":3,"pv":"00"},{"pn":"p_08","pt":3,"pv":"1A000000"},{"pn":"p_09","pt":3,"pv":"3030"},{"pn":"p_0A","pt":3,"pv":"202020202020"},{"pn":"p_0B","pt":3,"pv":"202020202020202020202020202020"},{"pn":"p_0C","pt":3,"pv":"00"},{"pn":"p_0D","pt":3,"pv":"38393431"},{"pn":"p_0E","pt":3,"pv":"01"},{"pn":"p_0F","pt":2,"pv":"454141314442314430354339"},{"pn":"p_10","pt":3,"pv":"3A00"},{"pn":"p_11","pt":3,"pv":"30"},{"pn":"p_12","pt":3,"pv":"30"},{"pn":"p_13","pt":3,"pv":"3030303030303032"},{"pn":"p_14","pt":3,"pv":"303030303030303030303030"},{"pn":"p_15","pt":3,"pv":"2020"}]},{"pn":"e_A010","pt":1,"pch":[{"pn":"p_07","pt":3,"pv":"00"}]},{"pn":"e_A004","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"00002D3030"},{"pn":"p_03","pt":3,"pv":"00"},{"pn":"p_04","pt":3,"pv":"00"},{"pn":"p_05","pt":3,"pv":"00"},{"
pn":"p_09","pt":3,"pv":"00002D3048"},{"pn":"p_0A","pt":3,"pv":"00"},{"pn":"p_0B","pt":3,"pv":"00"},{"pn":"p_0C","pt":3,"pv":"00"}]},{"pn":"e_A002","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"00"}]},{"pn":"e_200B","pt":1,"pch":[]},{"pn":"e_A00B","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"14"},{"pn":"p_02","pt":3,"pv":"2D"},{"pn":"p_05","pt":3,"pv":"2800"},{"pn":"p_06","pt":3,"pv":"2800"}]},{"pn":"e_2016","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"03DA0020"}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"6011"},{"pn":"p_03","pt":3,"pv":"6011"}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"8005"},{"pn":"p_03","pt":3,"pv":"8005"}]},{"pn":"e_2025","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"400D"},{"pn":"p_03","pt":3,"pv":"400D"}]},{"pn":"e_2025","pt":1,"pch":[]},{"pn":"e_2028","pt":1,"pch":[{"pn":"p_03","pt":3,"pv":"0000"},{"pn":"p_04","pt":3,"pv":"0000"},{"pn":"e_2007","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"000000"},{"pn":"p_03","pt":3,"pv":"347E00"}]}]},{"pn":"e_2029","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"2B00"}]},{"pn":"e_3003","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"01"},{"pn":"p_02","pt":3,"pv":"00"},{"pn":"p_0C","pt":3,"pv":"2F"},{"pn":"p_1A","pt":3,"pv":"32"},{"pn":"p_1B","pt":3,"pv":"00"},{"pn":"p_1D","pt":3,"pv":"00"},{"pn":"p_20","pt":3,"pv":"01"},{"pn":"p_26","pt":3,"pv":"00"},{"pn":"p_27","pt":3,"pv":"00"},{"pn":"p_28","pt":3,"pv":"01"},{"pn":"p_29","pt":3,"pv
:"00"},{"pn":"p_2A","pt":3,"pv":"00"},{"pn":"p_2C","pt":3,"pv":"00"},{"pn":"p_2D","pt":2,"pv":"00"},{"pn":"p_2F","pt":3,"pv":"0400"},{"pn":"p_30","pt":3,"pv":"00"},{"pn":"p_36","pt":2,"pv":"00"},{"pn":"p_37","pt":3,"pv":"00"},{"pn":"p_38","pt":3,"pv":"010000"},{"pn":"p_3A","pt":3,"pv":"0000"},{"pn":"p_3B","pt":3,"pv":"0000"},{"pn":"p_41","pt":2,"pv":"000039353336323532303036313532"},{"pn":"p_4D","pt":3,"pv":"00"},{"pn":"p_31","pt":3,"pv":"00002D3030"},{"pn":"p_32","pt":3,"pv":"00"},{"pn":"p_33","pt":3,"pv":"00"},{"pn":"p_34","pt":3,"pv":"00"}]},{"pn":"e_3001","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"0100"},{"pn":"p_02","pt":2,"pv":"32"},{"pn":"p_03","pt":2,"pv":"27"},{"pn":"p_05","pt":2,"pv":"00000000"},{"pn":"p_06","pt":2,"pv":"000000"},{"pn":"p_07","pt":2,"pv":"0F000000"},{"pn":"p_08","pt":2,"pv":"000000"},{"pn":"p_09","pt":2,"pv":"0A00"},{"pn":"p_0A","pt":2,"pv":"0500"},{"pn":"p_1D","pt":2,"pv":"32"},{"pn":"p_20","pt":2,"pv":"00000000"},{"pn":"p_21","pt":2,"pv":"000000"},{"pn":"p_22","pt":2,"pv":"00000000"},{"pn":"p_23","pt":2,"pv":"000000"},{"pn":"p_24","pt":2,"pv":"00000000"},{"pn":"p_25","pt":2,"pv":"000000"},{"pn":"p_26","pt":2,"pv":"0A00"},{"pn":"p_27","pt":2,"pv":"0A00"},{"pn":"p_28","pt":2,"pv":"0A00"},{"pn":"p_34","pt":2,"pv":"00"}]},{"pn":"e_A011","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"01"},{"pn":"p_02","pt":3,"pv":"00"},{"pn":"p_03","pt":2,"pv":"00"},{"pn":"p_06",
pt":3,"pv":"0000"},{"pn":"p_07","pt":3,"pv":"0000"},{"pn":"p_08","pt":3,"pv":"0000"},{"pn":"p_09","pt":3,"pv":"0000"},{"pn":"p_0A","pt":3,"pv":"0000"},{"pn":"p_0B","pt":3,"pv":"0000"},{"pn":"p_0C","pt":3,"pv":"0000"}]},{"pn":"e_A006","pt":1,"pch":[{"pn":"p_0E","pt":3,"pv":"0000"},{"pn":"p_0F","pt":3,"pv":"00"},{"pn":"p_10","pt":3,"pv":"32303330333033303330"},{"pn":"p_11","pt":3,"pv":"0800"},{"pn":"p_13","pt":3,"pv":"08"},{"pn":"p_14","pt":3,"pv":"00"},{"pn":"p_15","pt":3,"pv":"30303030303030303030"},{"pn":"p_16","pt":3,"pv":"0000"}]}]}]},"rsc":2000}]}


{"requests":[{"op":2,"to":"\/dsiot\/edge\/adr_0100.dgc_status?filter=pv"},{"op":2,"to":"\/dsiot\/edge\/adr_0200.dgc_status?filter=pv"}]}

{"responses":[{"fr":"/dsiot/edge/adr_0100.dgc_status","pc":{"pn":"dgc_status","pt":1,"pch":[{"pn":"data_model_code","pt":3,"pv":26},{"pn":"root_entity_name","pt":3,"pv":"e_1002"},{"pn":"e_1002","pt":1,"pch":[{"pn":"e_A001","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"20202020202020202020202020202020202020202020"},{"pn":"p_03","pt":3,"pv":"2300"},{"pn":"p_07","pt":3,"pv":"00"},{"pn":"p_08","pt":3,"pv":"1A000000"},{"pn":"p_09","pt":3,"pv":"3030"},{"pn":"p_0A","pt":3,"pv":"202020202020"},{"pn":"p_0B","pt":3,"pv":"202020202020202020202020202020"},{"pn":"p_0C","pt":3,"pv":"00"},{"pn":"p_0D","pt":3,"pv":"38393431"},{"pn":"p_0E","pt":3,"pv":"01"},{"pn":"p_0F","pt":2,"pv":"454141314442314430354339"},{"pn":"p_10","pt":3,"pv":"3A00"},{"pn":"p_11","pt":3,"pv":"30"},{"pn":"p_12","pt":3,"pv":"30"},{"pn":"p_13","pt":3,"pv":"3030303030303032"},{"pn":"p_14","pt":3,"pv":"303030303030303030303030"},{"pn":"p_15","pt":3,"pv":"2020"}]},{"pn":"e_A010","pt":1,"pch":[{"pn":"p_07","pt":3,"pv":"00"}]},{"pn":"e_A004","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"00002D3030"},{"pn":"p_03","pt":3,"pv":"00"},{"pn":"p_04","pt":3,"pv":"00"},{"pn":"p_05","pt":3,"pv":"00"},{"pn":"p_09","pt":3,"pv":"00002D3048"},{"pn":"p_0A","pt":3,"pv":"00"},{"pn":"p_0B","pt":3,"pv":"00"},{"pn":"p_0C","pt":3,"pv":"00"}]},{"pn":"e_A002","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"00"}]},{"pn":"e_200B","pt":1,"pch":[]},{"pn":"e_A00B","pt":1,"pc
:[{"pn":"p_01","pt":3,"pv":"14"},{"pn":"p_02","pt":3,"pv":"2D"},{"pn":"p_05","pt":3,"pv":"2800"},{"pn":"p_06","pt":3,"pv":"2800"}]},{"pn":"e_2016","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"03DA0020"}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"6011"},{"pn":"p_03","pt":3,"pv":"6011"}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"8005"},{"pn":"p_03","pt":3,"pv":"8005"}]},{"pn":"e_2025","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"400D"},{"pn":"p_03","pt":3,"pv":"400D"}]},{"pn":"e_2025","pt":1,"pch":[]},{"pn":"e_2028","pt":1,"pch":[{"pn":"p_03","pt":3,"pv":"0000"},{"pn":"p_04","pt":3,"pv":"0000"},{"pn":"e_2007","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"000000"},{"pn":"p_03","pt":3,"pv":"347E00"}]}]},{"pn":"e_2029","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"2B00"}]},{"pn":"e_3003","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"01"},{"pn":"p_02","pt":3,"pv":"00"},{"pn":"p_0C","pt":3,"pv":"2F"},{"pn":"p_1A","pt":3,"pv":"32"},{"pn":"p_1B","pt":3,"pv":"00"},{"pn":"p_1D","pt":3,"pv":"00"},{"pn":"p_20","pt":3,"pv":"01"},{"pn":"p_26","pt":3,"pv":"00"},{"pn":"p_27","pt":3,"pv":"00"},{"pn":"p_28","pt":3,"pv":"01"},{"pn":"p_29","pt":3,"pv":"00"},{"pn":"p_2A","pt":3,"pv":"00"},{"pn":"p_2C","pt":3,"pv":"00"},{"pn":"p_2D","pt":2,"pv":"00"},{"pn":"p_2F","pt":3,"pv":"0400"},{"pn":"p_30","pt":3,"pv":"00"},{"pn":"p_36","pt":2,"pv":"00"},{"pn":"p_37","pt":3,"pv":"00"},{"pn":"p_38","pt":3,"pv"
"010000"},{"pn":"p_3A","pt":3,"pv":"0000"},{"pn":"p_3B","pt":3,"pv":"0000"},{"pn":"p_41","pt":2,"pv":"000039353336323532303036313532"},{"pn":"p_4D","pt":3,"pv":"00"},{"pn":"p_31","pt":3,"pv":"00002D3030"},{"pn":"p_32","pt":3,"pv":"00"},{"pn":"p_33","pt":3,"pv":"00"},{"pn":"p_34","pt":3,"pv":"00"}]},{"pn":"e_3001","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"0100"},{"pn":"p_02","pt":2,"pv":"32"},{"pn":"p_03","pt":2,"pv":"27"},{"pn":"p_05","pt":2,"pv":"00000000"},{"pn":"p_06","pt":2,"pv":"000000"},{"pn":"p_07","pt":2,"pv":"0F000000"},{"pn":"p_08","pt":2,"pv":"000000"},{"pn":"p_09","pt":2,"pv":"0A00"},{"pn":"p_0A","pt":2,"pv":"0500"},{"pn":"p_1D","pt":2,"pv":"32"},{"pn":"p_20","pt":2,"pv":"00000000"},{"pn":"p_21","pt":2,"pv":"000000"},{"pn":"p_22","pt":2,"pv":"00000000"},{"pn":"p_23","pt":2,"pv":"000000"},{"pn":"p_24","pt":2,"pv":"00000000"},{"pn":"p_25","pt":2,"pv":"000000"},{"pn":"p_26","pt":2,"pv":"0A00"},{"pn":"p_27","pt":2,"pv":"0A00"},{"pn":"p_28","pt":2,"pv":"0A00"},{"pn":"p_34","pt":2,"pv":"00"}]},{"pn":"e_A011","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"01"},{"pn":"p_02","pt":3,"pv":"00"},{"pn":"p_03","pt":2,"pv":"00"},{"pn":"p_06","pt":3,"pv":"0000"},{"pn":"p_07","pt":3,"pv":"0000"},{"pn":"p_08","pt":3,"pv":"0000"},{"pn":"p_09","pt":3,"pv":"0000"},{"pn":"p_0A","pt":3,"pv":"0000"},{"pn":"p_0B","pt":3,"pv":"0000"},{"pn":"p_0C","pt":3,"pv":"0000"}]},{"pn":"e_A006","pt":1,"pch":[{"
pn":"p_0E","pt":3,"pv":"0000"},{"pn":"p_0F","pt":3,"pv":"00"},{"pn":"p_10","pt":3,"pv":"32303330333033303330"},{"pn":"p_11","pt":3,"pv":"0800"},{"pn":"p_13","pt":3,"pv":"08"},{"pn":"p_14","pt":3,"pv":"00"},{"pn":"p_15","pt":3,"pv":"30303030303030303030"},{"pn":"p_16","pt":3,"pv":"0000"}]}]}]},"rsc":2000},{"fr":"/dsiot/edge/adr_0200.dgc_status","pc":{"pn":"dgc_status","pt":1,"pch":[{"pn":"data_model_code","pt":3,"pv":26},{"pn":"root_entity_name","pt":3,"pv":"e_1003"},{"pn":"e_1003","pt":1,"pch":[{"pn":"e_A001","pt":1,"pch":[{"pn":"p_09","pt":3,"pv":"2020"},{"pn":"p_11","pt":3,"pv":"20"},{"pn":"p_12","pt":3,"pv":"20"},{"pn":"p_13","pt":3,"pv":"2020202020202020"},{"pn":"p_14","pt":3,"pv":"202020202020202020202020"}]},{"pn":"e_A010","pt":1,"pch":[{"pn":"p_08","pt":3,"pv":"01"}]},{"pn":"e_A00A","pt":1,"pch":[{"pn":"p_03","pt":3,"pv":"500000"},{"pn":"p_04","pt":3,"pv":"500000"},{"pn":"p_07","pt":3,"pv":"4B0000"},{"pn":"p_08","pt":3,"pv":"4B0000"}]},{"pn":"e_A005","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"000000"},{"pn":"p_02","pt":3,"pv":"0A0000"},{"pn":"p_05","pt":3,"pv":"841300"},{"pn":"p_09","pt":3,"pv":"0000"},{"pn":"p_0A","pt":3,"pv":"0000"},{"pn":"p_0B","pt":3,"pv":"0000"},{"pn":"p_0C","pt":3,"pv":"0000"},{"pn":"p_0D","pt":3,"pv":"0000"}]},{"pn":"e_A004","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"00002D3030"},{"pn":"p_03","pt":3,"pv":"00"},{"pn":"p_04","pt":3,"pv":"00"},{"pn":"p_05"
"pt":3,"pv":"00"}]},{"pn":"e_2006","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"00"},{"pn":"p_04","pt":3,"pv":"0000"},{"pn":"p_0B","pt":3,"pv":"4600"},{"pn":"p_25","pt":3,"pv":"3200"}]},{"pn":"e_2005","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"9001"}]},{"pn":"e_2013","pt":1,"pch":[]},{"pn":"e_2008","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"0000"}]},{"pn":"e_2009","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"1400"}]},{"pn":"e_A00D","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"0F00"}]},{"pn":"e_3002","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"01"},{"pn":"p_04","pt":3,"pv":"00"},{"pn":"p_44","pt":3,"pv":"00"},{"pn":"p_5C","pt":3,"pv":"00"},{"pn":"p_5D","pt":3,"pv":"00"},{"pn":"p_5E","pt":2,"pv":"00"},{"pn":"p_5F","pt":3,"pv":"0000"},{"pn":"p_60","pt":3,"pv":"0000"},{"pn":"p_61","pt":3,"pv":"000000"},{"pn":"p_62","pt":3,"pv":"000000"},{"pn":"p_63","pt":3,"pv":"000000"},{"pn":"p_64","pt":3,"pv":"000000"},{"pn":"p_65","pt":3,"pv":"0000"},{"pn":"p_66","pt":3,"pv":"0000"},{"pn":"p_67","pt":3,"pv":"0000"},{"pn":"p_68","pt":3,"pv":"C0FF"},{"pn":"p_69","pt":3,"pv":"C0FF"}]},{"pn":"e_A00F","pt":1,"pch":[]}]}]},"rsc":2000}]}



{"requests":[{"op":2,"to":"\/dsiot\/edge\/adr_0100.dgc_status?filter=pv,md"},{"op":2,"to":"\/dsiot\/edge\/adr_0200.dgc_status?filter=pv,md"}]}

{"responses":[{"fr":"/dsiot/edge/adr_0100.dgc_status","pc":{"pn":"dgc_status","pt":1,"pch":[{"pn":"data_model_code","pt":3,"pv":26,"md":{"pt":"i"}},{"pn":"root_entity_name","pt":3,"pv":"e_1002","md":{"pt":"s"}},{"pn":"e_1002","pt":1,"pch":[{"pn":"e_A001","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"20202020202020202020202020202020202020202020","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_03","pt":3,"pv":"2300","md":{"pt":"b","st":241,"mi":"0000","mx":"FF00"}},{"pn":"p_07","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"07"}},{"pn":"p_08","pt":3,"pv":"1A000000","md":{"pt":"b","st":1,"mi":"00000000","mx":"00000004"}},{"pn":"p_09","pt":3,"pv":"3030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_0A","pt":3,"pv":"202020202020","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_0B","pt":3,"pv":"202020202020202020202020202020","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_0C","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_0D","pt":3,"pv":"38393431","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_0E","pt":3,"pv":"01","md":{"pt":"b","st":0,"mi":null,"mx":"03"}},{"pn":"p_0F","pt":2,"pv":"454141314442314430354339","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_10","pt":3,"pv":"3A00","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_11","pt":3,"pv":"30","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_12","pt":3,"pv":"3
0","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_13","pt":3,"pv":"3030303030303032","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_14","pt":3,"pv":"303030303030303030303030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_15","pt":3,"pv":"2020","md":{"pt":"b","st":0,"mi":null,"mx":null}}]},{"pn":"e_A010","pt":1,"pch":[{"pn":"p_07","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"03"}}]},{"pn":"e_A004","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"00002D3030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_03","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"0F"}},{"pn":"p_04","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"1F"}},{"pn":"p_05","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"07"}},{"pn":"p_09","pt":3,"pv":"00002D3048","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_0A","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"0F"}},{"pn":"p_0B","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"1F"}},{"pn":"p_0C","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"07"}}]},{"pn":"e_A002","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}}]},{"pn":"e_200B","pt":1,"pch":[]},{"pn":"e_A00B","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"14","md":{"pt":"b","st":1,"mi":"F7","mx":"27"}},{"pn":"p_02","pt":3,"pv":"2D","md":{"pt":"b","st":1,"mi":"19","mx":"55"}},{"pn":"p_05","pt":3,"pv":"2800","
md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}},{"pn":"p_06","pt":3,"pv":"2800","md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}}]},{"pn":"e_2016","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"03DA0020","md":{"pt":"b","st":0,"mi":null,"mx":null}}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"6011","md":{"pt":"b","st":1,"mi":"60FF","mx":"6011"}},{"pn":"p_03","pt":3,"pv":"6011","md":{"pt":"b","st":1,"mi":"60FF","mx":"6011"}}]},{"pn":"e_2015","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"8005","md":{"pt":"b","st":1,"mi":"C8FF","mx":"8005"}},{"pn":"p_03","pt":3,"pv":"8005","md":{"pt":"b","st":1,"mi":"C8FF","mx":"8005"}}]},{"pn":"e_2025","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"400D","md":{"pt":"b","st":1,"mi":"C0FF","mx":"8012"}},{"pn":"p_03","pt":3,"pv":"400D","md":{"pt":"b","st":1,"mi":"C0FF","mx":"8012"}}]},{"pn":"e_2025","pt":1,"pch":[]},{"pn":"e_2028","pt":1,"pch":[{"pn":"p_03","pt":3,"pv":"0000","md":{"pt":"b","st":17,"mi":"0000","mx":"FF00"}},{"pn":"p_04","pt":3,"pv":"0000","md":{"pt":"b","st":17,"mi":"0000","mx":"7000"}},{"pn":"e_2007","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"000000","md":{"pt":"b","st":209,"mi":"000000","mx":"FFFF00"}},{"pn":"p_03","pt":3,"pv":"347E00","md":{"pt":"b","st":225,"mi":"000000","mx":"FFFF00"}}]}]},{"pn":"e_2029","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"2B00","md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}}]},{"pn":"e_3003","pt":1,"pch":[{"pn":"p_
01","pt":3,"pv":"01","md":{"pt":"b","st":0,"mi":null,"mx":"27"}},{"pn":"p_02","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_0C","pt":3,"pv":"2F","md":{"pt":"b","st":245,"mi":"14","mx":"42"}},{"pn":"p_1A","pt":3,"pv":"32","md":{"pt":"b","st":1,"mi":"00","mx":"64"}},{"pn":"p_1B","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_1D","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_20","pt":3,"pv":"01","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_26","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"0F"}},{"pn":"p_27","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"1F"}},{"pn":"p_28","pt":3,"pv":"01","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_29","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_2A","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"0B"}},{"pn":"p_2C","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_2D","pt":2,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"10"}},{"pn":"p_2F","pt":3,"pv":"0400","md":{"pt":"b","st":1,"mi":"0000","mx":"0A00"}},{"pn":"p_30","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_36","pt":2,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_37","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"0F"}},{"pn":"p_38","pt":3,"pv":"010000","md":{"pt":"b","st":1,"mi":"000000"
"mx":"FFFF00"}},{"pn":"p_3A","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"A005"}},{"pn":"p_3B","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"A005"}},{"pn":"p_41","pt":2,"pv":"000039353336323532303036313532","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_4D","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"03"}},{"pn":"p_31","pt":3,"pv":"00002D3030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_32","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"0F"}},{"pn":"p_33","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"1F"}},{"pn":"p_34","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"07"}}]},{"pn":"e_3001","pt":1,"pch":[{"pn":"p_01","pt":2,"pv":"0100","md":{"pt":"b","st":0,"mi":null,"mx":"2F00"}},{"pn":"p_02","pt":2,"pv":"32","md":{"pt":"b","st":245,"mi":"24","mx":"40"}},{"pn":"p_03","pt":2,"pv":"27","md":{"pt":"b","st":245,"mi":"14","mx":"3C"}},{"pn":"p_05","pt":2,"pv":"00000000","md":{"pt":"b","st":0,"mi":null,"mx":"01808000"}},{"pn":"p_06","pt":2,"pv":"000000","md":{"pt":"b","st":0,"mi":null,"mx":"018000"}},{"pn":"p_07","pt":2,"pv":"0F000000","md":{"pt":"b","st":0,"mi":null,"mx":"01808000"}},{"pn":"p_08","pt":2,"pv":"000000","md":{"pt":"b","st":0,"mi":null,"mx":"018000"}},{"pn":"p_09","pt":2,"pv":"0A00","md":{"pt":"b","st":0,"mi":null,"mx":"F80C"}},{"pn":"p_0A","pt":2,"pv":"0500","md":{"pt":"b","st":0,"mi":null,"mx"
:"F80C"}},{"pn":"p_1D","pt":2,"pv":"32","md":{"pt":"b","st":245,"mi":"24","mx":"3C"}},{"pn":"p_20","pt":2,"pv":"00000000","md":{"pt":"b","st":0,"mi":null,"mx":"01808000"}},{"pn":"p_21","pt":2,"pv":"000000","md":{"pt":"b","st":0,"mi":null,"mx":"018000"}},{"pn":"p_22","pt":2,"pv":"00000000","md":{"pt":"b","st":0,"mi":null,"mx":"01808000"}},{"pn":"p_23","pt":2,"pv":"000000","md":{"pt":"b","st":0,"mi":null,"mx":"018000"}},{"pn":"p_24","pt":2,"pv":"00000000","md":{"pt":"b","st":0,"mi":null,"mx":"01800000"}},{"pn":"p_25","pt":2,"pv":"000000","md":{"pt":"b","st":0,"mi":null,"mx":"018000"}},{"pn":"p_26","pt":2,"pv":"0A00","md":{"pt":"b","st":0,"mi":null,"mx":"F80C"}},{"pn":"p_27","pt":2,"pv":"0A00","md":{"pt":"b","st":0,"mi":null,"mx":"0004"}},{"pn":"p_28","pt":2,"pv":"0A00","md":{"pt":"b","st":0,"mi":null,"mx":"F80C"}},{"pn":"p_34","pt":2,"pv":"00","md":{"pt":"b","st":245,"mi":"FA","mx":"00"}}]},{"pn":"e_A011","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"01","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_02","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_03","pt":2,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_06","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_07","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_08","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"
09","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_0A","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_0B","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_0C","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}}]},{"pn":"e_A006","pt":1,"pch":[{"pn":"p_0E","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_0F","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"0F"}},{"pn":"p_10","pt":3,"pv":"32303330333033303330","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_11","pt":3,"pv":"0800","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_13","pt":3,"pv":"08","md":{"pt":"b","st":1,"mi":"00","mx":"0F"}},{"pn":"p_14","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"03"}},{"pn":"p_15","pt":3,"pv":"30303030303030303030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_16","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}}]}]}]},"rsc":2000},{"fr":"/dsiot/edge/adr_0200.dgc_status","pc":{"pn":"dgc_status","pt":1,"pch":[{"pn":"data_model_code","pt":3,"pv":26,"md":{"pt":"i"}},{"pn":"root_entity_name","pt":3,"pv":"e_1003","md":{"pt":"s"}},{"pn":"e_1003","pt":1,"pch":[{"pn":"e_A001","pt":1,"pch":[{"pn":"p_09","pt":3,"pv":"2020","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_11","pt":3,"pv":"20","md":{"pt":"b","st":0,"mi":null
,"mx":null}},{"pn":"p_12","pt":3,"pv":"20","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_13","pt":3,"pv":"2020202020202020","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_14","pt":3,"pv":"202020202020202020202020","md":{"pt":"b","st":0,"mi":null,"mx":null}}]},{"pn":"e_A010","pt":1,"pch":[{"pn":"p_08","pt":3,"pv":"01","md":{"pt":"b","st":1,"mi":"01","mx":"0F"}}]},{"pn":"e_A00A","pt":1,"pch":[{"pn":"p_03","pt":3,"pv":"500000","md":{"pt":"b","st":225,"mi":"000000","mx":"FFFF00"}},{"pn":"p_04","pt":3,"pv":"500000","md":{"pt":"b","st":225,"mi":"000000","mx":"FFFF00"}},{"pn":"p_07","pt":3,"pv":"4B0000","md":{"pt":"b","st":225,"mi":"000000","mx":"FFFF00"}},{"pn":"p_08","pt":3,"pv":"4B0000","md":{"pt":"b","st":225,"mi":"000000","mx":"FFFF00"}}]},{"pn":"e_A005","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"000000","md":{"pt":"b","st":17,"mi":"000000","mx":"FFFF00"}},{"pn":"p_02","pt":3,"pv":"0A0000","md":{"pt":"b","st":241,"mi":"000000","mx":"FFFF00"}},{"pn":"p_05","pt":3,"pv":"841300","md":{"pt":"b","st":241,"mi":"000000","mx":"9F8601"}},{"pn":"p_09","pt":3,"pv":"0000","md":{"pt":"b","st":2,"mi":"0000","mx":"FF00"}},{"pn":"p_0A","pt":3,"pv":"0000","md":{"pt":"b","st":2,"mi":"0000","mx":"FF00"}},{"pn":"p_0B","pt":3,"pv":"0000","md":{"pt":"b","st":2,"mi":"0000","mx":"FF00"}},{"pn":"p_0C","pt":3,"pv":"0000","md":{"pt":"b","st":245,"mi":"0000","mx":"FF00"}},{"pn":"p_0D","pt":3,"pv":
"0000","md":{"pt":"b","st":245,"mi":"0000","mx":"FF00"}}]},{"pn":"e_A004","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"00002D3030","md":{"pt":"b","st":0,"mi":null,"mx":null}},{"pn":"p_03","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"0F"}},{"pn":"p_04","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"1F"}},{"pn":"p_05","pt":3,"pv":"00","md":{"pt":"b","st":0,"mi":null,"mx":"07"}}]},{"pn":"e_2006","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_04","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_0B","pt":3,"pv":"4600","md":{"pt":"b","st":245,"mi":"0000","mx":"FF00"}},{"pn":"p_25","pt":3,"pv":"3200","md":{"pt":"b","st":245,"mi":"0000","mx":"FF00"}}]},{"pn":"e_2005","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"9001","md":{"pt":"b","st":1,"mi":"18FD","mx":"D601"}}]},{"pn":"e_2013","pt":1,"pch":[]},{"pn":"e_2008","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"0000","md":{"pt":"b","st":17,"mi":"0000","mx":"9600"}}]},{"pn":"e_2009","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"1400","md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}}]},{"pn":"e_A00D","pt":1,"pch":[{"pn":"p_01","pt":3,"pv":"0F00","md":{"pt":"b","st":245,"mi":"EEFF","mx":"4E00"}}]},{"pn":"e_3002","pt":1,"pch":[{"pn":"p_02","pt":3,"pv":"01","md":{"pt":"b","st":0,"mi":null,"mx":"27"}},{"pn":"p_04","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}}
{"pn":"p_44","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_5C","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"03"}},{"pn":"p_5D","pt":3,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_5E","pt":2,"pv":"00","md":{"pt":"b","st":1,"mi":"00","mx":"01"}},{"pn":"p_5F","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_60","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_61","pt":3,"pv":"000000","md":{"pt":"b","st":1,"mi":"000000","mx":"FFFF00"}},{"pn":"p_62","pt":3,"pv":"000000","md":{"pt":"b","st":1,"mi":"000000","mx":"FFFF00"}},{"pn":"p_63","pt":3,"pv":"000000","md":{"pt":"b","st":1,"mi":"000000","mx":"FFFF00"}},{"pn":"p_64","pt":3,"pv":"000000","md":{"pt":"b","st":1,"mi":"000000","mx":"FFFF00"}},{"pn":"p_65","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_66","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_67","pt":3,"pv":"0000","md":{"pt":"b","st":1,"mi":"0000","mx":"FF00"}},{"pn":"p_68","pt":3,"pv":"C0FF","md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}},{"pn":"p_69","pt":3,"pv":"C0FF","md":{"pt":"b","st":245,"mi":"C0FF","mx":"BF00"}}]},{"pn":"e_A00F","pt":1,"pch":[]}]}]},"rsc":2000}]}


{"requests":[{"op":2,"to":"\/dsiot\/edge\/adr_0100.scdl_t.body?filter=pv"}]}
{"responses":[{"fr":"/dsiot/edge/adr_0100.scdl_t.body","pc":{"pn":"body","pt":1,"pch":[{"pn":"mo","pt":2,"pv":[]},{"pn":"tu","pt":2,"pv":["010501228.0A-000--","011100------------"]},{"pn":"we","pt":2,"pv":["010501228.0A-000--","011100------------"]},{"pn":"th","pt":2,"pv":["010501228.0A-000--","011100------------"]},{"pn":"fr","pt":2,"pv":["010501228.0A-000--","011100------------"]},{"pn":"sa","pt":2,"pv":["010501228.0A-000--","011100------------"]},{"pn":"su","pt":2,"pv":["010501228.0A-000--","011100------------"]}]},"rsc":2000}]}

@epajfl-00
Copy link

image

I'm hoping this is true, that Daikin is planning to make the cloud API opensource for DIY at the end of this year.
Can anyone else confirm this?

@chrisp250
Copy link

image

I'm hoping this is true, that Daikin is planning to make the cloud API opensource for DIY at the end of this year. Can anyone else confirm this?

This would good as a fall back, but if we can get the direct access working again, that would be much better.

@epajfl-00
Copy link

Not sure if you or others have seen this doc, it may help in the methodology to decipher.
https://backend.daikincomfort.com/docs/default-source/product-documents/residential/manuals/othermanual/im-dknapi.pdf

@chrisp250
Copy link

chrisp250 commented Sep 12, 2023

Another update...
I installed resty and sent the status request below and was able to get a response from the unit:

POST /dsiot/multireq '{"requests":[{"op":2,"to":"\/dsiot\/edge.adp_i?filter=pv"},{"op":2,"to":"\/dsiot\/edge.adp_d?filter=pv"},{"op":2,"to":"\/dsiot\/edge.adp_f?filter=pv"},{"op":2,"to":"\/dsiot\/edge.dev_i?filter=pv"},{"op":2,"to":"\/dsiot\/edge\/adr_0100.dgc_status?filter=pv"}]}'

I can see the temperature set point in the response too.

@epajfl00
Copy link
Author

Chrisp250, that is get news,!!
I've installed "Postman" and can send requests too.
What is the message to send to turn on unit? is it a PUT or still a POST?

@chrisp250
Copy link

chrisp250 commented Sep 13, 2023

Chrisp250, that is get news,!!
I've installed "Postman" and can send requests too.
What is the message to send to turn on unit? is it a PUT or still a POST?

I think either POST or PUT works. but the app uses PUT.
Put his config in your Home Assistant and when you call that service, the heater should start with a set point of 19C. Make sure you change the IP address to your unit

rest_command:
    ac_heater_on:
        url: http://192.168.10.159:/dsiot/multireq
        method: PUT
        payload: '{"requests":[{"op":3,"to":"\/dsiot\/edge\/adr_0100.dgc_status","pc":{"pn":"dgc_status","pch":[{"pn":"e_1002","pch":[{"pn":"e_3001","pch":[{"pn":"p_07","pv":"0F0000"},{"pn":"p_08","pv":"000000"},{"pn":"p_01","pv":"0100"},{"pn":"p_03","pv":"26"},{"pn":"p_0A","pv":"0500"}]},{"pn":"e_A002","pch":[{"pn":"p_01","pv":"01"}]},{"pn":"e_3003","pch":[{"pn":"p_2D","pv":"00"}]}]}]}}]}'

Let me know how you go

@chrisp250
Copy link

Thank you @icovada. Let me know if you need any more info on the detail I sent you before.

@werkstrom
Copy link
Contributor

@icovada You should absolutely not feel that way 😀 We are all very thankfull for your, and everyone elses efforts when and if you chose to offer your time. So thank you! ♥️

@Gtwizzy
Copy link

Gtwizzy commented Oct 31, 2023

Thank you to everyone who has FAR more technical knowledge in this area than I do. I miss having my Daikin unit working natively in HA I don't even know how my unit was switched to auto update but it did and I was already aware of this issue being a breaking change so when I reliased that was what had happened I was GUTTED as it had been really quite reliable up until that point.
I hope you wizzards are able to figure this out at some point and I am TRUELY grateful from the bottom of my heart to everyone who is working so dilligently on it

Now I feel bad for not having been able to work on this any sooner, I'll try to get at least a little bit of progress in the coming days

Don't be silly. There is NO expectation of your time from me or anyone else here. I am (and I'm sure others are) just grateful for people like you who actively give their time to help the community with no expectation of personal gain. This is litterally one of the most selfless things that I find people engage in within the home automation community. I am working hard to try and skill myself up to the level of a lot of the amazing people who work on these integrations so that I can hopefully give back the way many others have given for me through my journey. I still have a lot to learn but I hope one day to be able to do something just as you have for the people like me. Thank you 🫡

@icovada
Copy link
Contributor

icovada commented Nov 1, 2023

@chrisp250 have you tried sending PUTs containing only single values and not entire blocks like the app does?

@chrisp250
Copy link

chrisp250 commented Nov 1, 2023

@chrisp250 have you tried sending PUTs containing only single values and not entire blocks like the app does?

HI @icovada,

No, I haven't tried that. I'm not sure it would work either. I'm worried about leaving the unit in an in-between state if I sent a single value since the API is now so low level. I think the minimum command would be a mode change setting e3001, p_01.

Would it be hard for Home Assistant to send a block instead of a single value?

Another option would be to start by restoring the monitoring functionality of the integration so that we can see what mode the unit is on (off, cooling, heating, etc) and what the temperatures (indoors / outdoors) are, and what the set point is and then work on the commands part.

Thank you

@icovada
Copy link
Contributor

icovada commented Nov 1, 2023

No it's not, but I was wondering if a smaller command would do the trick anyway.

It's not a matter of home assistant rather of the pydaikin dependency we're using.

I've been analysing the jsons from your packet captures and I am quite confident I can implement the basic calls, but I wouldn't know where to get inside/outside temperature. Have you figured out where it is?

@chrisp250
Copy link

No it's not, but I was wondering if a smaller command would do the trick anyway.

It's not a matter of home assistant rather of the pydaikin dependency we're using.

I've been analysing the jsons from your packet captures and I am quite confident I can implement the basic calls, but I wouldn't know where to get inside/outside temperature. Have you figured out where it is?

I could probably explore reducing a bit the message, but might need more than 1 parameter. Would that make it easier?

For the temperature, see my posts above, I didn't figure out outdoor temperature yet, but I have the 2 set points (cooling and heating) and indoor temperature and humidity:
eA00B p_01 is the indoor temp
eA00B p_02 is the indoor humidity

Cheers

@SmartFoundations
Copy link

SmartFoundations commented Nov 2, 2023

Now I feel bad for not having been able to work on this any sooner, I'll try to get at least a little bit of progress in the coming days

You should definitely not feel like this! Don't feel bad but feel empowered instead because you have an ability to change other people's lives for the better.

Idk if this is appropriate but I want to put an award for fixing Daikin 2.8.0 support with HA. I will be happy to send 100$ once it is done. This is not much but this is another type of motivation that may help in this situation.

I too cannot live without this integration and can either wait for this fix or replace my AC with another brand which is going to be expensive and painful but I cannot live like this anymore. Shame on you Daikin for breaking this API, that was a bad move. Because of this unneeded change lives were lost, relationships were broken, and I am sure other bad things happened.

@icovada
Copy link
Contributor

icovada commented Nov 2, 2023

That is extremely nice of you to offer this "bug" bounty, @SmartFoundations!

Anyone who wants to contribute is welcome to come over onto @fredrike 's repo for the library used for this integration: https://bitbucket.org/mustang51/pydaikin

Unfortunately I was just going through a rewrite to fix another issue I was having (supporting power consumption cap). We just need to set priorities and decide whether this rewrite is beneficial for the future or not, though anyone's contribution is welcome

EDIT: Shame on Daikin! Shame!

@icovada
Copy link
Contributor

icovada commented Nov 2, 2023

Update on how it's going:

I've resumed work on the library, now I remember where I left off!
Unfortunately the library in its current state is (AFAIK) unable to support this new data format without serious rewriting, which is what I was going through anyway.

The plan is to first rewrite the brp069 integration with the new paradigm, which is something I feel more confident on as I happen to own two of these and I can use my own aircon as guinea pigs for the greater good.

I'm using the DaikinClimate object from HASS as base for the new base Pydaikin class to streamline integration (and also avoid reinventing the wheel over and over)

Once this will be done, tested and released in v3.0 of the library I can start working on this new integration.

I'll keep you updated. If anyone wants to help, do contact me.

@Gtwizzy
Copy link

Gtwizzy commented Nov 23, 2023

Update on how it's going:

I've resumed work on the library, now I remember where I left off! Unfortunately the library in its current state is (AFAIK) unable to support this new data format without serious rewriting, which is what I was going through anyway.

The plan is to first rewrite the brp069 integration with the new paradigm, which is something I feel more confident on as I happen to own two of these and I can use my own aircon as guinea pigs for the greater good.

I'm using the DaikinClimate object from HASS as base for the new base Pydaikin class to streamline integration (and also avoid reinventing the wheel over and over)

Once this will be done, tested and released in v3.0 of the library I can start working on this new integration.

I'll keep you updated. If anyone wants to help, do contact me.

Thank you for all your work on this dude. I know the whole community is cheering you on. I only wish my level of code knowledge was suitable to be able to help you.

@DoopDip
Copy link

DoopDip commented Nov 23, 2023

I think this will help @icovada

NONE("", ""),
MODEL("model", "dgc_status.e_1002.e_A001.p_0D"),
MODEL_TYPE("type", "dgc_status.e_1002.e_A001.p_07"),
MICOM_ID("mid", ""),
SUPPORT_FLOW_DIRECTION("s_fdir", ""),
ENABLE_HUMIDITY("humd", "dgc_status.e_1002.e_3001.p_01.md.mx"),
SUPPORT_HUMIDITY("s_humd", "dgc_status.e_1002.e_A006.p_12"),
AC_LED("acled", ""),
LAUNDRY("land", ""),
ELECTRIC_POWER("elec", "dgc_status.e_1002.e_A011.p_01"),
ENABLE_OUTDOOR_TEMPERATURE("temp", "dgc_status.e_1003.e_A00D.p_01"),
TEMPERATURE_RANGE("temp_rng", ""),
MOTION_DETECTION("m_dtct", "dgc_status.e_1002.e_3003.p_27"),
DESTINATION("ac_dst", "dgc_status.e_1002.e_A001.p_0E"),
DRY_DISPLAY("disp_dry", "dgc_status.e_1002.e_A006.p_14"),
DEMAND("dmnd", ""),
ENABLE_FLOW_RATE("en_frate", ""),
ENABLE_FLOW_DIRECTION("en_fdir", ""),
ENABLE_RELATIVE_TEMPERATURE_IN_AUTO("en_rtemp_a", "dgc_status.e_1002.e_3003.p_28"),
ENABLE_SPECIAL_MODE("en_spmode", ""),
ENABLE_SEPARATION_COOL_AND_HEAT("en_ipw_sep", ""),
AUTO_TEMPERATURE_LOW_LIMIT("atlmt_l", "dgc_status.e_1002.e_3001.p_1D.md.mi"),
AUTO_TEMPERATURE_HIGH_LIMIT("atlmt_h", "dgc_status.e_1002.e_3001.p_1D.md.mx"),
HEAT_TEMPERATURE_LOW_LIMIT("hmlmt_l", "dgc_status.e_1002.e_3001.p_03.md.mi"),
ENABLE_SCHEDULE_TIMER("en_scdltmr", "adp_i.func.en_scdltmr"),
ENABLE_MOMENT_POWER("en_mompow", "dgc_status.e_1003.e_A005.p_01"),
ENABLE_PATROL("en_patrol", "dgc_status.e_1002.e_A011.p_05"),
ENABLE_FLOW_DIRECTION2("en_fdir2", ""),
ENABLE_FILTER_SIGN("en_filter_sign", "dgc_status.e_1002.e_3001.p_15"),
TYPE_AMENITY("shtyp", "dgc_status.e_1002.e_3003.p_29"),
ENABLE_CJ_LINK("en_cjlink", "dgc_status.e_1002.e_A001.p_0C"),
EN_VENTILATION_24HOUR_3E("en_ventilation_24hour_3e", "dgc_status.e_1002.e_3003.p_3E"),
EN_VENTILATION_24HOUR_39("en_ventilation_24hour_39", "dgc_status.e_1002.e_3003.p_39"),
S_VENTILATION_24HOUR_3E("en_ventilation_24hour_3E.md.mx", "dgc_status.e_1002.e_3003.p_3E.md.mx"),
EN_VENTILATION("en_ventilation", "dgc_status.e_1002.e_3001.p_36"),
SUPPORT_HUMD_MODE_AUTO("sh1", "dgc_status.e_1002.e_3001.p_2F.md.mx"),
SUPPORT_HUMD_MODE_DRY("sh2", "dgc_status.e_1002.e_3001.p_31.md.mx"),
SUPPORT_HUMD_MODE_COOL("sh3", "dgc_status.e_1002.e_3001.p_0C.md.mx"),
SUPPORT_HUMD_MODE_HEAT("sh4", "dgc_status.e_1002.e_3001.p_2D.md.mx"),
SUPPORT_HUMD_MODE_HUM("shh", "dgc_status.e_1002.e_3001.p_33.md.mx"),
SHUM_STEP_VALUE_AUTO("shum_step_val_1", "dgc_status.e_1002.e_3001.p_2E.md.st"),
SHUM_STEP_VALUE_DRY("shum_step_val_2", "dgc_status.e_1002.e_3001.p_30.md.st"),
SHUM_STEP_VALUE_COOL("shum_step_val_3", "dgc_status.e_1002.e_3001.p_0B.md.st"),
SHUM_STEP_VALUE_HEAT("shum_step_val_4", "dgc_status.e_1002.e_3001.p_2C.md.st"),
SHUM_STEP_VALUE_HUM("shum_step_val_shh", "dgc_status.e_1002.e_3001.p_32.md.st"),
POWER("pow", "dgc_status.e_1002.e_A002.p_01"),
VENTILATION_24HOUR_3E("ventilation_24hour", "dgc_status.e_1002.e_3003.p_3E"),
VENTILATION_24HOUR_39("ventilation_24hour", "dgc_status.e_1002.e_3003.p_39"),
VENTILATION_POWER("ventilation_power", "dgc_status.e_1002.e_3001.p_36"),
VENTILATION_SPEED("ventilation_speed", "dgc_status.e_1002.e_3001.p_1C"),
ROOM_TEMPERATURE("htemp", "dgc_status.e_1002.e_A00B.p_01"),
ROOM_HUMIDITY("hhum", "dgc_status.e_1002.e_A00B.p_02"),
OUTDOOR_TEMPERATURE("otemp", "dgc_status.e_1003.e_A00D.p_01"),
OUTDOOR_COMPRESSOR_FREQUENCY("cmpfreq", "dgc_status.e_1003.e_2006.p_04"),
MOMENTARY_POWER("mompow", "dgc_status.e_1003.e_A005.p_01"),
FILTER_SIGN("filter_sign", "dgc_status.e_1002.e_3001.p_15"),
WATER_INTERNAL_CLEANING("water_internal_cleaning", "dgc_status.e_1002.e_3003.p_52"),
FORMAT("format", ""),
F_DETAIL("f_detail", ""),
SCHEDULE_NUMBER("scdl_num", ""),
SCHEDULE_PER_DAY("scdl_per_day", "per_day"),
ENABLE_SCHEDULE("en_scdltimer", "en_scdltimer"),
SCHEDULE_ACTIVE_NUMBER("active_no", "active_no"),
SCHEDULE_NAME1("scdl1_name", "name"),
SCHEDULE_NAME2("scdl2_name", ""),
SCHEDULE_NAME3("scdl3_name", ""),
SCHEDULE_MONDAY("mo", "body.mo"),
SCHEDULE_TUESDAY("tu", "body.tu"),
SCHEDULE_WEDNESDAY("we", "body.we"),
SCHEDULE_THURSDAY("th", "body.th"),
SCHEDULE_FRIDAY("fr", "body.fr"),
SCHEDULE_SATURDAY("sa", "body.sa"),
SCHEDULE_SUNDAY("su", "body.su"),
PRICE_INT("price_int", "price.int"),
PRICE_DEC("price_dec", "price.dec"),
TARGET("target", "target"),
TODAY_RUNTIME("today_runtime", "week_power.today_runtime"),
DATAS("datas", "week_power.datas"),
PREVIOUS_YEAR("previous_year", "year_power.previous_year"),
THIS_YEAR("this_year", "year_power.this_year"),
PATROL_MODE("patrol_mode", "setting.mode"),
PATROL_HIGH_TEMP("patrol_hi_stemp", "setting.hi_stemp"),
PATROL_LOW_TEMP("patrol_lo_stemp", "setting.lo_stemp"),
PATROL_STATUS("patrol_status", "status.status"),
PATROL_HIGH_TEMP_MIN("hi_temp_min", "spec.hi_temp_min"),
PATROL_HIGH_TEMP_MAX("hi_temp_max", "spec.hi_temp_max"),
PATROL_LOW_TEMP_MIN("lo_temp_min", "spec.lo_temp_min"),
PATROL_LOW_TEMP_MAX("lo_temp_max", "spec.lo_temp_max"),
PATROL_OFF_FLAG("patrol_off_flg", "notify.off_flg"),
PATROL_OFF_TIME("patrol_off_tm", "notify.off_tm");
IN_HOME_TO = "/dsiot/edge/adr_0100.dgc_status"
OUT_OF_HOME_TO_1 = "/dsiot/edges/"
OUT_OF_HOME_TO_2 = "/adr_0100.dgc_status"
PROPERTY_NAME_DGC_STATUS = "dgc_status"
PROPERTY_NAME_E_1002 = "e_1002"
PROPERTY_NAME_E_3001 = "e_3001"
PROPERTY_NAME_E_3007 = "e_3007"
PROPERTY_NAME_E_A002 = "e_A002"
PROPERTY_NAME_P_01 = "p_01"
PROPERTY_NAME_P_03 = "p_03"
PROPERTY_NAME_P_04 = "p_04"
PROPERTY_NAME_P_06 = "p_06"
PROPERTY_NAME_P_13 = "p_13"
PROPERTY_NAME_P_14 = "p_14"
PROPERTY_NAME_P_15 = "p_15"
PROPERTY_NAME_P_16 = "p_16"
PROPERTY_NAME_P_18 = "p_18"
PROPERTY_NAME_P_2A = "p_2A"
PROPERTY_NAME_P_3F = "p_3F"
KEY_MAX_VALUE = "mx"
KEY_META_DATE = "md"
KEY_MIN_VALUE = "mi"
KEY_PRIMITIVE_CONTENT = "pc"
KEY_PROPERTY_CHILDREN = "pch"
KEY_PROPERTY_RESOURCE_NAME = "pn"
KEY_PROPERTY_RESOURCE_TYPE = "pt"
KEY_PROPERTY_VALUE = "pv"
KEY_STEP_VALUE = "st"
OPERATION_DELETE = 4
OPERATION_GET = 2
OPERATION_UPDATE = 3
REQUEST_URI = "/dsiot/multireq"

And Ex. get pv value in Java


import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        System.out.println(getDecimalFromBinary("0A00"));
        System.out.println(getBinaryFromDecimal(10, true));
    }

    public static final String getBinaryFromDecimal(int i, boolean z) {
        if (z) {
            String format = String.format("%04X", Arrays.copyOf(new Object[]{Integer.valueOf(i)}, 1));
            return convertByteData(format);
        }
        String format2 = String.format("%02X", Arrays.copyOf(new Object[]{Integer.valueOf(i)}, 1));
        return format2;
    }

    public static final int getDecimalFromBinary(String str) {
        if (str.length() == 4) {
            Integer q = q(convertByteData(str), 16);
            if (q == null) {
                return 0;
            }
            return q.intValue();
        }
        Integer q2 = q(str, 16);
        if (q2 == null) {
            return 0;
        }
        return q2.intValue();
    }

    private static final String convertByteData(String str) {
        StringBuilder sb = new StringBuilder();
        int length = (str.length() / 2) - 1;
        if (length >= 0) {
            while (true) {
                int i = length - 1;
                int i2 = length * 2;
                String substring = str.substring(i2, i2 + 2);
                sb.append(substring);
                if (i < 0) {
                    break;
                }
                length = i;
            }
        }
        String sb2 = sb.toString();
        return sb2;
    }

    public static final Integer q(String str, int i) {
        int i2;
        int i3;
        int length = str.length();
        if (length == 0) {
            return null;
        }
        int i4 = 0;
        char charAt = str.charAt(0);
        boolean z = true;
        int i5 = -2147483647;
        if ((charAt < '0' ? (char) 65535 : charAt == '0' ? (char) 0 : (char) 1) >= 0) {
            i2 = 0;
            z = false;
        } else if (length == 1) {
            return null;
        } else {
            if (charAt == '-') {
                i5 = Integer.MIN_VALUE;
                i2 = 1;
            } else if (charAt != '+') {
                return null;
            } else {
                i2 = 1;
                z = false;
            }
        }
        int i6 = -59652323;
        while (i2 < length) {
            int digit = Character.digit((int) str.charAt(i2), i);
            if (digit < 0) {
                return null;
            }
            if ((i4 < i6 && (i6 != -59652323 || i4 < (i6 = i5 / i))) || (i3 = i4 * i) < i5 + digit) {
                return null;
            }
            i4 = i3 - digit;
            i2++;
        }
        return z ? Integer.valueOf(i4) : Integer.valueOf(-i4);
    }
}

@tasict
Copy link

tasict commented Nov 28, 2023

Dear guys, I found that this author has dissected most of the syntax used in the new API and shared it in the articles they wrote.

https://ydn.jp/archives/12367

@jwillemsen
Copy link
Contributor

See rospogrigio/daikin_residential#182, Daikin announced there the Daikin Europe Developer Portal

@Gtwizzy
Copy link

Gtwizzy commented Dec 12, 2023

See rospogrigio/daikin_residential#182, Daikin announced there the Daikin Europe Developer Portal

This is AMAZING news thanks for finding this #jwillemsen. Hopefully this will mean we'll be able to get this integration back on track relatively quickly once all of this comes online. Who knows we might even be able to get a local API running from it which would be EVEN better.

@denismilanovic
Copy link
Contributor

Not really good news at all that Daikin wants everyone to switch to a cloud integration with ridiculously low polling limits. Might as well use a Sensibo at that point.

@chrisp250
Copy link

Not really good news at all that Daikin wants everyone to switch to a cloud integration with ridiculously low polling limits. Might as well use a Sensibo at that point.

And Europe only? What about Australia/New Zealand/South America/etc.

@MikeatLorne
Copy link

is there any update on this? it must be affecting lots of people (me included) but unfortunately I do not have the skills to address it

@blakeseufert
Copy link

Daikin is essentially broken for me as I cannot downgrade. 😕

@blindahl
Copy link

Have anyone got BRP069B4 to work with the integration?
I get this error as soon as I enter IP and API key
image
For translation it says "Unable to connect". It appears immediately when clicking save.

@jwillemsen
Copy link
Contributor

Is the BRP069B4 using the daikin onecta app? If so, you need an integration using the daikin cloud, fe https://github.com/jwillemsen/daikin_residential_altherma

@sammularczyk
Copy link

sammularczyk commented Jan 29, 2024

This Rust app works with my Australian 2022 Daikin Alira X on 2.8.0, adapter BRP084C44, when all HA integrations don't: https://github.com/mzyy94/daikin-homekit

Can confirm that this works without having to provide a username and password to login, so assuming it operates with some kind of local API. Running the app autodiscovers the Aircon and creates a new Homekit device. Once added to the phone, the aircon responds instantly.

I personally don't know enough to do anything with this, but maybe it will help to develop a solution?

EDIT: Homebridge plugin based on undocumented local API in active development here https://github.com/tasict/homebridge-daikin-local-platform

@Gtwizzy
Copy link

Gtwizzy commented Feb 3, 2024

This Rust app works with my Australian 2022 Daikin Alira X on 2.8.0, adapter BRP084C44, when all HA integrations don't: https://github.com/mzyy94/daikin-homekit

Can confirm that this works without having to provide a username and password to login, so assuming it operates with some kind of local API. Running the app autodiscovers the Aircon and creates a new Homekit device. Once added to the phone, the aircon responds instantly.

I personally don't know enough to do anything with this, but maybe it will help to develop a solution?

EDIT: Homebridge plugin based on undocumented local API in active development here https://github.com/tasict/homebridge-daikin-local-platform

@sammularczyk I'm on an android device could you please explain how this works and or how it bridges the gap in the HA functionality?

@icovada
Copy link
Contributor

icovada commented Feb 4, 2024

is there any update on this? it must be affecting lots of people (me included) but unfortunately I do not have the skills to address it

Hi,
unfortunately the pydaikin library isn't flexible enough to support adding a new model out of the box.
I've been working on a possible v3, modified to support other models and further data formats. Unfortunately, I haven't really been that much up to do much at all for the past... 6 months.
My bad.

The plan is:

  • release a completely rewritten v3 with equal functionality to the current version
  • update hass dependencies to v3 and hope no one complains
  • meanwhile work on the new integration
  • update hass with v3.1 with support for this new data format

@blakeseufert
Copy link

is there any update on this? it must be affecting lots of people (me included) but unfortunately I do not have the skills to address it

Hi, unfortunately the pydaikin library isn't flexible enough to support adding a new model out of the box. I've been working on a possible v3, modified to support other models and further data formats. Unfortunately, I haven't really been that much up to do much at all for the past... 6 months. My bad.

The plan is:

  • release a completely rewritten v3 with equal functionality to the current version
  • update hass dependencies to v3 and hope no one complains
  • meanwhile work on the new integration
  • update hass with v3.1 with support for this new data format

Your efforts would be incredibly appreciated 🙏

@Gtwizzy
Copy link

Gtwizzy commented Apr 4, 2024

Is anyone aware of any changes to this having come down the line yet?

@foxdalas
Copy link

@icovada Hi! Do you have any news about new API implementation?

@jonbartlett
Copy link

Correct me if I am wrong but this issue should be raised against https://github.com/fredrike/pydaikin and followed from there?

@chrisp250
Copy link

Hi all,
I created an interface to monitor Daikin units with firmware 2.8.0 using Home Assistant's HVAC MQTT integration.
It's requires a MQTT server integrated to Home Assistant.
Please feel free to play with it: daikin_mqtt

Cheers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests