I did a man in the middle capture and found the following end points:
/[0]
/[0]/MNAE/0
/[0]/MNAE/0/DateTime/la
/[0]/MNAE/0/Error/la
/[0]/MNAE/0/UnitProfile/la
/[0]/MNAE/1
/[0]/MNAE/1/ChildLock/LockedState/la
/[0]/MNAE/1/ChildLock/PinCode/la
/[0]/MNAE/1/Consumption/la
/[0]/MNAE/1/Holiday/EndDate/la
/[0]/MNAE/1/Holiday/HolidayState/la
/[0]/MNAE/1/Holiday/StartDate/la
/[0]/MNAE/1/Operation/OperationMode/la
/[0]/MNAE/1/Operation/Power/la
/[0]/MNAE/1/Operation/TargetTemperature/la
/[0]/MNAE/1/Schedule/Next/la
/[0]/MNAE/1/Sensor/IndoorTemperature/la
/[0]/MNAE/1/Sensor/OutdoorTemperature/la
/[0]/MNAE/1/UnitIdentifier/Icon/la
/[0]/MNAE/1/UnitIdentifier/Name/la
/[0]/MNAE/1/UnitProfile/la
/[0]/MNAE/1/UnitStatus/EmergencyState/la
/[0]/MNAE/1/UnitStatus/ErrorState/la
/[0]/MNAE/1/UnitStatus/InstallerState/la
/[0]/MNAE/1/UnitStatus/TargetTemperatureOverruledState/la
/[0]/MNAE/1/UnitStatus/WarningState/la
/[0]/MNAE/2
/[0]/MNAE/2/ChildLock/LockedState/la
/[0]/MNAE/2/ChildLock/PinCode/la
/[0]/MNAE/2/Consumption/la
/[0]/MNAE/2/Holiday/EndDate/la
/[0]/MNAE/2/Holiday/HolidayState/la
/[0]/MNAE/2/Holiday/StartDate/la
/[0]/MNAE/2/Operation/OperationMode/la
/[0]/MNAE/2/Operation/Power/la
/[0]/MNAE/2/Operation/Powerful/la
/[0]/MNAE/2/Operation/TargetTemperature/la
/[0]/MNAE/2/Schedule/Next/la
/[0]/MNAE/2/Sensor/TankTemperature/la
/[0]/MNAE/2/UnitIdentifier/Icon/la
/[0]/MNAE/2/UnitIdentifier/Name/la
/[0]/MNAE/2/UnitInfo/UnitType/la
/[0]/MNAE/2/UnitProfile/la
/[0]/MNAE/2/UnitStatus/EmergencyState/la
/[0]/MNAE/2/UnitStatus/ErrorState/la
/[0]/MNAE/2/UnitStatus/InstallerState/la
/[0]/MNAE/2/UnitStatus/ReheatState/la
/[0]/MNAE/2/UnitStatus/TargetTemperatureOverruledState/la
/[0]/MNAE/2/UnitStatus/WarningState/la
/[0]/MNAE/2/UnitStatus/WeatherDependentState/la
/[0]/MNAE/3
/[0]/MNCSE-node/deviceInfo
/[0]/MNCSE-node/firmware
You can do a discovery of your device by asking for the [0]/MNAE/
and then a number. This will give you a response of what unit you are talking to:
{"m2m:rsp":{"rsc":2000,"rqi":"lcmsd","to":"/S","fr":"/[0]/MNAE/0","pc":{"m2m:cnt":{"rn":"0","ri":"006a","pi":"C0003","ty":3,"ct":"20000000T000000Z","lt":"20000000T000000Z","st":11,"lbl":"function/Adapter"}}}}
{"m2m:rsp":{"rsc":2000,"rqi":"lnjnp","to":"/S","fr":"/[0]/MNAE/2","pc":{"m2m:cnt":{"rn":"2","ri":"003c","pi":"C0003","ty":3,"ct":"20000000T000000Z","lt":"20000000T000000Z","st":13,"lbl":"function/DomesticHotWaterTank"}}}}
A non existing unit will give you a rsc:4004
. The next step would then be to request the unit profile: /[0]/MNAE/2/UnitProfile/la
which gives you a map of the end points that can be talked to and some information about what answers to expect (only the con part shown here):
{
"Sensor":[
"IndoorTemperature",
"OutdoorTemperature"
],
"UnitStatus":[
"ErrorState",
"InstallerState",
"WarningState",
"EmergencyState",
"TargetTemperatureOverruledState"
],
"Operation":{
"Power":[
"on",
"standby"
],
"OperationMode":[
"heating"
],
"TargetTemperature":{
"heating":{
"maxValue":30.0000000000000000,
"minValue":12.0000000000000000,
"stepValue":1.0000000000000000
}
}
},
"Schedule":{
"Base":"action",
"defaultScheduleAvailable":"true",
"NameAdjustable":"false",
"List":{
"heating":[
{
"StartTime":{
"stepValue":10.0000000000000000,
"unit":"minutes"
},
"TargetTemperature":{
"heating":{
"maxValue":30.0000000000000000,
"minValue":12.0000000000000000,
"stepValue":1.0000000000000000
}
},
"Actions":[
"StartTime",
"TargetTemperature"
],
"maxActionsAllowed":6
},
[
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
],
[
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
],
[
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
],
[
]
]
}
},
"Consumption":{
"Electrical":{
"unit":"kWh",
"Heating":{
"Daily":{
"contentCount":24,
"resolution":2
},
"Weekly":{
"contentCount":14,
"resolution":1
},
"Monthly":{
"contentCount":24,
"resolution":1
}
}
}
}
}{
"Sensor":[
"TankTemperature"
],
"UnitStatus":[
"ErrorState",
"InstallerState",
"WeatherDependentState",
"WarningState",
"EmergencyState"
],
"Operation":{
"Power":[
"on",
"standby"
],
"OperationMode":[
"reheat_only"
],
"TargetTemperature":{
"reheat_only":{
"maxValue":60.0000000000000000,
"minValue":30.0000000000000000,
"stepValue":1.0000000000000000
}
},
"powerful":[
"0",
"1"
]
},
"Schedule":{
},
"Consumption":{
"Electrical":{
"unit":"kWh",
"Heating":{
"Daily":{
"contentCount":24,
"resolution":2
},
"Weekly":{
"contentCount":14,
"resolution":1
},
"Monthly":{
"contentCount":24,
"resolution":1
}
}
}
}
}
Notably interesting is the response to consumption:
{"Electrical":{"Heating":{"D":[0,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,3,null],"W":[1,1,2,2,1,0,1,1,2,null,null,null,null,null],"M":[null,null,null,null,null,null,null,null,null,null,null,null,null,0,82,23,100,null,null,null,null,null,null,null]}}}
Unfortunately I don’t have my heating on long enough to get some more interesting data. But I consider writing a proper Daikin adapter bundle as there is some interesting data on these.