IKEA Vindriktning ja ESP8266-haaste

Seuraavaksi Home Assistant -oheisprojektiksi valikoitui sisäilmanlaatua mittaavan IKEA Vindriktning -ilmanlaaduntunnistimen liittäminen datankeruuseen.

Vindriktning-laitteessa itsessään on näkyvä LED-indikaattori, joka ilmaisee vihreällä, keltaisella tai punaisella värillä sitä, miten paljon pienhiukkasia huoneilmassa leijailee. Nörttinä visuaalisen havainnon lisäksi tuntuisi tietenkin perin tarpeelliselta saada nämä kerääntyvät PM2,5-arvot talteen numeerisesti ja kenties jopa näyttää niitä Home Assistantin näytöllä kuvaajana. Tai no, ainakin tällainen puuhastelu voi olla mukavaa pimeän syysillan ajanvietettä, jos ei muuta.

Toinen syy lähteä tällaiseen askarteluun on Vidriktningin pitämä är-syt-tä-vä ääni. Laitteen sisällä oleva tuuletin, joka tuuppaa minuutin välein huoneilmaa anturille pitää nimittäin jopa kuulonalenemasta ja lievästä tinnituksesta kärsivän asukin korvin kuultavaa sirinää, jonka poistamiseksi nörttikansa on onneksi löytänyt käytännön ratkaisun. Se fiksi syntyisi tämän tiedonkeruuprojektin sivutuotteena.

Netin syövereistä löytyy monta artikkelia, joissa on dokumentoitu vastaava projekti, mutta tämä Michin kirjoittana blogipostaus on niistä parhaasta päästä. Se kun sisältää perinpohjaisen tekstin lisäksi osaluettelon, hyvät kaaviokuvat ja ESPHome-lisäosan tarvitseman koodinpätkän.

Olin jo aikaisemmin ’ihan vain varmuudeksi’ tilannut AlieExpressistä joitakin ESP8266 WeMoS D1 Mini -mikrokontrollereita, joten ajattelin alkaa valmistelut sillä, että asennan pikaisesti allaolevan koodinpätkän tuolle lutikalle – tai niin ajattelin…

esphome:
  name: vindrikning-air-quality-sensor
  platform: ESP8266
  board: d1_mini

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

  ap:
    ssid: "Vindriktning Fallback Hotspot"
    password: "xxxxxxxxxx"

#captive_portal:
logger:

# home assistant api password
# and over the air update password
api:
  password: !secret esp32_ota_password
ota:
  password: !secret esp32_ota_password

# UART config for the pm1006 sensor
# and sensor configuration
uart:
  rx_pin: D3
  baud_rate: 9600

sensor:
  - platform: pm1006
    pm_2_5:
      name: "My room PM2.5"

EPSHome-ongelma – ja sen ratkaisu

Liitin ESP8266-luteen USB-piuhalla kiinni Raspberry Pi 4 -laitteeseen, loin Home Assistantin ESPHome näkymässä uuden laitteen, sijoitin koodiksi tuon ylläolevan, tallensin ja käskin asentamaan ohjelmiston lutikalle — mutta sainkin tulokseksi erikoisen virheilmoituksen.

INFO Reading configuration /config/esphome/vindriktning-8266.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing vindrikning-air-quality-sensor (board: d1_mini; framework: arduino; platform: platformio/espressif8266 @ 3.2.0)
--------------------------------------------------------------------------------
Platform Manager: Installing platformio/espressif8266 @ 3.2.0
Error: Please upgrade to the PlatformIO Core 6

Erikoista, minulla kun piti olla Home Assistant -asennuksessani uusimmat versiot paitsi HA:sta itsestään, lisäksi kaikista Add-on’eista, kuten ESPHome’sta. Mistähän tässä voisi olla kyse?

Kuten tavallisesti tällaisissa tilanteissa, googlettelin ja kyselin eri foorumeilta mikä virheilmoituksen takana voisi olla — kunnes asia selvisi. Jossakin vaiheessa alkuvuotta 2022 ESPHome-lisäosaa ei enää oltu päivitetty Home Assistantin Add-on storessa, vaan lisäosan jakelu oli siirretty omaan storeensa. Minulla siis oli kuin olikin ollut ESPHomen vanha versio käytössäni. Ihme, että Home Assistant tai ESPHome ei ollut nillittänyt tilanteesta millään tapaa…

Kun tarinan juoni alkoi selvitä, löytyi myös video, jolla kerrottiin miten vaihdos kannattaa tehdä. Tuumasta toimeen.

Versiovaihdos meni kerralla maaliin ja kaikkien linjoilla olleiden ESP32/8266-laitteiden päivittäminenkin onnistui wifin kautta ongelmitta. Voimme siis jatkaa varsinaista projektia tästä eteenpäin…

Kolvi käteen

Yllämainitusta blogipostauksessa kuvattiin miten 8266:n 5V, GND ja D3 -nastoihin kulkevat johdot kiinnittyvät IKEAn laitteen piirilevylle. Lisäksi siinä neuvottiin miten tuulettimen virtasyöttö vaihdetaan IKEAn piirilevyn viiden voltin sijaan 8266:n 3.3 volttiin. Jälkimmäinen temppu hiljentää sirinän.

Johtojen juottaminen 8266:n nastoihin kävi helposti ja Vindriktning-piirilevylle hieman haastavammin. Yritin olla jälkimmäisten suhteen varovainen, koska netissä kommentoijat tuntuivat saaneen pienet lätkät irtoamaan piirilevyn pinnasta herkästi.

Melko määrätietoista voimankäyttöä hyödyntäen sain survottua 8266-lutikan Vindriktningin tuulettimen alle ja kannen kiinni. USB-C-johto laitteeseen ja hieman jännittäen tutkailemaan ESPHomen lokia Home Assistantiin. Kerralla kuntoon!

INFO Reading configuration /config/esphome/vindriktning-8266.yaml...
INFO Starting log output from vindrikning-air-quality-sensor.local using esphome API
INFO Successfully connected to vindrikning-air-quality-sensor.local
[18:11:45][I][app:102]: ESPHome version 2022.10.1 compiled on Oct 31 2022, 17:37:40
[18:11:45][C][wifi:502]: WiFi:
[18:11:45][C][wifi:360]:   Local MAC: E8:9F:6D:92:56:A7
[18:11:45][C][wifi:361]:   SSID: 'xxxxxxxxxxx'[redacted]
[18:11:45][C][wifi:362]:   IP Address: 192.168.1.105
[18:11:45][C][wifi:363]:   BSSID: 24:4B:FE:62:A3:B8[redacted]
[18:11:45][C][wifi:365]:   Hostname: 'vindrikning-air-quality-sensor'
[18:11:45][C][wifi:367]:   Signal strength: -42 dB ▂▄▆█
[18:11:45][C][wifi:371]:   Channel: 6
[18:11:45][C][wifi:372]:   Subnet: 255.255.255.0
[18:11:45][C][wifi:373]:   Gateway: 192.168.1.1
[18:11:45][C][wifi:374]:   DNS1: 192.168.1.1
[18:11:45][C][wifi:375]:   DNS2: 0.0.0.0
[18:11:45][C][logger:275]: Logger:
[18:11:45][C][logger:276]:   Level: DEBUG
[18:11:45][C][logger:277]:   Log Baud Rate: 115200
[18:11:45][C][logger:278]:   Hardware UART: UART0
[18:11:45][C][uart.arduino_esp8266:102]: UART Bus:
[18:11:45][C][uart.arduino_esp8266:104]:   RX Pin: GPIO0
[18:11:45][C][uart.arduino_esp8266:106]:   RX Buffer Size: 256
[18:11:45][C][uart.arduino_esp8266:108]:   Baud Rate: 9600 baud
[18:11:45][C][uart.arduino_esp8266:109]:   Data Bits: 8
[18:11:45][C][uart.arduino_esp8266:110]:   Parity: NONE
[18:11:45][C][uart.arduino_esp8266:111]:   Stop bits: 1
[18:11:45][C][uart.arduino_esp8266:115]:   Using software serial
[18:11:45][C][pm1006:017]: PM1006:
[18:11:45][C][pm1006:018]:   PM2.5 'My room PM2.5'
[18:11:45][C][pm1006:018]:     Device Class: 'pm25'
[18:11:45][C][pm1006:018]:     State Class: 'measurement'
[18:11:45][C][pm1006:018]:     Unit of Measurement: 'µg/m³'
[18:11:45][C][pm1006:018]:     Accuracy Decimals: 0
[18:11:45][C][pm1006:018]:     Icon: 'mdi:blur'
[18:11:45][C][pm1006:019]:   Update Interval: never
[18:11:45][C][mdns:100]: mDNS:
[18:11:45][C][mdns:101]:   Hostname: vindrikning-air-quality-sensor
[18:11:45][C][ota:089]: Over-The-Air Updates:
[18:11:45][C][ota:090]:   Address: vindrikning-air-quality-sensor.local:8266
[18:11:45][C][ota:093]:   Using Password.
[18:11:45][C][api:138]: API Server:
[18:11:45][C][api:139]:   Address: vindrikning-air-quality-sensor.local:6053
[18:11:45][C][api:143]:   Using noise encryption: NO
[18:11:58][D][pm1006:091]: Got PM2.5 Concentration: 29 µg/m³
[18:11:58][D][sensor:126]: 'My room PM2.5': Sending state 29.00000 µg/m³ with 0 decimals of accuracy
[18:11:59][D][pm1006:091]: Got PM2.5 Concentration: 29 µg/m³
[18:11:59][D][sensor:126]: 'My room PM2.5': Sending state 29.00000 µg/m³ with 0 decimals of accuracy
[18:12:01][D][pm1006:091]: Got PM2.5 Concentration: 28 µg/m³
[18:12:01][D][sensor:126]: 'My room PM2.5': Sending state 28.00000 µg/m³ with 0 decimals of accuracy
[18:12:03][D][pm1006:091]: Got PM2.5 Concentration: 29 µg/m³
[18:12:03][D][sensor:126]: 'My room PM2.5': Sending state 29.00000 µg/m³ with 0 decimals of accuracy

Tuon jälkeen piti vielä muistaa käydä hyväksymässä tämä uusi ESPHome-integraatio sekä muistella mikä useista salasanoista olikaan se, joka pitää antaa tuossa vaiheessa. No, kyse oli samaisesta, jota käytän sekä Home Assistant API:in että OTA-päivityksiin – ja se löytyi secrets.yaml -tiedostosta, johon koodissa viitataan.

Ja aivan viimeiseksi se tärkein, eli jonkinlainen kortti dashboardille! Eräs netistä löytämäni sivusto kertoi, että IKEAn käyttämän värikoodauksen raja-arvot partikkelimäärille ovat 0-35 vihreä, 36-85 keltainen ja sitä suurempi määrä punainen. Rustasin niiden perusteella allaolevan mittarin. Pienhiukkasarvot olivat ehtineet tuossa vaiheessa jo laskea matalammalle tasolle. Mitä lienee pölyä ollut hyllyllä 🙂

Advertisement

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