Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Hallo!
In dit project zullen we op Google Assistant gebaseerde besturing van de LED implementeren met behulp van Raspberry Pi 4 met HTTP in Python. Je kunt de LED vervangen door een gloeilamp (uiteraard niet letterlijk, je hebt er een relaismodule tussen nodig) of een ander huishoudelijk apparaat zodat dit project verder kan worden geïmplementeerd voor domotica-doeleinden.
Benodigdheden
Wat heb je nodig voor dit project:
1. Raspberry Pi
2. LED
3. Overbruggingsdraden-2 (man naar vrouw)
4. Broodplank
5. IFTTT-app (https://play.google.com/store/apps/details?id=com.ifttt.ifttt&hl=en_IN)
6. Thingspeak-account (https://thingspeak.com/)
Enkele voorwaarden:
1. Basisprincipes van netwerken-HTTP
2. Python om toegang te krijgen tot de webgegevens
Stap 1: Een Thingspeak-kanaal maken
Als je nieuw bent bij Thingspeak en het nog nooit eerder hebt gebruikt, volg dan de onderstaande stappen:
Ga naar
U moet zich aanmelden voordat u Thingspeak. gaat gebruiken
Ga na het aanmelden naar het gedeelte Kanalen
Selecteer onder Kanalen Nieuw kanaal (zie afbeelding ter referentie)
In Nieuw kanaal ziet u verschillende informatievakken. U hoeft alleen het veld Naam in te vullen. Je kunt je kanaal een naam geven zoals je wilt. Ik heb een afbeelding bijgevoegd waarin ik mijn kanaal als Raspberry Pi 4 heb genoemd. Laat de rest van de dozen zoals ze zijn.
Gefeliciteerd! U hebt met succes een kanaal gemaakt voor uw IoT-project. (zie de bijgevoegde afbeelding waar je kunt zien dat mijn kanaal met de naam Raspberry Pi 4 met succes is gemaakt)
Stap 2: IFTTT-app gebruiken
We moeten deze app gebruiken om een GET-verzoek te activeren voor het plaatsen van gegevens op je gemaakte Thingspeak-kanaal met behulp van Google Assistant. Zie deze app als een interface tussen Google Assistant en je Thingspeak-kanaal.
Vervolgens maken we GET-verzoeken in de IFTTT-app.
Download de IFTTT-app van
Maak een account aan
Ga naar Maak je eigen applets helemaal opnieuw
Tik op Als deze optie
Selecteer triggerservice als Google Assistent
Selecteer daarin Zeg een eenvoudige zin
Onder die optie verschijnen enkele informatievakken. Raadpleeg daarvoor de afbeeldingen en vul de gegevens dienovereenkomstig in! (hiervoor zijn twee afbeeldingen beschikbaar: 1. Om de LED aan te zetten 2. Om de LED uit te schakelen)
We hebben het If This-gedeelte, de Google Assistent, voltooid. Nu selecteren we Dan Die optie die Webhooks is.
Selecteer daaronder Een webverzoek maken
Raadpleeg de afbeelding voor de informatie die in de vakken moet worden ingevuld. Raadpleeg deze URL https://api.thingspeak.com/update?api_key=INSERT YOUR WRITE API KEY&field1=1
In de bovenstaande URL zult u merken dat ik het heb gehad over INSERT YOUR WRITE API KEY. Dit is de API-sleutel die een identiteit is van het kanaal dat je op Thingspeak hebt gemaakt (zie afbeelding). Schrijf API-sleutel helpt u om bepaalde gegevens naar uw kanaal te schrijven en op dezelfde manier helpt API-sleutel lezen u om gegevens van het kanaal te verkrijgen.
Afgezien van uw Write API-sleutel, blijft de rest van de informatie uit de vakken hetzelfde.
Dus hier heb je een trigger gemaakt waarbij wanneer je tegen je Google Assistent zegt: "Zet de LED aan", deze een "1" naar je Thingspeak-kanaal stuurt.
Nu moet je op een vergelijkbare manier een nieuwe applet maken in de IFTTT-app om de LED uit te schakelen. Ik heb afbeeldingen bijgevoegd als je in de war bent over hetzelfde. Anders is de procedure voor het uitschakelen van de LED dezelfde als die van wat u hierboven deed, afgezien van enkele kleine wijzigingen.
Stap 3: Eindelijk beginnen met coderen
Ik zal het hoofddoel van de Python-code uitleggen. We moeten de gegevens ophalen van het Thingspeak-kanaal, wat ofwel een "1" of een "0" zal zijn op basis van wat je tegen je Google Assistent zegt. Op basis hiervan moeten we de LED aan- of uitzetten. Als de geüploade waarde op het Thingspeak-kanaal "1" is, zetten we de LED aan en als het een "0" is, zetten we hem uit.
In de code heb je twee dingen nodig: 1. Je Read API-sleutel 2. Je kanaal-ID (verwijs hiervoor naar de afbeeldingen)
Hier is de code (ervan uitgaande dat je de vereisten van HTTP en Python kent):
urllib importeren
importverzoeken
import json
import tijd
importeer RPi. GPIO als GPIO
GPIO.setmode(GPIO. BOARD)
GPIO.setup(7, GPIO. OUT)
proberen:
terwijl(1):
URL='https://api.thingspeak.com/channels/VOEG UW KANAAL-ID IN/fields/1.json?api_key=' KEY='VOEG UW LEES API-SLEUTEL IN'
HEADER='&resultaten=2'
NEW_URL=URL+KEY+HEADER
#print(NEW_URL)
get_data=requests.get(NEW_URL).json()
#print(get_data)
feild_1=get_data['feeds']
#print("Veld:", veld_1)
t=
voor x in veld_1:
t.append(x['veld1'])
afdrukken(t[1])
if int(t[1])==1:
GPIO.uitgang(7, 1)
elif int(t[1])==0:
GPIO.uitgang(7, 0)
behalve KeyboardInterrupt:
GPIO.opschonen()