@chrishamm Okay, that is confusing.
Why do we have two objects in place which provide the same information, but maybe they don't in reality?
Currently, I use the heaters to get the heating values for all tools and the bed and besides the described behavior this complies also with the UI values.
But in the end, reflect heat.heaters[1] the heater of the tool#1.

Will check the tools object later and report if the behavior is the same.

[ { "active": [ 0 ], "axes": [ [ 0 ], [ 1 ] ], "extruders": [ 0 ], "fans": [ 0 ], "feedForward": [ 0 ], "filamentExtruder": 0, "heaters": [ 1 ], "isRetracted": false, "mix": [ 1 ], "name": "Hemera", "number": 0, "offsets": [ 0, 5, 0 ], "offsetsProbed": 7, "retraction": { "extraRestart": 0, "length": 2, "speed": 16.7, "unretractSpeed": 16.7, "zHop": 0 }, "spindle": -1, "spindleRpm": 0, "standby": [ 0 ], "state": "active" } ]

Looking at the response, I (as expected) only get the reference to the heater number and not the heater values. So the values from heat.heater[1] do not fit the GCode call, but the gcode also do not show the temperature values, right?
M409 K"heat" show the same IMHO wrong active and standby values.

M409 K"heat" { "key": "heat", "flags": "", "result": { "bedHeaters": [ 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 ], "chamberHeaters": [ -1, -1, -1, -1 ], "coldExtrudeTemperature": 160, "coldRetractTemperature": 90, "heaters": [ { "active": 0, "avgPwm": 0, "current": 22.47, "max": 120, "min": -273.1, "model": { "coolingExp": 1.4, "coolingRate": 1.112, "deadTime": 2.3, "enabled": true, "fanCoolingRate": 0, "heatingRate": 0.402, "inverted": false, "maxPwm": 1, "pid": { "d": 1.219, "i": 0.0749, "overridden": false, "p": 0.74414, "used": true }, "standardVoltage": 0 }, "monitors": [ { "action": 0, "condition": "tooHigh", "limit": 120 }, { "condition": "disabled" }, { "condition": "disabled" } ], "sensor": 0, "standby": 0, "state": "off" }, { "active": 220, "avgPwm": 0, "current": 29.2, "max": 300, "min": -273.1, "model": { "coolingExp": 1.4, "coolingRate": 0.693, "deadTime": 2.2, "enabled": true, "fanCoolingRate": 0.784, "heatingRate": 4.248, "inverted": false, "maxPwm": 1, "pid": { "d": 0.115, "i": 0.0115, "overridden": false, "p": 0.07456, "used": true }, "standardVoltage": 24 }, "monitors": [ { "action": 0, "condition": "tooHigh", "limit": 300 }, { "condition": "disabled" }, { "condition": "disabled" } ], "sensor": 1, "standby": 220, "state": "off" } ] } }

a5f32d19-36cb-49d1-ae16-1ea60aaa949e-image.png

Of course, I am rather new to the Duet and RRF API so please feel free to correct me if I am wrong! I just want to make sure that both the API is delivering correct and consistent values and that my integration is working fine 🙂