İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Merhaba!
Bu projede, Python'da HTTP kullanarak Raspberry Pi 4 kullanarak LED'in Google Asistan tabanlı kontrolünü uygulayacağız. LED'i bir ampulle (tabii ki tam anlamıyla değil, arada bir röle modülüne ihtiyacınız olacak) veya başka bir ev aletiyle değiştirebilirsiniz, böylece bu proje ev otomasyonu amaçları için daha fazla uygulanabilir.
Gereçler
Bu proje için ihtiyacınız olacak:
1. Ahududu Pi
2. LED
3. Jumper kabloları-2 (erkek-dişi)
4. Breadboard
5. IFTTT uygulaması (https://play.google.com/store/apps/details?id=com.ifttt.ifttt&hl=en_IN)
6. Thingspeak hesabı (https://thingspeak.com/)
Bazı ön koşullar:
1. Ağ temelleri-HTTP
2. Web verilerine erişmek için Python
1. Adım: Bir Thingspeak Kanalı Oluşturma
Thingspeak'te yeniyseniz ve daha önce hiç kullanmadıysanız aşağıdaki adımları izleyin:
thingspeak.com/ adresine gidin
Thingspeak'i kullanmaya başlamadan önce kaydolmanız gerekecek
Kaydolduktan sonra Kanallar bölümüne gidin
Kanallar altında Yeni Kanal'ı seçin (referans için resme bakın)
Yeni Kanal'da farklı bilgi kutuları göreceksiniz. Ad kutusunu doldurmanız yeterlidir. Kanalınıza istediğiniz ismi verebilirsiniz. Kanalıma Raspberry Pi 4 adını verdiğim bir resim ekledim. Kalan kutuları olduğu gibi bırakın.
Tebrikler! IoT projeniz için başarıyla bir kanal oluşturdunuz. (Raspberry Pi 4 adlı kanalımın başarıyla oluşturulduğunu görebileceğiniz ekteki resme bakın)
2. Adım: IFTTT Uygulamasını Kullanma
Google Asistan'ı kullanarak oluşturulan Thingspeak kanalınıza veri göndermek için bir GET isteğini tetiklemek için bu uygulamayı kullanmalıyız. Bu uygulamayı Google Asistan ile Thingspeak kanalınız arasında bir arayüz olarak düşünün.
Ardından, IFTTT uygulamasında GET istekleri oluşturuyoruz.
IFTTT uygulamasını https://play.google.com/store/apps/details?id=com… adresinden indirin.
hesabını oluştur
Sıfırdan Kendi Applet'lerinizi Yapın'a gidin
Bu seçeneğe dokunun
Google Asistan olarak tetikleme hizmetini seçin
Bunun içinde, Basit bir cümle söyle'yi seçin.
Bu seçeneğin altında bazı bilgi kutuları görünecektir. Bunun için görsellere bakın ve detayları buna göre doldurun! (bu amaçla iki resim vardır: 1. LED'i açmak için 2. LED'i kapatmak için)
Google Asistan olan If This bölümünü tamamladık. Şimdi Webhooks olan Then That seçeneğini seçiyoruz.
Bunun altında, Web isteği yap'ı seçin.
Kutulara doldurulması gereken bilgiler için resme bakın. Bu URL'ye bakın https://api.thingspeak.com/update?api_key=WRITE API ANAHTARINIZI GİRİN&field1=1
Yukarıdaki URL'de, INSERT YOUR WRITE API KEY hakkında bahsettiğimi fark edeceksiniz. Bu, Thingspeak'te oluşturduğunuz kanalın kimliği olan API anahtarıdır (resme bakın). Write API anahtarı kanalınıza belirli bir veriyi yazmanıza yardımcı olacak ve benzer şekilde Read API anahtarı da kanaldan veri almanıza yardımcı olacaktır.
Write API anahtarınız dışında, kutulardaki bilgilerin geri kalanı aynı kalır.
Burada, Google Asistanınıza "LED'i aç" dediğinizde, Thingspeak kanalınıza "1" göndereceği bir tetikleyici oluşturdunuz.
Şimdi, benzer şekilde, LED'i kapatmak için IFTTT uygulamasında yeni bir Applet oluşturmanız gerekiyor. Aynı konuda kafanız karıştıysa resimleri ekledim. Aksi takdirde, LED'i kapatma prosedürü, bazı küçük değişiklikler dışında yukarıda yaptığınızla aynıdır.
Adım 3: Sonunda Kodlamaya Başlamak
Python kodunun ana amacını açıklayacağım. Google Asistanınıza söylediklerinize bağlı olarak "1" veya "0" olacak olan Thingspeak kanalından verileri almamız gerekiyor. Buna göre LED'i açıp kapatmalıyız. Thingspeak kanalına yüklenen değer "1" ise led'i açarız, "0" ise kapatırız.
Kodda iki şeye ihtiyacınız olacak: 1. Okuma API anahtarınız 2. Kanal Kimliğiniz (aynısı için resimlere bakın)
İşte kod (HTTP ve Python'un ön koşullarını bildiğinizi varsayarak):
urllib'i içe aktar
içe aktarma istekleri
json'u içe aktar
ithalat zamanı
RPi. GPIO'yu GPIO olarak içe aktar
GPIO.setmode(GPIO. BOARD)
GPIO.setup(7, GPIO. OUT)
denemek:
süre(1):
URL='https://api.thingspeak.com/channels/KANAL Kimliğinizi/fields/1.json?api_key=' KEY='OKUMA API ANAHTARINIZI GİRİN'
HEADER='&sonuçlar=2'
NEW_URL=URL+ANAHTAR+BAŞLIK
#print(NEW_URL)
get_data=requests.get(NEW_URL).json()
#print(get_data)
feild_1=get_data['feed'ler']
#print("Alan:", feild_1)
t=
feild_1 içindeki x için:
t.append(x['alan1'])
yazdır(t[1])
eğer int(t[1])==1:
GPIO.çıktı(7, 1)
elif int(t[1])==0:
GPIO.çıktı(7, 0)
KeyboardInterrupt hariç:
GPIO.cleanup()