Kako uključiti računar glasovnom komandom?

0

Nedavno sam počeo da pravim pametnu kuću, odnosno da integrišem pametne uređaje u kućne uređaje. Ideja je da kontrolišem većinu kuće sa jednog mesta, pomoću glasa i iz oblaka, a da prođem što jeftinije u procesu gradnje. Par tih primera sam objavio i na blogu: kontrolisanje lampe pomoću glasa, i Namestite da se uključi lampa kada vam stigne Email.

Na red je došao računar jer njega koristim najviše u toku dana. Za početak sam hteo da ga uključim pomoću glasa, ali da bude integrisan u postojaći sistem.

Na internetu nisam našao neko jednostavno rešenje. Sva rešenja (a nema ih mnogo) podrazumevaju 5 i više različitih servisa, a uz to i obavezno prisustvo Android telefona u mreži. To mi nije odgovaralo pa sam se pomirio sa tim da ću morati da sam smislim nešto novo.

Moj centralni sistem za upravljanje je Google Assistant. Imam Google Home Mini uređaj koji mi služi za zadavanje glasovnih komandi, a na Google Assistant vezujem i ostale uređaje. Ako neki uređaj ne podržava direktnu integraciju sa Google asistenom, povežem ga preko IFTTT servisa.

Nakon nekoliko sati traganja, našao sam rešenje kako da uključim računar pomoću Google asistenta relativno jednostavno. Zapravo, našao sam više odvojenih tutorijala koji su kreirani za različite svrhe, ali sam ih sklopio u jedan sistem koji meni treba.

Pošto ja računar nikada ne isključujem, već ga stavim samo u stanje spavanja, došao sam do jednostavnog rešenja – WOL. WOL je skraćenica za Wake-on-Lan, a možda se sećate toga iz ovog i ovog članka. Ideja je poslati WOL signal preko Google Home Mini uređaja – a to nije lako.

Problemi

Google Home uređaji ne poseduju WOL opciju, ne znam zašto kad se već nalaze u lokalnoj mreži, pa sam morao da nađem posrednika/e.

Da bi uspeo da probudim računar pomoću „magičnog paketa“ (WOL šalje magic packets) potreban mi je uređaj na istoj mreži koji će to raditi. Naravno, ne želim da koristim Android telefon jer mi on nije uvek kod kuće i onda taj sistem nije u potpunosti povezan u Cloud.

Sreća pa sam za potrebe master rada kupio NodeMCU, a sada mi samo stoji u fioci i ne radi ništa. NodeMCU je inače manja verzija Arduino-a koji ima integrisan ESP8266 WiFi modul. Povezuje se preko microUSB u standardni USB, što je idealno u ovom slučaju.

Sada su mi potrebne dve stvari:

  1. poslati signal od Google Home ka NodeMCU,
  2. sa NodeMCU poslati WOL ka računaru

a pod uslovom da sve radi u oblaku i da ne koristim svoj računar kao server.

Rešenje

Najjednostavnije rešenje koje ispunjava sve moje kriterijume je ovo:

  1. Kreirati Blynk profil sa jednim Push tasterom
  2. Google će preko IFTTT slati web zahtev ka Blynk cloud serveru
  3. Blynk će poslati signal NodeMCU
  4. NodeMCU će poslati WOL paket mom računaru preko WiFi

Dakle, u celu priču sam morao da dodam još jedan Cloud servis pod nazivom Blynk. To je besplatan (uz ograničenja) cloud servis za kontrolisanje mikrokontrolera na daljinu. I na kraju imam ukupno 3 servisa: Google asistent, IFTTT, i Blynk – nije loše. Ako se pitate koliko je kašnjenje, odgovor je: nema ga!

Tutorijal

Biće vam potrebno:

  • Blynk nalog
  • IFTTT nalog
  • Google asistent (opciono Google Home)
  • NodeMCU
  • USB kabel za NodeMCU
  • Vremena za bacanje

Prvo da nacrtam kako bi izgledalo povezivanje da ne bih morao da pišem postupak:

google home wol pc

1# Blynk

Prvo će biti potrebno kreirati Blynk nalog. To je krajnje jednostavno: instalirajte aplikaciju (Android, iOS), pokrenite je, kreirajte nalog kao i u bilo kojoj drugoj aplikaciji.

Kreiranje projekta:

Kliknite na „+ New project„.

  • Project name: ime projekta po želji
  • Choose device: ESP8266
  • Theme: šta želite
  • CREATE

Sada će vam stići token na email adresu sa kojom ste se registrovali na Blynk – veoma bitno! I videćete praznu ploču za rad.

Tapnite na tu ploču bilo gde i pojaviće se panel sa komandama. Tapnite na prvu opciju „Button„. Sada ćete videti podešavanja za taj taster, podesite ga ovako:

  • Name: šta želite
  • Output: Virtual – V1 (bitno)
  • Mode: PUSH (bitno)
  • Ostalo ostavite kako jeste

blynk-add-button-virtual

Vratite se sa Back na radnu ploču. Trebali biste sada da vidite taster i u njemu „V1„. Ako vidite to, onda je sve ok i nastavite dalje.

2# IFTTT

Sada idite na https://ifttt.com/ i kreirajte nalog. Zatim idite na OVAJ link i povežite IFTTT sa Google asistentom. Prvo proverite da li ste prijavljeni na Google nalog sa kojim ćete koristiti Google asistenta za glasovne komande. Dakle, povežete onaj Google nalog sa kojim ste povezani na Google Home ili u telefonu sa kojeg ćete izgovarati komande.

ifttt google assistant connected

Sada kreirajte novi uslov ovako:

  • Idite na https://ifttt.com/create i kliknite na „THIS
  • U pretragu ukucajte „assistant“ i izaberite „Google Assistant
  • Kliknite na „Say a simple phrase
  • U prva tri polja unesite varijacije komandi koje želite da izgovarate (npr. wake up pc)
  • U četvrto polje unesite potvrdi odgovor koji će asistent reći (npr. ok, no problem)
  • Create trigger

assistant ifttt trigger

Sada kreirajte akciju:

  • Kliknite na „THEN
  • U pretragu ukucate „web“ i izaberite „Webhooks“ pa „Make a web request
  • Taj servis podesite ovako:
    • URL: http://139.59.206.133/<TOKEN>/update/V1 (vidi objašnjenje ispod)
    • Method: PUT
    • Content Type: application/json
    • Body: [„1“]
  • Create trigger

webhooks ifttt blynk

Objašnjenje za URL: tamo umesto <TOKEN> unesite onaj token koji ste dobili u email poruci kada ste kreirali novi Blynk projekat. Ono „V1“ na kraju je pin koji ste odabrali kada ste kreirali Button u Blynk aplikaciji. Napisao sam vam da stavite „Virtual – V1“. Što se tiče IP adrese, ta koju sam naveo radi za Srbiju. Vi za svaki slučaj proverite tako što ćete u CMD ukucati ping blynk-cloud.com

ping blynk cloud

3# NodeMCU

E sada dolazi na red malo kodiranja, ništa strašno, potrebno je samo da izmenite nekoliko vrednosti. Inače, bilo bi zaista dugačko objašnjavati kako koristiti Arduino IDE i ubaciti NodeMCU board, pa potražite na internetu (primer). Ja za moj NodeMCU ver 0.1 sa čipom CH340G u Arduino IDE koristim NodeMCU ESP-12E Board.

Ok, ako znate već kako se koristi NodeMCU, Arduino IDE, kako sve to funkcioniše, da krenemo! Od ovog korisnika možete kopirati kompletan kôd za NodeMCU – link. Evo šta i kako da izmenite:

byte macAddr[6]: ovde unesite MAC adresu mrežnog uređaja u vašem računaru. Tu adresu ćete pronaći tako što ćete u CMD ukucati ipconfig /all. Videćete stavku „Physical Address“ i desno brojeve – kopirajte. NE zatvrajate CMD prozor, trebaće vam. U kôdu zamenite tu MAC adresu u zagradi koja trenutno stoji.

Ako je vaša MAC adresa npr. 41-8D-10-F2-17-40 onda ćete u kôdu dodati „0x“ ispred svakog broja, a crtice ukloniti. Dakle ovako će biti za navedeni primer:

byte macAddr[6] = {0x41, 0x8d, 0x10, 0xf2, 0x17, 0x40};

IPAddress bcastAddr: ovde unosite lokalnu IP adresu vašeg računara. U onom istom CMD prozoru se pod stavkom „IPv4 Address“ nalazi ta IP adresa. Ako je IP npr. 192.168.1.106 onda ćete uneti ovako:

IPAddress bcastAddr(192, 168, 1, 106);

ip mac cmd windows 10

char auth[]: ovde pod navodnicima unesite opet onaj token koji ste dobili na email
char ssid[]: naziv WiFi mreže u vašoj kući (mora biti tačan  naziv)
char pass[]: lozinka za tu WiFi mrežu

nodemcu blynk setup

I još će biti potrebno da dodate SimpleTimer.h biblioteku. Preuzmite taj fajl sa OVOG linka, idite u folder gde su vam Arduino biblioteke (uglavnom je: C:\Users\<user>\Documents\Arduino\libraries), kreirajte folder „SimpleTimer“ i unutra nalepite SimpleTimer.h fajl koji ste preuzeli.

Sačuvajte projekat, kompajlirajte i učitajte u NodeMCU (standardna procedura).

4# Testiranje

Stavite računar u Sleep, pokrenite Google asistenta i recite onu frazu koju ste zadali u IFTTT (npr. wake up PC). Ako se računar uključi – uspeli ste! Ako ne, evo šta da pogledate.

5# Rešavanje problema

1) WOL opcija za adapter

Idite u Start i potražite „Device Manager„. Kada ga otvorite, pronađite pod „Network adapters“ vaš dapater (obično će pisati naziv marke). Desni klik > properties > power > sve omogućite.

Dodatno, možete kliknuti na karticu „Advanced“ pa levo u spisku pronaći „Wake on magic packet“ i omogučiti to.

windows-wake-on-lan-configurewindows-wake-on-lan-configure
Slika: makeuseof

2) Testirajte WOL pakete

Pokrenite OVAJ programčić, podesite port na „9“ i kliknite „Start„. Sad pokušajte da pošaljete komandu. Ako program nešto „uhvati“ onda rade paketi i kompletna komunikacija, ali računar neće da se probudi iz nekog razloga.

wol packets sniffer

3) WOL opcija u BIOS-u

Ako ni ovo ne uspe, idite u BIOS i negde u opcijama pronađite „Wake on lan“. Putanja do te opcije se razlikuje od ploče do ploče pa nikako ne mogu da vam kažem gde se nalazi. Verovatno je negde u Power opcijama. Evo par primera (izvor howtogeek):

uefi wol settings bio wol settings

4) Proverite da li USB ima napon kada je računar u Sleep modu.

U zavisnosti od podešavanja u sistemu i BIOS-u, USB može biti onemogućen kada računar uđe u stanje spavanja. Ukoliko ne znate kako da to sve proverite, najbolje bi bilo da jednostavno NodeMCU napajate preko punjača za telefon.

5) Proverite da li radi direktno iz Blynk aplikacije. Kada odete na onaj projekat gde je kreirani taster, tapnite na trougao u gornjem desnom uglu i vidite da li piše da je uređaj konektovan. Ako jeste, tapnite na taster pa vidite da li reaguje.

blynk test nodemcu connection

Ako uređaj nije konektovan, onda proverite podešavanja u samom kôdu, da li ste sve parametre dobro uneli.

Ako je uređaj konektovan, i reaguje na taster, onda proverite vezu sa IFTTT.

6) IFTTT

Proverite da li ste vezali IFTTT sa dobim Google nalogom. Da li ste dobro podesili uslov i akciju. Proverite IP adresu za Blynk cloud server (opet uradite ping blynk-cloud.com)… generalno prođite još jednom kroz sva podešavanja.

7) Pitajte u komentaru. Ako baš ništa ne uspete, postavite pitanje (ako možete i sliku) sa problemom pa ću pokušati da pomognem da rešite.

Šta dalje?

Ovo je bilo uputstvo kako da probudite računar, a možete napraviti i da ga uključite. Za to će vam biti potreban relej koji ćete povezati na NodeMCU i onda ga aktivirati na isti način kao i sada (samo uz korišćenje digitalnog umesto virtualnog pina). Relej povežete direktno na matičnu ploču i to je to! Ostavljam vama da eksperimentišete, sa napomenom da sve radite na sopstvenu odgovornost! Ja, niti bilo ko drugi, nisam odgovoran za eventualne štete po vas i/ili vaš uređaj.

Izvori whatimade blynk /ErfanDL

become-a-patron-2

Preporučeno za tebe:

Napiši komentar

Email adresa neće biti javno prikazana!