Home Automation – lungul marș de la nișă la adopția în masă
Încă din zorii ARPANET – sistemul de rețele de calcul sprijinit de armata americană ce a dus la nașterea Internetului și a cvintilioanelor de poze cu pisici care-au devenit deja parte din viața noastră cotidiană -, veritabile fluvii de informații din toate colțurile și din toate domeniile au început să se propage și să se adune.
Problema e să reușești să separi informația relevantă din oceanul de informații
Duse sunt vremurile când trebuia să faci nopți albe prin biblioteci săpând după tot felul de informații obscure, sperând să găsești în sfârșit cartea potrivită. În decursul a numai câțiva ani, lucrurile s-au întors cu 180 de grade, astfel încât mai problematic e, azi, să separi rezultatele relevante de meme și poze cu pisici, pe Google.
Acum, datorită succesului și popularității extraordinare a unor development board-uri precum RaspberryPi sau Arduino, împreună cu serviciile web pentru programatori furnizate de Google, Amazon, Microsoft și, practic, aproape orice companie care oferă servicii de cloud și date, ai putea, la fel de bine, să pui chiar BSD pe prăjitorul de pâine (eventual, chiar să-ți scrie status updates pe Facebook, când ți-a terminat de prăjit pâinea). Acum vremuri, ce mai!
Ce este domotica?
Pe o notă mai serioasă, așa cum decizia de a conecta cât mai multe calculatoare posibil pentru a putea disemina informații a dus la biblioteca aceasta dinamică și virtuală numită Internet, care, în final, s-a integrat profund în viața noastră, precum apa curentă sau electricitatea, la fel și fuziunea dintre Internet și dispozitive inteligente poate sfârși prin a revoluționa mare parte din aspectele vieții noastre cotidiene, aspecte care, în esența lor, nu prea s-au schimbat vreme de secole.
Home Automation, domotica, e un exemplu foarte bun aici. Nu prea ne gândim la asta, dar noi încă descuiem și deschidem ușile manual și avem o întreagă rutină obositoare și consumatoare de timp legată de întreținerea casei și a noastră (dus gunoiul, spălat vase, dat cu aspiratorul…). Firește, o parte din activitățile acestea le-am mecanizat între timp cu ajutorul mașinilor de spălat rufe și vase și al aspiratorului, spre exemplu.
Scenariul automatizării tuturor activităților de mai sus poate părea, momentan, mai mult „fantastic” decât „științifico-”, însă tehnologia, informațiile și cunoștințele necesare implementării unor sisteme de automatizare a acestor aspecte deja ne stau la dispoziție.
E timpul ca Home Automation să devină un „produs de masă”
Ceea ce mi se pare cumva puțin dezamăgitor, actualmente, e faptul că marea majoritate a sistemelor de Home Automation tind să fie țintite în principal spre segmente premium, de nișă.
Firește, financiar vorbind, lucrul acesta are sens, însă, dacă vrei să aduci schimbarea și să declanșezi sau, cel puțin, să fii unul din factorii inițiatori ai unei revoluții care să afecteze viața oamenilor într-o măsură măcar parțial comparabilă cu cea declanșată de nașterea Internetului, atunci astfel de tehnologii cu potențial trebuie să poată rezolva probleme practice, concrete și comune cu care se confruntă marea majoritate a oamenilor, totul la un cost acceptabil în raport cu beneficiile obținute.
Tranziția unei tehnologii de la stadiul „nice to have” la produsul banal pe care-l poți găsi pe toate rafturile și adoptarea ei în masă de către consumatori e parcursul care îți garantează că tehnologia pe care ai dezvoltat-o e atât de populară, omniprezentă, încât oamenii o iau ca firească, fără să se mai gândească la ea. Astfel, prin tranziția spre banal se obține progresul.
A fost nevoie ca, în anii ’80, un grup de ingineri de la IBM să încerce să improvizeze un calculator din componente ieftine găsite pe rafturile magazinelor de electronice pentru a da naștere PC-ului și, deci, pentru a transforma o tehnologie pe care o găseai numai în mediile științifice și corporatiste într-un produs pe care azi, practic, toată lumea îl deține, îl folosește și de care depinde.
Cum am făcut o platformă pentru o casă inteligentă
Această viziune mi-am format-o în timp, iar pentru a-i testa efectiv validitatea, pentru a-mi dovedi că nu doar „vorbesc vorbe”, în vara de dinaintea ultimului an de facultate mi-a venit ideea realizării unui prototip hardware și software pentru o platformă de casă inteligentă.
Ca orice idee cu ceva potențial, îmi apăruse spontan în cap și, jumătate de oră mai târziu plus un e-mail, mă trezesc cu unul din profesorii mei că-mi propune el, direct, să-mi fie coordonator de proiect.
Arhitectura sistemului a fost concepută plecând de la două cuvinte-cheie: scalabil și „cost-effective”.
Partea de reducere a costurilor a fost asigurată prin utilizarea de librării opensource, iar la nivel de hardware au fost folosite RaspberryPi-uri (în esență, poate fi folosit orice development board capabil să ruleze mono framework). Indirect, prin reducerea timpului de development (bugetul de timp oricum era limitat, din august până în aprilie anul următor), s-au putut face economii și prin utilizarea limbajului C#, care a permis un workflowcross-platform destul de lin datorită compilării în CIL, care apoi e compilat în native code de mono în urma deploy-ului.Scalabilitatea a fost asigurată de faptul că sistemul a fost conceput ca o rețea de noduri rulând același core în spate, cu unul din noduri asumându-și rolul de centrală, fiecare nod fiind responsabil de gestionarea senzorilor și device-urilor din fiecare cameră în parte.
Aceasta a implicat realizarea unei structuri destul de modulare la nivel de software, sistemul unui nod (HRS – Hardware Resident Software) fiind, de fapt, un amalgam de subsisteme (aici implementarea la nivel de limbaj a interfețelor în C# s-a dovedit extrem de utilă) încărcate la runtime în baza unor fișiere de configurare locale actualizate, verificate și sincronizate de către centrală.
Diagramă generală a platformei
O casă virtuală interactivă
Mai departe, nodurile nu comunică direct cu senzorii și device-urile, de interfațarea directă, fizică, fiind responsabile o serie de microcontrollere (LowLevel Hardware Controller în diagramă) care acceptă comenzi și transmit date înapoi către nod printr-un protocol slave-master transmis prin fir, via codare de tip Manchester.
În final, practic e asigurat un fel de Hardware AbstractionLayer care-i permite HRS-ului să gestioneze diverse tipuri de senzori și smartdevice-uri pentru care există drivere implementate pe platformă.
Acest grad de abstractizare și modularitate mi-a permis, în final, dezvoltarea unei aplicații de tip simulator pentru testarea framework-ului de sistem. Aplicația a fost realizată în Unity3D și, practic, la nivel de user se prezintă ca o casă virtuală, interactivă.
Simulatorul (fundal) și debug log-ul de la platformărulând local pe desktop
Interacțiunile din simulator dintre user și, spre exemplu, un PIN pad pentru de/blocarea ușii sunt transmise printr-un server TCP către un nod din sistem, unde sunt preluate de subsistemul responsabil de simulator și transmise driverelor pentru procesare (ex. „PIN-ul primit e valid?”), apoi comenzile necesare sunt emise înapoi către device-ul virtual din simulator (ex. „Valid”/”Invalid”), care, mai departe, modifică obiectele din scena 3D în funcție de situație.
Proiect prezentat și la expoziția anuală a studenților
Simulatorul s-a dovedit util încă din stadiul de development ca tool de testat. Se poate spune că simulatorul și platforma s-au testat reciproc până la finalizarea prototipului.
În final, prototipul a fost prezentat și la expoziția anuală a absolvenților de la Staffordshire University – GradEx 2016, unde s-a putut observa un viu interes legat de conceptul de casă inteligentă din partea unui spectru vast de oameni, cuprinzând atât persoane tehnice, din domeniul mai larg al calculatoarelor, cât și persoane atehnice, aceeași variație observându-se și la nivel de vârste.
Topologia de test: două noduri și un controller legat la un LED
Interconectarea device-urilor este un domeniu foarte vast și atractiv, cu un mare potențial de satisfacție atât pentru utilizatorii finali, cât și pentru developerii sistemelor. În precedentul exemplu, conexiunea fizică se realizează folosind tehnologii low-level (Manchester encoding) și se pretează pentru contextul respectiv, homeautomation, unde fiabilitatea sistemului este esențială pentru utilizatori.