== Home Assistant, ESPHome, BMP280 - temperature and pressure monitoring. == == List:== * raspberry PI 3 or newer [[https://en.wikipedia.org/wiki/Raspberry_Pi|raspberry pi]] - cost about €43.09 * ESP32 [[https://en.wikipedia.org/wiki/ESP32|esp32]] - cost about €3.5 * microSD card - cost about €10 * sensor BMP280 - temperature, pressure [[https://www.bosch-sensortec.com/products/environmental-sensors/pressure-sensors/bmp280/|bmp028]] - cost about €1.5 * wires to connect ESP32 with BMP280 * cable to power ESP32 micro usb * ethernet cable * wifi dongle * optional case for esp32 and sensor, I've made one - you can look here https://github.com/karcio/stls/blob/main/esp32_sensor_bottom_v1.scad Raspberry Pi 3 {{ :img_3050.jpg?direct&600 |}} ESP32 controller {{ :image0.jpeg?direct&600 |}} BMP280 sensor {{ :image1.jpeg?direct&600 |}} ESP32 custom case {{ :image_ob2.jpeg?direct&600 |}} == Prepare image HAOS: == * download HAOS for your rpi from https://github.com/home-assistant/operating-system/releases/tag/13.0 https://github.com/home-assistant/operating-system/releases/download/13.0/haos_rpi2-13.0.img.xz * unpack image unxz haos_rpi2-13.0.img.xz * insert sd card to your device and check how your machine recognize it - in mine case it is /dev/mmcbkl0 sudo fdisk -l * flash your sdcard sudo dd if=Downloads/haos_rpi2-13.0.img of=/dev/mmcblk0 status=progress bs=1M == First run HA == * insert sd card to RPI * connect Ethernet cable * insert WIFI dongle to usb port * connect power to RPI and wait while for HA to run * on your router check your rpi Ip address * in web browser insert rpi Ip address with port 8123, http://your_rpi_ip:8123 * first create account == Setup wifi connection on first run:== * go to Settings > System > select Network and then wifi tab * in ip4 select automatic * in WI-FI scan network to find your network and insert SSID and password. Save after that * reboot rpi to set up wifi == Install Add-ons:== * go to : Settings > Add-ons * click in add and install esphome and File editor * esphome allows you to use esp32 * file editor allows you to edit config files and check syntax == HA config structure == * configuration.yml * automation.yml * secrets.yml == Connect BMP280 to ESP32 == * BMP280 sensor has 6 pins but we use just 4: VCC, GRN, SCL, SDA * connet pins as following: * BMP280 VCC -> ESP32 3V * BMP280 GRN -> ESP32 GRN * BMP280 SCL -> ESP32 D22 * BMP280 SDA -> ESP32 D21 ESP32 and BMP280 final photos. {{ :image_ob1.jpeg?direct&600 |}} {{ :image_ob0.jpeg?direct&600 |}} {{ :image_ob3.jpeg?direct&600 |}} == Connect esp32 to rpi for first initial flash == * connect esp32 using usb cable to rpi do RPI * open ESPHome tab * click on add new device this is sample of config file: esphome: name: esp32-01 friendly_name: esp32-01 esp32: board: esp32dev framework: type: arduino # Enable logging logger: # Enable Home Assistant API api: encryption: key: "xxx" ota: - platform: esphome password: "xxx" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Esp32-01 Fallback Hotspot" password: "xxx" captive_portal: i2c: sda: 21 scl: 22 scan: True sensor: - platform: bmp280_i2c temperature: name: "bedroom temperature" oversampling: 16x pressure: name: "bedroom pressure" address: 0x76 update_interval: 60s This is how looks sample of automation config alias: "Temperature" description: low temperature level trigger: - platform: state entity_id: - sensor.temperature to: null for: hours: 0 minutes: 30 seconds: 0 condition: - condition: or conditions: - condition: numeric_state entity_id: sensor.temperature above: 25 - condition: numeric_state entity_id: sensor.temperature below: 5 - condition: numeric_state entity_id: sensor.temperature below: 0 action: - data: message: "Temperature is: {{ states('sensor.temperature')}} C" title: "Warning: temperature is {{ states('sensor.temperature')}} C" action: notify.email_notification mode: single Whole documentation is here: https://www.home-assistant.io/installation/raspberrypi