Viessmann ZK03840
| Model | ZK03840 |
| Vendor | Viessmann |
| Description | ViCare radiator thermostat valve |
| Exposes | climate (occupied_heating_setpoint, local_temperature, system_mode, schedule), window_open, window_open_force, keypad_lockout, battery |
| Picture | ![]() |
Notes
Installing the TRV
- install the correct adaptor on the valve
- open cover (push clip on bottom and push front side to slide open)
- insert batteries (
--should be on the display) - press the button on the top (
--+((•))should be on the display) - wait for the device to pair, it took about 2 minutes for me to get the success message in Zigbee2MQTT
- install the TRV on the adaptor (push hard until you feel a click, rotate the TRV until display faces up)
- press the button on the top for 3 seconds (motor will turn,
21°+((•))should be on the display) - close the cover
Options
How to use device type specific configuration
thermostat_unit: Controls the temperature unit of the thermostat (default celsius). The value must be one ofcelsius,fahrenheit
Exposes
Climate
This climate device supports the following features: occupied_heating_setpoint, local_temperature, system_mode, schedule.
occupied_heating_setpoint: Temperature setpoint. To control publish a message to topiczigbee2mqtt/FRIENDLY_NAME/setwith payload{"occupied_heating_setpoint": VALUE}whereVALUEis the °C between7and30. To read send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"occupied_heating_setpoint": ""}.local_temperature: Current temperature measured on the device (in °C). To read send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"local_temperature": ""}.system_mode: Mode of this device. To control publish a message to topiczigbee2mqtt/FRIENDLY_NAME/setwith payload{"system_mode": VALUE}whereVALUEis one of:heat,sleep. To read send a message tozigbee2mqtt/FRIENDLY_NAME/getwith payload{"system_mode": ""}.
Window open (binary)
Detected by sudden temperature drop or set manually.. Value can be found in the published state on the window_open property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"window_open": ""}. It's not possible to write (/set) this value. If value equals true window open is ON, if false OFF.
Window open force (binary)
Manually set window_open, ~1 minute to take affect.. Value can be found in the published state on the window_open_force property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"window_open_force": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"window_open_force": NEW_VALUE}. If value equals true window open force is ON, if false OFF.
Keypad lockout (enum)
Enables/disables physical input on the device. Value can be found in the published state on the keypad_lockout property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"keypad_lockout": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"keypad_lockout": NEW_VALUE}. The possible values are: unlock, lock1, lock2.
Battery (numeric)
Remaining battery in %, can take up to 24 hours before reported. Value can be found in the published state on the battery property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

