Tietoa erilaisille näytöille Home Assistantista

Home Assistantin avulla on helppo kerätä monenlaista tietoa yhteen paikkaan, riippumatta siitä millaista reittiä pitkin tieto tähän keskitettyyn varastoon valuu. Sovellukseen voi suhteellisen helposti tuoda tietoja näytölle, mutta saisiko osan jokapäiväisistä tiedosta vaikka keittiön pöydällä olevaan erilliseen näyttöön? Katsotaan!

Tuttu ystävämme ESP32 (tai pikkuveljensä ESP8266 sekä kaikki näiden erilaiset serkut) on kuin tehty tällaisiin tarkoituksiin. Netistä löytyy useitakin hienoja projekteja, joissa ihmiset ovat saaneet pikkiriikkisille tai vähän suuremmille näytöille näkyville itselleen hyödyllistä informaatiota, kuten bussiaikatauluja, säätietoja, ihmisten paikalla olemista, sähkön kulutusta, jne.

Aloitin tätä projektiani itse asiassa joitakin kuukausia sitten tilaamalla 4.2-tuumaisen Waveshare e-Paper -näytön, mutta sen saavuttua alkoi johtojen yhdistäminen ujostuttamaan, kun katselin allaolevaa pinout-kuvaa.

Siis että mihin PIN’iin pitäisi mikäkin näistä näytöstä lähtevistä kahdeksasta johdosta laittaa? Lopputulos oli helppo arvata – näyttö siirtyi vähin äänin laatikkoon odottamaan aikaa parempaa…

Ensimmäinen askel, pieni näyttö

Löysin kuitenkin hiljakkoin riittävästi vapaa-aikaa ja tarpeeksi rohkeutta samaisen laatikon uumenista löytyvän pienen näytön kanssa askartelemiseen. 128×64 pikselin kokoisen OLED-näytön neljän johdon nippu tuntui huomattavasti vähemmän pelottavalta kuin e-Paperin kahdeksan. Ja niinpä päättäväisesti apinoiden erästä ESPHomen sivuilta löytyvää projektia sain allaolevan tuloksen aikaiseksi. Nättiä!

Näytön yläreunassa on staattinen teksti, vasemmalla kellonaika ja sen oikealla puolella sisä- ja ulkolämpötilat, jotka saatiin siirtymään ja päivittymään Home Assistantistantista.

Muutama havainto ja oppi tästä kokeilusta:

  • Home Assistantin yhteydessä toimiva ESPHome add-on on kerrassaan mahtava lisuke! Tällaisten näyttöjenkin integrointi sen avulla on varsin suoraviivaista.
  • Esimerkkiprojektissa olevat PIN’ien viittaukset eivät sellaisenaan toimineet, mutta arvasin toimivat nimet helposti. Mukavaa, että ESPHome ymmärtää vaikkapa määrittelyn sda: SDA ja scl: SCL – eli konfiguraatioon ei välttämättä tarvitse kirjata jokaisessa tapauksessa PIN’in tunnusta, numeroa, tms.
  • Muiden harrastelijoiden projekteihinsa dokumentoimat, luettavuudeltaan korkealaatuisten TrueType-fonttien nimet ovat arvokasta tietoa. Kaikki fontit eivät piirry yhtä nätisti näille näytöille.
  • ESPHome-konfiguroinnin ja fläshäyksen jälkeen pitää myös muistaa lisätä tämä uusi node Home Assistant -integraatioksi, tai muuten tieto ei kulje Home Assistantista ESP32:lle. Itsellä tilanteen ihmettelemiseen ja tämän muistamiseen meni jokunen tovi 🙂
  • Vaikka ESP32 pitää fläshätä ensimmäisen kerran USB-piuhan kautta, saa seuraavat kulkemaan myös Over The Air (OTA) eli Wifi-yhteyden kautta. Se on paitsi kätevä ja toimiva metodi, mutta myös nopeampi kuin lankaa pitkin!

Isompi näyttö, isompia askeleita

Pienestä onnistumisesta rohkaistuneena kaivoin laatikon pohjalta sinne aikaisemmin jääneen 4.2″ e-Paper-näytön. Ymmärsin näyttöjen ohjaamisesta jo vähän hieman ensimmäisen yrityksen jälkeen ja ESPHome-sivujen ohjeen sekä pienten arvausten jälkeen sain loputkin asetukset maaliin.

spi:
  clk_pin: GPIO3
  mosi_pin: MOSI   #DIN

display:
  - platform: waveshare_epaper
    cs_pin: GPIO2
    dc_pin: GPIO4
    busy_pin: GPIO18
    reset_pin: GPIO5
    model: 4.20in
    update_interval: 30s
    #full_update_every: 10    #not supported with 4.20in display
    rotation: 0°
    lambda: |-
      it.print(0, 0, id(arial_font), "Hello World!");

Vaikuttaisi siltä, että e-Paper-näyttö välkähtelee voimakkaasti muutaman sekunnin ajan päivityksen yhteydessä, jonka vuoksi siihen ei kannata ylipäätään tuoda näytille jatkuvasti vaihtuvaa tietoa (kuten kellonaikaa), eikä päivitysväliä säätää kovin lyhyeksi. Lämpötilatiedot ja sääennuste eivät vaihdu kovin usein, joten ne ovat käypäistä informaatiota tällaisella näytöllä esitettäväksi.

Halusin tässä kokeilussa saada näytölle näkyviin

  • valikoidut lämpötilatiedot, joita huoneistossa tai sen ulkopuolella olevat anturit tuottavat,
  • sääennusteinformaatiota Ilmatieteen laitoksen tuottamasta avoimesta datasta ja
  • lähikauppojen ihmismääristä kertovat prosenttiluvut.

Ja onnistuihan se lopulta!

Lämpötila- ja ihmismäärätietojen tuominen oli tuttua, koska jokainen näytölle tuotu luku vastasi valmiiksi yhtä Home Assistantin sensoria. Sen sijaan sääennustetietojen tuomisessa piti ajatella ja kokeilla tovi jos toinenkin. Ensin piti keksiä miten ohjelmallisesti ylipäätään viitataan Ilmatieteen laitoksen sääennusteen yksittäisen dataelementtiin – tässä auttoi työkaveri vinkillään. Suoraviivaista oli ollut luoda 4×4-sääennustematriisin mukaisesti Home Assistantiin 16 sensoria ja asetella ne yksi kerrallaan paikalleen – mutta se olisi ollut vähän rumaa ja laiskaa. Sen sijaan koostin haluamani tiedot Home Assistantissa yhteen sensoriin merkkijonona ja käsittelin sitä ESP-noden päässä pilkkomalla ja asettelemalla palasia näytölle parissa sisäkkäisessä loopissa. Ratkaisun koodiin voi tutustua on Githubissa.

Muutamia havaintoja tästä harjoituksesta:

  • Koska isommalle ruudulle mahtuu enemmän tavaraa, pääsee toimimaan paljon vapaammin kuin pikkuruisella näytöllä, käyttämään väliotsikointia, kuvia, jne – hauskaa!
  • Toisaalta, tekstien, kuvakkeiden ja Home Assistantist haettujen tietojen asemoiminen ruudulle on hidas ja iteratiivinen prosessi. Ehkä pitäisi tutkia olisiko tuohon olemassa joku näppärä layout-työkalu.
  • Omaa silmää miellyttävien kuvakkeiden hakeminen onnistuu helposti Material Design Icons -nettisivulta, josta voi selaimen hakutoiminnolla löytää kuvakkeen sille annetun nimen perusteella ja kopioitua kuvakkeen koodin sijoitettavaksi konfiguraatiotiedoston kirjasinmäärittelyihin.
  • Sääennustetietojen tietorakenteen kanssa puljaaminen oli eniten aikaa vievä kohta. Notaatio, jolla yksittäinen ennusteen tieto poimitaan oli itsellä pitkään hakusessa, mutta verkosto auttoi.
  • Ennustekuvan saaminen näytölle vastaamaan FMI:n säätilaa vaati pientä askartelua, mutta onneksi muiden tekemistä projekteista löytyi vinkkejä siihenkin. Avoin lähdekoodi on oppimisen kannalta upea asia!

Näytön kotelointi voisi olla seuraava projekti – ellei sitten jonkun muunlaisen komponentin integrointi Home Assistant-kokonaisuuteen houkuta vielä enemmän…

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