Hacker News new | past | comments | ask | show | jobs | submit login
ESPHome (esphome.io)
555 points by kaycebasques 8 months ago | hide | past | favorite | 169 comments



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-...


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.


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.


I agree, programming is fun, but using ESPHome to quickly have project finished and working reliably is arguably even more satisfying.


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.


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?


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.


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.



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.


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)


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.


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....


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.


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...


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!


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.


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.


"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.


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...


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!


Are you not concerned the foundation will ever work against your interests?


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.


First of all many thanks for helping to maintain such a great project!

The feedback I have right now is that for the ESP32-C3 chip, provisioning over USB (Improv_serial) is not supported. So then the only option is to do provisioning over BLE if you want to get the "Made for ESPHome" certification.

However, this blew up our partition size from 1.2 MB to 1.9 MB and basically prevented us to add any further code and we got stuck there (we now develop a native HA integration).

So my feedback would be to try and reduce the overhead for the provisioning.


ESPHome is awesome. Any chance you can get MQTT running on RP2040W?


It would be great to support more PoE devices and Ethernet-based provisioning. And also alternative wired buses, such as BACNET or a generic RS-485.

The other axis: Zigbee devices and battery power. ESPs can be used with batteries, but right now it's not a great fit.

And the last feature: better reuse support for custom devices. E.g. if I have 20 similar custom devices.


> generic RS-485

You can already hook up an RS-485 transceiver to the UART ports and use it today with the UART driver. Esphome also has a Modbus controller component. What are you referring to by “generic” RS-485 that isn’t available already?


RS-485 is a shared bus, so you need to use some kind of a protocol to arbitrate access, and to make sure you don't flash unintended devices.

BACnet is one example, but other protocols can work too.



It doesn't allow firmware updates over modbus. The same would also apply to Zigbee.


Yes the modules with rpi2040 and Ethernet would be so great to have supported.

I'm pretty unhappy with the WiFi 8266 modules I have. They regularly go into unavailable in home assistant for a few minutes even though my WiFi is working fine


Could it be that they're simply idle sleeping to save power? My first ESPhome device confused me by dropping off and on and it turned out that was the problem, idle sleep was configured by default - the device would wake up, report its status and go back to sleep.


Hmm I don't know. It could be but it's very intermittent. Sometimes it happens a lot, sometimes it doesn't.

I'll try to find out the sleep settings though, thanks for the tip!


If my understanding is correct, ESPHome need to be re-compiled and uploaded every time the config yaml is changed. Is it possible to separate the binary and the config so that for some config changes, there is no need to re-compile and upload the binary? Thanks.


I believe this is because the yaml is in fact the instructions for what to include in the binary. It wouldn't be feasible for the firmware to include all possible device and peripheral code and enable parts at run time.

I think you can see the esphome intermediate code generation in the file tree during compilation and see how the yaml sections map to blocks of C/C++ code being built.


In practice, this is absolutely no problem. It generally only needs to re-compile a file or two for small changes, which takes seconds, and the OTA update functionality works perfectly so you don't need to unplug it/bring it to your desk.


Question: On a typical ESPHome device, reporting temperature (say every 15 minutes) via wireless to HomeAssistant, what battery life is possible ?


With a $10 18650 rechargeable battery you could probably get a couple months on a single charge. Esphome can deep sleep between readouts: https://esphome.io/components/deep_sleep.html Deep sleep pulls the power draw down to 50uA.

Of course if you also wire a solar charger next to the battery… maybe it will never run out.


You need to update your homepage, it still says it's owned by Nabu Casa at the bottom of the sidebar :).


Nothing but respect and gratitude for ESPhome.

I do have a question though, is there a way to use modbus-TCP with ESPhome?


I already got my ESP gadgets to tinker, what's missing is the time. It's super fun, and looking so forward for it, but my to-do list cannot give me a break. Great job what you guys are doing!


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.


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/


Now you MUST share more details on the hardware (case, power etc) and process you followed for all of those devices.


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-...


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.


Good point and batteries, solar, exterior environments, etc are what I would consider "advanced" use cases with significant additional challenges and considerations. All of my use-cases are interior environments with the most "challenging" being garages.

Generally speaking with any kind of lower-level electronics like this frying and bricking stuff is part of the learning experience and a rite of passage.


I read this as I'm standing next to my bare esp32 with dht22 temp sensor hanging off it with DuPont wires...

Nevermind the ones in the schoolhouse, basement, chicken coop...

So, yeah, I fully agree. One day I'll buy a 3d printer but until that day, wires and some tape. Everything seems cheap enough to be sacrificial if that's the end result.


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.


Mail just came, can confirm this AliExpress listing is a dimensionally correct unsoldered ESP32-S3-DevKitC-1-N16R8 copy for $5.

https://www.aliexpress.us/item/3256806260092043.html

https://imgur.com/a/3d0rKdO


Fair points but with all due respect completely misses the point and context. My comment was a reply to a new user interested in esphome on a post about esphome.

You're talking about CircuitPython, 35KB web replies, PSRAM, UF2 bootloader, etc. These are comparatively very advanced topics and you didn't mention esphome once.

The comfort and familiarity of Amazon for what is already a new, intimidating, and challenging subject is of immeasurable value for a novice. They can click those links, fill a cart, and have stuff show up tomorrow with all of the usual ease, friendliness, and reliability of Amazon. If they get frustrated or it doesn't work out they can shove it in the box and get a full refund Amazon-style.

You're suggesting wandering all over the internet, ordering stuff from China (or Amazon for roughly 3x the cost of what I suggested), multiple vendors, etc while describing a bunch of things that frankly just won't matter to them. I say this as someone who has been an esphome and home assistant user since day one. The approach I described has never failed or remotely bothered me and over the past ~decade I've seen it suggested to new users successfully time and time again.

In terms of PSRAM to my knowledge the only thing it is utilized for in the esphome ecosystem is higher resolution displays and more advanced voice assistant scenarios that almost always require -S3 anyway and are a very advanced, challenging use cases. I'm very familiar with displays, voice, the S3, and PSRAM but more on that in a second...

> live with one less LX7 core and no Bluetooth

I'm the founder of Willow[0] and when comparing Willow to esphome the most frequent request we get is supporting bluetooth functionality i.e. esphome bluetooth proxy[1]. This is an extremely popular use case in the esphome/home assistant community. Not having bluetooth while losing a core and paying more is a bigger issue than pin spacing.

It's also a pretty obscure board and while not a big deal to you and I if you look around at docs, guides, etc, etc you'll see the cheap-o boards from Amazon are by far the most popular and common (unsurprisingly). Another plus for a new user.

Speaking of Willow (and back to PSRAM again) even the voice assistant satellite functionality of Home Assistant doesn't fundamentally require it - the most popular device doesn't have it either[2].

Very valuable comment with a lot of interesting information, just doesn't apply to context.

[0] - https://heywillow.io/

[1] - https://esphome.io/components/bluetooth_proxy.html

[2] - https://www.home-assistant.io/voice_control/thirteen-usd-voi...


> Very valuable comment with a lot of interesting information, just doesn't apply to context.

I guess I'll accept that instead of dragging this thread on ;-)

Except...

"Why doesn't this random cheap ESP32 board fit properly on a breadboard" is a super common new user frustration that's easily avoidable if they knew it was something they needed to be aware of, and I don't understand why people who should know all that will point people to ~28mm boards. My bad for not also pointing out that "ESP32 38-pin Narrow" (NodeMCU ESP32S) boards should be 25.4mm and are plentiful on Amazon at the very cheap end of the pricing spectrum.


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


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.


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.


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.


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...


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.


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.


Car "cigarette lighter" charger adapters are cheap and can take ~12V (and some even go up to 24) and give you a USB output.


https://shop.m5stack.com/products/battery-module-13-2-1500ma...

Featured yesterday on HN for being acquired by Espressif.


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...


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.


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.


ESP8266 is not recommended for new projects though. Its age is starting to show.


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.)


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.


Or you could buy a rpi2040 for 99 cents.


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).


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.


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.


You would not only have to solder it to a board, you would also have to provide a radio peripheral. At which point you're pretty much looking at a pico W, which just isn't as cheap or small as a D1 Mini (or similar).


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.


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)?


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).


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...)


Yeah that's overkill. But PIR and esp32s would work for the most part. (don't rule out the radar, it's only $50 bucks at Sparkfun lol I just got it working the other day, it's pretty awesome)


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.


Nice. Home Assistant looks easy to integrate with ESPHome... Though I don't yet have either.


Ikea's PARASOLL? I would expect that for your use-case, just knowing if a/the door was opened is already enough.


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


They are compatible. See https://www.zigbee2mqtt.io/devices/E2013.html

Generally, a lot more Zigbee devices are compatible with Zigbee2MQTT that to HA's own "ZHA" Zigbee implementation. But Zigbee2MQTT and HomeAssistant work EXTREMELY nice together, very well integrated.

And if you have your Zigbee devices in Z2MQTT, then you can also use Node Red or similar tools for some automations, if you prefer that over the somewhat weird YAML-based automations of HA.

(Tip: use a cheap x86 PC, install Proxmoxx, install Zigbee2MQTT, install HA.OS ... done!)


No, it's not compatible. I am sorry, I misunderstood the purpose of your question.


It is compatible, since it is compatible with Zigbee2MQTT. See https://www.zigbee2mqtt.io/devices/E2013.html

Use a cheap x86 PC, install Proxmoxx, install Zigbee2MQTT, install HA.OS ... done!


How do you monitor your rain tanks? I tried ultra sonic sensors but they invariably oxidize.


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.


There are black "waterproof" (weatherproof?) ultrasonic sensors that last a way longer time


I've heard that pressure sensors are the most reliable.


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.


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.


There are magnetic sensors in which a floating magnet (sealed in plastic) position is read by sensors (Reed, Hall, etc) sealed as well.


can you share details of the weather station please? ive been looking into gathering wind data on the cheap...


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)


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.


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!

[1] https://www.airgradient.com/

[2] https://github.com/MallocArray/airgradient_esphome


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/


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?


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...


That website is cancer.

It works only with JS enabled. And when I enable it, I'm pestered with pop-ups.


This is the way.


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.


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.


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.


M5stack is the way to go here


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.

[0] https://www.functionaldevices.com/product/rib01bdc/


> 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.)


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.


> 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.


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.


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.


Made a time clock with ESPHome and a M5StickC. Clock in and out. Home Assistant sends the time to a Google Sheet. Super reliable.


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


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.


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.


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.


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.


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):

https://github.com/BlueAndi/esp-rgb-led-matrix


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.


> 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.


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.


Hm, I wasn't aware of this web interface. Is it some sort of management panel? Do I have to deploy it on prem?


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.


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


Yeah, definitely fewer bugs. Hopefully I won't mind the decreased flexibility, but the lack of HTTP updates really hurts.


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


This is coming in the next release.


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.


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.


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.


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.


Use a solid state relay with esphome.

https://en.wikipedia.org/wiki/Solid-state_relay


How do you control the heaters now? Can you use a 5/12v control wire?


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.


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))
      )
    )


Thanks! I'll give it a shot.


Running a few ESPHome projects, it's great for rescuing those which I lost motivation to write code for. The ability to do processing on-device as well as with Home Assistant is neat, but writing those procedural routines with YAML takes a little getting used to. The concepts used in the ESPHome system design are not completely intuitive.


love ESPHome. Someone made an ESPHome driver for my Rheem Water Heater via the M5Stack ESP32 w/ RS485. I primarily use Hubitat rather than HomeAssistant, so I adapted it to Hubitat. I use it to automate my water heater based on my airbnb calendar, all without needing a cloud/internet.


I love ESPHome! I turned my dumb standing desk into a smart desk with it (amongst dozen other things).


Where would I start if I want to run a ESPHome voice assistant without a Homeassitant server?

I understand I need some kind of server, but I'd prefer if that would be something I just run in the terminal or a cloud function or similar. I don't have hardward to run HA on at the moment.


I’ve been happy with tasmota but I imagine that this would serve the same purpose.


It is a lot more configurable than Tasmota, but a lot harder to do it.


One of my favorite projects in all of FOSS. The only big thing missing is power management!

I just wish there was a little more native hardware. I wonder if there's enough interest to do a run of PLC-like units?


Requires nerves of steel to navigate Aliexpress.


The only problems I've had with AliExpress is the anxiety of choosing a seller where a cheaper one exists. All the hardware I've ever bought has been exactly what I ordered.


I buy stuff from them all the time. They are Amazon with longer shipping times and better prices.

It's harder to return stuff, sure, but just don't buy anything like that there.

I've never been ripped off by them. One time I bought some stuff and it wasn't being shipped so I cancelled my order and got my money back.


I've had good luck buying from the Wemos and Lilygo official stores on AX. Have had no problems in many years and dozens of orders. Other sellers are a gamble.


Is there something similar but for STM32?


For networking it says WiFi and BLE. What’s the approach to adding an ESPHome sensor outside of WiFi range?


Not to be pedantic but it's ESPhome not ESPinthemiddleofnowhere. There are other solutions for far away sensors.


There is a very real band which one could call ESPgarden where it is not worth setting up LoRa or similar because the Wi-Fi can just about make it, but not quite to be reliable. I've found success with Wi-Fi extenders which aren't very good, but are just good enough to be able to be able to let some of my garden reach the network.


There is BLE Long Range (also called Coded PHY) which is Bluetooth with range of 1km. I bet that would be perfect for outdoor sensors. Longer range and lower power than Wifi, and Bluetooth ecosystem.

I couldn't find any devices that support it yet.


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 add Ethernet support for all ESP32 chips, but need an extra (and cheap) chipset

https://esphome.io/components/ethernet.html


It's so nice. Just a simple .yaml file to configure IoT devices. And it works really well.


And the best part is that it allows you to write logic in C(++) if you want.

I tried Tasmota first but struggled with trying to get the rules to handle my slightly complex logic. Which was that when a water level sensor triggered, run a pump 15 seconds, wait 5 mins, run 15 sec and repeat for x times. But with the catch that if the sensor triggered before the run was done, it should ignore that.

After reflashing esphome I got it done in a few minutes in C.


I'll be the contrarian. I really do not like ESPHome at all. It sure is a nifty whizzbang project, and generating firmware on the fly from a json config is pretty neat, but I found it to be utterly insufferable.

First, the ESP is a beast of a chip. The 32s have megabytes of flash space. Maybe I'm missing something, but it seems that it should be very possible to have one firmware image that consumes the same json config directly to set up components at runtime. The compiler for ESP is slow and the binaries are quite large. Makes far more sense to beam over a couple kb of json than a few MB image.

I found the documentation to be absolutely terrible. Took me multiple hours to figure out how to use the LEDC peripheral with RGBW LEDs.

I also wanted to include an IR remote transceiver, the ESP has hardware for this. There seemed to be no IR receive software available, and the IR transmit module gave you a single button. Just one. I was expecting a keypad at the very least.

Also the whole process of finding a module for the functionality you want is a little ridiculous. You just scroll through this endless list of poorly categorized modules with ambiguous names and irrelevant icons. Then once you find what you want, you have to find the documentation for its json somewhere else entirely.

Honestly I would enjoy this project a lot more if it were simply a light framework that you plug into your own firmware. Handle the web stuff and HA API calls for me and just expose some events so I can handle user input myself. Instead I have this gigantic binary blob. I'm sure I could go find the firmware it's generating and customize it myself, but it seemed like a lot of effort so I gave up.

It's a neat project if all you want to do is plug some stuff together and never, ever think about anything. That's not how I like to work, there's far, far too much hidden from me.


Anyone got this to replace their thermostat? Like sensors in zoneA signal and a device connected to the HVAC triggers ON? Maybe they're on WiFi or Ethernet connection?


I have one over complicated in floor heater that requires 2 signals to control, one for opening radiator valve and second to enable fan to blow air through it. there is only few thermostats dedicated for such setup that are extremely expensive and I decided to make my own that is also better. i have 2 temperature sensors connected, one to monitor room temperature and the second touching radiator inside, then I'm able to open valve when room temperature is below threshold and wait until radiator is hot enough and we are trying to heat for few minutes (without fan this will also work but less efficiently, but will be silent) then when temperature is reached I close valve and keep fans on until radiator cools down.

I also have temperature reported to home assistant where I have pyscript automation that controls AC based on multiple temperature sensors, open window sensors, humidity, presence, time, etc to most efficiently cool down my apartment

if you need to get signal on a wire, you can output it from the same device, from other esphome device or through home assistant using integration.


That's what I do at home. I have little Xiaomi LYWSD002MMC and LYWSD003MMC devices (the latter with custom firmware - pvvx) and my radiators are switched on or off (via their pilot wire) by an ESP device, using a few rules to lower the temperature when nobody's there. It works much better than the radiator's own thermostat.

I control my devices (I have a lot more than just for the radiators) through a kind of interface that I wrote myself (PHP and only very few, reliable dependencies) because I hate maintaining Home Assistant.


I have 7 Mitsubishi heat pump head units being controlled using ESPHome running on D1 mini clones (ESP8266). The D1 mini clones are powered by and interface with the head units with Mitsubishi's CN105, which is just 5 volt UART.

The total cost was maybe $30 of parts on AliExpress.

I use 433Mhz Acurite temperature sensors with a software defined radio (rtl433) running on my Home Assistant box to have remote temperature sensing. The 433MHz sensors are cheap, have good range, and have excellent battery life.


Are you doing temperature control by yourself or are you feeding them to the Mitsubishi units as a remote temperature reference?

I know the Mitsubishi "wired controllers" (basically the official thermostats) can provide remote temp to the unit and the unit has DIP switches to select between thermostat-reported temp and internal return air sensor temp.

I'm not sure if CN105 has a way to provide this temp ref - if so, you could try it. Just make sure to set your wired controller (if any) as a "secondary" controller (otherwise it will also send its temp every second and overwrite the one you sent) and then set the proper DIP switch.


Actually I did exactly that :) I use ESPHome to control a gas boiler which heats my home. It's not without problems and required a lot of tinkering, but after the initial phase it required very little maintenance throughout the winter. This year I plan on adding an ability to control AC. https://news.ycombinator.com/item?id=40017176


If your HVAC supports OpenTherm, check out https://github.com/Alexwijn/SAT

You can have your thermostat in home assistant and make your HVAC run as efficiently as possible at the same time.

See https://news.ycombinator.com/item?id=40052824


I use this one and it works great: https://github.com/kbx81/ClimateSprinklerController


Does it support some sort of mesh networking?


I'm baffled at how shallow some trigger happy downvoters can be. This was a legit question; I live in a reinforced concrete house surrounded by H shaped girders all around and using a star type topology with all external sensors talking to a AP would require placing one of them on each side of the house, plus the three I already have on the inside, because doing otherwise WiFi communications would be next to impossible.


I'm jist getting started with home automation and have a couple of ESP32 running tasmota. How do they compare? Thr site explains how I can migrate bit not why or under which circumstances I should...


Tasmota is firmware you can configure on-device[0] while ESPHome is a YAML-driven construction kit for compiling firmware specific to a device's configuration. Every change to the YAML is a compile-and-flash cycle.

Tasmota is only for Espressif platforms. ESPHome has expanded to support BK72xx, RTL87xx, and the Pico W, but good luck figuring out what's actually implemented on those platforms.

ESPHome supports more sensors/peripherals. Some ESPHome Components[1] simplify the combination of multiple sensors and peripherals to accomplish a task to basic YAML (check out the different Cover components).

Tasmota on ESP32 has an embedded scripting engine with REPL (Berry). ESPHome is... complicated[2]. Triggers, Actions, and Conditions can accomplish very simple automations in pure YAML. For more complicated tasks, you'll be writing C/C++ code.

ESPHome releases frequently. If you're using it with Home Assistant, it will constantly nag you to update ESPHome and all of your ESPHome devices. Tasmota releases every few months. Tasmota suggests not upgrading a device unless you have a particular need[3].

[0] Pre-compiled Tasmota binaries work for most purposes, but there are situations where you might need to compile your own to support less common features or devices.

[1] https://esphome.io/components/

[2] https://esphome.io/guides/automations

[3] https://tasmota.github.io/docs/Upgrading/


thank you!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: