Sadržaj:
2025 Autor: John Day | [email protected]. Zadnja promjena: 2025-01-13 06:57
Hej!
U ovom ćemo projektu implementirati upravljanje LED diodama temeljenim na Google Asistentu pomoću Raspberry Pi 4 koristeći HTTP u Pythonu. LED diodu možete zamijeniti žaruljom (očito ne doslovno, između će vam trebati relejni modul) ili bilo kojim drugim kućanskim aparatom, tako da se ovaj projekt može dalje implementirati za potrebe kućne automatizacije.
Pribor
Što će vam trebati za ovaj projekt:
1. Malina Pi
2. LED
3. Spojne žice-2 (muški na ženski)
4. Oglasna ploča
5. IFTTT aplikacija (https://play.google.com/store/apps/details?id=com.ifttt.ifttt&hl=en_IN)
6. Thingspeak račun (https://thingspeak.com/)
Neki preduvjeti:
1. Osnove umrežavanja-HTTP
2. Python za pristup web podacima
Korak 1: Stvaranje Thingspeak kanala
Ako ste tek počeli koristiti Thingspeak i nikada ga prije niste koristili, slijedite korake u nastavku:
Idite na
Morat ćete se prijaviti prije nego počnete koristiti Thingspeak
Nakon registracije idite na odjeljak Kanali
U odjeljku Kanali odaberite Novi kanal (pogledajte sliku za referencu)
Na Novom kanalu vidjet ćete različite okvire s podacima. Vi samo trebate popuniti okvir Ime. Možete imenovati svoj kanal kako god želite. Priložio sam sliku gdje sam svoj kanal nazvao Raspberry Pi 4. Ostatak kutija ostavite kakav jest.
Čestitamo! Uspješno ste stvorili kanal za svoj IoT projekt. (pogledajte priloženu sliku na kojoj možete vidjeti moj kanal pod imenom Raspberry Pi 4 uspješno kreiran)
Korak 2: Korištenje aplikacije IFTTT
Moramo koristiti ovu aplikaciju za pokretanje GET zahtjeva za objavljivanje podataka na vašem stvorenom kanalu Thingspeak pomoću Google asistenta. Zamislite ovu aplikaciju kao sučelje između Google asistenta i vašeg Thingspeak kanala.
Zatim stvaramo GET zahtjeve u aplikaciji IFTTT.
Preuzmite aplikaciju IFTTT s
kreiraj svoj račun
Idite na Napravite vlastite aplete od nule
Dodirnite Ako je ova opcija
Odaberite uslugu okidača kao Google asistenta
Pri tome odaberite Reci jednostavnu frazu
Pod tom opcijom pojavit će se neki okviri s podacima. U tu svrhu pogledajte slike i prema tome ispunite pojedinosti! (postoje dvije slike u tu svrhu: 1. Uključivanje LED diode 2. Isključivanje LED diode)
Dovršili smo dio If This koji je Google Assistant. Sada odabiremo opciju Zatim ta opcija koja je Webhooks.
Ispod toga odaberite Učini web zahtjev
Za podatke koje morate popuniti u okvirima pogledajte sliku. Pogledajte ovaj URL https://api.thingspeak.com/update?api_key=INSERT YOUR WRITE API KLY & field1 = 1
U gornjem URL -u primijetit ćete da sam spomenuo INSERT YOUR WRITE API KLY. Ovo je API ključ koji je identitet kanala koji ste stvorili na Thingspeaku (vidi sliku). API ključ za pisanje pomoći će vam da upišete određene podatke na svoj kanal, a na sličan način API ključ za čitanje pomoći će vam da dobijete podatke s kanala.
Osim vašeg ključa API za pisanje, ostali podaci iz okvira ostaju isti.
Dakle, ovdje ste stvorili okidač u kojem svom Google asistentu kažete "Uključi LED", on će poslati "1" vašem kanalu Thingspeak.
Sada, na sličan način, morate stvoriti novi Applet u IFTTT aplikaciji za isključivanje LED diode. Priložio sam slike ako ste isto zabrinuti. Inače, postupak isključivanja LED diode isti je kao i ono što ste učinili gore, osim nekih manjih promjena.
Korak 3: Konačno započinjanje kodiranja
Objasnit ću glavni cilj Python koda. Moramo dohvatiti podatke s kanala Thingspeak koji će biti ili "1" ili "0" na temelju onoga što kažete svom Google asistentu. Na temelju toga moramo uključiti ili isključiti LED. Ako je učitana vrijednost na kanalu Thingspeak "1", tada palimo LED, a ako je "0", isključujemo je.
U kodu će vam trebati dvije stvari: 1. Vaš API ključ za čitanje 2. Vaš ID kanala (pogledajte slike za isti)
Evo koda (pod pretpostavkom da poznajete preduvjete HTTP -a i Pythona):
uvoz urllib
zahtjevi za uvoz
uvoziti json
vrijeme uvoza
uvezite RPi. GPIO kao GPIO
Način rada GPIO.set (GPIO. BOARD)
GPIO.setup (7, GPIO. OUT)
probati:
dok (1):
URL = 'https://api.thingspeak.com/channels/INSER YOUR CHANNEL ID/fields/1.json? Api_key =' KEY = 'INSERT YOUR READ API KEY'
HEADER = '& rezultati = 2'
NEW_URL = URL+KLJUČ+GLAVA
#print (NEW_URL)
get_data = requests.get (NEW_URL).json ()
#print (get_data)
feild_1 = get_data ['feedovi']
#print ("Polje:", feild_1)
t =
za x u feild_1:
t.append (x ['polje1'])
ispis (t [1])
ako je int (t [1]) == 1:
GPIO.izlaz (7, 1)
elif int (t [1]) == 0:
GPIO.izlaz (7, 0)
osim KeyboardInterrupt:
GPIO.cleanup ()