Collection of ESPHome-based ESP8266 and ESP32 devices managed by Home Assistant
- finish documentation
- update the HA Dashboard screencapture
- select better pictures to be used as example devices
- finish adding files to sensors/*
- files to be added
- add cad files for enclosures to 'cad/'
- add images for devices to 'assets/'
- add spec sheets and pinouts for components to 'docs/'
- sensors
- AirQualityPMS
- AirQualitySPS
- HomeEnvironment
- KittyCam
- KittyCamV2
- LedSign
- Radiation
- Temperature
- TemperatureDisplay
- WaterHeater
- WaterHeaterLeak
- controllers
- FeederDoor
- voice assistants
- ReSpeakerV2
- ReSpeakerXVF3800
- VoiceAssistantPE
- WaveshareVoice
- files to be added
The SensorNet devices are grouped into three major types -- Sensors, Controllers, and Voice Assistants -- each of which are described below.
For each SensorNet device there is an ESPHome yaml file that contains the configuration information for that device. ESPHome provides an, essentially, zero-code environment where all that is required is to declare the type of controller and peripherals that are used and the connections between them, and the device can then be managed by Home Assistant. Home Assistant provides compilation, dependency-management, download, and logging services for the devices, stores data generated by the devices in a database, provides support for visualization of the data, interaction with the devices, and automations using the devices.
YAML configuration declarations that are common across multiple instances of a type of device are stored in a subdirectory called 'packages/' and included into YAML config files that contain the instance-specific information.
A 'secrets.yaml' must also be provided to Home Assistant. This file contains information such as encryption keys and WiFi credentials that should be protected and kept locally.
Example sensors are the (alpha, beta, and gamma) radiation detectors and the (PMS and SPS) air quality detectors shown here: 
Here is an example of the Home Assistant dashboard used to monitor the status of the sensors:

Links to ESPHome and Home Assistant:
- https://esphome.io
- https://github.com/esphome/esphome
- https://www.home-assistant.io
- https://github.com/home-assistant
As a general rule, I have each device emit its RSSI to help ensure good WiFi connections between the devices and the Home Assistant server. The signal strength of the devices is reported in dBm. As a reference, here is a rough way to interpret these measurements:
- -30 dBm: amazing
- max value, not necessary
- -67 dBm: very good
- min required for reliable streaming
- -70 dBm: okay
- min for reliable packet delivery
- -80 dBm: not good
- barely usable, not reliable
- -90 dBM: unusable
- near the noise floor, not usable
Most SensorNet devices use the ESP8266 boards' microUSB (or the ESP32 boards') connectors to power the entire device (and to do the initial ESPHome firmware load).
These devices, their enclosures, and functionality have evolved over time; e.g., I used ESP8266 controllers, micro-USB power, and the cases were held together with screws, more recently I use ESP32 controllers, USB-C for power, and the cases snap together.
In general, I'm focusing on the US Air Quality Index (AQI) values. AQI values run from 0-500 and are grouped into six (color-coded) health categories.
| AQ Range | Color | Label | Interpretation |
|---|---|---|---|
| 0-50 | Green | Good | Air is clean |
| 51-100 | Yellow | Moderate | Acceptable overall |
| 101-150 | Orange | Unhealthy for Sensitive Groups | Kids, elderly, those with heart/lung disease should limit exertion |
| 151-200 | Red | Unhealthy | Everyone may start to feel effects |
| 201-300 | Purple | Very Unhealthy | Health alert: higher risk for everyone |
| 301-500 | Maroon | Hazardous | Emergency conditions: everyone at risk |
This sensor device uses the Plantower PMS7003 (aka PMS) to detect amount and size of particulate matter in the air. The PMS sensors have been shown to provide long-term accurate results, have low power consumption, and are self-cleaning. I have multiple instances of the same type of device and so they all share a common base config file.
Related Links:
- https://github.com/espressif/
- https://escapequotes.net/esp8266-wemos-d1-min-pins-and-diagram/
- https://wiki.seeedstudio.com/Connect-Grove-to-Home-Assistant-ESPHome/
This device uses a different type of sensor, the Sensirion SPS30 (SPS) to measure airborne particulate matter of different sizes.
Related Links:
- https://cdn.sparkfun.com/assets/2/d/2/a/6/Sensirion_SPS30_Particulate_Matter_Sensor_v0.9_D1__1_.pdf
- https://github.com/Sensirion/arduino-sps
- https://github.com/paulvha/sps30
- https://www.14core.com/wiring-senserion-sps30-pm-optical-sensor-with-atmega4809-avr/
- https://tasmota.github.io/docs/SPS30/
TBD
TBD
TBD
TBD
Measure alpha, beta, gamma radiation.
TBD
Notes:
- ESP8266 Board
- rx: GPIO3
- tx: GPIO?
- sleep: GPIO?
- reset: GPI04
#define GK_RESET 2 // GPIO0 aka D4, active low
- GK Board
- Settings
- controlled by menus/LCD/buttons or IR remote control
- saved in on-board persistent memory
- I/O Connector
- 1: GND (N.C.)
- 2: GND
- 3: UC_PWR (+5V)
- 4: TXD
- 5: RXD
- 6: RST
- Logging
- output rate defined by "Log Period Menu" setting
- serial port: 9600 8N1
- example output:
- "36,0.2052,4.79/" -- i.e, (36 CPM, 0.2052 dose, 4.79V)
- display options
- DogM LCD uses SPI interface
- can use 2x8 (aot 2x16) LCD instead
- battery power
- Pololu 2119: LiPo boost to 5VDC
- 9V battery: ~16hrs of use
- ~35mA current draw steady state (~24mA w/o display)
- runs ~22 hrs on 1200mAh LiPo
- Settings
- Radiation Sensors
- CBT11(A)
- alpha, beta, and gamma
- mica window
- 'A' means thinner mica window, so more sensitive
- starting voltage: 260-320V, operating voltage: 390V
- 44-49 cps/uR/sec
- 318 CPM/uSv/hr
- CBT11(A)
- Annual human exposure
- natural US: 3.10 mSv/year -- mostly inhalation of air (indoor radon accumulation)
- artificial US: 3.14 mSv/year -- mostly medical (CT scans and nuclear medicine)
- total: 6.24 mSv/year
- ROW: half this amount
- mRem: milliroentgens
- REM = 0.1 Sievert
- 1 uSv = 0.1 mRem
Related Links:
- https://github.com/impexeris/DiY-Arduino-Geiger-Counter-SMD/tree/master/Circuit%20Schematics
- https://arduino-geiger-pcb.blogspot.com/
- https://github.com/impexeris/Arduino-Geiger-PCB/wiki
- https://sites.google.com/site/diygeigercounter/home/software-features
TBD
TBD
Measure temperature at the outlet of water heater and ambient temperature.
TBD
pins (starting from side with usb connector): 1: +5V 2: D4/GPIO2 2.2KOhm pullup 3: GND
TBD
TBD
TBD
TBD
TBD
TBD






