[HN Gopher] ESPHome - Connect ESP32 with Sensors to HomeAssistant
       ___________________________________________________________________
        
       ESPHome - Connect ESP32 with Sensors to HomeAssistant
        
       Author : punnerud
       Score  : 136 points
       Date   : 2022-05-26 16:20 UTC (6 hours ago)
        
 (HTM) web link (esphome.io)
 (TXT) w3m dump (esphome.io)
        
       | eptcyka wrote:
       | Ever since HomeAssistant developers threw a hissy fit about NixOS
       | (and anyone else) repackaging their software, even if their
       | license allows for that, I can no longer support this project.
       | Which is a shame, since it is very turnkey.
        
         | [deleted]
        
         | windlep wrote:
         | Disclaimer: I've done some development on Home-Assistant
         | (HASS), and work on the Nabu-Casa cloud service for Home-
         | Assistant. I was contacted by a NixOS core contributor to see
         | if there was a better solution for HASS in NixOS.
         | 
         | This is a bit misleading, a single HASS developer requested
         | their packages not get repackaged because they didn't want the
         | support burden of users who think the software is broken when
         | its actually due to packaging.
         | 
         | Originally on HN here:
         | https://news.ycombinator.com/item?id=27505277
         | 
         | Both the GitHub issues have since been closed and settled.
         | 
         | It's useful and important to note that Home-Assistant's turnkey
         | ease-of-use is partly because its acting as a package manager
         | of sorts. When integrations and components are added by the
         | user, their package requirements are downloaded immediately
         | from the Internet and installed. This is quite contrary to the
         | intended operation of NixOS and its immutable and reproducible
         | package installation concept.
         | 
         | This is where the concerns of Frank came in, as a user of HASS
         | on NixOS will likely have a sub-par experience and the
         | documentation on the Internet for HASS will not work correctly
         | for them in many cases. On the other-hand, I'm sure a decent
         | amount NixOS users are probably aware of this (as I was when I
         | was using NixOS daily).
         | 
         | My suggestion (and supported by the HASS founder) was that
         | NixOS repackage HASS and call it something else, like how the
         | code behind Firefox is repackaged without the Firefox name.
         | This way at least NixOS users of it will get more appropriate
         | Google results when searching for an issue related to their
         | install, and are unlikely to burden HASS developers with
         | support issues that are likely related to the install approach
         | and not a HASS issue.
         | 
         | This was back in July of 2021, and I haven't followed up on it
         | since, so I don't know if NixOS is doing this yet, or what the
         | current state is there. But if you're running NixOS and want
         | that turnkey experience, you're not going to get it.
         | 
         | If you want a full turnkey setup I'd highly suggest using HASS
         | OS, whether on a small dedicated device, or in a KVM
         | (https://www.home-assistant.io/installation/).
        
         | phoronixrly wrote:
         | Interesting, please provide link if you have one handy
        
       | gedy wrote:
       | This is a really handy project for low code ESP32 & ESP8266 use
       | in Home Assistant. I recently made a 8 switch irrigation system
       | with < $20 in parts and just a few lines of yaml.
        
         | baldeagle wrote:
         | I second this. I've been toying with irrigation for a while,
         | but valves have always been the issue
        
         | moffkalast wrote:
         | > recently
         | 
         | > $20 in parts
         | 
         | With how much ESPs go for right now I kinda doubt that, what's
         | the whole BOM?
        
           | gedy wrote:
           | Bear in mind I already had irrigation system with 24v valves
           | in place. The <$20 is the adding the ESP32 , 8 switch relay
           | rail, plus the plexiglass, standoffs, and USB charger.
        
           | cptskippy wrote:
           | > With how much ESPs go for right now I kinda doubt that
           | 
           | D1 Minis are like $1.50 and ESP01s are $0.95.
        
         | heffer wrote:
         | Now that's a blog post I'd read.
        
           | gedy wrote:
           | I actually referenced tamu_nerd's link below, but my approach
           | was simpler as I used an ESP32 (more pins, so no shift
           | register needed), and I powered the ESP32 with its own USB
           | charger (so no AC to DC converter needed). I can add
           | something to GitHub and will reply here)
        
           | tamu_nerd wrote:
           | It's actually pretty straightforward: just wire in the relays
           | (shift register required for ESP8266) then turn them on and
           | off as desired. With your valves exposed via wifi to Home
           | Assistant or MQTT the world is your oyster as far as using
           | inputs (weather, rain, etc) to bring intelligence into your
           | irrigation scheduling. I loosely followed this guide when I
           | built mine: https://selfhostedhome.com/diy-wifi-sprinkler-
           | controller-usi...
        
             | cptskippy wrote:
             | > shift register required for ESP8266
             | 
             | Why? A D1 Mini has 8 Digital I/O ports that could drive a
             | 3.3.v relay module.
        
         | tekstar wrote:
         | Can you explain this more? I've been getting into home
         | automation and my wife would like programmable irrigation for
         | when we're not at home. Did you interface with existing wifi
         | valves or are you doing the circuit yourself?
         | 
         | I recently got rtlsdr to read my water meter so I can detect
         | leaks, which is pretty cool
        
           | godsfshrmn wrote:
           | 12v valves off Amazon. Don't get the cheap plastic ones. Get
           | the brass versions
           | 
           | as long as you don't run several at once, can power from old
           | wall wart with a few amps rating. I'm using a meanwell PSU so
           | I can power a few other things - IR lights mostly
        
           | michaelmior wrote:
           | With existing WiFi valves, there would likely be no need for
           | ESPHome.
        
       | cheeko1234 wrote:
       | Wow, Esphome on the front page. This project is what makes me
       | feel like ironman.
       | 
       | The most used esphome is the one I have installed with a relay to
       | my garage opener. I'm able to automatically conjure siri using
       | 'hey siri' on my airpods and tell her to open my garage, while
       | being on my motorcycle. The response time of my garage opening
       | from having finished my sentence to siri is less than half a
       | second! I drive right in, and I have a timer set on home
       | assistant to hit the relay again after a minute so the garage
       | closes automatically. Also have 5 esphomes with
       | motion/temperature sensors.
       | 
       | All my automations are programmed using node-red. Everything is
       | run using docker-compose.
       | 
       | Keep in mind, my home assistant or esphome is NOT open to the
       | internet, and only controllable by apple devices from outside the
       | network.
        
         | toxik wrote:
         | > Keep in mind, my home assistant or esphome is NOT open to the
         | internet, and only controllable by apple devices from outside
         | the network.
         | 
         | Sounds like they're network connected to me!
        
           | avianlyric wrote:
           | Attached to HomeKit, so the devices outside of the network
           | need to use iCloud and HomeHub (Apple TV, HomePod etc) to
           | bridge into the network.
           | 
           | In short your phone kindly asks an Apple TV (within your
           | local network) to execute a device command on its behalf, via
           | iCloud.
           | 
           | If you trust Apple to get their device-to-device auth and
           | crypto right (which is the same stuff that power iCloud
           | Keychain), then you can trust HomeKit to not expose your home
           | devices to randos on the internet.
        
             | Vladimof wrote:
             | > If you trust Apple to get their device-to-device auth and
             | crypto right (which is the same stuff that power iCloud
             | Keychain), then you can trust HomeKit to not expose your
             | home devices to randos on the internet.
             | 
             | I would rather host a Wireguard VPN server on my local
             | network...
        
         | LoveMortuus wrote:
         | I think I might be missing something, because how does 'not
         | open to the internet' and 'controllable only from outside of
         | the network' not contradict itself?
        
           | thedanbob wrote:
           | I believe he means the Home Assistant instance is not exposed
           | to the internet, but it's bridged to Homekit which is
           | available outside his home network. I have the opposite
           | setup: my Home Assistant instance is available off network,
           | but I don't have a Homepod or newer Apple TV so I can only
           | use Siri to control it at home.
        
       | e28eta wrote:
       | In addition to enjoying esphome for the ease of use and solid
       | integration with Home Assistant, I find the technical
       | underpinnings interesting.
       | 
       | - Users produce yaml describing a microcontroller connected to
       | (sensors, inputs, outputs, networks, services, etc).
       | 
       | - A python layer type checks that yaml, and spits out
       | autogenerated C++ code (which can be inspected if desired)
       | 
       | - C++ is compiled and installed onto the hardware
       | 
       | - future updates can be made OTA
       | 
       | - extensible by either writing (hopefully small amounts of) C++
       | inside yaml (lambdas), or including/referencing C++ code
       | (external components)
       | 
       | I'm still not positive I like yaml for the DSL, but that might be
       | a personal bias and I'm not sure what an obviously better
       | solution would be.
        
         | rexfuzzle wrote:
         | I find the yaml works fine for the basics, but the real power
         | comes with being able to include your own c code and use that
         | along with whatever is in the yaml. Basically means you can
         | have normal arduino code that is the tied into hass very
         | easily.
        
         | cptskippy wrote:
         | > I'm still not positive I like yaml for the DSL, but that
         | might be a personal bias and I'm not sure what an obviously
         | better solution would be.
         | 
         | The yaml files in ESPHome aren't any different than yaml for
         | Git Pipelines, Docker, or K8.
         | 
         | The don't contain much if any logic.
         | 
         | Here's my garage door based on a Malouf ESP Dev board
         | (https://maloufelectronics.com/):                   esphome:
         | name: garagedoor              esp8266:           board:
         | esp01_1m              # Enable logging         logger:
         | # Enable Home Assistant API         api:              ota:
         | password: !secret garagedoor_ota_password              wifi:
         | ssid: !secret wifi_ssid           password: !secret
         | wifi_password                # Enable fallback hotspot (captive
         | portal) in case wifi connection fails           ap:
         | ssid: "Garage Fallback Hotspot"             password: !secret
         | garagedoor_hotspot_password              # Enable Captive
         | Portal         captive_portal:              # Define Hall
         | Effect Sensor         binary_sensor:           platform: gpio
         | pin:              number: GPIO16             inverted: true
         | name: "Garage Door Sensor"           device_class: garage_door
         | # Define Relay         switch:           - platform: gpio
         | name: "Garage Door Relay"             id: garage_door_relay
         | pin: GPIO14             restore_mode: ALWAYS_OFF
         | on_turn_on:             - delay: 1000ms             -
         | switch.turn_off: garage_door_relay
        
         | gerdesj wrote:
         | "I'm still not positive I like yaml for the DSL"
         | 
         | Back in the day HA was all about YAML. It's still there but
         | mostly hidden behind the GUI but /config/configuration.yaml
         | still does a lot of work.
         | 
         | ESPHome is simply amazing. I've got several ESP80266s with
         | various lash ups all just working. For example, when my work
         | computer room generator fires up a GPIO on a ESP8266 gets
         | twitched from the power distribution board, another pin gives
         | me mains power state from the perspective of the board. A few
         | dozen lines of YAML - mostly copy n paste and I have a really
         | decent sensor for less than PS10 parts.
         | 
         | We test the system every few weeks by turning a key. The UPSs
         | beep for a few seconds, and the genny fires up. After a while
         | you turn the key back, the UPSs beep again and then the mains
         | takes the load back. Meanwhile your phone goes off several
         | times with notifications (SMS, Teams etc)
         | 
         | I particularly enjoy watching customer's expressions when I'm
         | showing them around and I do a test there and then.
         | 
         | I'm just doing a link to our rather ancient building alarm to
         | get notifications. This will be a ESP01-S thing to get it
         | really small. I was quoted many PS1000s for a "modern system"
         | with an app etc. The existing sensors are fine and the alarm
         | itself works fine. It now has a length of CAT5e connected to
         | some of its terminals for an external sounder. It delivers 12V,
         | earth and a 12V signal. I just have to turn the 12V into 3.3V
         | via some Zeners and stabilize it with a capacitor to power the
         | ESP and the signal down to 3.3V via some resistors. I think!
        
         | pathartl wrote:
         | I agree with the last point, so I usually end up delegating any
         | sort of logic handling to my automations. ESPHome will just
         | report the state of sensors, my code figures out what to do
         | with them.
        
           | darknavi wrote:
           | I _really_ like that you can do light automations easily with
           | ESPHome as well. For my cat feeder, it has some cron-like
           | scheduling to go off ever so often and I do not want my cats
           | to starve if my Home Assistant VM is down.
        
           | michaelmior wrote:
           | That's understandable although of course doing things in YAML
           | in ESPHome has the advantage that it will continue to work if
           | HA is unavailable for some reason.
        
           | godsfshrmn wrote:
        
         | kelvie wrote:
         | Fairly heavy user of ESPhome here (I have about 15 or so
         | devices automating several parts of my home).
         | 
         | What would be a better option than YAML? The main advantages
         | are ease of in-lining C++, and it's ubiquitous.
         | 
         | Having to use k8s at work also makes it not much of a context
         | switch to use for me, and the secrets management is great using
         | the `!include`s.
         | 
         | But yeah the killer feature here is the inlining of C++, and
         | the use of platformio. You really can do _anything_ without
         | much work (maybe at most one or two external C++ header files
         | for really custom stuff) inside ESPhome, and it 's easy to see
         | where your snippets go when you inspect the generated C++ code.
         | 
         | ESPHome just automates all the _super_ tedious parts of working
         | with esp32s (stuff like connecting to wifi, MQTT, OTA upgrades,
         | logging to mqtt, etc), without sacrificing any power.
         | 
         | My only complaint is that because it uses arduino (I think?)
         | you can't really do powersaving really well, but I don't think
         | many people use battery powered esp32, but this basically
         | eliminates that possibility, at least in my research.
        
           | Beta-7 wrote:
           | >What would be a better option than YAML?
           | 
           | It isn't a 1:1 alternative, but I've always thought that
           | ESPhome would be much more accessible for the non-devs if
           | they introduced a GUI similar to Home Assistant's automation
           | GUI.
        
           | thedanbob wrote:
           | > ESPHome just automates all the super tedious parts of
           | working with esp32s (stuff like connecting to wifi, MQTT, OTA
           | upgrades, logging to mqtt, etc), without sacrificing any
           | power.
           | 
           | I write my own firmware for all of my ESP devices and I can
           | confirm, those definitely are the bulk of the work. The
           | latest one (for a relay to power cycle my modem if the
           | internet goes down) took less than an hour to write since I
           | was able to copy-paste all of that boilerplate from a
           | previous project.
        
             | cptskippy wrote:
             | > I write my own firmware for all of my ESP devices and I
             | can confirm, those definitely are the bulk of the work.
             | 
             | I was doing that too for all of my projects. I was
             | developing them as if they were products I could
             | potentially sell. When I accepted that I wasn't ever going
             | to do that, I gave ESPHome a try.
             | 
             | > took less than an hour to write since I was able to copy-
             | paste all of that boilerplate from a previous project.
             | 
             | It would probably take 5 minutes to configure from scratch
             | ESPHome, less time if you're copying from an existing
             | config. In addition to that, you get automatic logging into
             | Home Assistant and deep integration for free.
             | 
             | Using Hypfer's discovery[1] that you could read the raw
             | values from Ikea's Vindriktning using an ESP, I wrote an
             | ESPHome script for an ESP01 that pipes the data into Home
             | Assistant. Now when I'm cooking and the air quality gets
             | too bad my HVAC fan kicks on to clear the air. It took
             | longer to solder everything up than it did to "code".
             | 
             | YAML:                   esphome:           name: air-
             | quality-sensor-1              esp8266:           board:
             | esp01_1m              # Enable logging         logger:
             | # Disable logging           baud_rate: 0              #
             | Enable Home Assistant API         api:              ota:
             | password: !secret aqs_ota_password              wifi:
             | ssid: !secret wifi_ssid           password: !secret
             | wifi_password                # Enable fallback hotspot
             | (captive portal) in case wifi connection fails
             | ap:             ssid: "Air-Quality-Sensor-1"
             | password: !secret aqs_hotspot_password
             | captive_portal:              # Setup Ikea Vindriktning
             | PM2.5 sensor         uart:           rx_pin: GPIO3
             | baud_rate: 9600              sensor:           - platform:
             | pm1006             pm_2_5:               name: "Ikea
             | Vindriktning PM25"               filters:                 -
             | sliding_window_moving_average:
             | window_size: 10                     send_every: 10
             | 
             | [1] https://github.com/Hypfer/esp8266-vindriktning-
             | particle-sens...
        
               | thedanbob wrote:
               | That's pretty cool! If I had know about ESPHome when I
               | first got into home automation I'd probably have gone
               | with it. Although I'm kind of glad I didn't because I
               | actually really enjoy programming in C++.
        
       | pathartl wrote:
       | I love ESPHome. Here's some of the stuff I've been able to
       | accomplish:
       | 
       | - Expose IR commands for turning our bedroom fan on/off along
       | with some battery-powered candles
       | 
       | - Flashed it to a Sonoff S31 to detect if our electric fireplace
       | is on/off based on power usage.
       | 
       | - Secondary ESP32 that controls said fireplace with IR commands
       | and has an attached dfplayer MP3 module to play a loop of
       | fireplace sounds
       | 
       | - Wired up some photoresistors to an ESP32 that are spaced to
       | match the status lights on our washing machine. The same ESP32
       | has an accelerometer attached to our dryer that changes its state
       | depending on vibrations of the dryer.
       | 
       | - There's an ESP32 in our garage that has two VL53L0X time-of-
       | flight range sensors to detect whether the garbage or recycling
       | bin is out. In my automations I check if it's garbage or
       | recycling day and send a notification if the bins haven't been
       | taken out.
       | 
       | All of my automations are written in C#/.NET using NetDaemon.
        
         | cptskippy wrote:
         | It amuses me that I feel using an ESP32 is overkill when the
         | ESP8266 is an option.
        
       | tekmaven wrote:
       | https://www.esphome-devices.com/
       | 
       | There is a lot of great retail hardware with ESP chips out in the
       | market. The above site is a collection of ESPHome configurations
       | for a lot of that hardware.
        
       | tylermenezes wrote:
       | I've been using ESPHome for 2 years now and once you get it set
       | up, it's definitely the most "just works" product in IoT.
        
       ___________________________________________________________________
       (page generated 2022-05-26 23:00 UTC)