On jo pidemmän aikaa ollut suunnitteilla rustailla artikkelia MagicMirror-projektistani. Tai melkein MagicMirror..öö..käytännössä pelkkä Magic..koska en tullut ikinä toteuttaneeksi aitoa peiliä kuten ajatuksena olisi. MagicMirror on siis nk. älypeili. MagicMirror asennetaan yleensä Raspberry Pi:lle, johon kiinnitetään ulkoinen näyttö ”peilin” virkaa hoitamaan. Näytön eteen laitetaan peilimuovia, joka päästää näytön kirkkaimmat valkoiset tekstit peilin pintaan läpi, ja samalla peiliin katsoja voi peilailla itseään ruudusta, kun lukee samalla esim. säätietoja. Tämä on ihan aidosti supersiisti juttu, katsokaapa vaikka Googlesta esimerkkejä.
Omaa ”taikapeiliä” lähdin toteuttamaan sillä periaatteella, että tehdään aluksi nk. infonäyttö kehyksineen ja lopuksi sitten haen peilimatskua ja viimeistelen projektin. Infonäytöllä tarkoitan tässä yhteydessä näyttöä, josta saa tarvittaessa aamuisin katsottua perheen kalenteritilanteen, älykodin sensoreiden tilanteen, kodin lämpötilat, uutiset, sään jne. Pääsitte varmaan kärryille mitä tarkoitan! MagicMirror-projektini kuitenkin kuihtui kasaan ja muuntui lopulta infonäyttö-toteutukseksi siitä syystä, että a) peilille ei ollut tarvetta ja b) näytöltä paistateltiin myös kaikkea muuta materiaalia kuin peilikäyttöön rajattua valkoista kirkasta tekstiä.
Heivasin infonäytön tuottavan Raspberry Pi:n tovi sitten sivuun ja valjastin 24/7 käynnissä pyörivän Windows-serverin (ts. kannettavan) tehtäviä suorittamaan. Seuraavaksi lisää itse infonäytö(i)stä.
Infonäytön näyttö ja kehykset
Näytön virkaa hoitaa Asuksen 24″ VE247H -näyttö. Siinä mielessä kyseessä on tavallinen perusnäyttö, eli nykymittapuun mukaisesti lukeutuu Full HD-näytöksi 1080p (1920×1080) -resoluutiolla. Näytöllä on toki merkitystä infonäyttö-toteutuksessa. Kannattaa suosia sellaisia näyttöjä, jotka vastaavat resoluution ja tarkkuuden osalta omia tarpeita. Myös katselukulmat ovat oleellisia mikäli näyttö sijaitsee paikassa, jossa sitä katsellaan ”äärisivuilta” esim. ohikulkiessa. Kyseinen näyttö on tullut markkinoille 2011, ja valikoitui omaan käyttöön siitä syystä, että löytyi varaston perukoilta tyhjän panttina.
Näytöstä pitää aluksi irrottaa standi pois, jos se aiotaan integroida haluttuihin kehyksiin kiinni. Itse halusin tehdä sellaisen kehykset, jotka ovat vanhojen ikkunapuitteiden oloiset ja näköisetkin. Materiaalina kehyksissä toimi varaston takaa haettu kyllästetty ja höylätty 2×2:n. Rungon puut sahattiin oikean mittaiseksi ja standittoman näytön mallaaminen puiden sisään voitiin suorittaa. Kun runko oli kiinnitetty yhteen, hain varastosta valkoista kulmalistaa hieman kerroksellisuutta kehyksiin tuomaan. Kehysten taakse piti sitten hieman viritellä johdoille sopivia koloja. Lopulta kun kehykset olivat kulmalistoineen nipussa, ryhdyin maalaushommiin. Pari kerrosta valkoista maalia päälle ja kuivumista odottelemaan.
Kun maali oli kuivunut, voitiin mallailla näyttöä kehyksiin. Samalla ”innovoin” järkevän kiinnitysmekanismin (kulmaraudat ja ruuvit), että näyttö pysyy aidosti kehysten sisällä kiinni. Nyt fyysinen työ oli valmis! Fyysisen asennuksen loppusilauksen tein hieman myöhemmin, jolloin lisäsin kehyksen kulmiin etupuolelle metalliset koristekulmat. Tuli huomattavasti nätimmän näköiseksi tällaisen pienen yksityiskohdan myötä. Nämä koristeet näkyvät artikkelin loppupuolella olevissa kuvissa.
Windowsiin siirtyminen ja läppäripäivitys
Ajatus Raspista Windowsiin siirtymiseen infonäytön osalta syntyi oikeastaan siitä lähtökohdasta, että nykyinen Ispy-serveriä pyörittävä Dell D630 -kannettava veteli viimeisiään. Hankin korvaajaksi tuoreen Hp Elitebook 735 G5 Ryzen 3 -kannettavan. Elitebook on Ispy-käyttöön enemmänkin kuin riittävä masiina, joten miksei sitten samalle kannettavalle lisäisi infonäyttö-ominaisuutta. Tämä muutos osui muutenkin hyvin kohdalleen, koska Ispy-palvelin ja MagicMirror-palvelin pyörivät fyysisestikin samalla pöytätasolla vierekkäin. Nyt installaatiota kuukauden päivät pyörittäneenä täytyy todeta, että todella hyvä hankinta tuli tehtyä. Ero Delliin on kaikilta osin valtava. Elitebookissa pyörii Ispy-palvelimen lisäksi, Google Assistant Relay, sekä ActionTiles-pohjainen infonäyttö.
Koska kyseessä on Windows-kannettava ja ulkoinen näyttö, niin kovin erikoista osaamista ei näiden kytkeminen toisiinsa vaadi. Näyttö pitää toki kääntää pystyasentoon, mikäli installaatio näin vaatii. Omassa toteutuksessani näyttö on portrait-asennossa, eli pystyssä. Lisäksi toki määritellään staattinen ip-osoite kannettavalle, että palveluita on mahdollista käyttää ja että kannettavaan on mahdollista päästä helposti ip-osoitteella rdp:tä/vnc:tä käyttäen kiinni.

Virransäästötila
Infonäyttö ei saa mennä tahattomasti virransäästötilaan, joten ensiksi ruuvataan virransäästöasetukset kuntoon. Kun kannettava verkkovirrassa, näyttö, kannettava, eikä kovalevy saa sammua missään tilanteessa. Kun kannettava akkuvirralla, näyttö sammuu 1 min kuluttua, itse kannettava tai kovalevy ei ikinä. Nämä reunaehdot käytölle sanelee omassa käytössä Ispy-palvelin, joka valvoo turvakameroiden kuvaa käytännössä aina. Mikäli virtakatko tulee, turvataan Ispyn toiminta ja infonäyttö ei tuolloin ole prioriteettipalveluna. Oleellista on myös määrittää kannen kiinnilaittamisen vaikutus.



Firefox-selain
Tulevaa ActionTiles-käyttöönottoa varten on merkitystä, mitä selainta käytetään. Suosittelen käyttämään vain ja ainoastaan Firefox-selainta. Chrome ja Edge eivät kykene näyttämään mm. videokamera-feedejä ActionTilesissä lainkaan. Tämä on selainvalmistajakohtainen tunnettu ongelma, jossa vain Firefox mahdollistaa salasanasuojatun feedin toistamisen selainsessiossa. Eli Firefox is way to go!
Firefoxin aloitussivuksi kannattaa määritellä se ActionTiles-paneelin osoite, jota on aikomuksena käyttää.

Jotta Firefoxin selainikkuna saadaan heti aloituksessa fullscreen-tilaan, tarvitaan tätä varten laajennus. https://addons.mozilla.org/en-US/firefox/addon/autofullscreen/

EventGhost
Tavoitteena oli ohjata infonäytön päälläoloa liiketunnistimen havaintojen mukaan. Tätä varten tulee asentaa EventGhost-ohjelma palvelimelle. Vastaanottaakseen tilannetietoa sensoreiden tilasta, tulee EventGhostiin asentaa pienehkö webserver-plugin. Klikkaa EventGhostin pääikkunasta rattaan kuvaa, jolla lisätään uusi plugin. Plugin-listan viimeisenä rivinä löytyy ”Webserver”, valitse se ja klikkaa ”ok”.

Määritä seuraavaksi Webserverin asetukset kuntoon. Tähän ei ole tarvetta määritellä käytännössä mitään muuta, kuin käytettävä portti. Esimerkissäni se olisi pahamaineinen ”666”. Klikkaa lopuksi ”ok” ja webserverin konfigurointi on nyt valmis.

Webserver ilmestyy onnistuneen konfiguroinnin jälkeen ”Autostart” -valikon alle. Voit vielä tämän varmistaa halutessasi.

Lisäksi myös Smartthingsin puolelle vaaditaan hieman konfiguraatiota. Ohessa linkki asiaan vihkiytyneille sivuille:
https://community.smartthings.com/t/send-events-to-eventghost/22473
Tässä kuitenkin suomenkieliset pikaohjeet. Lisää urlin takaa löytyvä EventGhost smartapp Smartthingsiin IDE:n kautta ”koodina”. Ei kannata hämmästellä vuosileimaa 2015, joka kuulostaa vanhahkolta versiolta. Muista ”julkaista” koodi itsellesi ”for me” IDE:ssä.

Tämän jälkeen mobiiliapplikaatiosta siirry kohtaan ”Add a Smartapp”. Tämä löytyy Classic-applikaation ”Automation” -välilehden takaa. Add a Smartapp-valikossa siirry kohtaan ”My Apps”, ja lisää ”Send Events to EventGhost”.
Server-kohtaan tulee määrittää sen palvelimen ip-osoite, mihin EventGhostin juuri asensit. Portiksi määritellään se portti, jonka konfiguroit webserver-pluginiin (kuvassa esimerkkinä 80, konfissa oli aidosti 666). Valitse haluttu sensori oikean valikon alta. Määrittele lopuksi nimi kyseiselle toimelle ja paina ”save”. Nyt tekemäsi toiminto pitäisi näkyä muiden SmartAppien joukossa. Omassa esimerkissäni viimeisen kuvan ”EventGhost” nimi eroaa tehdystä ”Tähän Nimi” -määrityksestä. Älkää antako tuonkaan hämmentää.
Tämän jälkeen kun halutussa sensorissa tapahtuu muutoksia, esim. kun liikentunnistin tunnistaa liikettä, lähettää se EventGhostille tiedon asiasta. Tämä tieto näkyy omana rivinään EvetGhost-ikkunan vasemman puoleisessa lokisarakkeessa.

Lopuksi luodaan halutut EventGhost ”macrot”, eli mitä halutaan tapahtuvan, kun liikettä havaitaan tai liike päättyy. Itse halusin infonäytön menevän päälle kun vieressä olevan liiketunnistin havaitsee liikettä. Liikkeen lakatessa infonäyttö menee pois päältä. Tätä varten luotiin kaksi erillistä ”macroa”, jotka näkyvät kuvien oikeassa reunassa alimmaisena.
- Ylemmässä macrossa kun EventGhost saa Smarthingsiltä tiedon, että liikesensorin havaitsema liike on päättynyt -> ”Set monitor into power-off mode”.
- Alemmassa macrossa kun EventGhost saa Smartthingsiltä tiedon, että liikesensori havaitsee liikettä -> ”Re-enable monitor” ja tämän lisäksi aidosti näytön herättääkseen ”Left mouse button”.
Jälkimmäinen macro toimisi todennäköisesti jo pelkällä ”Left mouse button” -komennollakin, mutta jätin näytön oikean herätekomennon kuitenkin mukaan. Tässä huomioitavaa tosiaan se, että pelkällä ”Re-enable monitor” -komennolla näyttö ei saa hdmi-signaalia vaan vaatii lisäksi hiiren liikautuksen tai näppäimen painamisen.
Koska kyseessä on Xiaomin liiketunnistin, voidaan liiketunnistimen ST-applikaation asetuksista määritellä aika, jolloin liiketunnistin ei reagoi muutoksiin. Määritin ajaksi 5 min. Tämä tarkoittaa sitä, että kun huomataan liikettä, näyttö pysyy aina viimeisestä havainnosta lähtien vielä 5 minuuttia käynnissä kunnes siirtyy inactive-tilaan ja sammuu. Tällä tavoin eteisessä sijaitseva näyttö ei käynnisty/sammu liian tiheästi eteisen ”ruuhka-aikoihin”.
Käynnistä sovellukset automaattisesti
Kun tarvittavat ohjelmat on asennettuna palvelimelle, niin on syytä määritellä ne käynnistymään automaattisesti silloin kun Windowskin käynnistyy. Tätä varten vie pikakuvakkeet seuraavaan Widows10:ssä käytettävään kansiolokaatioon. Huomioi toki, että polussa oleva käyttäjänimi on jokin itse määrittelemäsi.

ActionTiles v6.10
Olen jo aiemmin kirjoitellut hieman ActionTilesistä. Merkittävä ero sitten tuon kirjoituksen on se, että ActionTilesistä tuli tovi sitten uusi versio 6.10. Toimintalogiikka ei muuttunut paljoakaan, mutta suurin muutos tuli ulkoasuun ja räätälöintimahdollisuuksiin. ActionTiles 6.10 näyttää nyt todella nätiltä ja nykyaikaiselta.
Käyttäjä voi luoda nk. omia teemoja, joissa voidaan määritellä taustakuvat väreineen ja varjostuksineen. Jokaisen ActionTilesissa toteutetun ”paneelin” painikkeet ja kuvakkeet voidaan samalla tavalla määritellä värien, koon ja varjostusten osalta. Jo yksinään stock-taustakuvien käyttäminen tekee paneeleista huikean näköisiä ja erityisesti isolla näytöllä taustakuvat saavat vielä enemmän oikeutta.
Jokainen tehkööt sellaisen infonäytön kuin tarve tietenkin on. Itselläni tarve on ST-sensorien tiedoille, kuten ovien auki/kiinni -tilat, lämpötilat, läsnäolotiedot, hälytykset (palo, vuoto), yläkerran ilmastointi, auton lämmitys ja pari valvontakamerakuvaa.




ActionTilesin puutteet
Suinkaan täydellinen ActionTiles ei kuitenkaan ole. Kun suunnittelun lähtökohdat ovat olleet 100% ST-painotteiset, ei ActionTiles pysty paljoa tuon ulkopuolelta tarjoamaan. Valitettavasti tämä tarkoittaa sitä, että esim. kalenteri-implementointeja ja ulkoisia web-sivuja ei samaan paneeliin muun informaation kanssa pystytä bundlaamaan. Jopa säätietojen tuominen paneeliin on vaikeaa, ellei mahdotonta. Esimerkkikuvissa näkyvä weather-paneeli ei toimi pääsääntöisesti ja tulen sen paneelista poistamaan.
Tämä on todella harmillista ja oikeastaan ehkä jopa potentiaalinen syy, että etsin koko ajan muita mahdollisia infonäyttö-softatoteutuksia. Testailenkin parhaillaan Dakboardia ja kirjoittelen hieman myöhemmin kokemuksia tämän käytöstä.