1. oktobra, 2017

Za boljši spanec

Revija logo se - Za boljši spanecAvtorji: Grega Močnik, Uroš Berglez, Danilo Zimšek
E-pošta: grega.mocnik@um.si

Vsak od nas se zaveda, da je kvaliteta zraka pomemben dejavnik, ki vpliva na naše počutje in tudi na naše zdravje. Mesta po svetu počasi uvajajo merjenja kvalitete zraka. Kaj pa zrak v notranjih prostorih? Je ta primerne kakovosti?

256 47 01 300x147 - Za boljši spanec

Slika 1: Referenčni model z skladom MQTT

Ljudje dihamo, vdihujemo in izdihujemo. To počnemo s takšno gotovostjo kot sonce vzhaja in zahaja. Vprašanje je, kaj je tisto kar vdihavamo? Vsako leto po podatkih svetovne organizacije za zdravje zaradi onesnaženosti zraka v prostorih ali izven njih umre okoli 5,5 milijona ljudi.

Zaradi vedno večjega zavedanja onesnaženosti zraka nekatera mesta merijo onesnaženost zraka z uporabo koncepta interneta stvari. Gre za omrežja senzorjev, ki zbirajo podatke in jih pošiljajo. Z uporabo teh podatkov lahko v mestih analiziramo stopnjo onesnaženosti posameznih področij, sledimo spremembam v kvaliteti zraka skozi čas (dnevno in letno) in tudi identificiramo onesnaževalce. Na podlagi iz analize pridobljenih podatkov, lahko mesta z določenimi ukrepi zmanjšajo onesnaževanje in posledično izboljšajo kvaliteto zraka, ki ga dihajo prebivalci mesta.

Vendar pa prebivalci mest večino, okoli 90 odstotkov časa, preživijo v zaprtih prostorih, v stanovanjih in v pisarnah. Pomemben dejavnik za naše zdravje je torej tudi zrak v zaprtih prostorih, zlasti če upoštevamo čas, ki ga tam preživimo. Za škodljiv vpliv primesi v zraku je namreč ključnega pomena prav to, koliko časa smo onesnaženemu zraku izpostavljeni. Nekatere študije kažejo, da je zrak v zaprtih prostorih dva- do petkrat bolj onesnažen kot tisti zunaj.

Pri ugotavljanju kvalitete zraka, tudi v zaprtih prostorih so nam lahko v pomoč senzorji in koncept interneta stvari. Na trgu se dobijo senzorji, s kombinacijo katerih lahko vsaj delno nadzorujemo kvaliteto zraka v zaprtem prostoru. Med najbolj pogostimi onesnaževalci zraka v zaprtih prostorih namreč najdemo dušikov oksid, ogljikov monoksid, tobačni dim, organske pline, torej snovi, katerih vsebnost v zraku lahko merimo z elektronskimi senzorji.

Za lažji spanec doma in za boljši zrak na delovnem mestu lahko na dokaj enostaven način poskrbimo s kombinacijo primernih senzorjev, ki jih povežemo v omrežje interneta stvari. Omrežju senzorjev z glavnim vozliščem dodamo sposobnost odločanja, opozarjanja in ukrepanja ob preseženih vrednostih. V nadaljevanju bomo opisali eno od možnosti implentacij omenjenih funkcionalnosti. Dodali bomo še zmožnost analiziranja parametrov, ki vplivajo na udobje, kot sta temperatura in vlažnost v prostoru.

Komunikacija med vozlišči

256 47 02 300x151 - Za boljši spanec

Slika 2: Primer komunikacije MQTT odjemalec strežnik

Internet stvari je koncept v omrežje povezanih naprav. Za komunikacijo med vozlišči interneta stvari, se lahko uporabijo različni protokoli. Eden izmed bolj razširjenih, prilagodljivih in dobro podprtih s strani proizvajalcev senzorjev, je MQTT.

MQTT je sporočilni protokol, ki je oblikovan prav za nizko energijske naprave z malo pomnilniškimi in procesorskimi zmogljivostmi, zaradi česar je idealen za uporabo v omrežjih interneta stvari. Namenjen je predvsem za neposredno komunikacijo med dvema napravama.

V telekomunikacijah pogosto opišemo komunikacijo med napravama in protokole, ki se pri tem uporabljajo, s pomočjo protokolnega sklada. Protokoli, ki se uporabljajo pri komunikaciji, so razvrščeni v vrsto. Paketi protokolov na višjem nivoju enkapsulirajo pakete iz nižjega nivoja. Tako govorimo o slojih protokolnega sklada. Če imajo bolj robustni komunikacijski protokoli sedem slojev v modelu, pri MQTT poznamo samo štiri. Sloji, ki se uporabljajo pri komunikaciji MQTT so predstavljeni na sliki 1. Kot lahko iz slike vidimo protokol MQTT deluje na aplikacijskem sloju, ki uporablja TCP ali UDP (MQTT-SN) sklad na transportnem sloju. Na fizičnem sloju uporablja ponavadi nizko energijske prenosne medije (brezžični prenos podatkov), kot je standard 802.15.4 in podobni.

Komunikacija pri protokolu MQTT poteka po modelu odjemalec – strežnik, kjer se senzor (odjemalec) poveže na strežnik, ki mu v protokolu MQTT pravimo posrednik (angl.: broker). Pri povezavi med senzorjem in posrednikom se na transportnem sloju uporabi protokol TCP.

Novo sporočilo z neko vrednostjo, ki ga odjemalec pošlje posredniku se zapiše kot tema (angl.: topic), vrednost se zapiše kot parameter te teme. Vrednost vsakega nadaljnjega sporočila z istim naslovom teme se zapiše kot naslednji parameter v tej temi.

Vsak odjemalec, ki je prijavljen na temo pri posredniku, bo sproti prejel informacije o parametrih, ki so shranjeni v tej temi. Takšen način komunikacije prikazuje slika 2.

Na sliki 2 je predstavljen primer, ko odjemalec A pošlje posredniku podatek ”Temperatura” s parametrom ”22.5”. Odjemalci B in C so prijavljeni na temo Temperatura zato lahko prejmejo parameter, ki se je pojavil v prijavljeni temi. Odjemalci so lahko prijavljeni v več tem hkrati. Izjema je odjemalec D, ki pa ni prijavljen na temo Temperatura zato ni deležen informacij o parametrih v tej temi.

Kljub temu, da je protokol MQTT namenjen napravam z nizko procesorsko in energijsko zmogljivostjo, se lahko zgodi, da želimo prenašati daljša sporočila. Slednje je pri uporabi protokola MQTT lahko težava, zaradi uporabe protokola TCP na transportnem nivoju. Protokol, ki premosti to oviro je MQTT-SN, ki pa uporablja za komunikacijo na transportnem sloju protokol UDP.

Strežnik

256 47 03 300x225 - Za boljši spanec

Slika 3: Kartični računalnik Raspberry PI v vlogi strežnika za spremljanje kakovosti zraka

Povezani senzorji skrbijo za zbiranje in pošiljanje podatkov, za obdelavo teh podatkov ter za odločanje in ukrepanje ob prekoračenih vrednostih pa skrbi strežnik. Ta analizira podatke, ki jih prejme od vozlišč na na podlagi te analize sprejme odločitev o ukrepanju. Poleg tega ima strežnik tudi spletni vmesnik in aplikacijski programski vmesnik.

Strežnik navadno ponuja spletni vmesnik, ki predstavlja uporabniški vmesnik za pregled in upravljanje z napravami povezanih v omrežje. Tako lahko preko njega spremlja trenutne vrednosti za posamezne parametre zraka, statistiko spreminjanja parametrov skozi želeno časovno obdobje. Poleg tega lahko preko spletnega vmesnika opravimo tudi začetno nastavitev omrežja in naprav. Tu gre predvsem za dodajanje novih senzorjev ter njihovo poimenovanje, na podlagi česar se zgradi uporabniški vmesnik za pregledovanje omrežja in podatkov senzorjev.

Aplikacijski programski vmesnik strežnika služi za interakcijo drugih naprav z omrežjem. Vmesnik lahko uporabljajo tako mobilne aplikacije na mobilnih napravah za pregled vrednosti senzorjev, kot tudi morebitne druge naprave v omrežju za pridobivanje podatkov. Primeri takih naprav so na primer namenski prikazovalniki za prikaz kvalitete zraka v prostoru.

Za implementacijo v domačem okolju je primeren strežnik, ki poleg opisanih funkcionalnosti omogoča enostavno nastavitev in vzpostavitev omrežja IoT, hkrati pa je cenovno ugoden. Zato naša predlagana implementacija, prikazana na sliki 3, sestoji iz cenovno ugodnega kartičnega računalnika Raspberry PI, na katerega namestimo odprto kodno programsko opremo HomeAssistant.

HomeAssistant je odprtokodna programska oprema, ki je relativno preprosta za namestitev in uporabo, zato je pravšnja za implementacijo doma, kjer navadno želimo čim manjše stroške vzdrževanja sistema.

Po namestitvi programa HomeAssistant je omrežje potrebno nastaviti. V postopku programski opremi podamo informacijo o tem, katere naprave želimo dodati v omrežje in kako naj komunicira z njimi. Nadalje določimo še postopke, ki jih naj samodejno izvede, če je zadoščeno nekim pogojem, na primer vklopi luč, ko sonce zaide ali vklopi prezračevanje, ko je kvaliteta zraka slaba. Takšnemu načinu delovanje pravimo avtomatizacija. Program HomeAssistant nastavimo preko datotek z zapisom YAML (glej oblaček YAML). Za vsako napravo, ki jo želimo vključiti v omrežje, je potrebo v datoteko configuration.yaml dodati programsko kodo. Ta določa protokol po katerem vozlišče komunicira z ostalimi vozlišči, dodatne parametre za povezavo, ime vozlišča in enota vrednosti pridobljenih iz vozlišča. Za dodajanje ali odstranjevanje senzorjev je potrebno samo ustrezno urediti opisano datoteko.

YAML

YAML je ljudem prijazen jezik za serializacijo podatkov za vse programske jezike. Široko je uporabljen za konfiguracijske datoteke, a je lahko splošno uporabljen vedno, kadar neka aplikacija shranjuje podatke npr. za podatke razhroščevanja. YAML se pogosto uporablja za podobne aplikacije kot XML, a je bolj minimalen. Soroden je tudi z formatom za serializacijo podatkov JSON, le da JSON namesto zamika uporablja oklepaje. Poleg minimalne sintakse je njegova prednost predvsem zmožnost izražanja zapletenejših konfiguracij.

Primer implementacije

256 47 04 300x274 - Za boljši spanecImplementacija koncepta interneta stvari sestoji iz senzorjev (z nadzornimi moduli) in osrednjega vozlišča ali strežnika.

Pri izboru senzorjev za zajem podatkov smo upoštevali več dejavnikov. Najpomembnejši dejavnik je zagotovitev možnosti zajema vseh potrebnih meritev, hkrati pa je pomemben dejavnik tudi cena. Pri izboru elektronskih komponent upoštevamo še točnost in ločljivost, ki je prilagojena namenu uporabe (območje delovanja in največje točnosti prilagojenih za bivalna okolja).

Za zajem temperature in vlažnosti zraka smo uporabili senzor SHT21. Gre za senzor tipa CMOS z visoko stopnjo natančnosti merjenja temperature. Senzor ponuja za komunikacijo z nadzornim modulom digitalni serijski vmesnik in vmesnik I2C.

Zajem vsebnosti posameznih plinov v zraku smo izvedli s senzorjem MQ135. Senzor meri vsebnosti strupenih plinov, ki so prisotni v pisarnah in domovih: amoniak, dušikovi oksidi, alkohol, benzen, dim, ogljikov dioksid in drugi. Senzorski sloj sestoji iz kositrovega dioksida (SnO2), ki ima manjšo prevodnost od čistega zraka. Zaradi onesnaženosti zraka se njegova prevodnost zviša. Senzorji imajo grelni element in upor, ki reagira na pline. Napetost senzorja preberemo preko padca napetosti na senzorju. Za napajanje senzorja se uporablja napetost 5V, podatke pa pošilja na analogni in digitalni izhod.

Senzor je osnovni gradnik inteligentnega doma in zajema podatke, ki predstavljajo vir informacij za pametno krmiljenje doma. Senzor ali več senzorjev je povezano na nadzorni modul, ki skrbi za pošiljanje podatkov proti strežniku. Skupaj nadzorni modul in skupek senzorjev tvorita vozlišče.

Zaradi ugodne cene in dobre tehnične podpore smo za implementacijo pridobivanja podatkov iz senzorjev ter njihovo posredovanje v oblak izbrali NodeMCU (glej oblaček NodeMCU. Povezavo senzorja in nadzornega modula prikazuje slika 4.

NodeMCU

256 47 05 300x200 - Za boljši spanec

Slika 5: Strojna oprema NodeMCU – razvojno orodje verzija 1.0

NodeMCU je odprto kodna platforma IoT. Vsebuje strojno programsko opremo in strojno opremo prikazano na sliki 5. Strojna programska oprema uporablja skriptni jezik Lua, s pomočjo katerega sprogramiramo želeno funkcionalnost na strojno opremo.

Lua v portugalščini pomeni luna. Lua je enostaven, dinamičen in zmogljiv skriptni programski jezik. Lua ima preprost aplikacijski programski vmesnik za jezik C, zato je programiranje funkcionalnosti preprosto in primerno tudi za začetnika v programiranju. Omogoča tudi razširljivost z zunanjimi knjižnicami.

Ta implementira nadzorni modul. Za komunikacijo s senzorji nudi več komunikacijskih vmesnikov (IC), za komunikacijo z oblačno storitvijo pa povezljivost preko brezžične povezave WiFi.

Nadzorni modul se ob prvi uporabi poveže na omrežje WiFi, ki je namenjeno za omrežja IoT. Modul z uporabo protokola MQTT pošilja podatke na oblak. Blok shema celotnega sistema je prikazana na sliki 6.

Pošiljanje podatkov se zaradi varčevanja z energijo ne izvaja ves čas, ampak z določenim časovnim intervalom, v našem primeru na vsakih 5 minut. Interval lahko po potrebi prilagajamo. Manjši kot bo interval, bolj natančno informacijo bomo imeli o kvaliteti zraka, a poraba energije nadzornega modula bo večja. To je še posebej pomembno, kjer so nadzorni moduli baterijsko napajani.

Pred pošiljanjem podatkov, jih nadzorni modul zakodira. Kodiranje je osrednja naloga nadzornega modula, ki zagotovi robustnost in transparentnost prenosa podatkov. Podatki so zakodirani v obliki, kot jo prikazuje tabela 1. Na posredniku so zapisane teme, na katere senzorji objavijo podatke. Podatki, ki jih nadzorni modul pridobi od senzorja, se zakodirajo v vrednosti znotraj sporočila MQTT. V sporočilo se zapiše tudi tema in drugi parametri, razvidni iz primera, sporočila MQTT, ki ga prikazuje tabela 1. Tema vsebuje informacijo o fizični lokaciji senzorja in tipu podatka pridobljenega od senzorja.

Del paketa Vsebina
 ID številka paketa 1541
 Tema AIRQ/dnevna_soba/Temp
 Potrjevanje prejema 0
 Retain flag false
 Vrednost 23.5
 Oznaka ponavljanja false

Tabela 1: Oblika sporočila MQTT

256 47 06 300x114 - Za boljši spanec

Slika 6: Blok shema omrežja IoT za nadzor kakovosti zraka

Tabela 1 prikazuje primer sporočila MQTT za podatek o temperaturi, pridobljenega od senzorja lociranega v dnevni sobi.

Nadzorni modul na strežnik pošlje podatek, ki vsebuje vrednost o vsebnosti posameznih plinov, kar pomeni, da se končna obdelava podatkov izvrši šele na strežniku. Zajeti podatki z vrednostjo vsebnosti plinov v ozračju, temperaturo in vlago se obdelajo in se na podlagi rezultatov določi kakšna je vrednost kakovosti zraka.

V primeru prikažemo spremljanje količine ogljikovega dioksida v zraku, saj je ta glavni pokazatelj onesnaženosti zraka v zaprtih prostorih. Kvaliteto zraka smo določili na podlagi izmerjenih vrednosti, ki smo jih razvrstili v razrede, kar prikazuje tabela 2.

vsebnost kakovost zraka
 <450 zelo dobra
 451 – 500 dobra
 501 – 550 slaba
 551 – 600 zelo slaba

Tabela 2: Razredi kakovosti zraka

Razvrstitev v razrede je potrebna za prikaz stopnje kakovosti zraka na uporabniškem vmesniku, kjer smo stopnjo onesnaženosti ponazorili tudi z barvnim grafikonom.

Na podlagi stopnje onesnaženosti zraka, lahko določimo samodejna dejanja, ki jih naj sistem izvede. Če je na primer kakovost zraka slaba, lahko sistem samodejno vklopi prezračevalni sistem. Za dosego take avtomatizacije, moramo v omrežje dodati vozlišča, ki jim pravimo aktuatorji. Ti lahko izvajajo določena dejanja, na primer vklapljajo in izklapljajo naprave.

Programiranje nadzornega modula

256 47 07 300x191 - Za boljši spanec

Slika 7: Zunanji izgled senzorskih vozlišč – levo prednja stran, desno zadnja stran

Implementacija programske rešitve nadzornega modula je vsebovala podatkovni vmesnik 1-Wire za komunikacijo s senzorjem za temperaturo in vmesnik za odčitavanje analognih vhodov za zaznavanje nivoja napetosti na izhodu iz senzorja za pline s katerim posredno določamo kakovost zraka.

Implementirati je bilo potrebno tudi algoritem, za povezavo prek Wi-Fi s sporočilnim protokolom MQTT. Ta algoritem skrbi za pravilno kodiranje podatkov in ustrezno pošiljanje sporočil prek omrežja Wi-Fi. Implementacija protokola MQTT se izvede tako, da se razvojna ploščica nodeMCU poveže na izbrano Wi-Fi dostopno točko in na določeno temo na izbranem naslovu IP objavlja podatke. Na izbranem naslovu IP je posrednik, ki podatke posreduje ostalim napravam, ki so prijavljene na to temo.

sensor:
platform: yr
platform: mqtt
state_topic: “AIRQ/Prostor/Parameter”
name: ”$Prostor$ $Parameter$”
unit_of_measurement: ’ X’

Tabela 3: Primer konfiguracijske datoteke.

256 47 08 207x300 - Za boljši spanec

Slika 8: Tloris objekta s postavitvijo senzorjev

V našem primeru je posrednik HomeAssistant, ki ima že implementiran MQTT sklad in prijazen uporabniški vmesnik na katerem se interaktivno prikazujejo podatki. Ker je HomeAssistant osrednji strežnik in ima podporo za več različnih komunikacijskih skladov, interaktiven uporabniški vmesnik in podporo za avtomatizacijo različnih procesov ga je potrebno pravilno nastaviti. Kot smo že omenili, konfiguracija osrednjega strežnika poteka v konfiguracijskih datotekah tipa YAML. Izsek iz konfiguracijske datoteke je predstavljen v tabeli 3, kjer se določi posrednik MQTT in teme na katere se bodo podatki objavljali. V vrstici state_topic je zapisan primer imena teme, ki se razlikujejo po prostorih, primer za določen plin za dnevno sobo je “AIRQ/dnevna_soba/CO2” in za temperaturo v avli “AIRQ/dnevna_soba/Temperatura”.

Slika 7 prikazuje zunanji izgled senzorja. Senzorji so postavljeni po stanovanju na takšnih mestih, kjer menimo, da je kakovost zraka v tistem delu najslabša in hkrati predstavlja čim več prostora. Načrt, ki označuje kako so senzorji razporejeni po domu predstavlja slika 8. Senzorji so na sliki označeni z modrimi plamenčki.

Prikaz kakovosti zraka v mobilni aplikaciji je predstavljen na podoben način, v tem primeru se plamenčki obarvajo v primerno barvo, ki predstavlja kakovost zraka. Barvna lestvica je sestavljena iz štirih barv (zelena, rumena, oranžna in rdeča), ki se na mejnih vrednostih med seboj prelivajo.

Za konec

Naprave, ki določena opravila opravijo namesto ljudi vse bolj postajajo del našega vsakdana. Pomembno pa lahko prispevajo tudi k udobju našega bivanja. Uravnavanje prezračevalnih sistemov je samo eno od področij, kjer lahko s poceni implementacijami pridemo o sistemov, ki lahko bistveno izboljšajo okolje v katerem živimo. Morda res niso tako atraktivne, kot roboti iz fantazijskih filmskih uspešnic, ki odnašajo in prinašajo hrano, pijačo in drugo, a morda pomembneje izboljšujejo naše življenje, skrbijo za naše zdravje in dobro počutje in morda pripomorejo h kakšni lažje prespani noči.

www.svet-el.si
Tags: