For various wireless devices around the house, I use ESPHome (see Home Assistant integration).
I have used 3 different boards until now. These are:
- ESP8266 NodeMCU v3 - The first batch of 8266 NodeMCUs I purchased. The corners are a bit more rounded and the micro USB connection sticks out from the board.
- Geekcreit ESP8266 NodeMCU CH340G v3 - The second batch of 8266 NodeMCUs I purchased. The corners are not rounded and the USB connection is sunk a bit deeper into the board (see the CO2 sensor).
- ESP32 devkit V1 - I purchased two of these boards as a try-out. These support ble tracking.
The current devices I use are as follows:
Node name | Type | Board | Components | Notes |
---|---|---|---|---|
ambilightleft | Light | ESP8266 NodeMCU batch 1 | WS2812 LED ring | |
ambilightright | Light | ESP8266 NodeMCU batch 1 | WS2812 LED ring | |
falconlights | Light | ESP8266 NodeMCU batch 1 | APA102 LED strip | |
stardestroyerlights | Light | ESP8266 NodeMCU batch 1 | 2x WS2801 LED strip | |
bed_scale | Sensor | ESP8266 NodeMCU batch 1 | hx711 + 4x load cell | Used to measure bed weight to determine bed presence |
CO2_sensor | Sensor | ESP8266 NodeMCU batch 2 | MH-Z19b | Read info below before purchasing this specific sensor! Used to measure the CO2 concentration in the bedroom |
I use Hyperion to provide Ambilight for my TV. Hyperion forwards the data to the three LED strips connected to a Lego Millennium Falcon and a Lego Super Star Destroyer. The configs can be found under esphome.
- Component list with links for AtmoOrbs
- Component list with links for Falconlights
- Component list with links for SSDlights
- Document Hyperion configuration
- Document used protocol
- Link to scripts in ./areas/mediacenter.yaml
The AtmoOrbs are made up by a NodeMCU board connected to a LED ring with 35 integrated WS2812 LEDs built inside an Ikea Fado lamp. The lamp requires a bit of modification to fit the LED ring, and I have designed a holder to fix the ring and NodeMCU to the lamp base. The color data is sent from Hyperion to the NodeMCU via the UDP E1.31 protocol, and there is no noticable delay.
A collection of various DIY sensors.
Bad indoor air quality, including CO2 concentration, has a negative effect on human health. To monitor indoor air quality, I built this simple CO2 detector. I use the MH-Z19b as a basis for this sensor. The sensor measures CO2 concentration by measuring optical absorption of the air. Since CO2 absorbs certain frequencies of radiation, the absorption of light gives information on the current CO2 concentration in the air.
ESPHome has a built-in functionality to read out the MH_Z19 sensor through this component.
The ESPHome configuration file can be found under CO2_sensor.yaml
The sensor I received from Banggood is a so-called 'fake' sensor. It is much less stable than the original variant. This also explains the noisy sensor read-outs that I'm suffering from. More information can be found here. Please ensure that the item is a 'good' sensor before hitting the purchase button.
Board layout:
The 3d-printable enclosure I created can be found on thingiverse.
The data coming from the sensor are quite noisy and contain lots of 0-values. To counteract this, I have created a template sensor in ESPHome that ignores these values and uses a filter to take a 12-point average. This doesn't fully resolve the issues I have, but results in data that is more trustworthy, as you can see below. Regardless, I advise to not take this particular sensor, but to find a non-fake sensor.