prefixkit Ask an engineerAsk Support RU

Zigbee devices Thermostats and radiator valves

Danfoss Icon2

Icon2 Main Controller, Room Thermostat or Sensor. Works with Zigbee2MQTT with no vendor hub or cloud: it pairs with a Zigbee stick and shows up in Home Assistant.

Vendor
Danfoss
Model
Icon2
Type
Thermostats and radiator valves
Power
battery: an end device, does not extend the mesh
Firmware updates (OTA)
yes, through Zigbee2MQTT

Find it in shops: AliExpress

Links open a search in the shop; some are affiliate links: buying through them costs you nothing extra and supports this site. We do not sell devices or get them from manufacturers.

What it exposes

FeaturePropertyValuesControl
Battery (1)battery_1% · 0…100read only
Climate (1)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (1)min_heat_setpoint_limit_1°C · 4…35settable
Max heat setpoint limit (1)max_heat_setpoint_limit_1°C · 4…35settable
Setpoint change source (1)setpoint_change_source_1manual, schedule, externallyread only
Output status (1)output_status_1inactive, activeread only
Room status code (1)room_status_code_1no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (1)room_floor_sensor_mode_1comfort, floor_only, dual_moderead only
Floor min setpoint (1)floor_min_setpoint_1°C · 18…35settable
Floor max setpoint (1)floor_max_setpoint_1°C · 18…35settable
Icon2 pre heat (1)icon2_pre_heat_1disable, enableread only
Icon2 pre heat status (1)icon2_pre_heat_status_1disable, enableread only
Temperature (1)temperature_1°Cread only
Humidity (1)humidity_1%read only
Battery (2)battery_2% · 0…100read only
Climate (2)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (2)min_heat_setpoint_limit_2°C · 4…35settable
Max heat setpoint limit (2)max_heat_setpoint_limit_2°C · 4…35settable
Setpoint change source (2)setpoint_change_source_2manual, schedule, externallyread only
Output status (2)output_status_2inactive, activeread only
Room status code (2)room_status_code_2no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (2)room_floor_sensor_mode_2comfort, floor_only, dual_moderead only
Floor min setpoint (2)floor_min_setpoint_2°C · 18…35settable
Floor max setpoint (2)floor_max_setpoint_2°C · 18…35settable
Icon2 pre heat (2)icon2_pre_heat_2disable, enableread only
Icon2 pre heat status (2)icon2_pre_heat_status_2disable, enableread only
Temperature (2)temperature_2°Cread only
Humidity (2)humidity_2%read only
Battery (3)battery_3% · 0…100read only
Climate (3)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (3)min_heat_setpoint_limit_3°C · 4…35settable
Max heat setpoint limit (3)max_heat_setpoint_limit_3°C · 4…35settable
Setpoint change source (3)setpoint_change_source_3manual, schedule, externallyread only
Output status (3)output_status_3inactive, activeread only
Room status code (3)room_status_code_3no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (3)room_floor_sensor_mode_3comfort, floor_only, dual_moderead only
Floor min setpoint (3)floor_min_setpoint_3°C · 18…35settable
Floor max setpoint (3)floor_max_setpoint_3°C · 18…35settable
Icon2 pre heat (3)icon2_pre_heat_3disable, enableread only
Icon2 pre heat status (3)icon2_pre_heat_status_3disable, enableread only
Temperature (3)temperature_3°Cread only
Humidity (3)humidity_3%read only
Battery (4)battery_4% · 0…100read only
Climate (4)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (4)min_heat_setpoint_limit_4°C · 4…35settable
Max heat setpoint limit (4)max_heat_setpoint_limit_4°C · 4…35settable
Setpoint change source (4)setpoint_change_source_4manual, schedule, externallyread only
Output status (4)output_status_4inactive, activeread only
Room status code (4)room_status_code_4no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (4)room_floor_sensor_mode_4comfort, floor_only, dual_moderead only
Floor min setpoint (4)floor_min_setpoint_4°C · 18…35settable
Floor max setpoint (4)floor_max_setpoint_4°C · 18…35settable
Icon2 pre heat (4)icon2_pre_heat_4disable, enableread only
Icon2 pre heat status (4)icon2_pre_heat_status_4disable, enableread only
Temperature (4)temperature_4°Cread only
Humidity (4)humidity_4%read only
Battery (5)battery_5% · 0…100read only
Climate (5)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (5)min_heat_setpoint_limit_5°C · 4…35settable
Max heat setpoint limit (5)max_heat_setpoint_limit_5°C · 4…35settable
Setpoint change source (5)setpoint_change_source_5manual, schedule, externallyread only
Output status (5)output_status_5inactive, activeread only
Room status code (5)room_status_code_5no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (5)room_floor_sensor_mode_5comfort, floor_only, dual_moderead only
Floor min setpoint (5)floor_min_setpoint_5°C · 18…35settable
Floor max setpoint (5)floor_max_setpoint_5°C · 18…35settable
Icon2 pre heat (5)icon2_pre_heat_5disable, enableread only
Icon2 pre heat status (5)icon2_pre_heat_status_5disable, enableread only
Temperature (5)temperature_5°Cread only
Humidity (5)humidity_5%read only
Battery (6)battery_6% · 0…100read only
Climate (6)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (6)min_heat_setpoint_limit_6°C · 4…35settable
Max heat setpoint limit (6)max_heat_setpoint_limit_6°C · 4…35settable
Setpoint change source (6)setpoint_change_source_6manual, schedule, externallyread only
Output status (6)output_status_6inactive, activeread only
Room status code (6)room_status_code_6no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (6)room_floor_sensor_mode_6comfort, floor_only, dual_moderead only
Floor min setpoint (6)floor_min_setpoint_6°C · 18…35settable
Floor max setpoint (6)floor_max_setpoint_6°C · 18…35settable
Icon2 pre heat (6)icon2_pre_heat_6disable, enableread only
Icon2 pre heat status (6)icon2_pre_heat_status_6disable, enableread only
Temperature (6)temperature_6°Cread only
Humidity (6)humidity_6%read only
Battery (7)battery_7% · 0…100read only
Climate (7)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (7)min_heat_setpoint_limit_7°C · 4…35settable
Max heat setpoint limit (7)max_heat_setpoint_limit_7°C · 4…35settable
Setpoint change source (7)setpoint_change_source_7manual, schedule, externallyread only
Output status (7)output_status_7inactive, activeread only
Room status code (7)room_status_code_7no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (7)room_floor_sensor_mode_7comfort, floor_only, dual_moderead only
Floor min setpoint (7)floor_min_setpoint_7°C · 18…35settable
Floor max setpoint (7)floor_max_setpoint_7°C · 18…35settable
Icon2 pre heat (7)icon2_pre_heat_7disable, enableread only
Icon2 pre heat status (7)icon2_pre_heat_status_7disable, enableread only
Temperature (7)temperature_7°Cread only
Humidity (7)humidity_7%read only
Battery (8)battery_8% · 0…100read only
Climate (8)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (8)min_heat_setpoint_limit_8°C · 4…35settable
Max heat setpoint limit (8)max_heat_setpoint_limit_8°C · 4…35settable
Setpoint change source (8)setpoint_change_source_8manual, schedule, externallyread only
Output status (8)output_status_8inactive, activeread only
Room status code (8)room_status_code_8no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (8)room_floor_sensor_mode_8comfort, floor_only, dual_moderead only
Floor min setpoint (8)floor_min_setpoint_8°C · 18…35settable
Floor max setpoint (8)floor_max_setpoint_8°C · 18…35settable
Icon2 pre heat (8)icon2_pre_heat_8disable, enableread only
Icon2 pre heat status (8)icon2_pre_heat_status_8disable, enableread only
Temperature (8)temperature_8°Cread only
Humidity (8)humidity_8%read only
Battery (9)battery_9% · 0…100read only
Climate (9)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (9)min_heat_setpoint_limit_9°C · 4…35settable
Max heat setpoint limit (9)max_heat_setpoint_limit_9°C · 4…35settable
Setpoint change source (9)setpoint_change_source_9manual, schedule, externallyread only
Output status (9)output_status_9inactive, activeread only
Room status code (9)room_status_code_9no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (9)room_floor_sensor_mode_9comfort, floor_only, dual_moderead only
Floor min setpoint (9)floor_min_setpoint_9°C · 18…35settable
Floor max setpoint (9)floor_max_setpoint_9°C · 18…35settable
Icon2 pre heat (9)icon2_pre_heat_9disable, enableread only
Icon2 pre heat status (9)icon2_pre_heat_status_9disable, enableread only
Temperature (9)temperature_9°Cread only
Humidity (9)humidity_9%read only
Battery (10)battery_10% · 0…100read only
Climate (10)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (10)min_heat_setpoint_limit_10°C · 4…35settable
Max heat setpoint limit (10)max_heat_setpoint_limit_10°C · 4…35settable
Setpoint change source (10)setpoint_change_source_10manual, schedule, externallyread only
Output status (10)output_status_10inactive, activeread only
Room status code (10)room_status_code_10no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (10)room_floor_sensor_mode_10comfort, floor_only, dual_moderead only
Floor min setpoint (10)floor_min_setpoint_10°C · 18…35settable
Floor max setpoint (10)floor_max_setpoint_10°C · 18…35settable
Icon2 pre heat (10)icon2_pre_heat_10disable, enableread only
Icon2 pre heat status (10)icon2_pre_heat_status_10disable, enableread only
Temperature (10)temperature_10°Cread only
Humidity (10)humidity_10%read only
Battery (11)battery_11% · 0…100read only
Climate (11)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (11)min_heat_setpoint_limit_11°C · 4…35settable
Max heat setpoint limit (11)max_heat_setpoint_limit_11°C · 4…35settable
Setpoint change source (11)setpoint_change_source_11manual, schedule, externallyread only
Output status (11)output_status_11inactive, activeread only
Room status code (11)room_status_code_11no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (11)room_floor_sensor_mode_11comfort, floor_only, dual_moderead only
Floor min setpoint (11)floor_min_setpoint_11°C · 18…35settable
Floor max setpoint (11)floor_max_setpoint_11°C · 18…35settable
Icon2 pre heat (11)icon2_pre_heat_11disable, enableread only
Icon2 pre heat status (11)icon2_pre_heat_status_11disable, enableread only
Temperature (11)temperature_11°Cread only
Humidity (11)humidity_11%read only
Battery (12)battery_12% · 0…100read only
Climate (12)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (12)min_heat_setpoint_limit_12°C · 4…35settable
Max heat setpoint limit (12)max_heat_setpoint_limit_12°C · 4…35settable
Setpoint change source (12)setpoint_change_source_12manual, schedule, externallyread only
Output status (12)output_status_12inactive, activeread only
Room status code (12)room_status_code_12no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (12)room_floor_sensor_mode_12comfort, floor_only, dual_moderead only
Floor min setpoint (12)floor_min_setpoint_12°C · 18…35settable
Floor max setpoint (12)floor_max_setpoint_12°C · 18…35settable
Icon2 pre heat (12)icon2_pre_heat_12disable, enableread only
Icon2 pre heat status (12)icon2_pre_heat_status_12disable, enableread only
Temperature (12)temperature_12°Cread only
Humidity (12)humidity_12%read only
Battery (13)battery_13% · 0…100read only
Climate (13)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (13)min_heat_setpoint_limit_13°C · 4…35settable
Max heat setpoint limit (13)max_heat_setpoint_limit_13°C · 4…35settable
Setpoint change source (13)setpoint_change_source_13manual, schedule, externallyread only
Output status (13)output_status_13inactive, activeread only
Room status code (13)room_status_code_13no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (13)room_floor_sensor_mode_13comfort, floor_only, dual_moderead only
Floor min setpoint (13)floor_min_setpoint_13°C · 18…35settable
Floor max setpoint (13)floor_max_setpoint_13°C · 18…35settable
Icon2 pre heat (13)icon2_pre_heat_13disable, enableread only
Icon2 pre heat status (13)icon2_pre_heat_status_13disable, enableread only
Temperature (13)temperature_13°Cread only
Humidity (13)humidity_13%read only
Battery (14)battery_14% · 0…100read only
Climate (14)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (14)min_heat_setpoint_limit_14°C · 4…35settable
Max heat setpoint limit (14)max_heat_setpoint_limit_14°C · 4…35settable
Setpoint change source (14)setpoint_change_source_14manual, schedule, externallyread only
Output status (14)output_status_14inactive, activeread only
Room status code (14)room_status_code_14no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (14)room_floor_sensor_mode_14comfort, floor_only, dual_moderead only
Floor min setpoint (14)floor_min_setpoint_14°C · 18…35settable
Floor max setpoint (14)floor_max_setpoint_14°C · 18…35settable
Icon2 pre heat (14)icon2_pre_heat_14disable, enableread only
Icon2 pre heat status (14)icon2_pre_heat_status_14disable, enableread only
Temperature (14)temperature_14°Cread only
Humidity (14)humidity_14%read only
Battery (15)battery_15% · 0…100read only
Climate (15)occupied_heating_setpoint, local_temperature, system_mode, running_stateheating setpoint, room temperature, mode, running statesettable
Min heat setpoint limit (15)min_heat_setpoint_limit_15°C · 4…35settable
Max heat setpoint limit (15)max_heat_setpoint_limit_15°C · 4…35settable
Setpoint change source (15)setpoint_change_source_15manual, schedule, externallyread only
Output status (15)output_status_15inactive, activeread only
Room status code (15)room_status_code_15no_error, missing_rt, rt_touch_error, floor_sensor_short_circuit, floor_sensor_disconnectedread only
Room floor sensor mode (15)room_floor_sensor_mode_15comfort, floor_only, dual_moderead only
Floor min setpoint (15)floor_min_setpoint_15°C · 18…35settable
Floor max setpoint (15)floor_max_setpoint_15°C · 18…35settable
Icon2 pre heat (15)icon2_pre_heat_15disable, enableread only
Icon2 pre heat status (15)icon2_pre_heat_status_15disable, enableread only
Temperature (15)temperature_15°Cread only
Humidity (15)humidity_15%read only
System status code (232)system_status_code_232no_error, missing_expansion_board, missing_radio_module, missing_command_module, missing_master_rail, missing_slave_rail_no_1, missing_slave_rail_no_2, pt1000_input_short_circuit …read only
Heat supply request (232)heat_supply_request_232none, heat_supply_requestread only
System status water (232)system_status_water_232hot_water_flow_in_pipes, cool_water_flow_in_pipesread only
Multimaster role (232)multimaster_role_232invalid_unused, master, slave_1, slave_2read only
Icon application (232)icon_application_2320, 1, 2, 3, 4, 5, 6, 7 …read only
Icon forced heating cooling (232)icon_forced_heating_cooling_232force_heating, force_cooling, noneread only

MQTT: state and commands

Zigbee2MQTT publishes the device state to zigbee2mqtt/my_device (my_device is the name you give the device). An example message:

{
  "battery_1": 87,
  "occupied_heating_setpoint": 21,
  "local_temperature": 20.5,
  "system_mode": "heat",
  "min_heat_setpoint_limit_1": 20,
  "max_heat_setpoint_limit_1": 20,
  "setpoint_change_source_1": "manual",
  "output_status_1": "inactive",
  "room_status_code_1": "no_error",
  "room_floor_sensor_mode_1": "comfort",
  "floor_min_setpoint_1": 27,
  "floor_max_setpoint_1": 27,
  "icon2_pre_heat_1": "disable",
  "icon2_pre_heat_status_1": "disable",
  "linkquality": 120
}

Send commands to zigbee2mqtt/my_device/set:

mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"occupied_heating_setpoint":21.5}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"system_mode":"heat"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"occupied_heating_setpoint":21.5}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"system_mode":"heat"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"occupied_heating_setpoint":21.5}'

Watch the topics live from the browser: MQTT client.

Home Assistant automation example

Zigbee2MQTT creates Home Assistant entities from the device name. If it is called my_device, an automation in automations.yaml can look like this:

- alias: "Cooler at night"
  mode: single
  triggers:
    - trigger: time
      at: "23:00:00"
  actions:
    - action: climate.set_temperature
      target:
        entity_id: climate.my_device
      data:
        temperature: 18

Check the YAML: YAML checker.

How to pair it

  1. In Zigbee2MQTT click Permit join.
  2. Put the device in pairing mode: usually a long press of the reset button (5–10 s) until the LED blinks; bulbs: switch the power off and on 5–6 times.
  3. Keep the device close to the coordinator or a router while pairing.
  4. Give it a clear name: MQTT topics and Home Assistant entities are built from it.

Exact procedure and model notes: the device page in the Zigbee2MQTT docs. No coordinator yet: coordinator picker.

Similar devices

Idea?