sunnuntai 15. joulukuuta 2013

Kotiautomaatiota, osa 1: Suunnitelmat

Minua on aina kiehtonut suunnattomasti kaikenlainen automaatio. Automaatiota löytyy nykyään jo monesta kodistakin, mutta itse en ole päässyt tutustumaan aiheeseen (sen verran vanhoissa taloissa asunut). Perinteisimmillään kotiautomaatio käsittänee lämpötilan, valojen ja joidenkin pistorasioiden ohjauksia. Ajatus oman kodin automatisoinnista on pyörinyt vuosia mielessä, mutta asia on alkanut konkretisoitua nyt, kun ostimme oman rivitaloasunnon, jossa olisi tarkoitus asua todennäköisesti pidempäänkin. Tähän postaukseen kokoan ajatuksia tähän mennessä syntyneistä ideoista. Tämän on tarkoitus toimia myös jonkinlaisena muistilistana ja suunnitelmana, kun alan toteuttaa automaatiota.

Olen tutkinut jonkin verran eri automaatioratkaisuja, ja todennut, että valmiit ratkaisut ovat ensinnäkin kalliita ja toisekseen yleensä melko rajoittuneita. Sen lisäksi niiden täydellinen ymmärtäminen vaatii opettelua. Valmiit ratkaisut kun eivät muutenkaan yleensä kiinnosta minua, niin on melko selvää, että teen koko automaatiojärjestelmän alusta saakka itse. Näin saan siihen juuri ne ominaisuudet mitä tarvitsen, käyttöä ei tarvitse opetella ja ennen kaikkea järjestelmästä tulee todella edullinen. Tietenkin suunnitteluun ja rakentamiseen menee aikaa viikkoja, mutta sehän on se hauskin vaihe tässä harrastustuksessa. Alusta saakka on ollut melko selvää, että Arduino tulee toimimaan järjestelmän ytimenä.

Yleensä tällaisia projekteja tulee suunniteltua päiviä tai viikkojakin aina pitkin päivää ja etenkin iltaisin sängyssä unta odotellessa. Mietinnässä voi olla yhtä aikaa niin järjestelmän perusta kuin yksityiskohdatkin. Yleensä ajatus lähteekin liikkeelle yksityiskohdasta, tarpeesta saada jokin asia toteutettua, ja sitä kautta ajatus siirtyy siihen, kuinka se on kokonaisuuden kannalta järkevää toteuttaa. Olen yrittänyt koota tähän useamman viikon mittaisen ajatusvirran niin selkeäksi paketiksi, kuin mahdollista. Kuvia tulee varsinaisen toteutuksen edetessä.

Perusta


Järjestelmä perustuu Arduinon eri versioille. Käytännössä jokaisessa huoneessa, johon halutaan automaatiota, täytyy olla vähintään yksi Arduino ja siihen liitetyt anturit, toimilaitteet ja langattoman tiedonsiirron mahdollistava moduuli. Tästä kokonaisuudesta käytän sanaa "yksikkö". Koska asuntoon ei haluta vetää pitkiä johdotuksia huoneesta toiseen, ainoa vaihtoehto on käyttää langatonta tiedonsiirtoa eri yksiköiden välillä. Kussakin huoneessa tarvittavien toimintojen mukaan valitaan sopiva Arduino (Pro Mini, Nano, Uno, Mega). Antureina tullaan käyttämään tilanteen mukaan sopivia antureita, kuten liiketunnitimia, ultraäänietäisyystutkia ja lämpötila-antureita.

Langaton tiedonsiirto


Langaton tiedonsiirto toteutetaan NRF24L01+-moduuleilla. Ne ovat edullisia, toimivat yleisellä ja avoimella 2.4 GHz:n taajuudella ja niiden kantomatka on kohtalaisen hyvä. Myös virrankulutus on pieni, mikä on tärkeää niissä paikoissa, joissa yksikkö toimii paristoilla tai akuilla.

Tarkoituksena on, että asunnossa on yksi yksikkö, joka on internetin kautta yhteydessä palvelimelleni. Muut yksiköt ovat yhteydessä tähän yksikköön. Koska etäisyydet voivat olla pitkiä, täytyy viestinkulkua pystyä ketjuttamaan yksiköltä toiselle siten, että se lopulta tavoittaa myös internetiin yhteydessä olevan yksikön. Tässä on suurena apuna RF24-kirjasto. Kirjaston ideana on, että on olemassa parent-yksiköitä ja child-yksiköitä, jotka ovat toisiinsa langattomasti yhteydessä. Yksi parent-yksikkö voi olla yhteydessä ylemmän tason parent-yksikköön sekä viiteen omaan child-yksikköönsä. Rajoitus (viisi child-yksikköä) tulee siitä, että NRF24L01+ tukee enintään kuutta yhtäaikaista yhteyttä (eli parent+viisi childia). Child-yksiköt toimivat vuorostaan parent-yksikköinä omille child-yksiköilleen. Näin yksiköistä muodostuu puumainen rakenne. Kukin yksikkö voi olla yhteydessä vain omaan parentiinsa tai childiina, ei siis suoraan muihin saman tason yksiköihin eikä muiden haarojen yksiköihin. Haarasta toiseen viesti kulkee aina tarpeeksi korkealla sijaitsevan parentin kautta, tarvittaessa aina ylimmän tason parentin kautta. Yksiköille annetaan osoitteet siten, että ylimmän tason parent (tässä tapauksessa se, joka on yhteydessä internetiin) on 00. Tämän yksikön childeille annetaan osoitteet 01-05. Viesti yksiköstä 01 yksikköön 02 kulkee siis parentin 00 kautta, koska saman tason yksiköt eivät voi kommunikoida keskenään. Yksiköt 011, 021, 031 jne. ovat yksikön 01 childeja, eli ensimmäinen numero nollan jälkeen kertoo kyseisen yksikön osoitteen ja sen jälkeen olevat numerot kertovat puussa ylempänä olevien yksiköiden osoitteet. Kaikkiaan osoiteavaruus riittää noin 3000 yksikölle, joten kirjastolla saa toteutettua automaation isompaankin kämppään. Lisää tietoa tästä mainiosta kirjastosta löytyy englanniksi osoitteesta http://maniacbug.wordpress.com/2012/03/30/rf24network/

Palvelin


Palvelin, johon ylimmän tason parent-yksikkö on ethernetin kautta yhteydessä, tallentaa tietokantaan automaatiojärjestelmän antamia tietoja ja toimii rajapintana esim. Google-kalenterin ja järjestelmän välillä (minun taidoillani esim. Google-kalenterin lukeminen ja sieltä saatujen tietojen käsittely onnistuu PHP:llä huomattavasti paremmin kuin Arduinon käyttämällä C:llä). Palvelin on käytännössä fyysisesti eri sijainnissa oleva kone, jolla pyörii mm. yritykseni nettisivut. Sinne luodaan oma virtuaalinen www-palvelin automaatiojärjestelmää varten. Palvelimelta voi nettiselaimella tarkastella erilaisia tilastoituja tietoja ja jatkossa myös tarvittavilta osin ohjata järjestelmää.

Työhuone, valaistus ja sälekaihtimet


Työhuoneeni tulee toimimaan automaation (kuten monen muunkin asian) osalta testikenttänä. Työhuone on pelkästään minun käytössäni, joten siellä on hyvä hioa järjestelmät toimiviksi ennen kuin ne "julkaistaan" muualle asuntoon. Näin kotiautomaation asunnon toisessa asukissa herättämä vastustus lienee kaikkein pienintä.

Perinteisimpiä kotiautomaation alueita on valaistus. Ainakin työhuoneeseeni on tarkoitus uusia valaistus kokonaan. Nykyinen kattovalaisin on kovin pienitehoinen tämän kokoiseen huoneeseen. Se korvataan kattoon tulevalla epäsuoralla valaistuksella, joka toteutetaan LED-nauhoilla. Hyviä vinkkejä epäsuoraan valaistukseen löytyy sivulta http://www.valokas.fi/fi/epaesuora. Tietokoneen näyttöjen taakse on tarkoitus laittaa myös LED-nauha valaisemaan näyttöjen takana olevaa seinää, jotta näytöt rasittaisivat vähemmän silmiä.

Ajatuksena on, että valot toimisivat täysin automaattisesti. Kun huoneeseen astutaan, valot syttyvät Valojen syttymisen ja sammumisen haluan totetuttaa feidaamalla, eli valot kirkastuvat tai himmenevät portaattomasti haluttuun kirkkauteen esim. 2 sekunnin aikana. Valaistuksen teho riippuu huoneeseen ulkoa tulevan valon määrästä. Jos ulkona on valoisaa, ei valoja tarvita. Hämärän aikaan valoa tarvitaan lisää, ja pimeän aikaan keinotekoista valoa tarvitaan paljon. Myös sälekaihtimien asento täytyy huomioida. Kun istutaan tietokoneen ääreen, jota suurin osa työhuoneessa vietetystä ajasta on, feidaa näyttöjen takana oleva valo päälle ja huoneen muu valaistus himmenee hieman. Valot himmenevät, ja hetken kuluttua sammuvat, kun huoneesta poistutaan.

Katton tulevien LED-nauhojen ohjaus tapahtuu todennäköisesti liiketunnistimen avulla. Tietokoneen näyttöjen alapuolelle sen sijaan ajattelin laittaa ultraäänietäisyystutkan, joka havaitsee, jos tietokoneen ääressä istutaan. Täytyy myös miettiä tilanne, kuinka havaitaan tilanne, jossa istutaan tietokoneen ääressä ja samaan aikaan huoneessa on toinen henkilö tekemässä jotain.

Työhuoneen sälekaihtimien ohjauksen haluan myös automaattiseksi, jolloin se toimii hyvin yhteen automaattisen valaistuksen kanssa. Kun ulkona alkaa olla hämärämpää kuin sisällä, sälekaihtimet menevät (pikku hiljaa vai kerralla?) kiinni. Sälekaihtimien ohjaus tapahtuu servolla.

Jääkaappi


Jääkaappi on mukana kotiautomaatiossa jo tässä vaiheessa lähinnä siksi, että sen termostaatti vetelee viimeisiään. Lämpötila on heitellyt melko laajalla skaalalla viime aikoina. Tarkoitus on korvata kapillaaritermostaatti Arduinolla ja jääkaappiin tulevalla lämpötila-anturilla. Arduino kytkee kompressorin releen välityksellä päälle. Hyötyinä tässä ratkaisussa on digitaalinen ja tarkka lämpötilan säätö sekä tarkkailu (jopa etänä). Tämä on yksi ensimmäisiä yksiköitä, jonka aion toteuttaa, sillä entinen termostaatti saattaa hajota lopullisesti milloin vain ja tämä yksikkö toimii autonomisesti jo ennen muun järjestelmän toteutusta.

Jääkaapin/keittiön yksikköön tulee myöhemmin myös kosteustunnistin, joka laitetaan pesukoneen alle.

Postilaatikko


Tämä on taas yksi niitä asioita, jotka ovat paremman puoliskoni mielestä täysin turhia. Postilaatikon tarkkailu. Postilaatikkomme sijaitsee rivitalon portilla muutamien kymmenien metrien päässä asunnostamme. Työni takia noutaisin postin toisinaan mielelläni heti, kun se laatikkoon tulee. Toisinaan taas otan postin lähtiessäni mukaan, kun ajan autolla laatikon ohi, ja sitten J käy turhaan laatikolla postia hakemassa.

Postilaatikon pohjalle on tarkoitus laittaa ultraäänietäisyystutka tai valoportti, joka havaitsee laatikossa olevan postin. Haasteeksi langattomalle tiedonsiirrolle saattaa muodostua pitkä matka, tosin esteitä matkalla ei juurikaan ole. Toinen haaste on virransyöttö. Tarkoitus on kokeilla, toimisiko postilaatikon yksikkö yhdellä tai kahdella AA-akulla ja pienellä aurinkopaneelilla, joka kiinnitetään laatikon kylkeen. Onpahan siinä taas naapureille ihmettelemistä.
Akun lataus toimii todennäköisesti ilman sen kummempaa ohjausta kytkemällä tuon kokoinen paneeli suoraan akkuun. Jos step-up-muuntimen tyhjäkäyntivirta on vaikka 1 mA, niin akusta pitäisi riittää virtaa pariksi kuukaudeksi. Kun tähän lisätään esim. 5 minuutin välein tapahtuva valoportin tarkastus ja pari kertaa vuorokaudessa tapahtuva tiedonlähetys, toiminta-aika lienee kuitenkin useita viikkoja (arvioidaan vaikka kolme viikkoa). Kolmessa viikossa (21 vrk) yhdellä paneelilla, varovaisella keskimääräisellä latausajalla 1 h/vrk, akku latautuisi 1100 mAh, mikä ei aivan riitä kattamaan samassa ajassa tapahtuvaa kulutusta. Nämä tosin ovat todella karkeita arvioita ja todellisen kulutuksen ja latauksen näkee sitten, kun yksikkö on valmis. Jos yksikkö ilmoittelee usein akun tyhjenemisestä, niin toinen paneeli on helppo lisätä rinnalle.

Auto


Auto ei käsittääkseni yleensä kuulu kotiautomaatioon, mutta minun järjestelmässäni se kuuluu. Autoon on tarkoitus tehdä muutenkin ajotietokone Arduinolla, joten miksei siihen samalla liittäisi langatonta moduulia, jolloin se voi liittyä kodin automaatiojärjestelmään ollessaan parkkipaikalla. Ajotietokone näyttää ainakin kulutuksen (mitataan suuttimien aukioloaikoja lukemalla) ja todellisen nopeuden (GPS-moduulilla). Lisäksi näytöllä näytetään kotipihaan ajettaessa postilaatikon tila, jolloin posti on kätevää noutaa ennen kuin tulee sisälle, jos postia on laatikossa. Ajotietokoneesta voi myös siirtää esim. kulutustietoja palvelimelle tietokantaan.

Auton lämmitys langattomalla pistorasialla


Meillä ei ole ajastimia lämmitystolpissa, vaan niihin tulee jatkuva sähkö. Siis mainio kohde pienelle automatisoinnille. Ostin taannoin Lidlistä kauko-ohjattavia pistorasioita. Yhteen kaukosäätimeen saa ohjelmoitua neljä pistorasiaa. Avasin kaukosäätimen, perehdyin sen toimintaan hieman ja liitin Arduinoon. Nyt minulla onkin Arduinon ohjaamia pistorasioita.

Ajatus on, että jaan oman Google-kalenterini ja J jakaa oman kalenterinsa siten, että palvelin pääsee lukemaan niitä. Palvelin tietää, että jos kalenteriin merkityn tapahtuman nimi alkaa esim. merkinnällä A30, niin tapahtumassa tarvitaan autoa ja auton olisi syytä olla 30 minuuttia ennen tapahtumaa lähtövalmiudessa. Automaatiojärjestelmä saa tiedon palvelimelta ja kytkee auton lämmityksen langattoman pistorasian avulla päälle. Päällekytkemisaika riippuu tietenkin ulkolämpötilasta sekä moottorin lämpötilasta. Jos auto täytyy saada heti lämpenemään, lämmitys voidaan kytkeä päälle manuaalisesti esim. keittiön ohjauspaneelista (ohjauspaneeleista myöhemmin lisää).

Toinen vaihtoehto olisi ollut tehdä oma kalenteri auton lämmitykselle ja jakaa se minulle ja J:lle. Kuitenkin, koska lämmityksen ajastus tapahtuu meidän omien kalentereidemme kautta, ajastukset siirtyvät automaattisesti, jos tapahtuman alkamisajankohtaa muutetaan, eikä "auton kalenteriin" tarvitse tehdä erikseen muutoksia. Ajatuksena toiminnolla luotu oma jaettu kalenteri on kuitenkin joissain tapauksissa toimiva. Google-kalenteri on erittäin hyvä käyttöliittymä monellekin ajastettavalle toiminnolle, koska se on helppokäyttöinen, hallittavissa monesta laitteesta ja paikasta, helposti jaettavissa eri käyttäjille ja helposti integroitavissa järjestelmään.

Muut pistorasioiden ohjaukset


Muihin langattomaan pistorasioihin voidaan kytkeä:
  • ulkovalot, jotka syttyvät ulkona vallitsevan valoisuuden mukaan (sammuvat aamuyön tunneiksi)
  • kyntteliköt sisällä, syttyvät valoisuuden tai huoneessa liikkumisen mukaan
  • työhuoneen jalustatuuletin, joka käynnistyy, kun huoneessa on ihminen ja huoneen lämpötila on tarpeeksi korkea

Muut yksiköt


Ulos tulee ainakin yksi yksikkö, joka mittaa lämpötilaa ja valoisuutta.

Makuuhuoneen liukuovikaapistoon on tarkoitus laittaa LED-valonauha, kuten työhuoneen varastokaapissakin on. Työhuoneesta saatujen kokemusten perusteella yksinkertainen liiketunnistin-rele-systeemi ei ehkä ole makuuhuoneeseen paras mahdollinen, koska toisinaan liiketunnistin sytyttää valon ilman syytä. Makuuhuoneessa tämä olisi kiusallista, jos kaapin ovi on jäänyt raolleen ja on nukkumassa. Tähänkin edullinen ja toimiva ratkaisu on oma automaatiojärjestelmän yksikkö. Voi kuulostaa järeältä ratkaisulta vaatekaapin valaistukseen, mutta kustannukset ovat pienet ja toiminnallisuus omaa luokkaansa. Silloin, kun nukutaan (huoneessa on pimeää ja kellonaika on otollinen), kaappiin ei syty täysi valaistus, vaan valaistuksen syttyminen vaatii pari sekuntia pidemmän liikkeen havaitsemisen ja valaistus syttyy himmeäksi. Tällainen tilanne on esim. aamulla, kun J on lähdössä töihin ja etsii vaatteita, ja minä vielä nukun. Päivällä valaistus voi syttyä täydelle teholle heti, kun liikettä havaitaan, niin käytettävyys säilyy hyvänä.

Tuulikaapin valaistus voisi olla hyvä liittää järjestelmään, tai ainakin kytkeä liiketunnistimelle. Usein kädet on täynnä, kun tulee tai lähtee, jolloin valojen soisi syttyvän ja sammuvan itsestään.

Eteiskäytävän valaistusta epäsuoralla valaistuksella ja automatiikalla täytyy pohdiskella, kunhan saan tästä kokemuksia työhuoneestani.

Murtohälytys olisi liitettävissä järjestelmään melko helposti, jos järjestelmä saadaan ymmärtämään, milloin asunnossa on asukkaita ja milloin ei. Tätäkin täytyy pohdiskella myöhemmin lisää.

Ohjauspaneelit


Asuntoon tarvitaan muutamia ohjauspaneeleita, joiden avulla järjestelmää voi hallita manuaalisesti. Paneelit voivat olla omia yksiköitään, jolloin ne toimivat vain käyttöliittymänä tai sopivissa paikoissa ne voivat olla yhdistettyinä huoneessa muutenkin olevaan yksikköön, jossa on kiinni esim. antureita. Kaikkiin ohjauspaneeleihin tulee todennäköisesti ainakin lämpötilanmittaus, koska se ei paljoa tilaa vie. Ohjauspaneelit rakennetaan mahdollisimman pienestä Arduinosta (Pro Mini) sekä noin 2,4" LCD-kosketusnäytöstä. Näistä ns. isoista kosketusnäytöistä minulla ei ole aiempaa kokemusta, joten nähtäväksi jää, kuinka helppoa tai vaikeaa niiden ohjaaminen Arduinolla on. Ohjauspaneeleilla on tarkoitus näyttää huoneesta riippuen tarpeellisia tietoja ja tarjota mahdollisuus automaatiojärjestelmän manuaaliseen ohjaamiseen tai asetusten muuttamiseen. Paneelista saa järjestelmän myös automaattitilaan, mikä on järjestelmän normaali toimintatila.

Työhuoneeseen tulee ehdottomasti oma ohjauspaneeli, joka sijaitsee työpöydällä koko ajan silmien alla. Sen kautta voidaan ohjata ainakin työhuoneen valaistusta, sälekaihtimia ja mahdollisesti mm. auton lämmitystä. Näytöllä näytetään myös postilaatikon tila sekä muuta informaatioa, kuten ulkolämpötila jne. Myös järjestelmän havaitsemista vioista tai varoituksista (alhainen akkujännite jollakin akulla toimivalla yksiköllä jne.) tulee ilmoitus tälle näytölle, jolloin pystyn reagoimaan niihin.

Keittiöön tulee ohjauspaneeli, jonka sijaintia en ole vielä miettinyt. Siinä näkyy ainakin jääkaapin lämpötila (jota voi myös siitä säätää), postilaatikon tila sekä auton lämmityksen manuaalinen säätö.

Yhtenä ohjauspaneelina toimii tavallaan myös autossa sijaitseva yksikkö, josta kerroin jo aiemmin.

Sitten vain tekemään...


Tällainen automaatiojärjestelmä antaa käytännössä loputtomat mahdollisuudet kodin hallintaan. Netin kautta voi esim. sytytellä (esim. vaatekaapin :D) valoja, säätää jääkaapin lämpötilaa, ajastaa auton lämmityksen kun tulee kaverin kyydillä kotiin ja täytyy heti lähteä omalla autolla jonnekin... Lisäksi esim. kännykään saa reaaliajassa tietoja monista eri kohteista, esim. jääkaapin lämpötilasta tai pesukoneen vesivuodosta. Lämpötilojen, postin saapumisajan jne. tilastoinnille aukeaa myös hyvä mahdollisuudet. Lopulta täytyy vain miettiä, mitä kaikkea on tarpeen tehdä ja saada tietää. Ideoita jatkokehitykseen syntyy varmasti paljon, kun alan toteuttaa järjestelmää (ja vastustelusta huolimatta J huomaa, kuinka kätevä se on).

Automaation integrointi olemassa olevaan asuntoon, johon ei ole tarkoitus tehdä remonttia, on jonkin verran haasteellista. Tarkoitus on kuitenkin pyrkiä mahdollisimman siistiin ja huomaamattomaan järjestelmään. Lisäksi järjestelmä tulisi olla mahdollisimman helposti purettavissa ja siirrettävissä toiseen asuntoon. Itsestään selvää lienee, että järjestelmän tulisi olla myös helposti käytettävissä, hallittavissa ja laajennettavissa. Katsotaan, mitä syntyy.

Ei kommentteja:

Lähetä kommentti