EUROtronic SPIRIT Z-Wave Plus working with Vera (Plus)?

I also have the Eurotronic Spirit. They are brilliant, report temp and the setpoint change is quick too.
I also occasionally get the device not detected issue, mainly on one thats neighbor isn’t zwave plus.
It would be brilliant to see these properly integrated as they are great kit and work really well, except for the intermittent error which doesn’t stop then working and the fact they show up as HVAC devices in the ui

[quote=“cadwizzard, post:41, topic:197409”]I also have the Eurotronic Spirit. They are brilliant, report temp and the setpoint change is quick too.
I also occasionally get the device not detected issue, mainly on one thats neighbor isn’t zwave plus.
It would be brilliant to see these properly integrated as they are great kit and work really well, except for the intermittent error which doesn’t stop then working and the fact they show up as HVAC devices in the ui[/quote]
I think that the problem of device not detected on a neighbor who is not zwave more is not a problem really catastrophic one can ingore carrement
Bluestacks Kodi Lucky Patcher

Well, below you can find code that I’m using.

When I put temp = 5.00, valve should open (setpoint is set to 22 deg) but no such thing happens.
I’m testing it using ALTUI Lua Code Test.

I’d appreciate any help in debbuging this.

local function getLowByte16( value )
    local high_value = math.floor(value/256)
    high_value = high_value*256
    local low_value = value - high_value
    return low_value
end
local function getHighByte16( value )
    local high_value = math.floor(value/256)
    return high_value
end
local Nod = 88
local temp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 45)
local ntemp=math.floor(temp*100)
local Dat = string.format("0x31 0x05 0x01 0x42 0x%02x 0x%02x",getHighByte16( ntemp ), getLowByte16( ntemp ))
luup.call_action('urn:micasaverde-com:serviceId:ZWaveNetwork1','SendData',{Node=Nod, Data=Dat},1)

Ok. Let’s check.
In my installation, Device ID of temperature sensor - 1638
Node ID of Spirit (Alt ID) - 27

Code is:

local function getLowByte16( value )
    local high_value = math.floor(value/256)
    high_value = high_value*256
    local low_value = value - high_value
    return low_value
end

local function getHighByte16( value )
    local high_value = math.floor(value/256)
    return high_value
end

local Nod = 27
--local temp = luup.variable_get("urn:upnp-org:serviceId:TemperatureSensor1", "CurrentTemperature", 1638)
local temp = 5.00
local ntemp=math.floor(temp*100)
local Dat = string.format("0x31 0x05 0x01 0x42 0x%02x 0x%02x",getHighByte16( ntemp ), getLowByte16( ntemp ))
luup.call_action('urn:micasaverde-com:serviceId:ZWaveNetwork1','SendData',{Node=Nod, Data=Dat},1)

Passed from Application → Develop. Without AltUI

Before trying:

ssh root@<ip of you vera> <you console password> (or use putty or other SSH console)
tail -f /var/log/cmh/LuaUPnP.log

After launching code, you can see something like:

 <Job ID="29585" Name="childcmd node 27" Device="1685" Created="2019-03-29 12:19:57" Started="2019-03-29 12:19:57" Completed="2019-03-29 12:20:00" Duration="3.146802000" Runtime="3.146386000" Status="Successful" LastNote="SUCCESS! Transmit was OK" Node="27" NodeType="ZWaveThermostat" NodeDescription="Батарея гостин"/> <0x76b3a520>

Checked a hour ago. Valve opened (local temperature of Spirit increased)
“Батарея гостин” - is a coment, entered in UI.
Is you Spirit mounted on the radiator and CALIBRATED? Without calibration it cannot work normally

It seems that I put wrong ID of spirit device - I used “id” (88 in my case) instead of “altid” (36).
What value should be used as ID of temp sensor? Also ‘altid’ (in my case it is “m1”) - this is virtual sensor (fibaro smoke sensor)?

Will test it this evening.
Thanks a lot for your time & patience :wink:

Click Devices → Settings of Spirit → Advanced
You can see “altid”.
Or
Click Devices → Settings of Spirit → Settings.
You can see “device #blablabla” and under “Variables” - IDXX. XX - is number, what you need.

Actually it is a Z-Wave node id.

Devices can be virtual, zigbee, etc. We are talking about Z-Wave node ID, to send raw data to it.

Yes, it seems that my problem was caused by an incorrect spirit id :wink:
When I changed that, valve opened.
Now I will try to use reactor + temp sensor as triggers for spirits.
Thank you again.

It seems like you can all set the temperature of the thermostat in the controller. Mine is just saying “SUCCESS! Transmit was OK”. But both the display and the room temperature show that the target temperature remains unchanged at 21°C as configured at the Spirit. Any idea what’s wrong? I’ve already tried re-including the device.
Zwischenablage01

Try to use HEAT, not Auto or Cool.

1 Like

Thanks Tmorfus, with your script I managed to get a succesful transmit to the Spirit. (I’ve put it in a scene by the way, because altui wouldn’t let me execute it for some reason.)

I’m wondering, how have you integrated this further?

  1. You mentioned that the Spirit will still display the internal temperature. Are you in some way able to show the external temperature in relation to the Spirit, or is that something you will have to “remember”?
  2. How do you automate sending the external temperature to the Spirit. Do you use a scheduled task, or do you trigger on a temperature change?
  1. No ways discovered. Spirit can show only a local temperature.
  2. Now - simplest way. Scheduled trigger, every 30 min.

Radiators are not very fast. In stone house, no reasons to increase frequency.

Other way - write sensor value to file and check it every 12-16 min. If changed more, then 1 degree, or 2 hours left - send to spirit.

2 Likes

Because of lack of feedback from the radiator on what is actually set, I’ve been trying to reverse engineer the script, so to fully understand what I’m actually sending. This leaves me with the following unsolved question.

You send command class 0x31 = COMMAND_CLASS_SENSOR_MULTILEVEL, I understand that. After that, following Silicon Z-wave documentation I would expect:
sensor type = Air temperature = 0x01
scale = Celsius = 0x00
precision = 2 (because temp * 100)

But in stead you send 0x05 0x01 0x42, could you please explain?

I think I figured it out myself:
command class = 0x31= COMMAND_CLASS_SENSOR_MULTILEVEL
command = 0x05 (couldn’t find this in any documentation, but this must be:) SENSOR_MULTILEVEL_REPORT
sensor type = Air temperature = 0x01 (8 bits)
precision = 2 (because temp * 100) = first 3 bits, so binary 010
scale = Celsius = 0x00 = next 2 bits, so binary 00
size = 2 bytes for temp value = next 3 bits, so binary 010
The last 8 bits result in 01000010 = x42 :smiley:

NB: if this it right, for sending in Fahrenheit you would have to change the x42 to x4A.

Try to use HEAT, not Auto or Cool.

Thanks! That’s it!

Anyone know how to get Vera to show Battery for ALL Spirit TRVS I have just added mine and only one of the 8 has a Battery level on it.

? I suspect it may be because the Spirits only send Battery updates once a day?

When no battery gauge exists, Spirit not recognized, as battery device.
Better way - exclude and include.
Other way - add battery variable

Thanks

Over the 24 hour period all the Battery levels were reported and displayed ok.

Just needed to wait of rah e24 refresh cycle to kick in :slight_smile:

In my case - not. :frowning:

If you change the Device type, Device Json and Device file to the ones it the attached image, you will get a better gui without the Auto button as per the second image
It will also remove Heat and Cool and display Off, Comfort and Eco which are the correct buttons for the Spirit TRV

Thanks, great suggestion.
Although I don’t have a D_ThermostatWithEcoComfort1.xml, so I only changed the json. Seems to work though!