Hankin muutama viikko sitten ioBridge-moduulin ja siihen liitettävät lämpötila-, kosteus- ja valoisuussensorit. Nyt voin seurata olohuoneeni olosuhteita mistä tahansa!
ioBridge-moduuli on modeemiin liitettävä laite, johon voi liittää 1-4 sensoria. Sensorit liitetään moduulissa oleviin liittimiin, jonka jälkeen niiden mittaama data näkyy moduulin ”kanavilla” 1-4. Tämän jälkeen mittaustuloksiin käsiksi ioBridgen verkkopalvelun kautta. Sensoreiden tilalle voi kytkeä myös muita analogisia tai digitaalisia laitteita, esim. servoja, X10-ohjaimia tai vaikka Arduinon, joita voi sitten ohjata tai seurata webin kautta.
Ensimmäinen projektini oli lämpö/kosteus/valoisuusloggerin rakentaminen kotiini. Tällaisella voi seurata esim. asuintilojen olosuhteita tai vaikka pakastimen lämpötilaa. Tässä yhteenveto mitä olen oppinut ioBridgen tekniikasta tähän mennessä. Virallisessa ohjewikissä on varsin kattavia ohjeita.
Tiedot talteen API:n kautta
Moduulin dataan pääsee käsiksi kahdella tavalla: ohjelmointirajapinnan (API) ja ioBridgen kojelaudan (dashboard) kautta. Käytin näistä itselleni tutumpaa eli ohjelmointirajapintaa. Oman moduulin tietoihin pääsee käsiksi antamalla rajapinnalle oman API key:n.
Tein skriptin, joka käy säännöllisesti hakemassa uusimman sensorien mittaaman datan rajapinnan kautta JSON-muodossa ja tallentaa sen MongoDB-tietokantaan (joka sopii mainiosti juuri tällaiselle datalle). Skripti ajetaan kymmenen minuutin välein cronjobilla. Tietokannassa olevan datan perusteella voi sitten generoida monenlaisia kaavioita tai tilastoja. Kokosin tätä varten tekemäni työkalut Githubiin muidenkin käytettäväksi.
Moduuliin ei siis pääse suoraan käsiksi, vaan sitä käytetään aina ioBridgen palvelimen kautta. Tämän ansiosta käyttäjän ei tarvitse välittää esim. muuttuvista IP-osoitteista. Laitteen voi myös siirtää vaikka kokonaan toiseen verkkoon ilman että asetuksia pitäisi muuttaa. (Uuden paikan nimi tai kuvaus kannattaa kirjata kojelautaan, sillä tällöin se tallentuu myös tietokantaan.)
Huomioonotettavaa API:n käytössä
Jos verkkoyhteys ei toimi oman ja ioBridgen palvelimen välillä, saattaa skripti hakea tyhjän JSON:in. Datan oikeellisuus on siksi aina tarkistettava ennen kun sitä käytetään tai tallennetaan. Oikeellisuuden voi tarkistaa esim. tarkistamalla onko [module][status]-kenttä olemassa.
Jos verkkoyhteys ei toimi moduulin ja ioBridgen palvelimen välillä, palautuu JSON:issa virheellisiä arvoja. Tämän takia kannattaa aina tarkistaa että [module][status]-kentän arvo on ”Online”. Offline tarkoittaa että arvoihin ei voi luottaa.
Oma Saunalahden ADSL-yhteyden varassa toimiva moduulini on offline-tilassa 1-4 kertaa vuorokaudessa (kun dataa haetaan 10 min välein). En tiedä johtuvatko katkokset Saunalahdesta, ioBridgen palvelimesta vai jostain muusta.
Kojelaudan käyttö
Toinen tapa päästä käsiksi dataan on käyttää ioBridgen kojelautaa. Moduulille voi luoda sääntöjä, esim. määrätä sen lähettämään sensorin arvo palvelimelle minuutin välein. ioBridgen palvelimen voi sitten säätää reagoimaan moduulista tulevaan dataan, esim. lähettämään sen sähköpostitse tietyn raja-arvon ylittyessä. Näin dataa pääsee käyttämään ilman omaa ohjelmointityötä.
Sääntöjä ja toimintoja luodaan kojelaudassa wizard-tyyppisellä työkalulla. Koska vaihtoehtoja on paljon, ei oikean toiminnon löytäminen kuitenkaan ole aina helppoa.
API:n avulla tekemäni toiminnon voisi tehdä kojelaudan avulla seuraavasti:
1) Määrää moduuli lähettämään data palvelimelle määrätyin väliajoin:
1B) Tee moduuliin Onboard Rule ”Push Update Rule” > Analog Input (Push at Interval).
1B) Valitse kanava ja määrittele väliaika sekunteina.
1C) Lopuksi Sync Rules, jolloin sääntö päivitetään moduuliin.
2) Määrää palvelin tekemään saapuvalle datalle jotain
2A) Tee Server Action ”Analog Input Post”
2B) Säädä Trigger value sellaiseksi, että Action suoritetaan aina kun haluat.
2C) Täytä kentät esim.
http://posttestserver.com/post.php?dir=iob
humidity=%%input%%
3) Tee skripti, joka ottaa POST-datan vastaan ja tekee sillä jotain (esim. tallentaa tietokantaan)
Nyt moduuli lähettää väliajoin datan ioBridgen palvelimelle, joka lähettää sen edelleen valitsemaasi paikkaan. Jos haluat tehdä datalla jotain vain kun tietyt ehdot täyttyvät (esim. lämpötila on korkeampi kuin määrätty arvo), voit tehdä tämän joko Server Actionissa tai omassa skriptissä.
Tällä mallilla on joitakin plussia ja miinuksia suhteessa API:iin
Plussia
+Toimintoja pääsee hallitsemaan Dashboardin kautta.
+Server Actionien avulla voi luoda toimintoja (esim, sähköpostihälytyksiä) ilman omaa ohjelmointia
Miinuksia
–Sääntöjen ja toimintojen virittäminen on työlästä, etenkin jos haluaa saada datan useammalta kanavalta. Jokaiselle on tehtävä oma sääntö ja toiminto. Jos näitä haluaa muuttaa jälkikäteen, on vanha sääntö poistettava ja sen tilalle luotava uusi.
–Moduuli voi lähettää vain kanavan arvon ja aikatiedon. Muihin tietoihin (esim. raaka-arvoon tai paikkatietoon) ei pääse käsiksi.
ioBridgen kojalauta: kanavien data ja asetukset. Lämpötilasensori on tässä korkea koska sensori on digiboksin päällä: lämpötilasta voi seurata milloin boksi on käynnissä (esim. toimiiko ajastettu tallennus).