Eurotronic SPZB0001

   
Model SPZB0001
Vendor Eurotronic
Description Spirit Zigbee wireless heater thermostat
Exposes battery, climate (occupied_heating_setpoint, local_temperature, system_mode, running_state, local_temperature_calibration, pi_heating_demand), trv_mode, valve_position, linkquality
Picture Eurotronic SPZB0001

Notes

Pairing

If you are having trouble pairing, reset the device.

  • Make sure the device is on auto or heat mode (not off). Hold boost, +, and - (a count from 1 to 10 will be on the display, it may be required for the thermostat to be dismounted from the radiator valve for this to work)
  • release once ‘rES’ is displayed
  • hit boost once after ‘Jin’ is displayed to start pairing to the ZigBee network
  • once successfully paired ‘Ins’ should be displayed and the boost button should flash green. Make sure the thermostat is mounted on the radiator valve before pressing the boost button again.
  • now the display should read ‘Ada’ indicating the adapting process is started which should mechanically calibrate the thermostat to the valve.

Recommendation

This device sends multiple messages in short time period with the same payload. It’s worth setting debounce option to throttle them without losing unique action payloads.

E.g. (devices.yaml)

'0xabc457fffe679xyz':
    friendly_name: my_device
    debounce: 0.5

Controlling

Current heating setpoint

{
    "current_heating_setpoint": 21.5
}

Current heating setpoint is also modified when occupied or unoccupied heating setpoint is set.

System mode

The system mode will be either off, auto, or heat. When set to heat the boost host flags will be set, when using off the window_open host flag will be set (and off will be displayed on the display).

Eurotronic host flags

The eurotronic_host_flags property contains an object with a true/false field for each host option.

{
  "eurotronic_host_flags": {
    "mirror_display": false,
    "boost": false,
    "window_open": false,
    "child_protection": true
  }
}

You can toggle these flags by publishing a message to the set MQTT topic containing eurotronic_host_flags. e.g. enabling the display mirroring:

{"eurotronic_host_flags": {"mirror_display": true}}

Note that true or false do not have quotes aroud them!

Eurotronic system mode

This is deprecated in favor of eurotronic_host_flags, but will still work for now.

This is a bitmap encoded field to set several device specific features. Please remind it is not possible to set single bits, always the full bitmap is written. Bit 0 doesn’t seem to be writeable, it is always reported as set, so expect your written value + 1 to be reported.

Bit Position
0 unknown (default 1)
1 Mirror display
2 Boost
3 unknown
4 disable window open
5 set window open (is reported as disable window open)
6 unknown
7 Child protection

Examples for eurotronic_system_mode:

Mirror display, reported as 3

{
    "eurotronic_system_mode": 2
}

signal external window open, current_heating_setpoint will report “5”, device display shows “OFF”

{
    "eurotronic_system_mode": 32
}

signal external window close, will restore last current_heating_setpoint value

{
    "eurotronic_system_mode": 16
}

Mirror display and set child protection.

{
    "eurotronic_system_mode": 66
}

Eurotronic error status

{
    "eurotronic_error_status": 0
}

This field is a readonly bitmap

Bit Position
0 reserved
1 reserved
2 reserved
3 Valve adaption failed (E1)
4 Valve movement too slow (E2)
5 Valve not moving/blocked (E3)
6 reserved
7 reserved

OTA updates

This device supports OTA updates, for more information see OTA updates.

Options

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

Exposes

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 %.

Climate

This climate device supports the following features: occupied_heating_setpoint, local_temperature, system_mode, running_state, local_temperature_calibration, 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 5 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). To read send a message to zigbee2mqtt/FRIENDLY_NAME/get with payload {"local_temperature": ""}.
  • system_mode: Mode of this device. To control publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"system_mode": VALUE} where VALUE is one of: off, auto, heat. To read send a message to zigbee2mqtt/FRIENDLY_NAME/get with payload {"system_mode": ""}.
  • running_state: The current running state. Possible values are: idle, heat. To read send a message to zigbee2mqtt/FRIENDLY_NAME/get with payload {"running_state": ""}.
  • local_temperature_calibration: Offset to be used in the local_temperature. To control publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"local_temperature_calibration": VALUE}.To read send a message to zigbee2mqtt/FRIENDLY_NAME/get with payload {"local_temperature": ""}.The minimal value is -12.8 and the maximum value is 12.7 with a step size of 0.1.

Trv_mode (enum)

Select between direct control of the valve via the valve_position or automatic control of the valve based on the current_heating_setpoint. For manual control set the value to 1, for automatic control set the value to 2 (the default). When switched to manual mode the display shows a value from 0 (valve closed) to 100 (valve fully open) and the buttons on the device are disabled.. Value can be found in the published state on the trv_mode property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"trv_mode": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"trv_mode": NEW_VALUE}. The possible values are: 1, 2.

Valve_position (numeric)

Directly control the radiator valve when trv_mode is set to 1. The values range from 0 (valve closed) to 255 (valve fully open). Value can be found in the published state on the valve_position property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"valve_position": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"valve_position": NEW_VALUE}. The minimal value is 0 and the maximum value is 255.

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.