HVAC / Smart Vent Zoning control through HomeAssistant, no internet required (but recommended)

I was wondering what would be the advantage of an ESP at each vent. With a single ESP you would only need three wires to each servo. Maybe a couple more for other sensors, but then you have the problem of wire length. I would be inclined to put an ESP on each vent for the option of additional sensors.

Well, I have a 3D printer now, and I’m looking for some good stl files of smart vents, but all I can find is the vent covers that people have posted. Do you have any smart vents already? I could use the pictures, because nobody seems to have disassembled any and posted them online.
If not, I can build a model based on the existing manual ones in my home.

Also, I’m planning on using one ESP32 in the AC unit, and will figure something out for an interface other than Home Assistant if/when it’s offline or unreachable.

No. Too expensive.
I don’t think you will find a complete project anywhere because a full-size register would be too large for most 3D printers.
This one looks hackable. You might buy one to reverse engineer the motor control. I would not be surprised to find an ESP8266 inside. If that’s the case you are 90% done. If not, I would rip out the controller and wire in my own ESP (Wemos D1 Mini is my go-to ESP board at $5 each). The instructions imply that there is a 24VAC power supply inside, so you would just need to supply 24VAC from your air handler and control the Wemos over ESPHome.

Here’s an interesting resource on the subject of multi-zones:

These came in today. I’m going to replace the thermostat here in a day or so and then can start working on testing out servos.

Thanks Google Feed!
Here’s a potential solution!

Forget potential, Tony Brobston (and team?) have knocked this one out of the park!

Okay, so I jumped the gun in thinking a complete solution was available, but there is a ton of info on his page.
Update on progress made over the weekend:
I’ve integrated my relay board into my HVAC (will capture pics of the setup tonight, but it’s not pretty lol), and added a few more temp sensors to my house (original: front and master bedrooms, added livingroom and office), as well as added four virtual thermostats for the different zones (master bed, livingroom, office, front bedroom).

I created virtual switches for each of the thermostats, then used an automation to tie them all together using OR/AND logic (if any tstat on, turn on HVAC, all off, turn off).

Thermostat grouping:


4 thermostats in a graph:
image
–more screenshots coming soon–

Code, in order of what needs to be built first:

input_boolean.yaml:

# Master Bedroom
hvac_cooling_mrbr:
  name: HVAC Cooling Master Bedroom
  icon: mdi:snowflake
hvac_heating_mrbr:
  name: HVAC Heating Master Bedroom
  icon: mdi:fire
hvac_fan_mrbr:
  name: HVAC Fan Master Bedroom
  icon: mdi:fan

# Front Bedroom
hvac_cooling_frbr:
  name: HVAC Cooling Front Bedroom
  icon: mdi:snowflake
hvac_heating_frbr:
  name: HVAC Heating Front Bedroom
  icon: mdi:fire
hvac_fan_frbr:
  name: HVAC Fan Front Bedroom
  icon: mdi:fan

# Livingroom
hvac_cooling_lvrm:
  name: HVAC Cooling Livingroom
  icon: mdi:snowflake
hvac_heating_lvrm:
  name: HVAC Heating Livingroom
  icon: mdi:fire
hvac_fan_lvrm:
  name: HVAC Fan Livingroom
  icon: mdi:fan

# Office
hvac_cooling_ofc:
  name: HVAC Cooling Office
  icon: mdi:snowflake
hvac_heating_ofc:
  name: HVAC Heating Office
  icon: mdi:fire
hvac_fan_ofc:
  name: HVAC Fan Office
  icon: mdi:fan

climate.yaml:

- platform: dual_smart_thermostat
  name: Master Bedroom
  heater: input_boolean.hvac_heating_mrbr
  cooler: input_boolean.hvac_cooling_mrbr
  target_sensor: sensor.master_br_temperature
  min_temp: 40
  max_temp: 80
  target_temp: 69
  target_temp_high: 69
  target_temp_low: 63
  cold_tolerance: 1
  hot_tolerance: 0.5
  min_cycle_duration:
    seconds: 900
  keep_alive:
    minutes: 3
#  initial_hvac_mode: "off" # hvac mode vill reset to this value after restart
  precision: 1
  
- platform: dual_smart_thermostat
  name: Front Bedroom
  heater: input_boolean.hvac_heating_frbr
  cooler: input_boolean.hvac_cooling_frbr
  target_sensor: sensor.front_br_temperature
  min_temp: 40
  max_temp: 80
  target_temp: 78
  target_temp_high: 78
  target_temp_low: 72
  cold_tolerance: 1
  hot_tolerance: 0.5
  min_cycle_duration:
    seconds: 900
  keep_alive:
    minutes: 3
#  initial_hvac_mode: "cool" # hvac mode vill reset to this value after restart
  precision: 1

- platform: dual_smart_thermostat
  name: Office
  heater: input_boolean.hvac_heating_ofc
  cooler: input_boolean.hvac_cooling_ofc
  target_sensor: sensor.office_govee_temperature
  min_temp: 40
  max_temp: 80
  target_temp: 78
  target_temp_high: 79
  target_temp_low: 72
  cold_tolerance: 1
  hot_tolerance: 0.5
  min_cycle_duration:
    seconds: 900
  keep_alive:
    minutes: 3
#  initial_hvac_mode: "off" # hvac mode vill reset to this value after restart
  precision: 1

- platform: dual_smart_thermostat
  name: Livingroom
  heater: input_boolean.hvac_heating_lvrm
  cooler: input_boolean.hvac_cooling_lvrm
  target_sensor: sensor.livingroom_govee_temperature
  min_temp: 40
  max_temp: 85
  target_temp: 78
  target_temp_high: 80
  target_temp_low: 66
  cold_tolerance: 1
  hot_tolerance: 0.5
  min_cycle_duration:
    seconds: 900
  keep_alive:
    minutes: 3
#  initial_hvac_mode: "cool" # hvac mode vill reset to this value after restart
  precision: 1

ESPHome config (very basic, eventually the sensors will be inserted here for direct monitoring):

esphome:
  name: hvac-controller

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: <redacted>

ota:
  password: <redacted>

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Hvac-Controller Fallback Hotspot"
    password: <redacted>

captive_portal:


switch:
  - platform: gpio
    name: "heater"
    pin: 21
    id: heater
  - platform: gpio
    name: "air_cond"
    pin: 19
    id: air_cond
  - platform: gpio
    name: "fan"
    pin: 18
    id: fan
  - platform: gpio
    name: "Extra Relay"
    pin: 5
    id: relay



Cooling Automation yaml (this ties all the thermostats together, will be additional ones for heating [which will contain exclusivity logic so we don’t have AC and heater on] and fan later):

alias: HVAC Cooling
description: ""
trigger:
  - platform: state
    entity_id:
      - input_boolean.hvac_cooling_frbr
      - input_boolean.hvac_cooling_mrbr
      - input_boolean.hvac_cooling_lvrm
      - input_boolean.hvac_cooling_ofc
condition: []
action:
  - if:
      - condition: or
        conditions:
          - condition: state
            entity_id: input_boolean.hvac_cooling_frbr
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_lvrm
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_mrbr
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_ofc
            state: "on"
            for:
              hours: 0
              minutes: 0
              seconds: 0
    then:
      - type: turn_on
        device_id: 00f31df0dd7d700cc6124f3dcac4d230
        entity_id: switch.air_cond
        domain: switch
  - if:
      - condition: and
        conditions:
          - condition: state
            entity_id: input_boolean.hvac_cooling_frbr
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_lvrm
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_mrbr
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
          - condition: state
            entity_id: input_boolean.hvac_cooling_ofc
            state: "off"
            for:
              hours: 0
              minutes: 0
              seconds: 0
    then:
      - type: turn_off
        device_id: 00f31df0dd7d700cc6124f3dcac4d230
        entity_id: switch.air_cond
        domain: switch
mode: queued

1 Like

3D ppriner willnot work unless you can design you own stuff with 3D CAD software.

Then yu find the printable plastic can not take the heat. It wil get soft if used as a heating vent.

But no need. you can but moterizd vents at Home Depot. Then all you need to do is add the ESP32 for control.

1 Like

Thanks for posting this!, just about to jump into making my ducted system into more zones, smarter too!

1 Like

Specifically addressing the Keen Smart Vent. You mention under issues " Keen: These seem to only control the vents, not the HVAC, and is expensive & relies on the cloud"

It seems that Keen has been short lived. They were on Shark Tank in 2015. Merged with Ecovent in 2017. Then in 2019 Keen and Ecovent were acquired by ConnectM. After that the website basically went dead. The founders left the company in 2022.
( source: [What Happened To Keen Home Smart Vents From Shark Tank Season 6?] )

So, yes, they were expensive, but now they can only be found on ebay, for those outrageous prices. But they don’t rely on the cloud. They are Zigbee based and don’t need the Keen app at all.

I picked one up, brand new in box, from a thrift store for $20 which I thought at the time was double what it should go for until I realized it has a temp and pressure sensors built in.

I’m debating doing a teardown on it to see what chip it’s based on.

2 Likes

Very interested in this. Just bought a flair vent and a puck to try it out - although I hate having to use the cloud. HA Supervised with a Nest learning thermostat and most of an older home with forced air heating/cooling - is fully automated except for the vents - some rooms cold, some hot, etc. etc.

So looking forward to maybe removing the puck and making this (and possibly others) local - and following your journey -

Two questions, 1 interesting and 1 boring…

  1. I have bought into the flair paradigm and am in the process of instaling 10 flair vents in my home. They are very well made (strong metal construction) and have a paradigm of one ‘puck’ that is a hub for all of themn to connect. The Homae Assistant flair HACS integration is terrific and I already have it up and running. (They open/close based upon the HVAC fan starting and stopping as well as room temp vs. the thermostat setting but are also only open if there is someone also in the room.) The vents also monitor temp at the vent (not very useful) as well as air pressure at the vent. I already have all the other temp sensors in rooms etc. and I can give up the air pressure measurement if I have to. I loathe to use something cloud based, but am certain I can reverse engineer one (and then the others) to control locally. I just need some direction on how to connect a wifi based controller to the motor in the unit. These units can run on battery or 24v. My guess is the vents use something other than wifi to talk to their hub to save power. Therefore I plan on getting rid of the batteries and power them on the 24v - and then I can use that same source for the wifi based controller. Thoughts on where I can start on investigating how to proceed? (It may be very easy, just let the new and old circuitry both control the vents - connect the wifi controller simply to the motor & 24v power supply)?

  2. We love our very old home - here are some photos on the rough installations, to be “beautified” later. Rather than plaster of paris to be able to have the vent/s closer to the floor I am thinking of raising them up and putting trim underneath them so that if we hide the floors with wall to wall carpeting then vents are stll above that. - is there a typical installation standard?.. thoughts?

In the kitchen - I was stuck doing this one this way, beloved wallpaper pattern no longer available:

Need futher cleanup but I wanted this one near the floor as this room would never have carpet - or better to put…

…trim under it like I was going to do here (as wall to wall carpeting might be put back in here:?

Funny side effect - now my dog is scared of the vents… when they occassionally make a little sound to open or close he thinks there something living behind them

Is this an AI responding to a thread?

I’ll be sure to tell my dog

Chiming in regarding off-the-shelf solution portion of this thread.

  • Keen: These seem to only control the vents, not the HVAC, and is expensive & relies on the cloud

I was about to try Ecovent (which is acquired by Keen if I’m not mistaken). 2 inputs for that. Link to the product I bought can be found in the link:

  • Does Keen rely on cloud? I didn’t get that impression (I wanted a vent that can be opened/closed by a wireless trigger from HASS).
  • The smart vent I bought seems to require EcoVent/Keen’s proprietary hub, so it can’t connect to a normal Zigbee hub. See my question (diy.stackexchange.com#299859).

Then I saw:

@eugsmiley Would you mind checking the stackexchange link above? I’m about to return my Ecovent device but if Zigbee works without the proprietary hub that’ll be great.

My automations are complete and work well with the Flair vents (I have turned off any flair automation and done it all within HA) taking into account room occupancy, temperature as well as vent pressure and whether or not the HVAC is blowing -

I’m shooting for direct HA local control without any hub at all. I have numerous Shelly devices that are wonderful and always connected rock solid with no issue as an example. Maybe other folks with a non-robust network that is an issue but mine is very strong signal with hard wired access points etc. Anyway I was going to buy another Flair vent in order to figure out how do make it local. Taking one that I already purchased apart resulted in seeing it was very well engineered with very few wires and everything is consolidated into one circuit board. This one may take some thinking. The mechanism has sensors for starting and stopping/reversing the motor direction and other sensors to stop the motors when it is completely open or closed as well. Possibly a good thought is to steal something from a mechanism that I can buy off the shelf and modify that is used for controlling window blinds that move in the same fashion with opening and closing the horizontal slats, etc… The only thing I also lose is the vent pressure measurement which in my specific case is not really an issue.

I used to be a programmer and this is a big hobby for me I already have a few ESP32-CAMs and ESP8266’s working - so I am up to the task - anyone have any thoughts on what window blind mechanism to consider (if I go down that road then half the work is done for me!) - if there are any HA compatible window blinds (those for windows with horizontal slats) that run on WiFi and already have an integration - that do NOT use a hub (or I can use a verical window blind machanism and hack it to use ESPHOME) - ?

What are your thoughts on the smart vent project (brobstoncreations) linked above? I think you will find a lot of what you were describing, but the one drawback I feel is that it’s 3d printed.

Thank you @nuetron - I saw that and it’s really impressive, the only problem is I don’t have a 3-d printer and have already spent probably over a grand on 11 Flair smart vents… Also I do like the robust metal construction as the vents get up to 150 degrees F (maybe the plastic would eventaully sag/warp?

In any event I think your project is really great and I did subscribe - I would use your code/integration but with the Flair hardware :slight_smile: (I may have to replace the motor, however I am not sure) -

(Maybe it would have been smarter to spend that money on a 3d printer instead!)

Sorry, but I’m only just seeing this. I only have the one Keen vent (not an ENEV412C) and it works great via Zigbee with a Nortek USB controller. I wish I could be more help.

1 Like