eTRV Aeotec Radiator Thermostat and Eurotronic Spirit Z-Wave Thermostats

@bravenel any chance that you could consider adding slave thermostats to Thermostat Scheduler? That is, for each room (main) thermostat you can have one or more eTRV's that need to take their setpoints from the room thermostat. I currently have 10 room thermostats controlling 22 eTRV's and I'm about to implement virtual thermostats for some of the eTRV's. - Plan is I will end up with 10 room thermostats and 7 virtual thermostats - that will be 17 copies of Thermostat Scheduler running.

@simon Thank you for your insights and experience, very much appreciated.

I have 16 eTRVs (Zwave Spirits) and 10 zwave Secure 321.

15 rooms (two radiators in the Lounge)

Also I have 14 Hue Motion/Temp Sensors through cocohue beta App

And I am playing with the Sonoff Temp/Humidity and Motion sensors - directly connected to HE

With the in mind.

I am planning on one Thermostat Controller per Room

And one Thermostat Scheduler per Zone

No Guests in House
Zone 1 - Two bedroom rooms that are unused
Zone 2 - Two Bathrooms unused
Zone 3 - And a reception Room unused
These can all sit at 17c 24/7

EXCEPT when we have guests, then each o the 3 zones above will have different temperature needs.
ie Guest Bedrooms need to be 18c at night and the bathrooms at 22c, the reception room 17c at night 21c during the day.

Zone 4 - Hallway/Landing/WC - only two controllable radiators there - the hallway is not controllable (WC included because despite best efforts the door is always left open :slight_smile:

Zone 5 - Kitchen/Study/Utility

Zone 6 - Lounge

Zone 7 - Master Bedroom

Zone 8 - Master Ensuite

and my Office which I have the radiator turned off - I get too much heat from computers and monitors and vent into the Landing

So will end up with 8 Thermostat Schedulers.

The Hue Motion/Temp sensors are already migrated to HE so using those right now and offsetting temperature readings in the Thermostat Controller (the motion sensors locations are optimised for motion sensing not Temp).

And I can combine and weight the Hue Temp sensors for each zone in the Thermostat Controller.

Does that sound reasonable?

Also, Turning heating on through a Rule is quiet straight forward, If ANY Thermostat Controllers state changes AND ANY of the Thermostat Controllers state is 'heating' turn on the Boiler.

I am finding the turn off more complicated and cumbersome - so would appreciate some advice.

Currently I am using a Rule IF ANY Thermostat Controllers state changes AND ALL Thermostat Controllers state is NOT 'heating' Then turn off boiler

Setting this up is painful for 16 Thermostat Controllers is there a better way?

Found it thanks

Anyway to view the firmware version of the eTRV?

Just noticed something .... well inconsistent ( or more likely I don't understand)

This is the Spirit TRV on Inclusion


Has Firmware version and a few other things

2 Mins later looking at it from devices

Lose all the fw Zwave version etc

Any ideas?

I have that behavior too.....
I implemented the code to go get the Z-Wave info and display it, but don't know why the info disappears after a bit..... (a bit like SnapChat???)

1 Like

This is my app to drive a boiler switch.

/**
 *  Zone1 Boiler Control
 *
 *  Copyright 2020 Simon Burke
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 *  in compliance with the License. You may obtain a copy of the License at:
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
 *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
 *  for the specific language governing permissions and limitations under the License.
 *
 */
definition(
    name: "Boiler Control Zone1",
    namespace: "SJB",
    author: "Simon Burke",
    description: "Control Zone1 Boiler based on Thermostat Zones",
    category: "Convenience",
    iconUrl: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience.png",
    iconX2Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png",
    iconX3Url: "https://s3.amazonaws.com/smartapp-icons/Convenience/Cat-Convenience@2x.png"
    )

preferences {
    section("Turn on/off this Z-Wave Boiler Switch") {
        input "theswitch", "capability.switch", required: true
	    }
    section("Boiler Boost Switch") {
        input "Booster", "capability.switch", required: true
	    }
    section("Thermostat") {
        input "thermo", "capability.thermostat", title: "SRT321 Thermostats", multiple: true, required: true
        }       
    section("Temperature Sensor") {
        input "temperatureSensor", "capability.temperatureMeasurement", title: "Temperature Sensor", required: false
        }
    section("Temperature Trigger Level") {
        input "temperatureTrigger", "number", title: "Temperature", required:true, multiple:false
        }
}

def updated() {
	log.debug "Updated with settings: ${settings}"
	unsubscribe()
    unschedule()
	initialize()
}

def initialize() {
	subscribe(thermo, "thermostatMode", thermostatMode)
    runEvery5Minutes('TemperatureHandler')

    thermo?.each {
        if (it.currentValue('battery') < 2)   {
            log.debug  "Zone1 - $it.displayName battery too low - disabled"
        }
            
    	if (it.currentThermostatMode.contains('heat')) and (it.currentValue('battery') > 1) {
    		theswitch.on()  
    		log.debug "Zone1 - Boiler switched on... ${it.displayName} needs heat"
    	}
    }
}

def thermostatMode(evt) {
     if (evt.value.contains('heat')) {
    	theswitch.on()  
    	log.debug "Zone1 - Boiler switched on... ${evt.displayName} called for heat"
    }
}

def TemperatureHandler(evt) {
    def CurrentTemp = temperatureSensor.latestValue("temperature")
    def KnockOnOff = 0
    def BatteryPerCent = 0
    
    if (CurrentTemp>temperatureTrigger-1) {
        log.debug "Zone1 - Temp is $CurrentTemp - at or above $temperatureTrigger"
        KnockOnOff = 0
    } else {  
        log.debug "Zone1 - Temp is $CurrentTemp - too cold - Switching Boiler On"
        KnockOnOff = 1
    } 
        
    thermo?.each {
        BatteryPerCent = it.currentValue('battery')
    	log.debug "Zone1 - $it.displayName current mode is $it.currentThermostatMode  Battery is $BatteryPerCent"    
        
        if (it.currentValue('battery') < 2)   {
            log.debug  "Zone1 - $it.displayName battery too low - disabled"
        }
        
        if (it.currentThermostatMode.contains('heat')) {
            if (it.currentValue('battery') > 1) {
    		    log.debug "Zone1 - $it.displayName needs heat..."
    		    KnockOnOff = 1            
            }
    	}
    }
    
    if ("off" == Booster.currentSwitch ) {
    	log.debug "Zone1 - Booster is Off"
    } else {
       	log.debug "Zone1 - Booster is On"
        KnockOnOff = 1
    }

    if  (KnockOnOff == 1) {
    	theswitch.on()  
        log.debug "Zone1 - Boiler switched on..."
    } else {
        theswitch.off()
        log.debug "Zone1 - Boiler switched off..."
    }
}

@simon any way to expose the Valve level of a TRV to the Dashboard?

I want to be able easily keep an eye on stuck/sticky valves

Pick your device to add to your dashboard and use the level attribute.
Ignore the up/down arrows that show up on the tile.

Nearly lasted 2 weeks without going bonkers :rofl:

1 Like

Just added 2 more TRV's and now it's hit or miss if the temps will change. Each TRV has its own schedule. Do I need to stagger there times?

I've noticed sometimes the nextheatpoint is set needs the manual refresh to activate it.

Is your Z-Wave mesh ok?

If you hit configure and look at the logs do you see plenty of communication back from the device as it's gets the settings?

Should be I have a mains module in every room. Even my office one which has been solid is acting up.

Kinda smells like a mesh issue......
It may just bed down once the new devices get friendly with the older ones.....

Ok, we will see. Been at this for a couple of days, just excluded and reset and including them all, now updated my hub as well.

Noticed too, if I set the heatpoint manually of each, no probs, all together via the scheduler then it's hit or miss (mostly miss).

I found that triggering mutliple FLiRS at once will in most cases stress the network and can render other devices unresponsive or let them respond only after some seconds.
It this applies to you, maybe add a delay of at least 6 seconds between all actions.

Thanks, for the tip, not ideal but worth a try. :sunglasses:

That would really screwup the new multiple thermostat feature of Thermostat Controller - which I have on my to-do list to try out..... Could @bcopeland or @bravenel comment? Thanks.

That's why I'm using only RM for TRV controlling.
Tried with TS at first, but when picking single TRVs out of the TS group and put a delay between their activation in RM I found that that in case of 3 devices the entire TS instance would fire for 3 times.
At least it was like that in the first versions of TS.
Hope you understand what I am trying to say.

Thermostat Controller will only work as well as the controlled thermostats work. It is simply adding a level of control on top of that base.

Yes.

But what @Mr.Olsen is saying is that commands being sent at the same time (or close to same time) to multiple FLiRS thermostats (which Aeotec/Spirit/Eurotronic eTRV's are) causes issues on the network.

So if using RM and a 6 second delay is needed between sending commands to FLiRS thermostats then this supposedly means that the new multiple thermostat feature in TC is not going to work with these FLiRS eTRV thermostats?