[BETA RELEASE] Keenect V2.7 and Keenzone 2.8, Proportional Vent Control with System Wide Zone Balancing

Introducing Keenect V2.7 and Keenzone 2.8 a vent management smartApp for your Keen vents.

#BETA Release 2.7 update:

Keenect to 2.7
Keenzone to 2.8

Bug Fixes
In this update an effort was placed on bug fixing around problems with nest thermostats.

New Features
-This release adds the ability to set a vent position when a whole house humidifier is running from an ecobee thermostat without a call for heat. Each zone has a setting on the main page for a corresponding vent position.

-If you update a previous version keenect you must go into each zone and then click done to update the humidifier vent position.
-In this release I am moving away from supporting the generic ecobee driver because of the many missing features and moving to support yracine device handler https://github.com/yracine/device-type.myecobee I understand his device type is not a free solution however for the features I am offering this is the device driver the system was built off.
-I will work in the coming months to update the needed features into a generic and free device driver.

Previous Versions.

#Stable Release2.5 update:
New 2.5 Ecobee Climate Zone control, enable and disable keenectZones using ecobee scheduling

-For new installs with a Nest thermostat please set a cooling and heating setpoint value in the thermostat. Until this is done Nest does not store in smartthings a value for the heating and cooling setpoints and can cause an error on the first startup.

Keenect 2.5 is an update to Mike Maxwell’s event driven vent and zone management smartApp.
It is a parent/child application consisting of:
–Keenect, the parent, which responds to changes made to your main HVAC thermostat, distributing these events to
–keenectZone, the child app, which then controls your vents based on local temperature conditions and your selected temperature set points.
–A keenectZone consists of one or more Keen vents and a temperature sensor.

What it can do:
New 2.7 Humidifier only vent control
New 2.5 Updated UI
New 2.5 Ecobee Climate Zone control, enable and disable keenectZones using ecobee scheduling
New 2.0 *Proportionally open and close room vents allowing tighter temperature control
New 2.0 *Preferentially control specific room vents to open on a more aggressive vent/temp curve
New 2.0 *When a zone is > 1.5 degrees from its setpoint the system will reduce the output of other zones to divert
New 2.0 *Optional return air vent control, select return air vents that can be open or closed during selective time cooling or heating
New 2.0 *After a call for heating or cooling is complete and the hvac fan is running all vents are opened to 40%(a switch to toggle this option will be added in future builds)
New 2.0 *If the thermostat fan is tuned on without a call for heating or cooling all vents are opened to 100% (a switch to toggle this option will be added in future builds)

  • Even out temperature variations across your configured zones
  • Disable or enable any zone from other smartApps
  • Allows separate and independent heating and cooling settings for each zone
  • Supports C and F temperature scales automatically

What it won’t do:

  • Fix a horrifically out of balance HVAC system
  • Manage your thermostat and its set points
  • Provide any thermostat scheduling
    Not enabled in this build, l_et me know if users still want this feature_* Prevent excessive static pressure when too many vents are closed when used with an optional pressure sensor

What you need to use it:

  • A smartThings integrated thermostat connected to your HVAC system
  • The selected thermostat must be capable of notifying smartThings of its physical and programmatic state changes within a few seconds.
  • I can’t tell you if your wiz-bang thermostat will work or not, but you can.
    With your thermostats device tile open in ST, go up to the thermostat and make some changes, do the same thing from the thermostats native application if it has one.
    If these changes show up in the device tile in ST within a few seconds (and no cheating by hitting refresh), then your thermostat should work fine.
    If it doesn’t, you will need to change thermostats, or find another device type, or find some way to get your thermostat to report properly.
  • ** Keen vents,** it may work with other vents, I do not know.
  • A temperature sensor in each “zone” where you are placing the vents.
    For improved responsiveness reduce temperature sensor update time to 1-2minute intervals
    The temperature sensor in the vent cannot be used for this purpose, if you think it can, and will provide me an algorithm supporting your or someone else’s theory, I’m all ears, and you will be my hero.
  • So you will need a source of temperature in each zone, accuracy isn’t so much of an issue as the sensors ability to report temperature changes.
  • The more granular these changes are the better your temperature control is going to be. A sensor that reports (or is modified to report) 0.1F degree changes works well.


Pop into your ide, click the my smart apps tab, then settings, then perform steps 1 and two below…

After that, click update from repo, then select Keenect and keenectZone, then publish both like you normally would do.
In the mobile app, find and install Keenect from the marketplace, smartApps, My Apps. Do not install keenectZone from the market place, Keenect will manage this application for you.

If your Git integration is broken and the above doesn’t work:

Source code is here: https://github.com/brianmsailing/SmartThingsCode/tree/master/smartapps/brianmurphy

On the initial install you will need to select your thermostat, the thermostats temperature sensor and your system type: AC capable, or heat only. Do not confuse this with your current operating mode, this selection just lets Keenect know if your system has AC or not. Keenect automatically detects heating and cooling state changes.
That completes the initial installation.
Close and then re-open the Keenect from My Home, SmartApps.

Select create new zone…
Give your zone a name, select your vent(s), and the temperature sensor you will use, and again do not use the temperature sensor in the vent.
Select the minimum vent opening, this is the minimum that Keenect will close the vent to, 20% is a safe starting point.
Maximum vent opening, start at 100%
Select your desired temperature control type:
Offset from main HVAC set point, provides +/- 8, degrees above or below the currently active thermostat set point.
Fixed, the zone set point is static, and will not follow your thermostat settings around.

That’s it for a basic zone configuration, complete the rest of your zones and you should be good to go.
Advanced options and features:

New 2.0 Optional virtual switches under Advanced to indicate heating, cooling or fan mode and output reduction.*
Output reduction is enabled when a zone is>2.0 away from set point and reduces all zone not >1.5 away from their sepoints.
New 2.0 Return air vents to open during heating. (Used only if you have specific return air vents for heating. My use case was a finished basement with zwave return air vents that are opened during the day during heating to even the basement winter temperature)*
*New 2.5 Return air control now added to each of the zones

  • IDE logging level, primarily used for debugging should the need arise, the default is Lite, which shows reasonable readable output of what’s happening, a None option is also available.
  • Send Lite level log events to notification feed, Lite log events will appear in the mobile app, notifications, Messages panel (this is where your Routines display their output)
  • Delay zone cycle end notification, delays notifying the zones of the thermostat IDLE state change by the specified amount, should the need arise.
    Note: Pressure management has not been enabled in this build will be re-added in future builds* * Over pressure contact sensor, when used with this DIY Pressure sensor87, Keenect will prevent your system against excessive static pressure by having too many vents closed. When a pressure event is detected, all vents are opened fully until pressure is relieved, at which point participating zones will have their openings increased by 5%, should additional pressure events occur during a given cycle, an additional 5% is added until the over pressure is resolved.

New 2.0 Aggressive Temp vent Curve, for rooms needing even more heating or cooling select this option to run a more aggressive temperature / vent proportional curve.*

  • Close vent options, various options for closing the vents at cycle end, and when disabling the zone from a zone control switch.
  • Zone control switch, an external switch, physical or virtual that allows enabling or disabling a zone. A disabled zone will not respond to thermostat or zone temperate change events.
  • IDE logging, same options as Keenect.
  • Send Lite…, same options as Keenect.
    Note: Pressure management has not been enabled in this build will be re-added in future builds* Pressure management, allows excluding a zone from the gradual opening increases due to pressure events, this will not exclude a zone from the initial 100% opening that’s used to relieve the initial event.

Several in app reports are available from Keenect, on the Available Reports page
Configuration, a snap shot of the currently configured settings.
Current state, the current state of the main thermostat, and all the zones
Last results, a summary of results from the last completed HVAC cycle.

I would like to extend my thanks to Mike Maxwell and all the work he put forth, without the foundation none of this would be possible.


Just as an add on, @Brian_Murphy contacted me earlier this year wanting to integrate his changes with the current Keenect version, I had no problem with that, however I just wasn’t getting to it… So rather than continuing to sit on it, Brian’s agreed to take Keenect forward.

I’m not leaving ST, however with the current state of the platform and the state of my automatons I’m not getting the benefits required to justify the time that I’ve devoted to ST development in the past.
I hope this changes, but for now ST development is very much on the back burner for me.


What features would the community like added next?

-full pi control, at this time I have added propositional control and could add integrating control

-additional details in the reporting


I can’t get it to work, it gives me a “Sorry, but there was an unexpected error” red message up top. I did notice that the Versions: information on the bottom, it’s showing keenectZone: No data available yet, but I have both the Keenect and Keenect zone installed and published. Thanks

V2.1.0 Fixed potential install errors, and added fan only mode vent control for each zone.

During fan only each zone will open to a pre determined setting.

nomisir could you post your log files during your install and some additional details around your setup.

I am unable to make it work.
SmartApps fetched from Git repository, installed Keenect under marketplace/smartApps on mobile. It shows green message that successfully added.
Now I didn’t install keenectZone as per instructions, just the main Keenect App is setup with thermostat and temperature sensor.
Now this step does not work: Close and then re-open the Keenect from My Home, SmartApps.
I don’t see Keenect in MyHome, it is only available in Automation and Marketplace/MyApps.
If I revisit Marketplace/MyApps/Keenect, the settings I previously saved are no longer there.

As with all installed smart apps Keenect only appears in your automations area. If you go back into marketplace you effectivly reinstall an app.

I have uploaded a new version V2.0.2 Fixed namespace error.


I was able to add one zone. But when I try to add another zone, I get a red error. Logs show following error:

3:21:21 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 347

Appreciate your help.


Thanks for beta testing. Lets try this new version.

I have added new versions.

For now, please make sure all zone configurations are filled out.

Keenect V2.0.3 Fixed Reporting error by disabling reporting
Keenect Zone V2.2.0 New Feature in fan only mode, zone will evaluate local temperature and compare against setpoint and open vents accordingly to adjust zone temp using fan.


I was able to add all zones by entering all values (even the optional ones) and that worked perfectly fine. I have updated the application as well, but don’t quite see any difference. Anyways, this is working pretty well, awesome work!

Thanks for the feedback.

I am getting an error “Error saving Page” when trying to configure a zone. The error comes up after I filled out all the information for the zone and hit Done.

Here is the error I am getting in the log

7:35:56 PM: error java.lang.NullPointerException: Cannot invoke method toInteger() on null object @ line 364

any ideas?

I will update the code to address this issue. There is a case when all values, heating and cooling are not entered. During initialization I will default all of them. Look for an update early next week. For now if you enter a value in every field the page will save.

I might have a quick fix, the problem was if the system does not have ac in the parent ap then in the child minVO for ac and maxVO for ac are not set.

Try the latest repo version 2.2.1

Started getting this error since yesterday.

  5:10:10 PM: error java.lang.NullPointerException: Cannot invoke method on() on null object @ line 482
  5:10:10 PM: error java.lang.NullPointerException: Cannot invoke method on() on null object @ line 482


This error is occurring because no switch is selected for heat on or off in the main program. I will update the app to check if a switch is selected before trying to turn on or off. I should have a new version later today.

Latest version of keenect and Keenzone should address this issue.

I’m trying to use your smartapp, but its not seeing my ecobee thermostat in the app
I can only see the ecobee remotes listed, just not the main thermostat
Not sure what the issue is


What thermostat are you using? What driver for the thermostat?