Long story short, I’ve pimped out my apartment with a lot of Ikea Smart products, such that I can control (and automate) everything from Home Assistant. While I admittedly have a love-hate relationship with Home Assistant, it is generally speaking a pretty impressive software.

One thing I’ve been meaning to do for some time is to log the temperature in various rooms. Since I didn’t want to put a Raspberry Pi in every room, I opted for an ESP32 with a DH22 sensor. While I initially planned to write a simple web server or MQTT client to export the data, I was lucky to run across ESPHome, which does all of this out of the box. Moreover, it also integrates seamlessly with Home Assistant.

As someone who haven’t spent a ton of time with embedded hardware, it took me a little while to get this all working. Most of the time however was spent trying to get my JZK ESP-32S ESP32 to properly read the sensor. Due to very poor documentation for the board, I wasted a lot of time. However, after finding these schematics I was able to get it to work on D25.

For those who bought the JZK ESP-32S ESP32, here is the configuration that I ended up for in ESPHome:

esphome:
  name: office
  platform: ESP32
  board: esp32doit-devkit-v1

wifi:
  ssid: "not-my"
  password: "wifi-confi"

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Office Fallback Hotspot"
    password: "xxxx"

captive_portal:

# Enable logging
logger:

sensor:
  - platform: dht
    pin: 25
    model: DHT22
    temperature:
      name: "Office Temperature"
    humidity:
      name: "Office Humidity"
    update_interval: 60s

# Enable Home Assistant API
api:

ota:

Other pro-tip for people new to Home Assistant:

  • Don’t use a Raspberry Pi if you’re doing something beyond very basic. Instead use a virtual machine or similar.
  • Switch to using MySQL instead of the default Sqlite3 database as the backend as it will significantly improve performance.
  • Bonus: Adopt InfluxDB, which you can then consume from Grafana for better visualization.

Update 1: Air quality monitor

Since starting working this, I’ve modified the board to also include an air quality sensor (CJMCU-811). I’ve also gone ahead and published the schematics.

The next step is to solder this together on a smaller breadboard to reduce the footprint.

Update 2: Transferred to a proper board

Today I finally received my breadboard and transferred the components. Looking pretty sleek.