I've been toying with a variant of this project for my Honeywell home air filters. I have one in all my "big" rooms, and I like to keep them running at a low speed most of the day.
But I also have time-of-day energy pricing, and it would be nice to automatically turn off (or at least slow) my air filters during the 5pm-8pm window. This project inspires me to at least look into the feasibility of adding that functionality myself.
Depending on your air filter you might be able to just use a smart plug, I went down a similar route this summer before realizing that mine would remember their power state and settings when powered off.
So now I just have them plugged into a few smart plugs with automations in homeassistant
It's been working so well I was actually surprised one night when the dehumidifier in the bedroom turned itself on from the automation (which I have set to do after dark if humidity is higher then 70%).
It had been within tolerance for ages and I just hadn't had to even think about it.
Home Assistant does great at tying all kinds of things together.
People had a habit of leaving the basement lights on here. Now they turn themselves off after a timer expires, and also whenever nobody's home. Using HA and a cheap Shelly relay (chosen for form factor), I was able to do this while retaining the existing lighting circuits, light switch, and the lights themselves.
It works perfectly, is completely local, and the end-user UI is completely natural. Toggle the same plain-Jane light switch that has always been there at the top of the basement stairs and the lights change state. (UI doesn't get more intuitive than that.)
Or: Fans. This house has a good furnace and central aircon, but the ductwork doesn't really extend upstairs. By default, this makes the upstairs-parts very hot in the summer and cooler than I'd like in the winter -- even though it's nice downstairs during all seasons.
I fixed that to my satisfaction by putting a fan on the landing that is controlled by an inexpensive smart switch, just to improve circulation. HA runs this show; the fan runs when the HVAC is doing something, and whenever people are home and it is either too hot or too cold upstairs (based on a temperature sensor). It's not a perfect solution, but it's kept the temperatures sane (and provided logging to prove it), it was cheap to implement, and it is cheap to run.
I already had the parts kicking around; it just took software and time.
(The best option for efficiency and comfort is probably installing mini-splits up there, but... sheesh, that's into the realm of orders-of-magnitude more expensive. Maybe some day.)
I put the Shelly relay in a pre-existing junction box in the basement.
Previously, this box worked like this: There were romex cables for power/neutral, lights, and the switch itself all inside of that box. The switch, located elsewhere, interrupted power to the lights. (This isn't necessarily the most-typical arrangement, but it's how it is in the house I've got.)
Currently, the box works like this: We still have romex cables for power/neutral, lights, and the switch itself inside of that box. That part hasn't changed at all. But now the Shelly relay interrupts power to the lights.
Thus, the lights are always controlled by software.
And the light switch? That just provides an input that is acted upon by a software script.
The script (which runs internally within the Shelly relay) only does 3 things:
1. If relay is on and switch toggles, turn relay off.
2. If relay is off and switch toggles, turn relay on.
3. If relay is turned on by any mechanism, start timer, and then turn off after timer expires. (Plus other useful timer mechanics like resets on additional toggling, but you get the idea.)
---
It's easiest to think of a Shelly relay like a replacement for a light switch, but that's kind of a limiting way to think about it because that line of thought strongly implies that it should to be located where the switch is. And while it certainly can be installed that way, in practice it really doesn't have that limitation.
For my unfinished basement, there's no neutral at the light switch location so using a regular smart switch didn't pan out. (I could have added a neutral but that would have meant using more parts and getting into some drywall and paint.)
Instead, there's that neat (who am I kidding, it's a mess) junction box I that described, up on the ceiling where all of the things come together... So that's where I put the relay.
Or: There's a box behind a light fixture (well, there "should" be anyway). Often, this box will have the same functions available inside that my junction box happened to have. Power, neutral, light(s), switch input. A relay can go there.
But many houses do have neutral at the light switch location, so a relay can go there instead. Power/neutral feeds in, power for lights feeds out, with a switch (and/or relay!) in the middle. All in one accessible box on the wall. This matches the easy-to-think-of scenario. (IIRC all new homes are supposed to be this way in the US, but...)
It's (usually!) just a matter of finding the right physical location in which to install the relay.
(Note: None of this is intended to be an exhaustive list of variations. Things can and do get weird with household wiring, and regional variations of what "normal" means can vary quite tremendously.)
Same, it's so nice to throw together a yaml that pretty much does exactly what you want, with the only ambiguity being knowing the ins/outs of the pins.
This is a very fun project with a corsi-rosenthal filter (a box fan taped to a bunch of normal house filters). To control the fan, you'll have to have some fun with a relay connected to MAINS voltage -- if you dare. The salon power relay hat is a reasonable solution (just remember to get voltage up/on for fail-dead). It's possible to squeeze everything inside of those cheap lasko fans you can get, too, if you want a challenge.
Slightly easier/less mains electrical work required is to just use a smart plug of some sort, and there are multiple options you can put your own firmware on (e.g., Sonoff supports ESPHome).
One caveat about this most people don't know is that most basic fans with a fully mechanical switch always order the speeds from High to Low, so that if you for instance want to turn it on to Low you have to briefly go through High (and Medium). This is on purpose, to briefly supply higher current to the motor for it to start spinning. Some fans might not like it if you start them from an external switch in low, especially larger ones with heavier blades. This also applies to the one in the article, but you can sequence things in software if you have full control of the fan speed, too.
I don't like the notion of doing speed control by putting a digipot in series with a motor. It worked because the fan happened to be low enough power but it doesn't seem like the author gave thought to the power handling capability of the digipot. If the fan happened to be beefier he's letting the smoke out with this design.
Plus, this is more complicated than just doing PWM.
Based on the description of the wiring to the motor (24V, GND, POT1, POT2, NC), it doesn't sound like the original setup would have been drawing much power through the pot either -- there's probably something else on the other end of that wire that is doing modulation based on the sense resistance, and the motor is itself drawing power from the 24V line. So while it's true that there should be a check for the allowable limits on the digipot, I don't think it's actually being used to sink much power.
Hey, author here. That's correct. The potentiometer has 5V going through it, with a current range of 30-164μA, which fell within limits of the digipot. I opted to use the digipot instead of my own PWM because something else must be doing PWM closer to the motor, where I didn't want to go modifying.
>Everything joined up via a 2-pin and 5-pin connector on the PCB. From there, it was a straightforward matter of measuring voltages and continuity to work out what connected to what: the 2-pin connector was offering 24V DC. The 5-pin connector was what went off to the motor itself. Two of its pins were passing through the 24V DC and ground directly. Two more pins were connected to the potentiometer. The fifth pin was not connected.
> there's probably something else on the other end of that wire that is doing modulation based on the sense resistance
And it would have been great if that arbitrary assumption had been tested by the OP and the results were documented in the article so that they wouldn't come off as somewhat clueless as to the limitations of their design.. oh well.
These passive aggressive posts are a far worse violation of the HN Guidelines than what they're in reply to almost all of the time - and this is no exception.
No, no they're not. I would much rather people are warned about the guidelines and adhere to them going forward than the opposite and we then just let violations run rampant.
There are a lot of people who read or watch stuff from the Internet and then play with mains voltages without giving a though to how dangerous that is.
See: any craze which uses the high voltage transformers from microwaves
That's exactly what I did :) and a convenient thing I realised afterwards is that the push-button function of the rotary encoder gives me the ability to turn the thing on and off with my foot!
Hey, author here. There's a line in the digipot datasheet that says the voltage on the A/B/W pins must be within -0.3V to VDD + 0.3V. The fan's line for the wiper pin is 5V, which would fall well outside of that if I gave the digipot's VDD 3.3V.
Fair point, I hadn't thought to consider that aspect of the ESP8266. I mainly opted for the shiny new ESP32-C6 with the idea that I might one day set it up to use Thread instead of WiFi.
I love upgrading simple home appliances with homebrew smarts using ESPHome so that they retain their original interface. I've mostly done lights that are still correctly switched at the original wall switches but up next is my fan and toaster oven! Then to tackle the thermostats.
I purchased a Phillips fan in a shopping spree. It was hot outside, needed something, did not pay much attention beyond that it worked and was not noisy.
At home my eyebrows went halfway on my forehead seeing that there is a remote and the remote is supposed to be my mobile! Need to download the app for it, connect the fan to the Wifi, but it also had bluetooth for some reason. No way Jose!
Yet, it was so incredibly stupid like 4K zoom camera in a hammer that I had to try. Carefully. Data collection notice in the app shop is not promising, not at all. Location data, ID, I do not remember in full but perhaps contacts too? Unsure, but a lot. Anyway, will not enable access to most, airplane mode on, no bluetooth device in sight, so went ahead and installed the app, router disconnected from the internet, then run it.
First thing: refusing access to location. App: sorry, you cannot use me if I cannot access your location, network, and my mothership. And it stops. Big laugh, delete the whole thing. Leaving feedback for other customers about this incredibly stupid intrusion.
Then I got answer from Phillips! Something along the line: "This is for the best interest of our customers, we need your precise location so we can share personalized pollen and climate data and whatnot, we absolutely must insist this!"
For a fan!
Meanwhile the fan has physical buttons on it, can adjust speed, timer, and the cycle. Not completely useless. However some buttons need two press to register the action once. Beeps twice, does thing once. Likely some interference with The App, need to make sure that I am in the same room with the fan with a warning press and then the real press, or whothef knows what was in the head of these guys when they put this piece of thing together!? But really, are they nuts? Ruining use along pollen data?!
Are we already living the movie Idiocracy when it is about the Phillips product design department?! Did they loose all sense with reality? I am sure they already pushing through some new AI function for this very fan and are sad that mine cannot connect to the mother ship through satellite or something just so the update can be pushed to it learning my breath patterns for optimal fan speed. They are nuts! They are nuts!
> Need to download the app for it, connect the fan to the Wifi, but it also had bluetooth for some reason.
Bluetooth could be there for initial setup.
To connect the fan to WiFi you have to somehow get the WiFi credentials to the fan. There are a few ways to do that.
One of the most common is for the device when it has not yet been set up to make itself available over Bluetooth. The app can then connect to it and give it the WiFi credentials.
Another common way is for the device to create its own WiFi network with a name that the app can somehow recognize. The app can then find that network, connect to it, and use it to talk to the device.
I don't think this is as popular as the Bluetooth method, probably because it used to require that the user go to their network settings and connect to the device's WiFi network. Plus, when they are connected to the device they are not connected to their "real" WiFi which could disrupt other apps.
However, newer Apple and Android mobile operating systems provide ways for applications to change the network connection in the background or with minimal interaction, which makes this method more friendly so maybe it will become more popular.
There also are supposedly some IoT devices that use WPS (WiFi Protected Setup), where you bring the device near your router, press the WPS button on the router, then press the WPS button on the device, and magic happens to add the devide to your network. I've never actually had any device I've bought support this so it is either uncommon or I've just been unlucky.
Anyway, from what I've read Philips has used both the bluetooth method and the access point method on their WiFi products.
IMO anything with unnecessary digital interfaces is already down the path.
I have a Vornado fan that I would love to automate with a simple wifi-enabled plug, but due to the digital on/off/speed button, when you cut-off and restore power to the device, it stays off. If it had a dumb analog dial or switch, it would both be fine for normal use, and could be easily, cheaply made "smart."
They do sell wifi-enabled fans; none of them are in a form factor that would fit in my window.
I've been toying with a variant of this project for my Honeywell home air filters. I have one in all my "big" rooms, and I like to keep them running at a low speed most of the day.
But I also have time-of-day energy pricing, and it would be nice to automatically turn off (or at least slow) my air filters during the 5pm-8pm window. This project inspires me to at least look into the feasibility of adding that functionality myself.
Depending on your air filter you might be able to just use a smart plug, I went down a similar route this summer before realizing that mine would remember their power state and settings when powered off.
So now I just have them plugged into a few smart plugs with automations in homeassistant
This is what I do with my dehumidifiers.
It's been working so well I was actually surprised one night when the dehumidifier in the bedroom turned itself on from the automation (which I have set to do after dark if humidity is higher then 70%).
It had been within tolerance for ages and I just hadn't had to even think about it.
Why not just use a dumb timer plug from a hardware store?
Ten bucks, and completely hacker-proof: https://www.acehardware.com/departments/lighting-and-electri...
$16 if you need a remote control: https://www.acehardware.com/departments/lighting-and-electri...
Or $17 if you want to get all digital and fancy: https://www.acehardware.com/p/3001323
Sure those work, I've tried them before, but I find them more fiddly and less fun to program than homeassistant.
Also I can easily turn them on or off from my phone which is nice if I'm feeling lazy.
The next step would be to monetize it with ads, and put some of the features behind a monthly subscription.
Premium oscillation package, only $9.99 a month.
$9.99 is for a single user. Extra users cost $14.99 each sold in packs of 5 with a three year minimum contract.
Need $150 a month to add SSO though
ESPHome and homeassistant have been really great, just like a nice breath of fresh air in a world of cloud saas stuff.
Home Assistant does great at tying all kinds of things together.
People had a habit of leaving the basement lights on here. Now they turn themselves off after a timer expires, and also whenever nobody's home. Using HA and a cheap Shelly relay (chosen for form factor), I was able to do this while retaining the existing lighting circuits, light switch, and the lights themselves.
It works perfectly, is completely local, and the end-user UI is completely natural. Toggle the same plain-Jane light switch that has always been there at the top of the basement stairs and the lights change state. (UI doesn't get more intuitive than that.)
Or: Fans. This house has a good furnace and central aircon, but the ductwork doesn't really extend upstairs. By default, this makes the upstairs-parts very hot in the summer and cooler than I'd like in the winter -- even though it's nice downstairs during all seasons.
I fixed that to my satisfaction by putting a fan on the landing that is controlled by an inexpensive smart switch, just to improve circulation. HA runs this show; the fan runs when the HVAC is doing something, and whenever people are home and it is either too hot or too cold upstairs (based on a temperature sensor). It's not a perfect solution, but it's kept the temperatures sane (and provided logging to prove it), it was cheap to implement, and it is cheap to run.
I already had the parts kicking around; it just took software and time.
(The best option for efficiency and comfort is probably installing mini-splits up there, but... sheesh, that's into the realm of orders-of-magnitude more expensive. Maybe some day.)
I'm curious how you used the shelly? They look neat but I'm not sure how people are wiring them into existing switches.
Good question.
I put the Shelly relay in a pre-existing junction box in the basement.
Previously, this box worked like this: There were romex cables for power/neutral, lights, and the switch itself all inside of that box. The switch, located elsewhere, interrupted power to the lights. (This isn't necessarily the most-typical arrangement, but it's how it is in the house I've got.)
Currently, the box works like this: We still have romex cables for power/neutral, lights, and the switch itself inside of that box. That part hasn't changed at all. But now the Shelly relay interrupts power to the lights.
Thus, the lights are always controlled by software.
And the light switch? That just provides an input that is acted upon by a software script.
The script (which runs internally within the Shelly relay) only does 3 things:
1. If relay is on and switch toggles, turn relay off.
2. If relay is off and switch toggles, turn relay on.
3. If relay is turned on by any mechanism, start timer, and then turn off after timer expires. (Plus other useful timer mechanics like resets on additional toggling, but you get the idea.)
---
It's easiest to think of a Shelly relay like a replacement for a light switch, but that's kind of a limiting way to think about it because that line of thought strongly implies that it should to be located where the switch is. And while it certainly can be installed that way, in practice it really doesn't have that limitation.
For my unfinished basement, there's no neutral at the light switch location so using a regular smart switch didn't pan out. (I could have added a neutral but that would have meant using more parts and getting into some drywall and paint.)
Instead, there's that neat (who am I kidding, it's a mess) junction box I that described, up on the ceiling where all of the things come together... So that's where I put the relay.
Or: There's a box behind a light fixture (well, there "should" be anyway). Often, this box will have the same functions available inside that my junction box happened to have. Power, neutral, light(s), switch input. A relay can go there.
But many houses do have neutral at the light switch location, so a relay can go there instead. Power/neutral feeds in, power for lights feeds out, with a switch (and/or relay!) in the middle. All in one accessible box on the wall. This matches the easy-to-think-of scenario. (IIRC all new homes are supposed to be this way in the US, but...)
It's (usually!) just a matter of finding the right physical location in which to install the relay.
(Note: None of this is intended to be an exhaustive list of variations. Things can and do get weird with household wiring, and regional variations of what "normal" means can vary quite tremendously.)
Same, it's so nice to throw together a yaml that pretty much does exactly what you want, with the only ambiguity being knowing the ins/outs of the pins.
I'm just hoping it stays cheap as a hobby
This is a very fun project with a corsi-rosenthal filter (a box fan taped to a bunch of normal house filters). To control the fan, you'll have to have some fun with a relay connected to MAINS voltage -- if you dare. The salon power relay hat is a reasonable solution (just remember to get voltage up/on for fail-dead). It's possible to squeeze everything inside of those cheap lasko fans you can get, too, if you want a challenge.
Slightly easier/less mains electrical work required is to just use a smart plug of some sort, and there are multiple options you can put your own firmware on (e.g., Sonoff supports ESPHome).
One caveat about this most people don't know is that most basic fans with a fully mechanical switch always order the speeds from High to Low, so that if you for instance want to turn it on to Low you have to briefly go through High (and Medium). This is on purpose, to briefly supply higher current to the motor for it to start spinning. Some fans might not like it if you start them from an external switch in low, especially larger ones with heavier blades. This also applies to the one in the article, but you can sequence things in software if you have full control of the fan speed, too.
I don't like the notion of doing speed control by putting a digipot in series with a motor. It worked because the fan happened to be low enough power but it doesn't seem like the author gave thought to the power handling capability of the digipot. If the fan happened to be beefier he's letting the smoke out with this design.
Plus, this is more complicated than just doing PWM.
Based on the description of the wiring to the motor (24V, GND, POT1, POT2, NC), it doesn't sound like the original setup would have been drawing much power through the pot either -- there's probably something else on the other end of that wire that is doing modulation based on the sense resistance, and the motor is itself drawing power from the 24V line. So while it's true that there should be a check for the allowable limits on the digipot, I don't think it's actually being used to sink much power.
Hey, author here. That's correct. The potentiometer has 5V going through it, with a current range of 30-164μA, which fell within limits of the digipot. I opted to use the digipot instead of my own PWM because something else must be doing PWM closer to the motor, where I didn't want to go modifying.
You're right, I didn't read thoroughly enough.
>Everything joined up via a 2-pin and 5-pin connector on the PCB. From there, it was a straightforward matter of measuring voltages and continuity to work out what connected to what: the 2-pin connector was offering 24V DC. The 5-pin connector was what went off to the motor itself. Two of its pins were passing through the 24V DC and ground directly. Two more pins were connected to the potentiometer. The fifth pin was not connected.
> there's probably something else on the other end of that wire that is doing modulation based on the sense resistance
And it would have been great if that arbitrary assumption had been tested by the OP and the results were documented in the article so that they wouldn't come off as somewhat clueless as to the limitations of their design.. oh well.
From the HN guidelines:
> Be kind. Don't be snarky. Converse curiously; don't cross-examine. Edit out swipes.
> Don't be curmudgeonly. Thoughtful criticism is fine, but please don't be rigidly or generically negative.
These passive aggressive posts are a far worse violation of the HN Guidelines than what they're in reply to almost all of the time - and this is no exception.
No, no they're not. I would much rather people are warned about the guidelines and adhere to them going forward than the opposite and we then just let violations run rampant.
They're not "warnings". They're passive aggressive internet dick waving virtue signalling. The flag button exists.
There are a lot of people who read or watch stuff from the Internet and then play with mains voltages without giving a though to how dangerous that is.
See: any craze which uses the high voltage transformers from microwaves
I actually like this idea. Makes more sense than smart fridges. Would be cool if this ESPHome thing worked with RP2350/Rpi Pico 2.
Could tie it to a thermometer and turn it on automatically on hot days. Very cool.
This is amazingly cool. Did you consider putting a rotary encoder on the PCB to maintain local control over the speed?
That's exactly what I did :) and a convenient thing I realised afterwards is that the push-button function of the rotary encoder gives me the ability to turn the thing on and off with my foot!
(Facepalm) I looked at the pictures and skimmed, missing the encoder part. Awesome!
Why is there level conversion though if the digipot (MCP4141) is 2.7V to 5.5V?
Personally I'd just use breadboard, it's just a 8 pin IC and a ESP module, for a one-off hack..
Hey, author here. There's a line in the digipot datasheet that says the voltage on the A/B/W pins must be within -0.3V to VDD + 0.3V. The fan's line for the wiper pin is 5V, which would fall well outside of that if I gave the digipot's VDD 3.3V.
Thanks. Thinking more about that, might have been easier to just use 5V tolerant esp8266 :)
Fair point, I hadn't thought to consider that aspect of the ESP8266. I mainly opted for the shiny new ESP32-C6 with the idea that I might one day set it up to use Thread instead of WiFi.
I think this is the opening to a Korean horror movie...
I love upgrading simple home appliances with homebrew smarts using ESPHome so that they retain their original interface. I've mostly done lights that are still correctly switched at the original wall switches but up next is my fan and toaster oven! Then to tackle the thermostats.
I purchased a Phillips fan in a shopping spree. It was hot outside, needed something, did not pay much attention beyond that it worked and was not noisy.
At home my eyebrows went halfway on my forehead seeing that there is a remote and the remote is supposed to be my mobile! Need to download the app for it, connect the fan to the Wifi, but it also had bluetooth for some reason. No way Jose!
Yet, it was so incredibly stupid like 4K zoom camera in a hammer that I had to try. Carefully. Data collection notice in the app shop is not promising, not at all. Location data, ID, I do not remember in full but perhaps contacts too? Unsure, but a lot. Anyway, will not enable access to most, airplane mode on, no bluetooth device in sight, so went ahead and installed the app, router disconnected from the internet, then run it.
First thing: refusing access to location. App: sorry, you cannot use me if I cannot access your location, network, and my mothership. And it stops. Big laugh, delete the whole thing. Leaving feedback for other customers about this incredibly stupid intrusion.
Then I got answer from Phillips! Something along the line: "This is for the best interest of our customers, we need your precise location so we can share personalized pollen and climate data and whatnot, we absolutely must insist this!"
For a fan!
Meanwhile the fan has physical buttons on it, can adjust speed, timer, and the cycle. Not completely useless. However some buttons need two press to register the action once. Beeps twice, does thing once. Likely some interference with The App, need to make sure that I am in the same room with the fan with a warning press and then the real press, or whothef knows what was in the head of these guys when they put this piece of thing together!? But really, are they nuts? Ruining use along pollen data?!
Are we already living the movie Idiocracy when it is about the Phillips product design department?! Did they loose all sense with reality? I am sure they already pushing through some new AI function for this very fan and are sad that mine cannot connect to the mother ship through satellite or something just so the update can be pushed to it learning my breath patterns for optimal fan speed. They are nuts! They are nuts!
> Need to download the app for it, connect the fan to the Wifi, but it also had bluetooth for some reason.
Bluetooth could be there for initial setup.
To connect the fan to WiFi you have to somehow get the WiFi credentials to the fan. There are a few ways to do that.
One of the most common is for the device when it has not yet been set up to make itself available over Bluetooth. The app can then connect to it and give it the WiFi credentials.
Another common way is for the device to create its own WiFi network with a name that the app can somehow recognize. The app can then find that network, connect to it, and use it to talk to the device.
I don't think this is as popular as the Bluetooth method, probably because it used to require that the user go to their network settings and connect to the device's WiFi network. Plus, when they are connected to the device they are not connected to their "real" WiFi which could disrupt other apps.
However, newer Apple and Android mobile operating systems provide ways for applications to change the network connection in the background or with minimal interaction, which makes this method more friendly so maybe it will become more popular.
There also are supposedly some IoT devices that use WPS (WiFi Protected Setup), where you bring the device near your router, press the WPS button on the router, then press the WPS button on the device, and magic happens to add the devide to your network. I've never actually had any device I've bought support this so it is either uncommon or I've just been unlucky.
Anyway, from what I've read Philips has used both the bluetooth method and the access point method on their WiFi products.
Oh no don’t tell vornado this is possible and give them an enshittificafion pathway for their products
IMO anything with unnecessary digital interfaces is already down the path.
I have a Vornado fan that I would love to automate with a simple wifi-enabled plug, but due to the digital on/off/speed button, when you cut-off and restore power to the device, it stays off. If it had a dumb analog dial or switch, it would both be fine for normal use, and could be easily, cheaply made "smart."
They do sell wifi-enabled fans; none of them are in a form factor that would fit in my window.
I'm not even alone in this gripe, lots of other maniacs have done the hard work of conversions. Unfortunately I'm not confident enough in my soldering skills to try :\ https://www.reddit.com/r/electrical/comments/vaiskf/bypass_p...