ESPHome
esphome.io
esphome.io
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-...
It allows you to turn a cheap microcontroller into a voice assistant, bluetooth proxy or media player directly from your browser.
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?
I hope ESPHome is working on Matter support cause protocol that can switch between Wifi, Bluetooth, and Thread is a big advantage.
They have software support for both wifi and bluetooth meshing as well.
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/....
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.
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)
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.
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.
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....
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...
I do have a question though, is there a way to use modbus-TCP with ESPhome?
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.
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.
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?
BACnet is one example, but other protocols can work too.
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
I'll try to find out the sleep settings though, thanks for the tip!
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.
https://smarthomescene.com/guides/how-to-bind-zigbee-devices...
If you are starting at zero there is a big learning curve, but if you're into it, it is a lot of fun.
Of course if you also wire a solar charger next to the battery… maybe it will never run out.
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.
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/
It all controls an aluminum "awning" in my house that's supposed to open above certain wind speed, close when it rains.
You must be running some very fancy chips!
For extra savings the ESP8266 might be as low as $4us. It really is amazing.
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.
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.)
1) Wifi.
2) Much more robust ecosystem, including esphome (the subject of this post).
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.
Aliexpress -> From $0.99 -> four-pack of ESP8266 for $3.19.
Even less when they have a sale.
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...
Featured yesterday on HN for being acquired by Espressif.
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...
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.
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.
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
Use a cheap x86 PC, install Proxmoxx, install Zigbee2MQTT, install HA.OS ... done!
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!)
They also have good soil moisture sensors that IIRC work via time domain reflectometry which is more accurate and lasts longer in the field.
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-...
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.
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.
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.
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...
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.
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!
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/
Apollo does a decent job making their stuff more innocuous. https://apolloautomation.com/products/sensor-stand?pr_prod_s...
It works only with JS enabled. And when I enable it, I'm pestered with pop-ups.
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 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.
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.)
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.
https://esphome.io/components/binary_sensor/esp32_touch.html
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.
* 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.
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):
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 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
To be clear, it is not hosted by the ESPHome devices themselves, it's a separate component.
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.
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.
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.
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))
)
)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.
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.
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 just wish there was a little more native hardware. I wonder if there's enough interest to do a run of PLC-like units?
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 couldn't find any devices that support it yet.
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.
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.
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 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.
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.
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.
You can have your thermostat in home assistant and make your HVAC run as efficiently as possible at the same time.
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/