Daikin online controller reverse engineering - revk/ESP32-Faikin GitHub Wiki

HTTP API endpoints

This description is based on reverse engineering Daikin BRP068B41 and BRP072C42 controllers. Can be used for two purposes:

  1. Linking S21 commands to values, presented by this API
  2. Implementing this API in Faikin for compatibility with existing automation systems, relying on this API

List of these endpoints has been obtained by reverse engineering Daikin online controller android app. Responses listed are produced by a simulated FTXF20D5V1B. Simulator profile is based on a real unit.

Authentication

Some controllers (found in BRP072C42) use https protocol instead of http; and also require all requests to be authenticated with a UUID. The UUID must be supplied in hexadecimal form with '-' stripped. For example:
curl --insecure -H "X-Daikin-uuid: 039c1fd567fe4f72af227f6f42249072" "https://192.168.0.104/common/basic_info"
--insecure is specified because connection certificate is signed by unknown authority (most likely Daikin themselves, i didn't bother to check)
In order for the controller to recognize the given UUID, it must be registered using /common/register_terminal. The registration can be revoked by using /common/unregister_terminal endpoint.
Authentication requirement is also reflected in /common/basic_info as "en_secure=1" parameter. Huge thanks to MuzzaMcD for hints provided.

Query resut

Every query returns a ret= value, containing result code. From Daikin online controller app, the following codes are known:

  • UNKNOWN
  • OK - operation completed successfully
  • NG
  • IMPOSSIBLE
  • ACCOUNT_NG
  • PMODE_NG
  • LOCK_NG
  • SERIAL_NG
  • NO_RECORD
  • PART_OK
  • ADV_NG
  • THROUGH
  • NOT_DEVICE_TOKEN
  • LPW_NG - Lock Password Not Good ???
  • PARAM_NG (Parameters not good) - invalid GET query arguments given
  • INTERNAL_NG
  • STATUS_NG
  • SERIAL IF FAILURE - appears if the unit is not responding or sending invalid data (can be caused by simulator)

"Get" queries

/common/basic_info

Response: ret=OK,type=aircon,reg=eu,dst=1,ver=1_14_88,rev=8A618141,pow=0,err=0,location=0,name=%44%61%69%6b%69%6e%41%50%36%33%37%31%32,icon=0,method=polling,port=30050,id=55687f7c-7595-40b0-bda6-2c4cbcf857a7,pw=,lpw_flag=0,adp_kind=3,pv=2,cpv=2,cpv_minor=00,led=1,en_setzone=1,mac=204EF6663D8A,adp_mode=run,en_hol=0,ssid1=my_wlan_ssid_here,radio1=-54,ssid=DaikinAP63712,grp_name=,en_grp=0

  • type=[string]
    Device type. From "Daikin online controller" app the following types are known:

    • "aircon" - Air conditioner
    • "Water Heater" - self-explanatory
    • "Floor Heater" - self-explanatory
    • "common_adp" - "Common adapter", whatever this is.

    Apparently there are several families of Daikin devices, sharing (more or less) the same protocol.

  • reg=[string]
    Region. Currently known values: "jp" (from the app), "eu" (reported by BRP069 series), "th" (reported by BRP072C42). This code is a firmware's property, having nothing to do with ac_dst parameter from /aircon/model_info. Used for region-locking mobile applications.

  • dst=[boolean ?]
    No information yet. Could be "daylight saving time active"

  • ver=[string]
    Firmware's own version string

  • rev=[string]
    Firmware's own revision string. Yes, looks like git commit hash.

  • pow=[boolean]
    Device's power on status. Duplicated in aircon/get_control_info

  • err=[integer]
    Current error code. 0 = all OK. Other known value is 252.

  • location=[integer]
    Unknown

  • name=[string]
    Conditioner's human readable name, percent-encoded. Displayed by the app.

  • icon=[integer]
    Icon, representing this conditioner in the app. There are several choices

  • method=[string]
    Known values are "polling" and "home only". Looks like reflects whether cloud connection has been set up or not.

  • port=[integer]
    Probably cloud port number.

  • id=[guid]
    GUID in string form. Probably cloud identifier.

  • pw=[string ?]
    Clearly has to do with password.

  • lpw_flag=[boolean ?]
    Lock password is set ?

  • adp_kind=[integer]
    "Adapter kind". Specifies hardware platform of the wi-fi controller, used for firwmware updates. Known values are:

    • 0 - GainSpan
    • 1 - STMicroWired
    • 2 - STMicroWireless
    • 3 - MarvelWireless. Used by BRP069A41, BRP069B41 (eu) and BRP072C42 (thai) controllers.
    • 4 - Reported by BRP069C41, which is also using Marvel platform, but completely different firmware.

    These names are names of folders within assets/ directory in the APK, where a firmware update file for the respective controller is stored. The firmware update doesn't seem to be downloaded online; instead it comes in the APK, and gets updated together with the APK. Interesting that binary files for GainSpan are 0 bytes long. Perhaps obsolete and not supported any more.

    If adp_kind= value is outside of known range, the app ignores the discovered unit and does not display it in the list.

  • pv=[integer]
    Conditioner protocol version. Duplicates /aircon/get_model_info

  • cpv=[integer]
    Suggested controller protocol version major number. Duplicates /aircon/get_model_info

  • cpv_minor=[string]
    Suggested controller protocol version minor number. Duplicates /aircon/get_model_info

  • led=[boolean]
    Status of controller's own LEDs (on/off). Not confirmed.

  • en_setzone=[boolean]
    Enable timezone set ?

  • mac=204EF6663D8A
    Controller's MAC address

  • adp_mode=[string]
    Adapter mode. A properly functioning wi-fi controller shows "run". Other possible values aren't known.

  • en_hol=[boolean]
    Enable holiday mode ?

  • ssid1=[string]
    WLAN SSID for client mode (home local network)

  • radio1=[signed integer]
    Wi-fi signal level

  • ssid=[string]
    Controller's own SSID in access point mode (when no WLAN connection is available)

  • grp_name=[string ?]
    Group name ?

  • en_grp=[boolean]
    Enable groups ?

  • en_secure=[boolean]
    If set to 1, every request must be authenticated by supplying "X-Daikin-uuid:" header with a registered UUID (see authentication above). Seen in BRP072C42.

/common/get_datetime

Response: ret=OK,sta=2,cur=2024/9/23 1:33:23,reg=eu,dst=1,zone=252
Get current date and time

/common/get_progsum

Response: ret=OK,csum=148eedb
Get firmware checksum

/common/get_regioncode

Response: ret=OK,reg=eu
Get controller's region code. Duplicates "reg" field, reported by /common/basic_info
The region code is stored in NVRAM and can be reprogrammed using /common/set_regioncode Daikin apps may required it to have a certain value. For example, "Daikin mobile controller", being asian app, only recognizes Thai (th) or Japanese (jp) controllers.
Known values: "eu" for BRP069 series, "th" for BRP072C42.

/common/reboot

Response: ret=OK
Accessing this URL reboots the controller.

/aircon/get_control_info

Response: ret=OK,pow=0,mode=3,adv=,stemp=22.5,shum=0,dt1=25.0,dt2=M,dt3=22.5,dt4=25.0,dt5=25.0,dt7=25.0,dh1=AUTO,dh2=50,dh3=0,dh4=0,dh5=0,dh7=AUTO,dhh=50,b_mode=3,b_stemp=22.5,b_shum=0,alert=255,f_rate=5,f_dir=0,b_f_rate=5,b_f_dir=0,dfr1=5,dfr2=5,dfr3=5,dfr4=5,dfr5=5,dfr6=5,dfr7=5,dfrh=5,dfd1=0,dfd2=0,dfd3=0,dfd4=0,dfd5=0,dfd6=0,dfd7=0,dfdh=0

  • pow=[boolean]
    Power on state: 0 = Off, 1 = On
  • mode=[integer]
    Operation mode: 0 = Fan, 1 = Heat, 2 = Cool, 3 = Auto, 4 = Humidify, 7 = Dry
  • shum=[string]
    Humidity setting: 0 = Off, AUTO_L = Low, AUTO = Standard, AUTO_H = High, CONTINUE = Continuous
  • en_demand=[boolean]
    Demand mode enable/disable
  • dmnd_run=[boolean]
    "Power saving mode is active" flag. When reported 1, the app displays a banner with respective message and suggests to change settings in case of discomfort. Related S21 functionality isn't known.

/aircon/get_demand_control

Response:
ret=OK,type=1,en_demand=0,mode=0,max_pow=70,scdl_per_day=4,moc=0,tuc=0,wec=0,thc=0,frc=0,sac=0,suc=0

  • type=[integer]
    Suggested interface type (version). 0 = demand control not supported, 1 - current version. Other values are supposedly reserved for future; they allow for different, incompatible parameter schemes URL.

  • en_demand=[boolean]
    Demand mode enabled. Duplicates /aircon/get_control_info

  • mode=[integer]

    • 0 - manual
    • 1 - schedule
    • 2 - auto
  • max_pow=[integer]
    maximum power limit setting for manual mode. The value is expressed as percentage; with 0 being theoretical minimum; and 100 being maximum. The app knows the following preset values:

    • Low - 40
    • Medium - 50
    • High - 60

    Note that the controller does not read the demand setting back from the controller (F7 command byte 0), instead it remembers values, set by the app via /aircon/set_demand_control internally and writes to the controller (using D7 command) only when settings are changed by the app. The value being written to the conditioner is inverted (i. e. 100 - max_pow), in other words while max_pow represent consumption limit, the A/C value represent "saving percentage" with 0 being "no saving" (i. e. demand mode off) and 100 being theoretical maximum (save 100%).

  • scdl_per_day=[integer]
    Has to do with schedule timer. Perhaps duplicates /aircon/get_scdltimer_info. If not present, the app defaults it to 4.

/aircon/get_price

Response: ret=OK,price_int=27,price_dec=0

/aircon/get_program

Response: ret=PARAM NG,msg=404 Not Found

Not supported

/aircon/get_target

Response: ret=OK,target=0

/aircon/get_day_power_ex

Response: ret=OK,curr_day_heat=0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0,prev_1day_heat=0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0,curr_day_cool=0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0,prev_1day_cool=0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0/0

/aircon/get_sensor_info

Response: ret=OK,htemp=24.5,hhum=-,otemp=20.5,err=0,cmpfreq=42

Get sensor values (temperature, humidity, etc)

/aircon/get_scdltimer_body?target=

Response: ret=OK,format=v1,target=1,en_scdltimer=1,moc=0,tuc=0,wec=0,thc=0,frc=0,sac=0,suc=0

Parameters: target - timer ID from 1 to 3

/aircon/get_scdltimer

Response: ret=PARAM NG,msg=404 Not Found

Not supported

/aircon/get_scdltimer_info

Response: ret=OK,format=v1,f_detail=total#18;_en#1;_pow#1;_mode#1;_temp#4;_time#4;_vol#1;_dir#1;_humi#3;_spmd#2,scdl_num=3,scdl_per_day=6,en_scdltimer=0,active_no=1,scdl1_name=,scdl2_name=,scdl3_name=

/aircon/get_week_power_ex

Response: ret=OK,s_dayw=5,week_heat=0/0/0/0/0/0/0/0/0/0/0/0/0/0,week_cool=0/0/0/0/0/0/0/0/0/0/0/0/0/0

/aircon/get_week_power

Response: ret=OK,today_runtime=27,datas=0/0/0/0/0/0/0

/aircon/get_year_power

Response: ret=OK,previous_year=0/0/0/0/0/0/0/0/0/0/0/0,this_year=0/0/0/0/0/0/0/391

/aircon/get_year_power_ex

Response: ret=OK,curr_year_heat=0/0/0/0/0/0/0/0/0/0/0/0,prev_year_heat=0/0/0/0/0/0/0/0/0/0/0/0,curr_year_cool=0/0/0/0/0/0/0/0/0/0/0/0,prev_year_cool=0/0/0/0/0/0/0/0/0/0/0/0

/aircon/get_model_info

Response (protocol v2):
ret=OK,model=135D,type=N,pv=2,cpv=2,cpv_minor=00,mid=NA,humd=0,s_humd=0,acled=0,land=0,elec=1,temp=1,temp_rng=0,m_dtct=0,ac_dst=--,disp_dry=0,dmnd=0,en_scdltmr=1,en_frate=1,en_fdir=1,s_fdir=1,en_rtemp_a=0,en_spmode=0,en_ipw_sep=0,en_mompow=0,en_onofftmr=1
Response (protocol v3.20):
ret=OK,model=135D,type=N,pv=3.20,cpv=3,cpv_minor=20,mid=NA,humd=0,s_humd=0,acled=0,land=0,elec=1,temp=1,temp_rng=0,m_dtct=0,ac_dst=--,disp_dry=0,dmnd=1,en_scdltmr=1,en_frate=1,en_fdir=1,s_fdir=1,en_rtemp_a=0,en_spmode=3,en_ipw_sep=1,en_mompow=1,en_onofftmr=1,hmlmt_l=10.0

A/C model info and optional features:

  • model=[string]
    model code, as reported by FC command. Four ASCII characters, reported by the A/C, are passed with no changes. The code reads as a hexadecimal number, which supposedly can be looked up in Daikin's internal model database.
  • type=[character]
    Can be C or N, depending on F2 byte 1 bit 3. Unknown.
  • pv=[decimal]
    Conditioner protocol version, as reported by FY00 and F8 commands. For v3+ also includes minor number, for example: pv=3.20
  • cpv=[integer]
    Controller Protocol Version, or Current Protocol Version. "Daikin online controller" app checks this instead of pv. Meaning of this is a guess, based on experiments and usage in Daikin app. My BRP069B41 sets cpv=0 in response to any other version than 2, reported by F8. Perhaps the controller should actually know pv version number, and 0 is a fallback with minimum functionality.
  • cpv_minor=[string]
    Controller/Current Protocol Version minor number. "Daikin online controller" app checks for cpv=3,cpv_minor="00" (yes, string comparison) in couple of places, related to password and "demand" mode.
  • mid=[string]
    My controller reports mid=NA for v2 protocol. For protocol versions 0 and 1 the app checks for mid=W instead of temp_rng=1 in order to choose temperature ranges for japanese models.
  • humd=[boolean]
    "Humidify" operation mode is available
  • s_humd=[integer]
    Humidity target setting availability From "Daikin online controller" app disassembly, the integer value is actually bit flags:
    • bit 0 Humidity setting is available in "Auto" mode
    • bit 1 Humidity setting is available in "Cool" mode
    • bit 2 Humidity setting is available in "Heat" mode
    • bit 3 Humidity setting is available in "Fan" mode
    • bit 4 Humidity setting is available in "Dry" mode
    • bit 5 Humidity setting is available in "Humidify" mode
    • bit 7 Humidity setting is available in principle. If disabled, the app doesn't present target humidity selection.
  • acled=[boolean]
    Depends on FK byte 0 bit 2. Perhaps provides LED control availability. No references found in "Daikin online controller" app.
  • land=[boolean]
    "Laundry" operation mode is available. The app doesn't really handle this mode; only decoded name was found.
  • elec=[boolean]
    Depends on FK byte 1 bit 0. Not used by the app.
  • temp=[boolean ?]
    Unknown, no S21 command found, no use in the app
  • temp_rng=[boolean]
    Depends on FK byte 1 bit 2. Specifies available temperature ranges, but only for protocol versions 2 or 3 and only if reg=jp parameter is present. Values are as follows (from Daikin online controller app):
Mode temp_rng Max Min
Cool 1 32 21
Cool other 32 18
Heat 1 30 18
Heat other 30 14
  • m_dtct=[boolean]
    Depends on FK byte 1 bit 3. Perhaps stands for "motion detector present" AKA "Intelligent eye", but unconfirmed. The app doesn't use this parameter.

  • ac_dst=[string]
    Depends on FK byte 2 bit 0. Value of 0 is reported as "jp", value of 1 is "--". Clearly relates to region (jp or EU ?), but the app ignores this particular setting; and experiments show no connection with reg= in /common/basic_info.

  • disp_dry=[boolean ?]
    Totally unknown.

  • dmnd=[boolean]
    Demand mode available. Specified by bit 0 of byte 3 in FK, only if protocol >= v3.

  • en_scdltmr=[integer]
    Supposedly a weekly schedule timer availability flag.
    The app knows two values: 1 and 2. Probably the number specifies timer API version (see /aircon/get_scdltimer_info. Since this feature is quite complex, it's most likely implemented by controller itself, and does not map to any S21 functionality.

  • en_frate=[boolean]
    Fan speed control is available

  • en_fdir=[boolean]
    Fan direction (swing) control is available

  • s_fdir=[integer]
    Available swing directions (bitmask). Bit 0 = vertical, bit 1 = horizontal
    These three bits are encoded in response to FK command. Daikin apps present fan controls depending on these values.

  • en_rtemp_a=[boolean]
    Unknown. Enabled for protocol v3+ if byte 0 bit 6 of FK is set to zero. Daikin online controller app doesn't use it.
    When enabled, also enables presence of atlmt_l= and atlmt_h= parameters, (see below)

  • en_spmode=[integer]
    Bitmask, telling which special modes are present. Taken from FU00, requires protocol v3.20.

    • bit 0 - Powerful
    • bit 1 - Eco
    • bit 2 - Streamer
  • en_ipw_sep=[boolean]
    Something to do with password lock. Controller's feature, not related to S21.

  • en_mompow=[boolean]
    Unknown. Not used by app.

  • en_onofftmr=[boolean]
    Reads like "enable on/off timer". Has always been seen reporting 1, and in fact F3 is mandatory; BRP069B41 controller keeps looping with NAK response and fails to start up if simulator returns NAK to this command. The app also does not contain any references to this flag.

  • atlmt_l=[float] Unknown, only present when en_rtemp_a=1. Daikin online controller app doesn't use it.

  • atlmt_h=[float] Unknown, only present when en_rtemp_a=1. The value is determined by FU02 byte 1, Daikin online controller app doesn't use it.

  • hmlmt_l=[float]
    Minimum allowed temperature for Heat mode. Depends on FU02 byte 3. This parameter is only present in v3 protocol; and only if FU02 reports valid value. If missing, the "Daikin online controller" app defaults to 10.0.

The following parameters are not reported by my controller, but i found them in app disassembly:

  • cmlmt_h=[float]
    Maximum allowed temperature for Cool mode (non-japanese version). Defaults to 32.
  • cmlmt_l=[float]
    Minimum allowed temperature for Cool mode (non-japanese version). Defaults to 18.
  • hmlmt_h=[float]
    Maximum allowed temperature for Heat mode (non-japanese version). Defaults to 30.
  • subtype=[string]
    If the value is "qa", temperature range of {cmlmt_h, hmlmt_l} will be used for Auto mode. Otherwise defaults to {30, 18}.
  • en_frate_auto=[boolean]
    Specifies whether the A/C has "Auto" fan speed option. For protocol v2 defaults to 1 if not present.
  • en_frate_silent=[boolean]
    Specifies whether the A/C has "Silent" fan speed option. For protocol v2 defaults to 1 if not present.
  • frate_steps=[integer]
    Specifies how many fixed fan speeds (1 to 5, i. e. low to high) are available:
frate_steps Speeds
empty value None
2 1, 5
3 1, 3, 5
anything else 5

If not present, all speeds 1-5 are available

  • reg=[string] The app checks for reg=jp in multiple places; certain capabilities depend on it a lot. Looks like denotes a japanese version, but needs japanese controller. It's unclear whether reg= has any relationship with dst= parameter.

/aircon/get_monitordata

Looks like monitor for some raw S21 values. Not used by the app, info provided by MUN0X: https://github.com/revk/ESP32-Faikin/issues/408#issuecomment-2332441985

Response (protocol 3.20):
ret=OK,mondata=pv=3.20,cpv=3,cpv_minor=20,mac=204ef6663d8a,fan=303532,tap=35,mode=33,pow=30,rawrtmp=2b323435,humid=ff,trtmp=2b323135,fangl=2b323335,hetmp=2b313835,itelc=3030303031303031,eepid=31333544,cmpfrq=303432,otmp=2b323035,gx00=0000,gx01=0000,gx02=00000000,gx03=0000,gx04=0000,gx05=0000,gx06=30303030,gx07=00000000,gx08=00000000,gx09=00000000,gx0A=00000000,gx0B=0000,gx0C=0000

Response (protocol 3.40):
ret=OK,mondata=pv=3.40,cpv=3,cpv_minor=40,mac=204ef6663d8a,fan=303532,tap=35,mode=33,pow=30,rawrtmp=2b323435,humid=ff,trtmp=2b323135,fangl=2b323335,hetmp=2b313835,itelc=3030303031303030,eepid=31333544,cmpfrq=303432,otmp=2b323035,stemp=49,deltaH=3034,tgthum=3332,fdir=303f,gx00=3241,gx01=3637,gx02=30303030,gx03=3030,gx04=3430,gx05=3030,gx06=30303030,gx07=30313930,gx08=00000000,swid=3137303135313831,gx09=46464646,gx0A=37343041,gx0B=3030,gx0C=3030,gx0D=3030303030303030,gx0E=3030303030303030,gx0F=3030303030303030,gx10=3030303030303030,gx11=3030303030303030,gx12=3033,gx13=303030030303030,gx14=3030303030313030,gx15=30303030,gx16=3643,gx17=3030,gx18=3032,fdir_ud=00,f_dir_lr=00,prod_model=46545841333543325631425320202020202020202020,prod_site=31202020,prod_line=202020202020,prod_order=322020202020202020202020202020,inp_site=3330,inp_base=30,inp_dev=30,inp_mdate=3230303030303030,inp_serial=303030303030303030303030,outp_site=3420,outp_base=20,outp_dev=20,outp_mdate=2020202020202020,outp_serial=202020202020202020202020,ResetCount=0,LastResetTime=----/--/-- --:--:--,RouterDisconCnt=0,PollingErrCnt=0

  • pv, cpv, cpv_minor
    Conditioner and controller protocol version. Duplicate information from /aircon/get_model_info
  • mac
    Wi-fi adapter MAC address. Duplicates information from /common/basic_info
  • fan
    Raw hexadecimal representation of fan RPM, reported by RL
  • tap
    Unknown
  • mode
    Raw hex representation of current operation mode, reported by byte 1 of F1
  • pow
    Raw hex representation of power on/off state, reported by byte 0 of F1
  • rawrtmp
    Raw hex representation of home temperature, reported by RH
  • humid
    Humidity sensor value ? Needs confirmation
  • trtmp
    Raw hex representation of target temperature value, reported by RX
  • fangl
    Raw hex representation of louver angle value, reported by RN
  • hetmp
    Raw hex representation of inlet temperature value, reported by RI
  • itelc
    A 8-byte hexadecimal string; which is composed of responses from several other commands:
    • bytes 0 - 3 - response of FN
    • byte 4 - taken from byte 3 of response to FK. Bit 0 is demand mode availability flag.
    • byte 5 - unknown
    • byte 6 - unknown
    • byte 7 - power state on/off, the same as pwr=
  • eepid
    Raw hexadecimal representation of model ID, reported by FC
  • cmpfrq
    Raw hexadecimal representation of compressor RPM, reported by Rd
  • otmp
    Raw hexadecimal representation of outside temperature, reported by Ra
  • gx??
    Not verified, but it's easy to see that these are raw hex responses of respective FXxx commands (protocol v3+). gx00=0000,gx01=0000,gx02=00000000,gx03=0000,gx04=0000,gx05=0000,gx06=30303030,gx07=00000000,gx08=00000000,gx09=00000000,gx0A=00000000,gx0B=0000,gx0C
  • swid=[8 bytes hex] Raw hexadecimal representation of indoor unit firmware version string, reported by bytes 0...7 of VS000M
  • fdir_ud
    TBD
  • f_dir_lr
    TBD
  • prod_model
    Raw hexadecimal representation of model number string, reported by FU05 with trailing FF bytes omitted
  • prod_site=[4 bytes hex]
    Production site ??? Raw hexadecimal representation of bytes 0...3, reported by FU15
  • prod_line=[6 bytes hex]
    Production line ??? Raw hexadecimal representation of bytes 4...9, reported by FU15
  • prod_order
    Production order ??? Raw hexadecimal representation of data, reported by FU25
  • inp_site=[2 bytes hex]
    Raw hexadecimal representation of bytes 0...1, reported by FU35
  • inp_base=[1 byte hex]
    Raw hexadecimal representation of byte 2, reported by FU35
  • inp_dev=[1 byte hex]
    Raw hexadecimal representation of byte 3, reported by FU35
  • inp_mdate=[8 bytes hex]
    Raw hexadecimal representation of bytes 4...11, reported by FU35
  • inp_serial=[12 bytex hex]
    Raw hexadecimal representation of bytes 12...23, reported by FU35
  • outp_site=[2 bytex hes]
    Raw hexadecimal representation of bytes 0...1, reported by FU45
  • outp_base=[1 byte hex]
    Raw hexadecimal representation of byte 2, reported by FU45
  • outp_dev=[1 byte hex]
    Raw hexadecimal representation of byte 3, reported by FU45
  • outp_mdate=[8 bytes hex]
    Raw hexadecimal representation of bytes 4...11, reported by FU45
  • outp_serial=[12 bytex hex]
    Raw hexadecimal representation of bytes 12...23, reported by FU45

/aircon/get_timer

Response: ret=PARAM NG,msg=404 Not Found

Not supported

"Set" queries

/common/register_terminal

Parameters: key=[hex_string] Register a client UUID. Supplied key must be the same key as printed on controller's sticker. If correct, responds with "ret=OK" and adds "X-Daikin-uuid:" header value to internal controller's database, thus authorizing the specified client.

/common/unregister_terminal

Parameters: type=[integer] Unregister a client's UUID or everyone accorging to 'type' value given:

  • 0 - Unregister self (only given UUID)
  • 1 - Unregister others (except given UUID)
  • 2 - Unregister everyone

/common/set_regioncode

Parameters: reg=[code]
Changes controller's region code, reported by /common/basic_info. The code is programmed into controller's NVRAM.

/aircon/set_control_info

Description: TBD

/aircon/set_demand_control

/aircon/set_price

Parameters: price_int=[integer],price_dec=[integer]

Provided values are stored in controller's NVRAM and provided back in /aircon/get_price. No S21 commands are issued

/aircon/set_program

/aircon/set_target

/aircon/set_scdltimer_body

/aircon/set_scdltimer

/aircon/set_scdltimer_info

/aircon/set_special_mode

/aircon/set_timer

⚠️ **GitHub.com Fallback** ⚠️