Seekord uuest projektist.

Smart-Home Touchscreen

Idee

Et majal oli DSC signalisatsioonisüsteem juba varasemalt paigaldatud, koos liikumis- ja usteanduritega siis tahtsin hirmsasti, et ma ei peaks seda koledat valget nuppudega valvepulti enam kunagi kasutama. Aga ma ei tahtnud kogu valvesüsteemi välja vahetama hakata. Alguses mõtlesin, et prooviks kuidagi andurite kaablid Raspberry külge ühendada. See kõlas natukene turvariskina ja samuti vajanuks üsna sügavuti elektroonikasse uppumist ja erinevate komponentide tellimist, jootmist… Ühesõnaga olnuks väga suur projekt.

Sai natukene rohkem uuritud ja leidsin asja nimega AlarmDecoder (link poodi), millel on Raspberry külge ühenduv moodul ja DSC, Ademco / Honeywelli signalisatsioonisüsteemidega ühilduvus. AD2PI nimeline toode maksab ~65€ ja kuna Euroopa mandrilt teda leida ei õnnestunud, tuli natukene maksta ka tolli. Transpordi ja maksudega jõudis ta mõned eurod alla 100 kätte. Odavam, kui mistahes muu lahendus. Lisaks – kogu vana valvesüsteem jääb töökorda ja häda korral (misiganes rike) saab siiski kasutada, valget, klassikalist nuppudega paneeli. Samuti, kuna originaal valvesüsteem käib ka aku pealt ja seda Raspberry-t ma aku peale ehitada ei kavatsenud, siis jääb originaal süsteem toimima ka voolukatkestuse korral.

Mida AD2PI teeb on sisuliselt lihtsalt signalisatsioonisüsteemile, toetatud serial interface läbi, käskude andmine ja sündmuste kuulamine ning pakub oma API-t sellega suhtlemiseks. Nö. “proxy” oma custom lahenduse ja valvesüsteemi vahel. Põhimõtteliselt, kui ma panen Raspberry kaudu maja valvesse, siis tegelikult juhtub taustal sama asi, kui ma sisestaks käsitsi oma PIN koodi originaal paneelist.

Ülesehitus ja tehniline pool

Minu targa kodu jaoks on kasutusel 3 Raspberry PI-d:

Esimesena Raspberry PI v3, mis on paigutatud koridori seina sisse ja mille ette on liimitud seinale puutetundlik ekraan ja ühenduses WiFiga on sisseehitatud WiFi abil. Tarkvara poolest jookseb Raspbian, LXDE ja kioski režiimis Firefox mis manab isetehtud kasutajaliidest, mis omakorda WebSocketiga Node.JS backendi küljes. Enne tänast jooksis seal paar kuud Google Chrome aga avastasin, et see kasutab Firefoxist oluliselt rohkem nii protsessorit kui mälu. Võrdluseks, Google Chrome kasutas stabiilselt ca 45% CPU-d ja 25% mälu. Firefox kasutab täpselt sama asja tehes 12% CPU-d ja 15% mälu. Wow… Firefox on vahepeal metsikult arenenud. Märgin ära, et suurima koormuse tekitaja on 5fps kaamerapildi näitamine. Node.JS backend suhtleb kahe järgmise PI-ga. Välistemperatuur ja ilmainfo tuleb OpenWeatherMap API kaudu.

Teiseks, Raspberry PI v1 koos eelnevalt mainitud AD2PI mooduliga. See PI on valvekapi külge ühendatud ja vähe korralikum WiFi pulk on ka küljes, sest PI1-l sisemine kiip puudub ja kuna valvekapp on üsna peidus, siis parem korralikum pulk, et WiFi sealt kinni püüda. Selle peal jookseb AlarmDecoderi enda moditud Raspiani image (lihtsalt mõned pakid eelinstalleeritud jne, et AD2PI töötaks out-of-box). Et mulle nende pakutud API niiväga ei meeldinud, lülitasin selle välja ja taustal käib ser2sock, mis kõik AD2PI serial sündmused TCP kaudu nähtavaks teeb. Ser2sock kaudu suhtles ka AD2PI enda API lahendus ja oli eelinstalleeritud/seadistatud. Seega tarkvara poolest on ta minu poolt näppimata, lihtsalt ressursi säästmise mõttes lülitasin lihtsalt nende veebiserveri kinni.

Kolmandaks, Raspberry PI v2, mille järel on valvekaamera ja temperatuuri andur. Tarkvara Rasbian ja motion. Ei pidanud ka siin väga vajalikuks mingit custom tarkvara ehitadagi, sai lihtsalt üks croni task iga minut temperatuuri temp.txt faili kirjutama pandud, mida siis esimene Raspberry sealt samuti iga minuti tagant vaatamas käib.

Mugavus

Mugav valvekoodide haldus: Kui mul on originaalpaneeli programmeeritud üks kood, ütleme 1234, siis Raspberry kaudu saadan ma samuti koodi 1234. Mida ma aga lisaks teha saan, on mappida enda interfaces lisakoodid. Näiteks sisestades ekraanilt 5555, saadan taustal valvesüsteemile ikkagi 1234. Koodide loomine on oluliselt lihtsam ja mugavam kui originaalsüsteemi neid sisestada.

Kasutajaliides: Kui midagi on juhtunud, vaja valvesse panna aga kuskil on midagi lahti või toimub mingi liikumine siis originaalpaneel vilgutab erinevaid LED-e. Et mul on kasutuses hunnik tsoone (liikumisandurid, uste andurid, suitsuandurid) siis kes kurat viitsib neid LED-e tõlgendada ja paberist näpuga vaadata, mis siis toimub või mille pärast signalisatsioon tööle läks. Tegin omale mappingu ja nüüd näitab kasutajaliides kenasti: liikumine garaažis; esiuks avatud jne. Kui süsteem on häiresse läinud, näen samuti ära kellaajaliselt, mis ja kus.

Laiendatavus: Ehk siis, ehita kõik ideed ise ära. Mina täiustasin asja Facebook Messenger Boti loomisega. Kui tuleb minu kasutaja ID-ga teade “arm” või “disarm”, läheb süsteem valvesse või vastavalt valvest maha. Kui valvesoleku ajal kuskil liikumine toimub, tuleb botilt teade. Kui saadan botile telefonist mõne pildi, muutub koridoris olev kasutajaliides korraks pildiraamiks ja näitab saadetud pilti. Messenger Bot on ehitatud ka Node.JS-is ja istub esimeses Raspberrys.

Messenger Bot lahendab mitu kärbest korraga. Tulevikus kavatsen näiteks selle kaudu saata telefonile teate, kui sauna temperatuur on “õige”.