I have a bunch of Spirit Z thermostats (TRV) which can use external sensor to correctly adjust room temperature. They able to accept unsolicited Sensor Multilevel from applicable sensors. The easiest way to achieve it is to use some Wall Thermostats which has correspondent association groups. But few of them have.

Another problem that I can receive data through various sources across the house, some of them collected using MQTT. So I need to translate incoming reports to unsolicited reports in ZWave network.

Is there any way to create a virtual sensor device in ZWay which will send its status to actual ZWave devices in the network? Actually I’d like to make controller send unsolicited reports to the network.

Z-Wave is open now, you can check this command. If you know programming, it is even worth to make a module that allows to select a sensor and many thermostats and that will send then the updated temperature upon sensor value change. This approach will allow to easily configure your home automation and share this with the community

Hi, I made some tests and found something interesting for Eurotronic spirit z-wave trv.

First: to read the temperature from an external source you need to set parameter 8 to 128.
Then I tried to send the command zway.SendData(SpiritID, [0x31, 0x03, 0x01, 0x02, 0x00, 0xC1]) as suggested by PoltoS and noticed that TRV not responding correctly.
I changed command with sendDataSecure and valve responded with SENSOR_MULTILEVEL_GET, but we need REPORT instead.

So i look at zniffer and find that TRV sends periodically temperature report,for example, with this values:
Multilevel Sensor Report (01, 42, 03, E8).
03 and E8 are the measured temperature values, converted into decimal we have: 1000 that is 10,00 °C

Than I tried to send this:
zway.SendDataSecure(SpiritID,[0x31,0x05,0x01,0x42,0x0A,0xF0])

- 0x31 is command class: SensorMultilevel
- 0x05 is the type report
- 0x01 and 0x42: I dont know what this values means yet, but I copied it from report by TRV (probably this value is type of sensor,need to investigate)
- 0x0A and 0xF0 is 0AF0 = 2800 = 28°C

after issuing this command: valve fully closed!! so I've correctly send a report with a value of 28°C and the valve closed immediatly.
Then I tried to resend another report with 10°C zway.SendDataSecure(SpiritID,[0x31,0x05,0x01,0x42,0x03,0xE8])
and after some minutes: valve fully open!

now the question is: how to read value from a sensor and send this value as report issuing the commands I found??

I also want to send unsolicited temp reports to the spirit, so we can modify the value. I took window sensors and the temp report from the spirit and weigehd them with the math module to a sensible value.

in theory the app valueovertaker should exactly do that, but it only accepts action values not temperature readings. So maybe the app valueovertaker could be a nice blueprint for your implementation or you could extend the app? I myself have this topic in my backlog and I have to solve some more important issues first before tackling this topic. Still, maybe the app can help you.