Schneider Electric WV704R0A0902

VendorSchneider Electric
DescriptionWiser radiator thermostat
Exposesclimate (occupied_heating_setpoint, local_temperature, running_state, pi_heating_demand), linkquality
PictureSchneider Electric WV704R0A0902


Device pairing/installation

To put the TRV in installation mode twist and hold the cap in the + direction until the central LED flashes green. The device is ready for joining when:

  • left/right LEDs flash red/blue
  • central LED shows a solid orange

If central light shows a solid green, your TRV has been paired and is connected to the zigbee network.

If blinking with yellow, then your TRV is not paired or can't connect to the zigbee network. If Zigbee2MQTT is running and accepting new devices the valve should join the network. Sometimes you may need to twist and hold the cap in the + direction for 3 seconds before it will try to join.

Note: Zigbee2MQTT might not be able to correctly configure the TRV until you have calibrated it.

If the valve is not recognized, you can turn the boost button to positive and hold it; the red light starts to blink slowly. Release the button once the red light stops blinking.


After installing the TRV twist the cap in the - direction and hold for 2 seconds until the blue LED lights up.

Device hard reset

If the device fails to pair/join the network (red:yellow:blue on pairing mode) or you changed the network id/channel, connect to another network, bought the TRV second hand, you can perform a factory reset to start fresh.

  1. Make sure that the TRV is NOT in pairing mode.
  2. Twist the cap in the - direction and hold till blue light turns off and then center light blinks red (about 15 seconds).
  3. Release the button, you should see a red:green:blue short flash; the valve will go into installation mode.


Valve sometimes fails to respond/acknowledge a setting, just send the command again.

  • Get local temperature in degrees Celsius.

        "local_temperature": ""
  • Get or set occupied heating setpoint to <temperature> in degrees Celsius. Possible values: 7 to 30 by default; leave empty to read.

        "occupied_heating_setpoint": "<temperature>"
  • Get or set the keypad lock, i.e. enable/disable twist-top boost. Possible values: "unlock", "lock1". WARNING Setting the keypad to lock (i.e. "lock1") disables the twist-top boost button which impedes setting the valve to installation mode or hard-reseting it.

        "keypad_lockout": ""
  • Get the battery level, in percentage. Possible values 0 to 100 (%). The level corresponds voltages in the range 2.2 V (0%) to 3.0 V (100%). The levels where chosen so a 0% indicates that batteries must be replaced, but the valve will still work.

        "battery": ""
  • Get the battery voltage. Possible values 0.0 to 3.0 (V). This is a direct measure of the battery voltage.

        "voltage": ""
  • Get the (latest) twist-top boost state. Possible values:

    Attribute ValueDescription
    1Boost up
    0No boost
    -1Boost down

    Note that the valve will not automatically toggle the value to 0 after some time, i.e. configuration/automation logic is needed to use the value. E.g. in Home Assistant the expire_after setting can be used to handle this.

  • Get the valve position / heating demand. Will report the valve position or heating amount depending. Possible values 0 to 100 (%).

        "pi_heating_demand": ""
  • Get the valve motor state. Possible values: "Stall", others. String description of the motor state. Seems to change when the motor is moving.

        "MOT": ""
  • Get the Zigbee link quality. Possible values 0 to 100 (%).

        "linkquality": ""


How to use device type specific configuration

  • thermostat_unit: Controls the temperature unit of the thermostat (default celsius). The value must be one of celsius, fahrenheit

  • legacy: Set to false to disable the legacy integration (highly recommended), will change structure of the published payload (default true). The value must be true or false



This climate device supports the following features: occupied_heating_setpoint, local_temperature, running_state, pi_heating_demand.

  • occupied_heating_setpoint: Temperature setpoint. To control publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"occupied_heating_setpoint": VALUE} where VALUE is the °C between 7 and 30. To read send a message to zigbee2mqtt/FRIENDLY_NAME/get with payload {"occupied_heating_setpoint": ""}.
  • pi_heating_demand: Position of the valve (= demanded heat) where 0% is fully closed and 100% is fully open. To control publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"pi_heating_demand": VALUE} where VALUE is the % between 0 and 100. Reading (/get) this attribute is not possible.
  • local_temperature: Current temperature measured on the device (in °C). Reading (/get) this attribute is not possible.
  • running_state: The current running state. Possible values are: idle, heat. Reading (/get) this attribute is not possible.

Linkquality (numeric)

Link quality (signal strength). Value can be found in the published state on the linkquality property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 255. The unit of this value is lqi.