Hi,
I have several Eurotronic Spirit Radiator valves and I cannot find the valve opening value reading to be used in my automation.
Anybody can help me to find and use that value?
Thanks!
Hi,
I have several Eurotronic Spirit Radiator valves and I cannot find the valve opening value reading to be used in my automation.
Anybody can help me to find and use that value?
Thanks!
The sensor is not supported in HA but you can access the data using one of the workarounds here: https://github.com/home-assistant/core/issues/14526
Bear in mind you will also have to configure the report via your zwave integration first.
After some reading on similar issues and many other posts, I managed to work around the issue. I collect here my findings for further reference, being the main source of information this post (Eurotronic Spirit Thermostats firmware issues)
zwave:
usb_path: /dev/ttyACM0
network_key: !secret zwave_network_key
device_config: !include zwave_device_config.yaml
config_path: /home/homeassistant/.homeassistant/openzwave_config
@@ -185,6 +185,11 @@ DISCOVERY_SCHEMAS = [
],
const.DISC_OPTIONAL: True,
},
+ 'valve_state': {
+ const.DISC_COMMAND_CLASS: [
+ const.COMMAND_CLASS_SWITCH_MULTILEVEL],
+ const.DISC_OPTIONAL: True,
+ },
"zxt_120_swing_mode": {
const.DISC_COMMAND_CLASS: [const.COMMAND_CLASS_CONFIGURATION],
const.DISC_INDEX: [33],
@@ -294,10 +299,12 @@ DISCOVERY_SCHEMAS = [
const.DISC_COMPONENT: "light",
const.DISC_GENERIC_DEVICE_CLASS: [
const.GENERIC_TYPE_SWITCH_MULTILEVEL,
+ const.GENERIC_TYPE_THERMOSTAT,
const.GENERIC_TYPE_SWITCH_REMOTE,
],
const.DISC_SPECIFIC_DEVICE_CLASS: [
const.SPECIFIC_TYPE_POWER_SWITCH_MULTILEVEL,
+ const.SPECIFIC_TYPE_THERMOSTAT_GENERAL_V2,
const.SPECIFIC_TYPE_SCENE_SWITCH_MULTILEVEL,
const.SPECIFIC_TYPE_NOT_USED,
],
Thanks! I was just posting my findings and I used the same source of information.
Have you tried OpenZwave Beta with the thermostats?
No, I just started with the basic home-assistant setup using pip. I did not tried the OpenZwave Beta. Do you think it can improve in any way?
Well, it should be possible to use the spiritz without any hacks, hopefully.
Look in the github issue you mentioned. There are people who are using the spiritz with successfully - including valve control.
Ohh, thanks for the heads up. Indeed it will be much better to avoid any hacks.
I will have a look when I have some time and in the meantime keep my appdaemon scripts as generic as possible to accomodate for the changes.
Thank you, it works great
I hope it will be included by default soon
I use zwave2mqtt. it detects valve opening by default, so I can configure automation to start boiler.
The other values ate not detected properly, but it provides basic functionality.
Ideally if I will have time I will create the Eurotronic full zwave config to have all values available in HA
Can-you share your configuration in zwave2mqtt?
I tried this but It’s not working…And I don’t understand what’s not working
{
"type": "climate",
"object_id": "thermostat",
"values": ["64-1-0", "49-1-1", "67-1-1", "67-1-11"],
"mode_map": { "off": "Off", "heat": "Heat", "auto": "Heat Eco" },
"setpoint_topic": { "Heat": "67-1-1", "Heat Eco": "67-1-11" },
"default_setpoint": "67-1-1",
"discovery_payload": {
"min_temp": 11,
"max_temp": 25,
"modes": ["off", "heat", "auto"],
"mode_state_topic": "64-1-0",
"mode_command_topic": true,
"current_temperature_topic": "49-1-1",
"current_temperature_template": "{{ value_json.value }}",
"temperature_state_template": "{{ value_json.value }}",
"temperature_command_topic": true
}
}
I have a standard one and it is being reset every time I reboot zwave2mqtt.
{
"type": "climate",
"object_id": "thermostat",
"values": [
"64-1-0",
"49-1-1",
"67-1-1",
"67-1-11"
],
"mode_map": {
"off": "Off",
"heat": "Heat",
"cool": "Heat Eco",
"drying": "Full Power"
},
"setpoint_topic": {
"Heat": "67-1-1",
"Heat Eco": "67-1-11",
"Full Power": "67-1-1"
},
"default_setpoint": "67-1-1",
"discovery_payload": {
"min_temp": 8,
"max_temp": 28,
"modes": [
"off",
"heat",
"cool",
"drying"
],
"mode_state_topic": "z2m/room/Thermostat/64/1/0",
"mode_command_topic": "z2m/room/Thermostat/64/1/0/set",
"current_temperature_topic": "z2m/room/Thermostat/z2m/temp",
"temp_step": 0.5,
"current_temperature_template": "{{ value_json.value }}",
"temperature_state_template": "{{ value_json.value }}",
"temperature_command_topic": "z2m/room/Thermostat/67/1/1/set",
"mode_state_template": "{{ {\"0\":\"off\",\"1\":\"heat\",\"2\":\"cool\",\"3\":\"drying\"}[value_json.value | string] | default('off') }}",
"temperature_state_topic": "z2m/room/Thermostat/67/1/1",
"temperature_unit": "C",
"precision": 0.1,
"device": {
"identifiers": [
"zwave2mqtt_0xcxxxxx_nodeX"
],
"manufacturer": "EUROtronic",
"model": "EUR_SPIRITZ Wall Radiator Thermostat (0x0001)",
"name": "Kidsroom-Thermostat",
"sw_version": "0.16"
},
"name": "Kidsroom-Thermostat_thermostat",
"unique_id": "zwave2mqtt_0xcxxx_NodeX_thermostat"
},
"discoveryTopic": "climate/room-Thermostat/thermostat/config",
"persistent": true,
"ignoreDiscovery": false,
"id": "climate_thermostat"
}
I use dimmer topic to control the boiler.
{
"type": "light",
"object_id": "dimmer",
"discovery_payload": {
"schema": "template",
"brightness_template": "{{ (value_json.value / 99 * 255) | round(0) }}",
"state_topic": "z2m/room/Thermostat/z2m/valve",
"state_template": "{{ \"off\" if value_json.value <= 20 else \"on\" }}",
"command_topic": "z2m/room/Thermostat/z2m/valve/set",
"command_on_template": "{{ ((brightness / 255 * 99) | round(0)) if brightness is defined else 255 }}",
"command_off_template": "0",
"device": {
"identifiers": [
"zwave2mqtt_0xcxxxx2e_node7"
],
"manufacturer": "EUROtronic",
"model": "EUR_SPIRITZ Wall Radiator Thermostat (0x0001)",
"name": "room-Thermostat",
"sw_version": "0.16"
},
"name": "room-Thermostat_dimmer",
"unique_id": "zwave2mqtt_0xcxxxx_7-38-1-0"
},
"discoveryTopic": "light/room-Thermostat/dimmer/config",
"values": [
"38-1-0"
],
"persistent": true,
"ignoreDiscovery": false,
"id": "light_dimmer"
}
Here’s mine, which I have also edited to expose the Manufacturer Specific mode to HA, allowing me to automate switching between using set temperature and directly setting the valve position. This is for the Aeotec device but as far as I know they are identical products sold under two different brands.
{
"type": "climate",
"object_id": "thermostat",
"values": [
"64-1-0",
"49-1-1",
"67-1-1",
"67-1-11"
],
"mode_map": {
"off": "Off",
"heat": "Heat",
"cool": "Heat Eco",
"dry": "Boost",
"auto": "Manufacturer Specific"
},
"setpoint_topic": {
"Heat": "67-1-1",
"Heat Eco": "67-1-11",
"Full Power": "67-1-1"
},
"default_setpoint": "67-1-1",
"discovery_payload": {
"min_temp": 8,
"max_temp": 28,
"modes": [
"off",
"heat",
"cool",
"dry",
"auto"
],
"mode_state_topic": "zwave2mqtt/15/64/1/0",
"mode_command_topic": "zwave2mqtt/15/64/1/0/set",
"current_temperature_topic": "zwave2mqtt/15/49/1/1",
"temp_step": 0.5,
"current_temperature_template": "{{ value_json.value }}",
"temperature_state_template": "{{ value_json.value }}",
"temperature_command_topic": "zwave2mqtt/15/67/1/1/set",
"mode_state_template": "{{ {\"Off\":\"off\",\"Heat\":\"heat\",\"Heat Eco\":\"cool\",\"Boost\":\"dry\",\"Manufacturer Specific\":\"auto\"}[value_json.value] | default('off') }}",
"temperature_state_topic": "zwave2mqtt/15/67/1/1",
"temperature_unit": "C",
"precision": 0.1,
"device": {
"identifiers": [
"zwave2mqtt_0xf52fe0c8_node15"
],
"manufacturer": "Aeotec Limited",
"model": "ZWA021 Thermostatic Valve (0x0015)",
"name": "Kitchen_TRV",
"sw_version": "0.16"
},
"name": "Kitchen_TRV_thermostat",
"unique_id": "zwave2mqtt_0xf52fe0c8_Node15_thermostat"
},
"discoveryTopic": "climate/Kitchen_TRV/thermostat/config",
"persistent": true,
"ignoreDiscovery": false,
"id": "climate_thermostat"
}
You should be able to avoid your config getting reset by clicking “Store” once you’ve edited it.
I had also a battery issue, batteries were dying after 2 days of use.
After I’ve switched to OpenZwave beta the battery life improved, 7 days all valves are working fine.
I think it is connected with poll interval, but OpenZwave works better for me so I’ve decided to stick to it.
In OpenZwave thermostats are not being marked as dead if the fail to respond to controller,
which is ideal for me.
OpenZwave uses MQTT to transmit date to HA.
So to have Valve opening percentage I’ve used MQTT explorer to find the right topic
I was looking for command class 38
Just added :
sensor:
- platform: mqtt
name: "Thermostat valve"
state_topic: "OpenZWave/1/node/2/instance/1/commandclass/38/value/38326345/"
unit_of_measurement: '%'
value_template: "{{ value_json.Value }}"
And now I can turn on the boiler when valve opens.
P.S.
I’ve noticed that not all valve changes are being send to the controller,
But i need time to investigate it.
Hi, It’s been a while since this was active, but I wrote a small how-to on how to use the valves with an external thermometer and using zwave-js to set the valves to a specific position: