Namestite da se uključi lampa kada vam stigne Email!

Uvod, problem

Klikni ovde da odeš direktno na deo sa tutorijalom

Ok, da počnem. Ideja je da namestimo sistem koji će uključiti lampu kada vam stigne Email, ali na što jednostavniji način. Viđao sam tutorijale na internetu za to ali svi koriste Raspberry Pi i uglavnom je malo teže prosečnom korisniku da to razume, napravi ili čak nabavi delove (elektroniku, žice…).

Rešenje

Ja sam razmišljao drugim putem i odlučio da iskoristim Sonoff jer je jednostavan za korišćenje (plug-n-play) i ima odličnu podršku raznih servisa. Sonoff košta oko 5$ na internetu, što je jeftinije nego Raspberry Pi + delovi. Dodatno, možete ga jednostavno koristiti uz aplikaciju i kontrolisati bilo koji el. uređaj ako odustanete od ovog „projekta“.

U ovom članku možete videti kako sam namestio da se uključuje/isključuje svetlo glasovnom komandom – pročitaj.

Pošto zvanična Sonoff aplikacija (eWelink) ne podržava nikakve napredne uslove sem tajmera i zakazivanja, moramo pronaći neki servis koji će hendlati uslove. I sreća naša eWelink je partner sa servisom IFTTT!

IFTTT, šta je to?!

To je servis koji sadrži aplete (kao neke aplikacije) koji se kreiraju sa IF (ako..) i THEN (onda..) uslovima. Recimo, možete napraviti:

IF vreme je kišovito THEN pošalji obaveštenje da ponesem kišobran

Servisa ima zaista mnogo koje možete upariti sa ovim uslovima i zato je ovo rešenje idealno.

Email -> Sonoff

Dakle, ja sam odlučio da napravim recept:

IF Gmail primi email THEN Sonoff uključi

Ovo je veoma jednostavan recept i samo je potrebno da postavite ove uslove, povežete svoj Gmail i eWelink nalog i to će da radi.

Ali, problem u celoj ovoj priči je što IFTTT ne podržava više akcija za jedan uslov. Tačnije, kada se ispuni IF (uslov) može da se izvrši samo jedan THEN (akcija). U našem slučaju kada nam stigne Email, lampa će se uključiti (koju smo povezali na Sonoff) i tako će ostati dok je ručno ne isključimo.

IFTTT ima aplet tajmer i mislio sam da njega iskoristim za gašenje Sonoff-a, ali minimalno vreme za pokretanje je 15 minuta – što je jako dugo. Plus, taj aplet ne zna kada vam je stigao mail pa se može desiti da ugasi Sonoff sekund nakon što ga je Email IF uključio. I ne postoji nikakav uslov da se pokrene neki servis kada se Email pročita.

Da bih rešio ovaj problem iskoristio sam aplet „Webhooks“ u kombinaciji sa jednom Node aplikacijom.

Webhooks je aplet koji nam omogućava da pokrenemo neku akciju ako pošaljemo određeni zahtev na specijalno kreiranu URL adresu. Taj zahtev može biti GET, POST… dakle, može se izvršiti i prostim pokretanjem u veb pregledaču.

Ali, opet ne možemo pokrenuti dve akcije sa jednim uslovom, i zato će nam u pomoć uskočiti Node aplikacija.

Email -> Node.js -> Webhooks -> Sonoff

Ok, sada stvari postaju malo komplikovane. Rešenje za sve probleme jeste Node.js aplikacija koja će slati POST request ka Webhooks.

Konačna ideja je:

1) Aplet: IF email THEN Webhooks (ka Node serveru)

2) Aplet za uključivanje: IF webhooks1 THEN Sonoff_ON

3) Aplet za isključivanje: IF webhooks2 THEN Sonoff_OFF

4) Kreirati Node.js aplikaciju koja šalje 2 zahteva:

ovde je rešenje zapravo, u Node.js aplikaciji: nju će sa IF pokrenuti onaj prvi aplet, i onda će dalje poslati 2 Webhook POST zahteva, i to jedan ka webhooks1 i drugi ka webhooks2.

sonoff email webhook iftt 1
Šema povezivanja

Na slici iznad možete videti logiku i kako izgledaju apleti kada se kreiraju. U delu sa uputstvom koje sledi možete videti sve detaljnije.

Uputstvo

Dobro, ako ste čitali deo teksta iznad već ste stekli sliku o tome šta treba spremiti:

Sonoff

Ako bih pisao celo uputstvo za Sonoff, članak bi bio zaista dugačak. Možete iskoristiti deo uputstva iz OVOG članka koji pokazuje kako da povežete Sonoff sa eWelink aplikacijum na kućni WiFi nakon kupovine. Ako imate podešen već, onda super.

IFTTT

Gmail povezivanje: da bi IFTTT mogao da prima obaveštenja o vašim pristiglim porukama, morate mu dati dozvolu. Idite na stranicu za podešavanja Gmail servisa u IFTTT-u i dozvolite mu pristup vašem Google nalogu.

Link: https://ifttt.com/services/gmail/settings

Webhooks povezivanje: potrebno je i da kreirate svoj Webhooks unikatni URL. Idite na link ispod i uradite „Connect“ i videćete URL koji sadrži ključ – taj URL će vam trebati.

Link: https://ifttt.com/services/maker_webhooks/settings

ifttt webhooks key

Sonoff povezivanje: i ovde ista priča, morate povezati svoj Sonoff nalog sa IFTTT-om. Opet idite na link ispod, kliknite „Connect“, ulogujte se na Sonoff nalog u prozorče koje će iskočiti, kraj.

Link: https://ifttt.com/services/ewelink/settings

Podešavanje Node.js aplikacije

E sad, pošto ste napravili Glitch nalog, idite na OVAJ LINK i sačekajte da vam se instalira aplikacija koju sam modifikovao. Ovde trebate da podesite nekoliko stvari u .env fajlu:

IFTTT_MAKER_URL: ovde kopirate onaj URL koji ste dobili nakon aktiviranja Webhooks servisa u IFTTT (napisao sam da će vam trebati).

IFTTT_EVENT_1: ovde unesete neki string koji će da uključuje Sonoff. Izaberite nešto proizvoljno, recimo „sonoff_on“.

IFTTT_EVENT_2: ovde isto tako samo za isključivanje. Recimo „sonoff_off“.

DELAY: ovde unesete broj milisekundi koliko želite da vam lampa ostane uključena. Ako unesete 60000 onda će to biti 1 minut.

Primer podešavanja:

env file config ifttt

Kreiranje apleta

Potrebno je kreirati ukupno 3 apleta kao što ste videli na slici iznad negde.

#1 Gmail okidač

Prvo kreiramo aplet koji će da prati vašu poštu i uradi nešto kada stigne poruka. Idite da kreirate nov aplet i izaberite Gmail, ili kliknite OVAJ LINK.

Videćete velik izbor sada, izaberite šta vam odgovara. Imate mogućnost da se aplet pokrene kada: vam stigne bilo koja poruka, vam stigne nešto u prilogu, vam stigne bilo koja poruka od određene osobe, stigne nova poruka sa zvezdicom, vi pošaljete bilo kome email, vam stigne poruka sa oznakom po želji, vam stigne email koji zadovoljava neki upit pretrage.

Izaberite nešto od toga sa liste i onda će se pojaviti THAT plavom bojom – kliknite.

Pojaviće se pretraga servisa i vi pronađite „webhooks“ pa kliknite na to. Zatim kliknite na „Make a web request„. Ovde imate 3 podešavanja:

  • URL: je url Glitch aplikacije koja se kreirala nakon što ste kliknuli na onaj link moj. Primer: https://ime-aplikacije.glitch.me

copy glitch url

  • Method: POST
  • Connect type: Application/json

Kliknite na „Create action„.

ifttt webhooks 1

#2 Webhook Sonoff ON

Sada je potrebno kreirati Webhook zahtev da se uključi Sonoff. Kreirajte novi aplet i za IF izaberite „Webhooks„, ili kliknite na OVAJ LINK. Sada još kliknite na „Receive a web request„, kao i prošli put.

Imate samo jedno polje i tu unesite onaj string koji ste tamo u .env fajl uneli za „IFTTT_EVENT_1„, u primeru sam napisao „sonoff_on“ (ja koristim sonoff1 i sonoff2). Kliknite „Create trigger„.

sonoff string 1

Sada ćete opet videti plavo „THAT“ – kliknite. U pretrazi pronađite „ewelink“ – kliknite. Sa liste izaberite Sonoff koji imate, ako imate onaj koji sam ponudio u linku, onda izaberite „Turn 1 Channel Switch on or off„.

Sada ćete videti samo dve opcije: ime uređaja i akciju. Izaberite sa liste ime Sonoff uređaja (ime ste zadali onda kada ste registrovali Sonoff u aplikaciji u telefonu), a za akciju izaberite „ON„. Potom „Create action“.

sonoff ifttt choose 1

#3 Webhook Sonoff OFF

Proces je isti kao za ON samo što ćete:

  • za Webhook string staviti npr. „sonoff_off“
  • za Sonoff akciju izabrati „OFF“

sonoff ifttt choose 2

Testiranje

Napokon je došao kraj! Pošaljite email sebi na Gmail nalog sa kojim ste se povezali na IFTTT (tj. na koji pratite pristigle poruke) i sačekajte koji trenutak. Ako se Sonoff uključi i isključi nakon zadatog vremena – sve radi!

Ako se to ne desi, proverite Node.js aplikaciju, najpre log iz konzole. Da otvorite konzolu kliknite na taster „Logs“ koji se nalazi u gornjem levom uglu, odmah iznad spiska fajlova. Konzola će se pojaviti na dnu ekrana i videćete greške. Ako ne možete da se snađete, pišite u komentaru pa ću pokušati da pomognem.

Proverite i aplete na IFTTT da li su dobro povezani, da li su stringovi u Webhooks dobri, itd.

Zaključak

Kao što vidite, preko IFTTT-a možete kreirati zaista dosta uslova jer ima mnogo servisa. Za IF uslov možete postaviti svašta, a u kombinaciji sa više Sonoff uređaja možete automatizovati dobar deo kuće. Ja sam hteo da iskoristim ovu integraciju Sonoff-a sa IFTTT-om maksimalno, a i da napravim nešto što nije baš standardno i lako.

Ako vam se IFTTT dopadne, istražite šta sve nudi, verujem da će vam pomoći u obavljanju svakodnevnih zadataka. Ako imate neke ideje napišite u komentaru.

Izvori: 1. Glitch
Stefan Marjanov
Stefan Marjanov

Diplomirani inženjer informatike. Aktivno se bavim informacionim tehnologijama oko 13 godina, a nešto kraće i veb dizajnom. Takođe, osnivač sam ovog bloga na kome radim i pišem više od 10 godina. Ako želite da podržite moj rad kliknite ovde.

Budi u toku

Mrzi te da redovno posećuješ blog kako bi bio/la u toku sa objavama? Unesi svoj email i blog će ti jednom mesečno slati nove objave. Bez spama, odjavi se bilo kada.

Ostavi komentar

Vaša adresa e-pošte neće biti objavljena. Neophodna polja su označena *