Get the top HN stories in your inbox every day.
balloob
balloob
If there are people reading this and are excited to try out ESPHome: try it out without writing a single line of configuration by installing some of our ready-made projects: https://esphome.io/projects/
It allows you to turn a cheap microcontroller into a voice assistant, bluetooth proxy or media player directly from your browser.
Gazebra12
No questions, only praise. This project is simply awesome, I've been astonished time and time again by the features. I had done a complete dive into the Espressif SDK trying to implement a wireless switch with temperature sensor and mqtt and had nearly finished the project when I stumbled on ESPHome obsoleting all of my work at once. It was just everything I had written so far plus many added features and obsoleted all my work at once.
rubenbe
I agree, programming is fun, but using ESPHome to quickly have project finished and working reliably is arguably even more satisfying.
freedomben
I both love and hate when this happens. Discoverability seems like the hardest challenge. I always do quite a bit of searching for existing stuff before rolling my own, and it can be really hard to find stuff. Most of the time I stumble on it serendipitously at some point later.
mairusu
I have one! ESPHome is awesome but I'm trying to steer away from Wifi IoT - a big reason is that I like the idea of self-healing meshes that can work entirely offline, without having to deal with a lot of configuration.
Espressif seems to have a few devices with ZigBee capabilities, think there will be a way of building our own ZigBee device in the future?
ianburrell
There is no reason that Wifi devices can't work without internet. Most ESP32 devices don't talk to internet, but to other device on local network. Wifi doesn't really need mesh since has longer range.
I hope ESPHome is working on Matter support cause protocol that can switch between Wifi, Bluetooth, and Thread is a big advantage.
andai
Fascinating. When I read your comment my first thought was to use something like LoRa, though perhaps broadcasting your data for miles is an antifeature.
bdavbdav
This may be worth a read. ESP-WIFI-MESH
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/....
londons_explore
ESP devices have support for sending raw wifi packets, so you can implement your own mesh protocol if you like.
They have software support for both wifi and bluetooth meshing as well.
blagie
The ESPHome project is unusually competent, user-centric, and almost uncanny in how well it works.
I'll tell you what I want, though. I'm not sure this is in-scope for ESPHome, or how it's possible to even implement cleanly:
I want to be able to make devices which have tight feedback loops and more complex on-board algorithms
What I really want is e.g. a light sensor controlling lightbulbs. Here, I want the lightbulbs changing almost continuously by almost imperceptible amounts, things like Kalman filters, and similar, to keep a fixed light level and light temperature based on time-of-day.
I'd like to have my air filters, ventilation, heating, humidification, dehumidification, and cooling continuously controlled such that:
1) All run at the right level continuously to keep environmentals and power optimized.
2) Ventilation reduces CO2 / TVOC levels, but increase PM2.5 levels and lets in external temperature
3) Cooling / heating / ventilation impact humidity in complex ways
4) Space heaters cost a lot more than baseline heating, but are sometimes necessary on very cold days
5) This is all less important when I'm not home, and some things change. When I'm home, I want liveable humidity. When I'm not, I want to minimize humidity.
... and so on.
(A second thing I want is ESPHome to allow me to make Zigbee, rather than just wifi, devices)
bobchadwick
I use Home Assistant for doing most of what you're asking for. This integration works great for adjusting light level and temperature: https://github.com/basnijholt/adaptive-lighting.
My home has an ERV and I use a couple Shelly relays (one for power and the other to boost airflow) integrated into HA to modulate the amount of fresh air I bring in, currently based on indoor/outdoor temperature and humidity. I don't have an air quality sensor, but if I had one I could easily integrate that into my automations.
blagie
Woah. That looks awesome.
A red flag, relative to what I would do is: "Frequency to adapt the lights, in seconds." I would like to be able to make tight feedback loops, which means much less than seconds. I use HA + ESPHome as well, and that's on my list of issues I'd like to see resolved. To understand why this matters for a lot of controllers:
https://en.wikipedia.org/wiki/Gain%E2%80%93bandwidth_product
Audio amplifiers are often in the 50MHz range, in order to achieve good performance in the <20kHz range. Add to that, in this case, the desire for steady transitions so I don't have sudden light or noise changes (stepping through 255 states takes .
That said, holistically, this does what I want better than how I was going to do it.
The other major issue I have with HA is reliability. About 10% of the time, some automations don't work. I'd really like to be able to set state (blinds are down after 8pm) rather than actions (blinds go down at 8pm). If you have suggestions....
winsome
I would love to hear more about the integration you've setup. I, too, have an ERV but it's on a dumb controller right now.
I don't use HA yet, but it's a project I plan to tackle soon. I've also been doing some research on ESP and energy monitoring, so it sounds like what you've done is right up the same alley.
wildekek
I have done all this using ESPHome. There a quite some control loop components you can utilize for this, such as bang-bang and pid thermostat.
My thermostat: https://github.com/wildekek/esphome-opentherm-templates
My air cleaner: https://github.com/wildekek/BlitzHome-BH-AP2501
My bathroom hygrostat uses Home Assistant: https://www.home-assistant.io/integrations/generic_hygrostat...
jtwaleson
Thank you! I've rarely been as impressed by how well software works. Flashing, compiling, logging and OTA updates were always a PITA and with ESPHome it's a breeze. Logging over wifi feels like it shouldn't be that simple. I've created a mini IR receiver / transmitter to control my sound system with my TV remote. It was super simple to set up, and the integration with Home Assistant is great!
WhyNotHugo
I want to connect a temperature sensor to an esp, and trigger a radiator valve based in temperature range.
Valves are mostly zigbee. Can I somehow control one with ESPHome without Home Assistant or zigbee2mqtt?
I want to understand if I can avoid adding a full blown Linux server into the equation.
Larrikin
Why do you want to avoid Home Assistant? From what I've found setting up my automations is that once you have it doing something useful you find you have a lot of ideas to further make your life better. I might be wrong but I suspect you'll spend a lot of time doing something that is simple in HA only then find you want to do something else similar.
jbensan
"mostly zigbee?" not sure what you mean there. But ESPHome can be controlled directly without HA. You should read the website, specifically the sections on "Networking" and "Management and Monitoring".
If you are starting at zero there is a big learning curve, but if you're into it, it is a lot of fun.
Doe-_
You can bind a device to another, so while you would need the ability to issue the command, a server wouldn't be required to handle the state propagation.
https://smarthomescene.com/guides/how-to-bind-zigbee-devices...
JoBrad
I’ve been using Home Assistant for about 3 years now, and talk about it to pretty much anyone who will listen. Thanks for keeping home automation open and focused on the users!
bobby_the_whal
Are you not concerned the foundation will ever work against your interests?
balloob
The foundation can only work in the interest of privacy, choice and sustainability for the smart home. It is important that we have a thriving ecosystem of communities and companies working towards this goal. You cannot do this with just a single player. If, at some hypothetical point in the future, that means it will work against my interests, then the foundation is doing exactly what we created it for.
sen
I've got 20+ devices running ESPHome, about 3/4 of them are part of my Home Assistant network, and maybe 6 or so that are standalone and just using ESPHome to talk to MQTT for other stuff (cheap Chinese weather station that I replaced the insides of with an ESP32, etc). I've got my rain water tanks monitored, my soil moisture in my greenhouse, the temperature and humidity in all different parts of the house, air quality in the kitchen and kids rooms, etc etc.
It's such an underrated project. In literally 5 minutes and with $10 of hardware and no programming at all, you can build your own IoT devices in your home and get real-time data on anything you want on your property.
throwup238
Same here, plus a dozen or so random ESP32 variants just sitting in my electronics parts box because they're so cheap. It's incredibly freeing to just have all that hardware available at arms reach whenever you have an idea. They're surprisingly reliable and with modules like the sprinkler controller, they can be programmed to be independent so that they keep running as long as they have power. It took me months to realize that HomeAssistant microSD card had failed last time because all of my hydroponics gear just kept running.
By far the biggest time consumer has been wiring them up to DC/DC converters to drive relays in a waterproof Sockitbox. Another really useful part to keep around are wire terminal breakout boards: https://www.amazon.com/whiteeeen-Development-Expansion-ESP-W...
Also CloudFree is great for off the shelf IoT parts that can be reprogrammed with ESPHome: https://cloudfree.shop/
darkwater
Now you MUST share more details on the hardware (case, power etc) and process you followed for all of those devices.
kkielhofner
I am a VERY low-effort hardware person (even soldering is um, not my favorite) but for years my approach has been:
1) Go to Amazon and buy a three pack of ESP32 dev boards with headers[0]. They're always some random seller, etc but I've probably had one DoA/failure after buying dozens from random sellers over the years.
2) Get a dupont wires variety pack[1].
3) Optionally (but good to have) get some breadboards [2].
4) Familiarize yourself with various supported temperature/motion/humidity/relays/etc. Esphome has a supported list[3].
5) Search for the chip name, etc on Amazon. Example[4].
6) Familiarize yourself with the ESP32 dev board pins, GPIO, etc. Most sellers will include a picture that looks something like this[5] and most of them are pretty "standard" these days.
7) Wire stuff up, configure with esphome.
8) Once you have things up and running, shove everything in an old box (iPhone boxes are especially sturdy). Other options are various project boxes[6], 3D printing, etc. It's usually easy enough to cut out/drill whatever you need.
At the end of the day you can do some pretty impressive things like directly combining temperature sensors, humidity, presence detection, PIR motion, air particulate, relays, etc even on a single board thanks to ample GPIO and esphome. All for (typically) something like $10 per "location" where you need the stuff. Even less if you buy from Aliexpress, etc.
Of course for "install" you'll need power supplies and (typically) USB-A to micro-USB power cables but most of us have drawers full of these things from old phones, etc. Good news is ESP32 boards absolutely sip power (something like 100mW or less) even with all of your "stuff" attached.
[0] - https://www.amazon.com/ESP-WROOM-32-Development-Microcontrol...
[1] - https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-...
[2] - https://www.amazon.com/Breadboards-Solderless-Breadboard-Dis...
[3] - https://esphome.io/index.html
[4] - https://www.amazon.com/Teyleten-Robot-Digital-Temperature-Hu...
[5] - https://lastminuteengineers.com/esp32-pinout-reference/
[6] - https://www.amazon.com/LeMotech-Plastic-Electrical-Junction-...
8A51C
I had a solar powered project setup with environment sensors in my shed. After a while the bugs moved into the elctronics, corrosion ensued and caused shorts which killed everything. The lesson I learned is to seal project boxes up really well. The whole boxing something up and getting power to it thing is the hardest and least enjoyable bit of hardware projects for me.
tbyehl
As a fellow lazy hobbyist, I'm gonna suggest that buying the cheapest ESP32 / -C3 / -C6 boards can be a poor value. The cheap ones are often > 25.4mm wide so on a single standard breadboard the pins are only accessible on one side[0]. Also having recently been fighting CircuitPython running out of memory parsing a ~35KB response from a web service, boards with some PSRAM are real nice to have. And speaking of CircuitPython, ESP32-S3/S2 boards can run the UF2 bootloader for that Pi Pico-like experience.
Waveshare's super compact ESP32-S3-Mini (or Zero) has become my first-to-grab. For 5 direct from their China site it works out to $7.35/ea pre-soldered with shipping or save a buck each for unsoldered. 2MB PSRAM and 13 usable GPIO. They also have less cheap -S3 boards in Arduino Nano ESP32, Pi Pico, and ESP32-S3-DevKitC-1[1] formats. And the oddball ESP32 One in Pi Zero format, using an ESP32 w/ off-die PSRAM. They sell on Amazon, too.
A genuine Espressif ESP32-S2-DevKitC-1-N8R2 is $8 on Amazon, a relative bargain if you need it tomorrow and can live with one less LX7 core and no Bluetooth.
[0] If you use the trick of spanning two breadboards side-by-side, that's an extra cost that could have gone towards a better smaller board.
[1] Beware of cheap boards claiming to be copies of Espressif's 25.4mm board designs, many have been widened to ~28mm. Bad ESP32-S[3|2]-DevKit[C|M]-1 copies give themselves away by having enough room on top to put pin labels next to the pins instead of between them.
SOLAR_FIELDS
If you don’t mind waiting on China post, I’ve had better consistency buying dev boards from reputable Chinese vendors such as DFROBOT. You can often get the boards significantly cheaper than Amazon and there is way less chance of ending up with duds. Usually turnaround is about 7-10 days with FedEx
alias_neo
I keep a stockpile of cheap ESP32 and ESP8266s at home, and any time I need something "ensmartened" (opposite of enshittified?) I grab whichever one is appropriate, solder up what I need, design/3D print a case, flash it from my _other_ laptop which has Chrome on because Firefox doesn't support WebUSB :'(, and it'll show up in Home Assistant for adoption the moment it lands on my IoT WiFi network.
regularfry
I did exactly this with WLED over the weekend, just to see what the ecosystem was like and what the capabilities are. That flow from soldered hardware to HA integration is astonishingly slick.
macropin
How do you power them? I've used ESPHome previously to scrape my solar analytics for consumption in Home Assistant using $3 Wittycloud ESP8266's. But as yet I haven't found an elegant solution for powering them other than using a USB adapter. It would be nice to find an elegant battery solution for outside sensors.
spicyjpeg
You can buy off-the-shelf modules that take a lithium ion cell and provide charging, overcurrent and overdischarge protection; just search your Chinese online retailer of choice for "TP4056 module" and you will find plenty of them. There is a Hackaday article [1] that goes in depth on how to use them properly.
If you'd rather not wire it up yourself there are also ESP32 dev boards with built-in battery management functionality, such as the LoLin32 Lite and Sparkfun ESP32 Thing. I haven't had much luck with the former (possibly due to its lack of RF shielding) but the latter seems to be pretty solid. I think Adafruit sells similar boards as well.
[1] https://hackaday.com/2022/10/10/lithium-ion-battery-circuitr...
blutack
The Olimux ESP32-POE / wESP32 boards have a proper ethernet connection and PoE support. Means you don't need to worry about wifi coverage or power as long as you can get an ethernet cable to it - and those are cheap & easy to find in ludicrous lengths for outdoor use.
ESPHome also has deep sleep support - so for some use cases you can just wake up every x minutes/hours, connect to wifi, do thing, back to sleep for x minutes. In deep sleep a decent ESP32 board (firebeetle or tinypico) will last for months on a small lithium cell. For a quick sensor, the whole wake up/read sensor/update HA/sleep again takes a second or so depending on wifi configuration.
Useful for something on a schedule like sprinklers or slow sensors (soil humidity or whatever).
You can also wake based on interrupts, which is good for stuff where you are using a low power external sensor that does interrupts (wake ESP up if humidity gets to x) or a GPIO switch (magnetic entry/float switch/etc etc).
Firebeetles and tinypicos both have cell connectors and onboard charging directly for lithium pouch cells. You could also get a cheapo solar power bank, although you'll want to do some research to make sure the relatively light load of an ESP32 will keep it powered on.
ggiesen
I second the Olimex ESP-POE boards. I use them for all my ESPhome projects as I'm a big fan of wired connectivity and having the ability to power them over PoE is awesome.
They also have a wide variety of sensors that connect with a ribbon cable (they call it uEXT) with no soldering required. Many of the sensors are supported by ESPHome.
Nextgrid
Car "cigarette lighter" charger adapters are cheap and can take ~12V (and some even go up to 24) and give you a USB output.
15155
https://shop.m5stack.com/products/battery-module-13-2-1500ma...
Featured yesterday on HN for being acquired by Espressif.
luma
Battery can be a problem as low power takes a lot more engineering than you’d imagine and being outdoors creates additional problems if you’re trying to use lithium chemistry cells when temps go below freezing.
For indoor use, I made this to power ESPhome devices from a cheap apple USB adapter: https://www.printables.com/model/703859-esp32-enclosure-with...
lostlogin
I agree with everything here, except the $10 of hardware.
You must be running some very fancy chips!
For extra savings the ESP8266 might be as low as $4us. It really is amazing.
rubenbe
I started valuing the enclosure that comes with the 10 dollar versions (e.g. the M5stack atom).
Since most use-cases for me are literally 1 sensor connected to an Atom, it (largely) fixes the enclosure problem. Although I'd like to have more DIN rail mounted options.
baq
ESP8266 is not recommended for new projects though. Its age is starting to show.
HankB99
Is that an Espressif or an ESPHome recommendation?
Were I designing a product that uses one of these I would certainly not use the ESP8266. For hobby projects, if I can buy them on Amazon, eBay or elsewhere, the 8266 remains a valid choice (for me.)
frognumber
I'm not sure where you're buying your ESP8266, but mine run less than a buck (on a little dev board).
Aliexpress -> From $0.99 -> four-pack of ESP8266 for $3.19.
Even less when they have a sale.
Asmod4n
Or you could buy a rpi2040 for 99 cents.
kkielhofner
You can get a three pack of esp32 dev boards (with headers) for $6 from Aliexpress. For that you get:
1) Wifi.
2) Much more robust ecosystem, including esphome (the subject of this post).
nsteel
Wasn't there previously some problem with using Pico boards and you had to use a fork because PlatformIO were trying to get vendors to pay (for something they never asked for), and then kicking up a big fuss when they didn't pay up. I say vendorS because they are now trying it on with Espressif also. It seems like a very strange funding model. Did that get fixed? It was a depressing state of affairs when I last looked.
hagbard_c
That'd get you the chip which you'd have to solder to a board. Possible and feasible but not as easy as plugging in an ESP8266.
tredre3
Plus the 99 cents for flash chip.
Plus the 99 cents for the PCB.
Plus the 99 cents for misc parts like regulator and caps.
Plus the $4 for the wifi module.
throwaway290
Could you recommend a good component for security purposes? Like if someone enters my flat without breaking in (I rent). The docs list a bunch of options... do I go for motion & presence or binary presence detector? Which sensor is better (and most cost effective)?
r2_pilot
Depends on your threat profile and budget. Specifically if you're worried about your door opening, you can use a magnet and Hall effect sensor(or reed switch). Another thing you could do is PIR, but the cool kids are playing with 60GHz pulsed radar, which does presence pretty well (I've recently tested that the XM125 radar I just got can pick up my breathing and detects presence from the other side of 2x pieces of 3/4in sheetrock).
throwaway290
I'm definitely not a cool kid:) I was considering putting a camera in the flat and hooking it up to a visual motion detector but that would be a bit expensive probably (would probably need another server in addition to home assistant...)
sen
For home security I use PIR motion sensors in the main rooms feeding into Home Assistant which has a presence service, Eg it knows if we’re home or not based on whether our phones are connected to the home wifi. If we’re not home + it detects motion, it pings me.
throwaway290
Nice. Home Assistant looks easy to integrate with ESPHome... Though I don't yet have either.
petemir
Ikea's PARASOLL? I would expect that for your use-case, just knowing if a/the door was opened is already enough.
throwaway290
Is Ikea stuff compatible with ESPhome?
Never mind, parasoll costs like $12. I mean something like HLK-LD2420 which should be around $2. ESPHome lists many similar sensors and I was asking which one is better. Curious if anyone had any experience with any of those
teekert
How do you monitor your rain tanks? I tried ultra sonic sensors but they invariably oxidize.
throwup238
Vegetronix water level sensors sensors: https://www.vegetronix.com/Products/AquaPlumb/
They also have good soil moisture sensors that IIRC work via time domain reflectometry which is more accurate and lasts longer in the field.
Faaak
There are black "waterproof" (weatherproof?) ultrasonic sensors that last a way longer time
macropin
I've heard that pressure sensors are the most reliable.
r2_pilot
There are new 60ghz sensors available that can do this (they can see through walls so you could have the sensor completely enclosed (maybe even potted in epoxy?!)). Sparkfun/Acconeer A121/XM125 is what I'm using,although not in this context, it's for my robot.
sen
Ultrasonic sensors are so cheap I just replace them once a year or so, but I’ve not for a few new prototypes going with ToF sensors and one using a pressure sensor, to look for a less wasteful solution.
squarefoot
There are magnetic sensors in which a floating magnet (sealed in plastic) position is read by sensors (Reed, Hall, etc) sealed as well.
dnchdnd
can you share details of the weather station please? ive been looking into gathering wind data on the cheap...
sen
I bought a $60 weather station from Amazon where the base station generates a JSON file which it then wants to send to its own cloud servers. I firewalled it on its own, and have an ESP32 reading the JSON file off it and then sending the individual sensor readings into Home Assistant for a visual dashboard, and into Postgres which I use for my own weather-data-wrangling (eg hasn’t rained in a couple days and no rain expected from my local weather API? turn the watering system on for the gardens)
pzduniak
I built mine using a Hydreon Rain Gauge sensor (RG11 in my case) and combined it with an off the shelf wind sensor from AliExpress, presumably sold by Adafruit's supplier, which closes a reed switch every rotation. Everything is powered through PoE, controlled by wESP32. I spent a couple hundred bucks at most including all the mounting hardware.
It all controls an aluminum "awning" in my house that's supposed to open above certain wind speed, close when it rains.
undefined
ahaucnx
What I love most about ESPHome is the strong and engaged community.
For our open-source hardware air quality monitors [1], a member of the community developed a sophisticated ESPHome integration [2]. His integration comes with all features that we have in our default open-source firmware. Sometimes he was even quicker implementing new features than we did! So in a way, this helped and motivated us to make our own software version better (kind of open source competition).
So a big thank-you from my side to such a great community!
zeroping
Related:
A collection of device configurations for commercially-available hardware: https://devices.esphome.io/
A collection of Tasmota configurations for devices, many of which can also run ESPHome: https://templates.blakadder.com/
p1nkpineapple
Mildly off-topic: I love ESPHome, and have used it for a couple of IoT-based temperature sensors around the house, but the thing that always makes me fail the WAF (Wife Acceptance Factor) is getting all the mess of ESP32s, sensors and wires all in a nicely tucked away container. What are y'all using to hide away the electronic components?
agsacct
If you have a 3D printer, you can create stuff that passes my WAF.
Apollo does a decent job making their stuff more innocuous. https://apolloautomation.com/products/sensor-stand?pr_prod_s...
holgerschurig
That website is cancer.
It works only with JS enabled. And when I enable it, I'm pestered with pop-ups.
aranaur
This is the way.
Nextgrid
For things that need to be stand-alone I'd first check if there's an existing off-the-shelf option first which generally would be more cost-effective to buy and look better than anything I could make myself.
For temp sensors specifically I generally just go with whatever off-the-shelf stuff is supported by this firmware: https://github.com/pvvx/ATC_MiThermometer - as a bonus they can run on battery for a year or more.
icetank
I can recommend Tupperware containers. Come in all shapes and sizes and really cheap. If you get one with a glass bowl or transparent plastic you can even look inside without components getting dirty. When mounting to a wall screw your boards onto the inside of the lid and then the lid onto the wall. With this you can access it easily by removing the container from the lid. Only downside is that they can look ugly when in plain sight.
somehnguy
I 3D print enclosures for my projects. Usually I find an already designed one on Thingiverse that fits close enough. If you're using common components you're likely to find an exact match.
bdavbdav
M5stack is the way to go here
quickthrowman
I’ve got a question that I’ve tried to answer by googling but I’ve never been able to find anything that helps.
I have a septic tank alarm system that turns on an audible and visual alarm when the float switch detects that the tank is 3/4 full. There is a pair of NO dry contacts that close when the alarm goes off.
How do I monitor whether the contacts are closed or open? I assume with a GPIO pin, but I’ve never been able to google this question and find anything of use.
I’m ready to give up and use a RIB01BDC [0] packaged relay to turn on a raspberry pi and email me when the septic tank contacts close.
Majromax
> How do I monitor whether the contacts are closed or open? I assume with a GPIO pin, but I’ve never been able to google this question and find anything of use.
Without making assumptions about the microcontroller used, attach ground to one of the contacts, then attach a GPIO pin, the other contact, a 10k resistor (or 100k), and VCC together in series. The microcontroller should periodically read the GPIO pin. If it reads high, the contact is open and the alarm is not sounding; if it reads low then the contact is closed and the alarm is sounding.
The GPIO / contact / resistor / VCC arrangement acts to pull up that side of the circuit to the high logic level, and the resistor will limit the current that flows whenever the contacts close. If your microcontroller has an internal pull-up configuration for GPIO pins, you may be able to attach the pin directly to the contact without the extra hardware. (Conversely, if it has a pull-down configuration you can reverse things, attach VCC to the contact and the GPIO directly to the other. Read your microcontroller's documentation for available features and any current limitations.)
wdfx
You're assuming the tank switch is low voltage.
The very first thing to do is read the manual for the installation and/or parts used. Second, approach the tank setup with a high voltage multimeter and carefully and safely take measurements of what you might be dealing with.
quickthrowman
> The very first thing to do is read the manual for the installation and/or parts used. Second, approach the tank setup with a high voltage multimeter and carefully and safely take measurements of what you might be dealing with.
Good call, I’ll make sure it’s not 120v or 24v with a multimeter before attaching anything that expects dry contacts.
quickthrowman
Thank you for the detailed instructions, this is extremely helpful! I’ll throw a multimeter across the contacts on the septic tank alarm to make sure they aren’t putting out 24v.
Mister_Snuggles
I use an ultrasonic sensor and ESPHome to monitor the water level in my sump pit. Depending on what you want out of your septic tank monitoring, this may be a useful option.
reid
Made a time clock with ESPHome and a M5StickC. Clock in and out. Home Assistant sends the time to a Google Sheet. Super reliable.
Chilko
Something fun - the ESP32 supports capacitive touch sensing on some of it's pins, so you can turn any conductive surface into a button or input for your smart home setup. This well supported in ESPHome.
https://esphome.io/components/binary_sensor/esp32_touch.html
noisy_boy
I have a pet project I have been meaning to work on:
1. Lookup the local transport API to see bus arrival timings for the stop near my home
2. Display the timings for three main buses so that can either be a bigger display or three smaller displays, one for each bus. Don't have to be high res but relatively larger and bright e.g. a 7 segment display (3 segments for bus number and 4 for showing arrival time in mins) - basically family members should be able to view it from a distance a glance.
3. I should be able to update this over wifi (or via a some low-powered device like arduino/raspberry pi etc. connected to it). If it can run via AA batteries, even better.
I know how to do the first but no idea about the second - I have never even soldered anything in my life. Would be great if more knowledgeable folks can provide some pointers.
masto
ESPHome is a good start, as it provides a great framework for layering components together. For example, you could assemble what you want out of:
* The display component that handles drawing into a grid of pixels (https://esphome.io/components/display/)
* The text renderer
* addressable_light platform (https://esphome.io/components/display/addressable_light) to create a display matrix on top of an addressable LED driver (https://esphome.io/components/light/neopixelbus)
* An inexpensive 8x32 LED panel (https://www.google.com/search?q=8x32+ws2812b)
* You can make multiples of these, or chain the panels together, for more space
Of course, rather than reinventing any wheels, you can follow guides like https://community.home-assistant.io/t/led-matrix-with-esphom...
There's not a lot of soldering needed, especially if you go the route of repurposing existing hardware like an Ulanzi. It's mostly about making the right data connections and providing the right power.
noisy_boy
I appreciate your response. I wish there were guides for software developers like me that are also hardware noobs - ESPHome looks very powerful but I don't want to write yaml; I would rather write code for hardware that is easy to assemble and has an sdk. I feel like that will be more fun for me to setup.
alexk307
Just dive into it and learn slowly. You can write the software in Python if you want, and use whatever regular IDE you normally use.
tredre3
Since you're (seemingly) already familiar with Arduino, just use that as your framework. You can program the ESP32 in Arduino and access any library you're familiar with as well as handle Wifi.
You can buy an RGB matrix on Adafruit and they sell esp32 boards that can drive them directly,so it's essentially plug and play, no hardware knowledge necessary.
If you prefer to DIY but still need some guidance, check out this project that documents both hardware and software to achieve something similar to what you want to do (cool looking wifi-connected text display):
stavros
I don't use this, personally, but it strikes me as a fantastic idea. I made a sensor board and wrote my own firmware for it, maybe I'll see if I can easily configure ESPhome to run on it.
The only thing I'd need that my thing already has is pull-based OTA updates. Right now I just copy a firmware to a folder, and all my sensors around the house automatically update to that firmware via an HTTP server. With ESPhome, I'd have to push the update to each sensor separately, which is tedious when you have tens of them.
lelanthran
> I don't use this, personally, but it strikes me as a fantastic idea. I made a sensor board and wrote my own firmware for it, maybe I'll see if I can easily configure ESPhome to run on it.
I've done pretty much the same, but last I looked there were very few resources (other than reading the code for the ESPHome project) to help on creating custom firmware for a new board with multiple sensors. It seemed easier and faster to simply write the firmware to talk to a simple backend.
I'm also curious about how they get the code for esp32 devices to fit: on a device with 4MB flash, you effectively have a 1MB program limit if you want OTA (which you do). A simple program that does nothing but make calls to the libraries for GPIO, ADC, UART, Wifi, https, https server, interrupts, FreeRTOS, mqtt, nvs, chip info, logging, OTA and functions in the standard library (scanf alone uses 30kb) already takes you over the 1MB limit.
Compiling with all the logging turned off can get you a roughly 800kb program, which is still close to the limits considering that doesn't include program logic.
I'll have to look at this again when I next require some remote monitoring thing.
jhogendorn
The web interface has an 'update all' button thats just as convenient. I find if theres ones i want to not update i just temp break their yaml file with an unexpected keyword and it fails to compile and then update.
stavros
Hm, I wasn't aware of this web interface. Is it some sort of management panel? Do I have to deploy it on prem?
Nextgrid
I think he's talking about the ESPHome web app - it's a Python app you run on a server which provides a web-based IDE to manage your ESPHome devices.
To be clear, it is not hosted by the ESPHome devices themselves, it's a separate component.
NegativeLatency
Maybe fewer bugs and need to make changes with this?
I have a fair number of esp devices with temp probes around the house, and I’ve been meaning to switch to esp home so I have less code to maintain
stavros
Yeah, definitely fewer bugs. Hopefully I won't mind the decreased flexibility, but the lack of HTTP updates really hurts.
Havoc
You should give it a try. ESPHome is super convenient. Especially the fact that you can flash them from a browser initially and over the air after that
balloob
This is coming in the next release.
Apatheticdino
Dove into this when I flashed my AirGradient device. At first I had a hard time understanding how everything integrated together (does ESPHome need a hub? how does HomeAssistant work with this?). After (mostly) figuring things out I discovered how powerful it is to have configurability ranging from OTA updates to MQTT support.
My only gripe right now is the lack of documentation and confusion on the HomeAssistant side. The ESPHome addon turned out to be a red herring for getting everything set up.
hacknewslogin
Is this a good time to ask about a project I would like to do?
I have two 220v heaters in my garage, one on each floor. I'd like to turn one or both of them on from my phone. I'd also love temp sensors near each of them.
So far I haven't found a good FOSS option to control a 220v 40A relay. Any suggestions what to use or how to set it up would appreciated.
francis_t_catte
Use something like an Aube RC840T-240; it generates an isolated 24vac supply and has an isolated normally-open 24vac input for closing the contactor. Using anything else is liable to cause life-threatening spiciness if something goes wrong.
I use one for my addition's electric baseboard heat, and control it with a standard dry contact thermostat, but you could easily use a mosfet or relay controlled by an ESP32 or similar instead.
holgerschurig
Some completele unrelated nitpick: you wrote "220v".
As a rule of thumb: any physical unit derived from a real persons name is not written in lower case. In this case, the unit honors https://en.wikipedia.org/wiki/Alessandro_Volta and so it's written "220 V" instead.
Applies to other units based on surnames, like Heinrich Hertz' "Hz", Lord Kelvin's "K", James Watt's "W", André-Marie_Ampère's "A" and so on.
jasiek
Use a solid state relay with esphome.
darknavi
How do you control the heaters now? Can you use a 5/12v control wire?
hacknewslogin
Manually. There's a dial to turn it on, from low to high. One option I considered was a IoT motor of some kind to turn the knob for me.
alright2565
Solid state relay is probably a bad idea with all the extra heat-sinking, extra cost, and chance of getting counterfeits.
I do this with ESPHome & a J115F21C12VDCS.9 relay (note only the NO side is rated for 40A resistive): https://i.imgur.com/MqqOkoY.png
Choose any of the temperature sensors here for air temperature sensing: https://esphome.io/
Configuration is so easy. For the sensor, just copy the config from here, for example: https://esphome.io/components/sensor/bme280. Add a gpio output (https://esphome.io/components/output/gpio) and a bang-bang climate controller (https://esphome.io/components/climate/bang_bang.html)
Here's the kicad footprint for that relay (Relay_SPDT_CIT-J115F2.kicad_mod) if you need it:
(module Relay_SPDT_CIT-J115F2 (layer F.Cu) (tedit 611825E5)
(descr https://www.citrelay.com/Catalog%20Pages/RelayCatalog/J115F2.pdf)
(tags "Relay CIT J115F2 SPDT")
(fp_text reference REF** (at 12.1666 -15.2) (layer F.SilkS)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_text value Relay_SPDT_CIT-J115F2 (at 18.542 13.9 180) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_line (start -3.2 -14.1) (end 27.08 -14.1) (layer F.Fab) (width 0.1))
(fp_line (start -3.96 -13.34) (end -3.96 11.94) (layer F.Fab) (width 0.1))
(fp_line (start 27.84 -13.34) (end 27.84 11.94) (layer F.Fab) (width 0.1))
(fp_line (start -3.2 12.7) (end 27.08 12.7) (layer F.Fab) (width 0.1))
(fp_line (start -4.3 -14.3) (end 28.09 -14.3) (layer F.CrtYd) (width 0.05))
(fp_line (start -4.3 -14.3) (end -4.3 12.95) (layer F.CrtYd) (width 0.05))
(fp_line (start 28.09 -14.3) (end 28.09 12.95) (layer F.CrtYd) (width 0.05))
(fp_line (start -4.3 12.95) (end 28.09 12.95) (layer F.CrtYd) (width 0.05))
(fp_line (start 17.74 1.778) (end 19.304 1.778) (layer F.SilkS) (width 0.12))
(fp_line (start 23.876 1.778) (end 25.34 1.778) (layer F.SilkS) (width 0.12))
(fp_line (start 25.34 1.778) (end 25.34 6.604) (layer F.SilkS) (width 0.12))
(fp_line (start 21.59 -8.9) (end 17.526 -8.9) (layer F.SilkS) (width 0.12))
(fp_line (start 21.59 -2.54) (end 21.59 -8.9) (layer F.SilkS) (width 0.12))
(fp_line (start 21.59 -2.54) (end 22.8092 2.032) (layer F.SilkS) (width 0.12))
(fp_line (start 17.74 6.604) (end 17.74 1.778) (layer F.SilkS) (width 0.12))
(fp_line (start 22.86 1.778) (end 23.876 1.016) (layer F.SilkS) (width 0.12))
(fp_line (start 23.876 2.54) (end 22.86 1.778) (layer F.SilkS) (width 0.12))
(fp_line (start 20.32 1.778) (end 19.304 1.016) (layer F.SilkS) (width 0.12))
(fp_line (start 19.304 2.54) (end 20.32 1.778) (layer F.SilkS) (width 0.12))
(fp_line (start 23.876 2.54) (end 23.876 1.016) (layer F.SilkS) (width 0.12))
(fp_line (start 19.304 1.016) (end 19.304 2.54) (layer F.SilkS) (width 0.12))
(fp_circle (center 21.59 -2.54) (end 21.59 -2.413) (layer F.SilkS) (width 0.12))
(fp_line (start 4.064 -5.1054) (end 5.334 -5.1054) (layer F.SilkS) (width 0.12))
(fp_line (start 5.334 5.1054) (end 4.064 5.1054) (layer F.SilkS) (width 0.12))
(fp_line (start 5.334002 5.105397) (end 5.334002 1.777997) (layer F.SilkS) (width 0.12))
(fp_line (start 5.334 -1.778) (end 5.334 -5.1054) (layer F.SilkS) (width 0.12))
(fp_line (start -3.2 12.81) (end 27.08 12.81) (layer F.SilkS) (width 0.12))
(fp_line (start 27.95 -13.34) (end 27.95 11.94) (layer F.SilkS) (width 0.12))
(fp_line (start -4.07 -13.34) (end -4.07 11.94) (layer F.SilkS) (width 0.12))
(fp_line (start -3.2 -14.21) (end 27.08 -14.21) (layer F.SilkS) (width 0.12))
(fp_arc (start 27.08 -13.34) (end 27.84 -13.34) (angle -90) (layer F.Fab) (width 0.1))
(fp_arc (start 27.08 11.94) (end 27.08 12.7) (angle -90) (layer F.Fab) (width 0.1))
(fp_arc (start -3.2 11.94) (end -3.96 11.94) (angle -90) (layer F.Fab) (width 0.1))
(fp_arc (start -3.2 -13.34) (end -3.2 -14.1) (angle -90) (layer F.Fab) (width 0.1))
(fp_arc (start 5.334001 -0.381001) (end 5.842 -0.762001) (angle -286.3) (layer F.SilkS) (width 0.12))
(fp_arc (start 5.334002 0.380998) (end 5.842001 -0.000002) (angle -286.3) (layer F.SilkS) (width 0.12))
(fp_arc (start 5.334 -1.143) (end 5.334 -1.778) (angle -233.1) (layer F.SilkS) (width 0.12))
(fp_arc (start 5.334002 1.142997) (end 5.334002 1.777997) (angle 233.1) (layer F.SilkS) (width 0.12))
(fp_text user %R (at 12.3952 0) (layer F.Fab)
(effects (font (size 1 1) (thickness 0.15)))
)
(fp_arc (start -3.2 -13.34) (end -3.2 -14.21) (angle -90) (layer F.SilkS) (width 0.12))
(fp_arc (start -3.2 11.94) (end -4.07 11.94) (angle -90) (layer F.SilkS) (width 0.12))
(fp_arc (start 27.08 -13.34) (end 27.95 -13.34) (angle -90) (layer F.SilkS) (width 0.12))
(fp_arc (start 27.08 11.94) (end 27.08 12.81) (angle -90) (layer F.SilkS) (width 0.12))
(pad A2 thru_hole circle (at 2.54 5.1 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask))
(pad 14 thru_hole circle (at 17.74 8.9 180) (size 4 4) (drill 2.1) (layers *.Cu *.Mask))
(pad 12 thru_hole circle (at 25.34 8.9 180) (size 4 4) (drill 2.1) (layers *.Cu *.Mask))
(pad 11 thru_hole circle (at 15.2 -8.9 180) (size 4 4) (drill 2.1) (layers *.Cu *.Mask))
(pad A1 thru_hole roundrect (at 2.54 -5.1 180) (size 2 2) (drill 1.1) (layers *.Cu *.Mask) (roundrect_rratio 0.25))
(model ${KISYS3DMOD}/Relay_THT.3dshapes/Relay_SPDT_RAYEX-L90S.wrl
(at (xyz 0 0 0))
(scale (xyz 1 1 1))
(rotate (xyz 0 0 0))
)
)hacknewslogin
Thanks! I'll give it a shot.
Get the top HN stories in your inbox every day.
One of the people leading ESPHome here. Let me know if there any questions.
Last Saturday we announced that ESPHome is now owned by the Open Home Foundation. The Open Home Foundation fights for privacy, choice, and sustainability for smart homes. And for every person who lives in one. Learn more at https://www.openhomefoundation.org/blog/announcing-the-open-...