Home Assistant-reviirin laajentamista mikrokontrollereilla

Kun on päässyt hieman jo sinuiksi Home Assistant -kotiautomaatiojärjestelmän kanssa, niin on aika laajentaa reviiriä. Markkinalta ostettavien aivan valmiiden tuotteiden sijaan voi harjoitella tiedonkeruuta liittämällä erilaisten mikrokontrollerien kautta antureita tai toimilaitteita osaksi kokonaisuutta. Ensimmäisen harjoitukseni tavoitteena oli kerätä ESP32-luteen avulla anturidataa RuuviTageista.

ESP32 on Wikipedian mukaan sarja erilaisia, edullisia mikrokontrollereita, joihin on integroituna sekä Wi-FI että Bluetooth. Juuri tämä yhdistelmä (sekä tuhatjalkaisen kintuissa sijaitsevat erilaiset interfacet, joihin varmaankin tutustun myöhemmin…) tekee tästä käyttökelpoisen rakennuspalikan todella moneen ideaan!

Olin puhtaasta uteliaisuudesta hankkinut jo aikaisemmin jokusen RuuviTagin ja vilkuillut ulkomaailman ja saunan lämpötiloja Ruuvi Station mobiilisovelluksen avulla. Mieli kuitenkin askaroi siinä, miten RuuviTagien datat voisi saada Home Assistantin näyttöön ja käyttöön.

Koska Raspberry Pi 4 -laitteessa on Bluetooth, tapoja kerätä tietoa BLE-teknologiaa käyttävistä RuuviTageista on luonnollisesti useita. Minua kiinnosti kuitenkin tutustua ESPHome-lisäosaan tämän käyttötapauksen kautta. Lisättyäni ESPHomen Home Assistantin Supervisor -> Lisäosakaupasta ja aikani googlailtuani havaitsin parhaimmiksi käytännön oppaiksi seuraavat:

  • LED Gardener -nimisen käyttäjän YouTube-videon ”Automate Your Grow with Home Assistant #5: Wireless Temp & Humidity w/ BME280 Boards & Ruuvi Tags”. Voit rauhassa aloittaa katselun noin 14 minuutin kohdalta.
  • ESPHome-sivuston artikkelin ”Ruuvitag Open Source BLE Sensor”.

Ensimmäisessä kerrotaan hyvin ymmärrettävästi missä järjestyksessä tehtävät kannattaa suorittaa ja jälkimmäisestä löytyy copy-pastettavaksi valmista koodia askarrellessa syntyvään ESP-noden yaml-tiedostoon.

Muutama kantapään kautta opittu käytännön vinkki matkan varrelle:

  • ESP32-lude saattaa olla vaativa sen suhteen millaista USB-kaapelia käytät. Itselläni toimi parhaiten laatikon pohjalta löytynyt Nokia-merkkinen, riittävän pitkä ja robustin tuntuinen johto.
  • Safarin tämänhetkisellä versiolla ei (syystä tai toisesta) ESP-noden luominen käyttöliittymältä onnistu – Submit-painike ei vain tee mitään. Chromeen vaihtamalla homma eteni taas.
  • Jos tarkoituksesi on saada ESP32 liittymään piilotettuun Wi-Fi-verkkoon, lisää kyseisen ESP-noden yaml-tiedostoon wifi-määrityksiin ”fast_connect: true”. Ks. esimerkki alla.
  • ESP-noden konfiguraatiossa on tarpeen kertoa salasanoja mm. Wi-Fi verkkoon. Pystyt viittaamaan Home Assistantin secrets.yaml -tiedostossa oleviin salaisuuksiin luomalla esphome-hakemistoon secrets.yaml -tiedoston ja kirjoittamalla sinne vain rivin ”<<: !include ../secrets.yaml”.
  • Joidenkin ESP32-luteiden kanssa pitää sille käännetyn ohjelman uploadauksen alkaessa pitää hetki ESP32-virtaliittimen oikealla puolella olevaa Boot-painiketta alhaalla – muutoin ohjelma ei luteelle siirry.

Ensimmäisen RuuviTagin liittämisen jälkeen kyseisen ESP-noden yaml-tiedostoni näyttää tältä:

esphome:
  name: ruuvi-esp32
  platform: ESP32
  board: esp-wrover-kit

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret esp32_ota_password

ota:
  password: !secret esp32_ota_password

esp32_ble_tracker:

sensor:
- platform: ruuvitag
  mac_address: D2:92:C4:23:05:D9
  temperature:
    name: "Ulko-ruuvi lämpötila"
  battery_voltage:
    name: "Ulko-ruuvi paristo"
  tx_power:
    name: "Ulko-ruuvi TX"

Nyt kun varpaat on saatu kasteltua ESP-lätäkköön on jo uusia projekteja mielessä. Niistä varmasti myöhemmin lisää. Happy hacking!

Vastaa

Täytä tietosi alle tai klikkaa kuvaketta kirjautuaksesi sisään:

WordPress.com-logo

Olet kommentoimassa WordPress.com -tilin nimissä. Log Out /  Muuta )

Twitter-kuva

Olet kommentoimassa Twitter -tilin nimissä. Log Out /  Muuta )

Facebook-kuva

Olet kommentoimassa Facebook -tilin nimissä. Log Out /  Muuta )

Muodostetaan yhteyttä palveluun %s