Ne morate posjedovati televizor ili glazbenu liniju koja je zadnji krik tehnologije da biste njime upravljali s udaljene lokacije. Gotovo svi uređaji doma imaju mogućnost upravljanja putem daljinskog upravljača. No kako ne bismo VIDI X pretvorili u jedan sasvim obični daljinski, ovaj daljinski će imati mogućnost upravljanja vašim uređajima putem interneta.
Cilj radionice je omogućiti simuliranje prisustva ukućana u kući npr. kada ste na godišnjem odmoru. Jedino što će vam trebati je Internet kako biste putem web stranice mogli odrediti što želite da se pali/gasi od vaših uređaja.
Imate li žarulju koju je moguće paliti/gasiti putem daljinskog, simulacija može još više dobiti na realnosti.
Kako bismo realizirali ovaj projekt, prvo što trebamo napraviti je zabilježiti sve IR kôdove koji nam trebaju s originalnog daljinskog.
Nakon toga ćemo napraviti program koji te kôdove odašilje putem IR transmitera te u taj projekt ugraditi web server koji će reagirati na naše naredbe. Kad kliknemo na određeni gumb, pošalje se određeni IR kôd, npr. za TV.
Kliknemo li neki dugi gumb, npr. za žarulju, šalje se kôd za žarulju. Trebamo prikupiti onoliko kôdova koliko želimo gumbâ simulirati.
Nakon toga tu web stranicu moramo učiniti javno dostupnom na internetu da bismo se, dok smo odsutni, mogli spojiti na nju i putem te web stranice upravljati uređajima u domu.
Prvi korak u ostvarivanju ovog cilja je instalacija softverske podrške za InfraRed protokole. Naveli smo ih u množini jer gotovo svaki proizvođač ima svoj protokol za InfraRed komunikaciju. David Conra, Sebastian Warin, Mark Szabo i Ken Shirriff razvijaju softversku podršku za IR protokole već deset godina kako biste je vi sada mogli instalirati i koristiti u Arduino IDE alatu.
Stoga kliknite na izbornik «Skica», «Include Library» -> «Manage Libraries…».
Unesite „IRremoteESP8266“ u gornji desni okvir za pretraživanje i pritisnite Enter.
Kao rezultat pretraživanja, pokazat će vam se istoimena biblioteka koju su napisali ranije spomenuti autori; instalirajte je odabirom najnovije verzije i klikom na gumb „Install“.
Sada otvorite demo skicu „IRrecvDumpV2“ klikom na izbornik „Datoteka“, zatim „Primjeri“ te „IRremoteESP8266“.
Ovdje u programskom retku 38 morate promijeniti broj pina na koji je spojen Infra Red receiver u broj 25.
//--------------- const uint16_t kRecvPin = 25; //---------------
Nakon uploada skice na VIDI X , otvorite Serial Monitor klikom na kombinaciju tipki „CRTL + SHIFT + M“.
Uperite daljinski u VIDI X i kliknite gumb za koji želite saznati IR kod. Output serial monitora izgleda otprilike ovako, te ga pohranite u neku datoteku za kasnije korištenje. Dolje su prikazani kôdovi Volume Up i Volume Down gumba LG LX-220 glazbene linije.
//--------------- 13:39:11.892 -> Timestamp : 000031.642 13:39:11.961 -> Library : v2.7.3 13:39:11.961 -> 13:39:11.961 -> Protocol : SAMSUNG 13:39:11.961 -> Code : 0x808E817 (32 Bits) 13:39:11.961 -> uint16_t rawData[67] = {4540, 4426, 610, 552, 582, 524, 582, 550, 610, 498, 610, 1602, 640, 524, 610, 496, 610, 524, 610, 498, 608, 524, 610, 498, 608, 524, 608, 1604, 636, 498, 608, 526, 606, 500, 604, 1610, 604, 1662, 578, 1662, 578, 558, 576, 1664, 578, 530, 576, 556, 576, 532, 576, 558, 576, 530, 576, 556, 576, 1664, 578, 530, 576, 1664, 578, 1664, 576, 1638, 576}; // SAMSUNG 808E817 13:39:11.961 -> uint32_t address = 0x10; 13:39:11.961 -> uint32_t command = 0x17; 13:39:11.961 -> uint64_t data = 0x808E817; 13:39:11.961 -> 13:39:11.961 -> 13:39:15.467 -> Timestamp : 000035.172 13:39:15.467 -> Library : v2.7.3 13:39:15.467 -> 13:39:15.467 -> Protocol : SAMSUNG 13:39:15.467 -> Code : 0x8086897 (32 Bits) 13:39:15.467 -> uint16_t rawData[67] = {4542, 4424, 610, 552, 582, 524, 582, 550, 582, 524, 610, 1602, 638, 524, 610, 498, 608, 524, 610, 498, 610, 524, 608, 498, 610, 524, 608, 1606, 634, 498, 608, 526, 604, 502, 580, 554, 576, 1662, 578, 1664, 578, 530, 576, 1664, 576, 556, 576, 530, 576, 558, 576, 1664, 576, 530, 576, 558, 576, 1664, 576, 530, 576, 1664, 576, 1664, 576, 1638, 578}; // SAMSUNG 8086897 13:39:15.467 -> uint32_t address = 0x10; 13:39:15.467 -> uint32_t command = 0x16; 13:39:15.467 -> uint64_t data = 0x8086897; //---------------
Nakon što ste pohranili vrijednosti svakog gumba koji će vam trebati za upravljanje vašim uređajima, možete po istom principu otvoriti skicu IRsendDemo. U toj skici, u liniji kôda broj 35, morate promijeniti broj pina na koji je spojena IR transmit dioda, a to je pin broj 25.
//--------------- const uint16_t kIrLed =15; // ESP32 GPIO pin to use. Recommended: 4 (D2). //---------------
Sljedeće što morate promijeniti je to da na liniji kôda broj 40 zamijenite niz drugim nizom koji ste dobili iz skice „IRrecvDumpV2“.
Također, treba zamijeniti liniju kôda irsend.sendNEC(0x808E817); s kôdom koji ste dobili ranije 0x808E817 .
Neki uređaji će radije koristiti sirovi IR kôd naredbom irsend.sendRaw(rawData, 67, 38); , dok će drugi radije koristiti irsend.sendNEC(0x808E817); oblik slanja IR kôda pa je potrebno testirati rade li snimljeni kôdovi tj. reagiraju li uređaji na njih kako je predviđeno. Naime, u našem je slučaju linija reagirala svaki četvrti ili peti put.
Vratili smo se ponovno na onu demo skicu „IRrecvDumpV2“ kako bismo još jednom provjerili jesmo li preuzeli dobre kôdove. Primijetili smo da se pri svakom pritisku gumba Volume UP promijeni IR kôd koji primamo. Nakon nekoliko pokušaja otkrili smo da postoje dva kôda za Volume Up i Down te četiri kôda za Power tipku koja i pali i gasi liniju.
Nakon što smo ih sve prekopirali u naš program, stvar je proradila kako je i očekivano. Ne zaboravite i vi prekopirati vaše IR kôdove u priloženi kôd da biste upravljali vašim uređajima, bilo da je to televizor, linija, klima ili drugi uređaj koji koristi IR kao sredstvo za upravljanje.
Za kreiranje web servera i spajanje na postojeću Wi-Fi mrežu, iskoristili smo funkciju serv_setup(), koju ste imali prilike vidjeti u ranijim radionicama te je nećemo posebno opisivati.
Nakon uspješnog povezivanja VIDI X-a s Wi-Fi mrežom, na ekranu se ispisuje IP adresa VIDI X-a. Kad tu IP adresu upišete u Internet preglednik, dobijete web stranicu s 3 gumba od kojih je jedan On/Off, a druga dva služe za pojačavanje i stišavanje naše glazbene linije.
Kad ste se uvjerili da sve radi na lokalnoj razini, ostaje nam još samo toj IP adresi VIDI X-a dozvoliti pristup s interneta. To možete na nekoliko načina, a postoji beskrajno mnogo web servisa koji vam žele prodati uslugu spajanja vaših IoT uređaja poput VIDI X-a s internetom.
Uz Vidi X svaki dom može postati pametan dom prepun IoT uređaja
Dynamic Domain Network Service (DDNS)
Jedan bi način bio da na vašem routeru omogućite DDNS servis. Obično imate nekoliko ponuđenih pružatelja usluge na tom meniju. Odaberite jednog i upišite account koji ste kreirali na web stranicama pružatelja DDNS usluge. Jedan je od popularnijih besplatnih pružatelja te usluge http://www.noip.com/. Naravno, odabrat ćete ga ako je on podržan na vašem routeru ili možete odabrati nekog drugog pružatelja usluge. Takav jedan servis preusmjerit će promet s besplatne (recimo: mojastranica.no-ip.org) ili kupljene domene na vaš dinamički IP. Bitno je znati da se besplatni servisi IP osvježavaju u nekom intervalu te se može dogoditi da je web stranica javno nedostupna otprilike sat vremena, između dvaju osvježenja. Taj problem možete riješiti odabirom plaćene usluge koja ima kraći period osvježavanja.
Nakon uspješno konfiguriranog DDNS servisa upisivanjem domene u internet preglednik, trebali biste dobiti sučelje routera u internet pregledniku (neki modeli to zabranjuju automatski). Kako bi posjetitelj dobio web stranicu hostanu na vašem računalu, morat ćete u postavkama «Port range forwarding» port 80 preusmjeriti na IP adresu VIDI X-a.
Pripazite da sučelje routera nije dostupno izvana. Provjerite da https protokol tj. port 81 (npr: https://mojastranica.no-ip.org ) ne prikazuje stranicu administracije routera. Ako pokazuje, pokušajte to onemogućiti na routeru. Postupak se razlikuje od proizvođača do proizvođača. Također, oprez s ftp, sftp, ssh, remote desktop i drugim protokolima da javnosti ne biste omogućili direktan pristup vašoj lokalnoj mreži.
Ako nešto pođe po zlu kad mijenjate postavke na routeru, uvijek ga možete ručno resetirati putem – za to namijenjene – RESET tipke.
Mi smo koristili Ngrok
Ako ne želite ili ne možete pristupiti vašem routeru za postavljanje „Port forwarding“ postavki, to možete učiniti uz „ngrok“. To je program tj. command line aplikacija za dobivanje URL-a koji pokazuje na vaš lokalni VIDI X poslužitelj i zaobilazi bilo koji NAT ili firewall na vašoj mreži.
ngrok nas je malčice iznenadio u zaobilaženju firewalla
No za ovaj način vam treba dodatno računalo. Za to može poslužiti i neki zaista slabi laptop na kojem je instaliran Linux, no može poslužiti i vaše računalo ili čak Raspberry Pi.
Napravite besplatni account na https://ngrok.com. Preuzmite verziju za Windows, Linux, FreeBSD ili Mac OS. Otpakirajte je, a zatim otiđite na Auth menu web stranice ili upišite https://dashboard.ngrok.com/auth
Ovdje preuzmite vaš token (ovaj komplicirani niz znakova) s kojim povezujete ngrok s web servisom. Čuvajte taj token od nepoželjnih gostiju tj. nemojte ga objavljivati javno. S tim tokenom u Command prompt upišite naredbu poput ove:
ngrok authtoken 1XkyLlTbCkPLHjeINJRgYOJe2EO_5sYFx9W5UVKeQqmtqHJMN
Za još bolju kontrolu: nedostaje dio koda koji će provjeriti koliko je zapravo glasnoća pojačana, no i to je moguće implementirati
Sada ste povezani s web servisom. Preostaje vam još samo pokazati na koju IP adresu želite da vas servis odvede. U našem slučaju to je 192.168.1.145, kako je i pokazano na zaslonu VIDI X-a pa će te upisati
ngrok http 192.168.1.145:80
Sada na tabu Status tj. web adresi https://dashboard.ngrok.com/status možete provjeriti je li i kada proradio servis.
Upisivanjem dobivene adrese u Internet preglednik, pristupili ste vašem web serveru na VIDI X računalu koje može upravljati vašim televizorom ili drugim uređajima na infracrveno daljinsko upravljanje.
Kod za ovaj projekt pronađite na Vidilab GitHubu.
Neki drugi načini
Za one koji žele puno više od njihovog projekta, postoje mnogi „ozbiljni“ Cloud servisi za povezivanje vaših IoT projekata. Google, Amazon, Microsoft, IBM, Oracle i slične velike tvrtke imaju profesionalne cloud platforme predviđene za developere ili za specijalizirane IoT module. Među njima zanimljivija za spomenuti je IBM Watson IoT Platforma koju možete besplatno koristiti i povezati s VIDI X-om.
Za programere početnike postoji nekoliko user friendly servisa kao što su Adafruit IO, IFTTT, Zapier, a svaki od njih pruža drugačije mogućnosti te možebitno koristi neko drugo razvojno okruženje, no za Arduino IDE jedan od jednostavnijih je https://mdash.net/.