Keen Smart Home Vents


According to your use case, there are 2 options for you:

  1. Use ScheduleTstatZones and create 2 schedules: home and away and execute them based on your ST hello modes (home and away).

The smartapp has been designed to set the thermostat’s setpoints and orchestrate your vents according to the setpoints defined in the schedule.

So, I’d suggest to reproduce the logic that you have set in your routines to set your thermostat’s setpoints in

You can then create 2 schedules: home and away with the different setpoints.

Both schedule’s start & end times would be from 0:00 to 23:59, but only one schedule would be executed according to your ST hello mode (routines).

  1. Use the “ScheduleRoomTempControl” smartapp

The ScheduleRoomTempControl has been designed to just set the vents settings (if needed) based on your thermostat’s setpoints and some room temperature thresholds (heating/cooling).

If you want to keep your logic in your routines, then you’d need to switch to ScheduleRoomTempControl instead.

See items 1 & 2 under configuration for your use case:

I can then refund you for your contribution to ScheduleTstatZones after you buy ScheduleRoomTempControl at my store.!store/tc3yr

Let me know which option you prefer.


P.S. Also, please send me any further request to as I’m not always in the ST forum.

When using V1.0.1, the ON/OFF switch does not Open or Close the vent. It reports the Vent as Open or Closed, but the Vent itself does not change state. Am I missing something?

Hi @damohabir, I’ve not observed such a behavior at my location.

I changed few config parameters in order to avoid polling the device every minute; I didn’t change the core commands of the device, such as on(), off(), setLevel(), etc. All my changes were commented in the code.

I know that the original stock device has some issues (ex. getLevel() doesn’t return any value).


Ok, maybe I misunderstood how Open/Close works. It seems it is relative to the position of the slider. It the slider is in the OFF position, Open/Close does not do anything. But if the slider is in any other position, Close moves the vent to the closed position and Open moves it back to it’s original position.

@damohabir, yes, that’s the way the device works…You have to get used to it.

For anyone in the future that reads this, here is a place you order a custom made adapter that converts 6 x 12 vent to fit a 6 x 14 port

Make on a account on that website and add it to your designs and click and select the design.

It cost me ~$5 after coupon and ~$7 in shipping cost for total of $13, ships from oakland, ca

Here is my problem with the App. I got your app today from your site. Let me tell you, i think this not what i need unless you can tell me how to configure it. I need a very simple setup. I have one Keen Vent that i would like it to open and close based on the temperature reading from the motion sensor in that room. Ex, the sensor read 74 open vent all the way, close sensor half way at 70 close completely at 67. i do not have a thermostat connected nor it was my plan to link the vent to it.


As posted at many threads, the ScheduleTstatZones smartapp was designed for some specific use cases as described at:

Based on your requirements, it looks like ScheduleRoomTempControl would be a better fit.

(except for the mid-level at 70 as there is only one temp threshold for cooling and heating which means
the smartapp either closes or opens the vent at 100% only).

If you want to switch to ScheduleRoomTempControl, I can then partially refund you for your contribution to ScheduleTstatZones after you buy ScheduleRoomTempControl at my store.

P.S. Also, please send me any further request to as I’m not always in the ST forum and it’s easier for me to follow customer requests thru gmail conversations.

@yvesracine, I am looking for something similar to what @mssidah is looking for. My thermostat is not connected to SmartThings. I need simple control of the vent based on the temperature reading in the room. Can one of your apps do that without using a thermostat connection?

Yes, ScheduleRoomTempControl can control the vents without a thermostat (it’s optional).

Please refer to the ST community wiki for more details:

I have also a dedicated thread for my zoned heating/cooling solutions.


I you have no thermostat in ST, the vents can be directly controlled using rule machine. They appear as dimmers, where the dim level represents the % of opening.

1 Like

So, anyone get the crazy whistling sound when the vent’s closed? Any way to resolve that?

1 Like

only fix i have found is opening them. If they had thought through their design they would have put rubber edges on them so they could fully close without whistling or making that nice rattling sound. Wait maybe a good mod in my future

1 Like

Yeah, I’ve found that keeping them fully closed doesn’t work, I would have to make them 50% open to actually get rid of the noise.

1 Like

Hi @damohabir,

The benefit of using my smartapp is that if your requirements evolve later (for example: you may want to orchestrate and control your thermostat(s) in conjunction with your vents), then ScheduleRoomTempControl will make it possible.

In my book, the vents should be controlled in conjunction with your thermostat setpoints to reach maximum comfort and energy savings. You can use schedules to control them differently during the day.

It also simplifies your setup as you then have 1 single smartapp that orchestrates your thermostat setpoints & your vents based on your motion and temp sensors in your rooms. It’s much more logical and convenient.


1 Like

I just installed some keen vents and I have an issue. When I set my vents at at particular level they change to a lower value by themselves often by about 5 other times more. Most of the time they only change once to a lower value but other times they change twice by themselves. I already looked at the logs in the IDE and it doesn’t provide me with anything helpful at least as far as I can tell. In this what happened when I changed the vent to 75. It changes ok to 75 but after a few seconds it changes to 66%. Any idea what could be causing this. At one point I removed all smartapps associated with it and it still did the same thing…

1:15:54 PM: debug Parse returned [name:temperature, value:74.91, descriptionText:Living Room Vent is 74.91°F]
1:15:54 PM: debug description: temperature: 23.84
1:15:47 PM: debug Parse returned [name:level, value:66.0, descriptionText:Living Room Vent level is 66.0%]
24a9dd8c-f2a5-4818-ac92-a7bb3be8d454 1:15:47 PM: debug Desc Map: [raw:7FD301000808000020A8, dni:7FD3, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, value:a8]
1:15:47 PM: debug parseReportAttributeMessage
1:15:47 PM: debug description: read attr - raw: 7FD301000808000020A8, dni: 7FD3, endpoint: 01, cluster: 0008, size: 08, attrId: 0000, encoding: 20, value: a8
1:15:32 PM: debug Parse returned [name:level, value:75.0, descriptionText:Living Room Vent level is 75.0%]
1:15:32 PM: debug Desc Map: [raw:7FD301000808000020BF, dni:7FD3, endpoint:01, cluster:0008, size:08, attrId:0000, encoding:20, value:bf]
1:15:32 PM: debug parseReportAttributeMessage
1:15:32 PM: debug description: read attr - raw: 7FD301000808000020BF, dni: 7FD3, endpoint: 01, cluster: 0008, size: 08, attrId: 0000, encoding: 20, value: bf
1:15:32 PM: debug Parse returned [:]
1:15:32 PM: debug cluster: SmartShield(clusterId: 0x0008, command: 0x0b, data: [0x04, 0x00], destinationEndpoint: 0x01, direction: 0x01, isClusterSpecific: false, isManufacturerSpecific: false, manufacturerId: 0x0000, messageType: 0x00, number: null, options: 0x0540, profileId: 0x0104, senderShortId: 0x7fd3, sourceEndpoint: 0x01, text: null)
1:15:32 PM: debug parseCatchAllMessage
1:15:32 PM: debug description: catchall: 0104 0008 01 01 0540 00 7FD3 00 00 0000 0B 01 0400

This is normal for these.
The mechanism in the vents that provides level feedback is an analog potentiometer attached to the shaft that actuates the vents.
So the DTH sends a set level xxx to the vent, this causes the vent to return a report (from 0 to x seconds later) of its actual position, given the mechanical play and ADC rounding, the result is almost never the level you sent it to.
The offset (set to reported) is also not consistent.

I have found the following to be true for all 10 of my vents
setLevel(0), vent reports 0
SetLevel(100) vent reports > 92, but never 100
Anything else will vary by +/- 5%

1 Like

Anyone know any way of sealing the vent so when closed, it doesn’t make the horrible hissing noise? It makes the thing nearly unusable…

Nomisr, I have that same issue with one of my vents, I actually changed it with another and even though it still makes the noise, it is not as bad. I have it set now so that if there is motion in that room, it sets the vent to 5% instead of closed. It still blocks off most of the air but doesn’t make any noise at that level or as @Mike_Maxwell! (thanks a lot for the info btw!) pointed out, at about that level…

1 Like

I have been toying with the idea of getting some rubber vacuum hose from the parts store and cutting a slit in it so I can wrap it over the end of the blades to see if that helps with the hiss

1 Like