Ønsker du at bygge din egen stemmestyrede smart home hub?  Sådan bruges Google Assistant med en Raspberry Pi!

Sådan bygger du en DIY Google Home Assistant med Raspberry Pi

Reklame Stemmestyrede assistenter er hurtigt blevet almindelige. Mange huse har en Alexa eller Google Home, der styrer alt fra belysning til medier og endda tidtagning. Teknologien, som disse enheder kører på, er tilgængelig - i det mindste delvist - for alle. Googles Assistant SDK giver dig mulighed for at bruge tjenesten på dine egne enheder. De

Reklame

Stemmestyrede assistenter er hurtigt blevet almindelige. Mange huse har en Alexa eller Google Home, der styrer alt fra belysning til medier og endda tidtagning.

Teknologien, som disse enheder kører på, er tilgængelig - i det mindste delvist - for alle. Googles Assistant SDK giver dig mulighed for at bruge tjenesten på dine egne enheder. Denne tutorial dækker, hvordan du opretter Google Assistant på din Raspberry Pi, og stemme aktiverer en LED via GPIO-pins.

Hardware kræves til en Raspberry Pi-hjemmeassistent

Raspberry Pi Google-assistent kræves udstyr

Du får brug for:

  1. Raspberry Pi med en frisk Raspbian-installation på SD-kortet Sådan installeres et operativsystem på en Raspberry Pi Sådan installeres et operativsystem på en Raspberry Pi Sådan installeres et operativsystem på din Raspberry Pi og hvordan du kloner din perfekte opsætning til hurtig bedring af katastrofer. Læs mere .
  2. USB webcam eller mikrofon.
  3. Ekstern højttaler.
  4. Kredsløb fra Pi LED-tutorial Sådan programmeres dit Raspberry Pi til styring af LED-lys Sådan programmeres din Raspberry Pi til kontrol af LED-lys Leder du efter et let Raspberry Pi-projekt til at komme i gang med kodning og elektronik? Prøv at tilslutte nogle lysdioder og kode dem for at tænde og slukke! Læs mere (valgfrit)
  5. En browser er logget ind på din Google-konto.

Bemærk: Udstyret til denne tutorial kan variere noget. Jeg brugte et ekstra USB-webcam udelukkende til dets mikrofon. Ethvert kompatibelt webcam eller mikrofon skal klare sig godt, og der er omfattende lister med Pi-kompatible enheder, der kan hjælpe.

Desuden bruger jeg 3, 5 mm output til lyd. HDMI og andre outputkilder fungerer også, skønt det kræver ændringer af lydopsætningen nedenfor.

Tilslut USB-webcam og højttaler, og indstil LED-kredsløbet, hvis du bruger det.

Opsætning af lyden

Denne tutorial kan følges direkte på Pi eller via en SSH-forbindelse til Pi.

Begge måder begynder i terminalen for at kontrollere lydindstillingerne. Brug kommandoerne arecord -l og aplay -l til at liste over tilgængelige enheder.

Kontroller afspilnings- og optageenhederne

Billedet ovenfor viser USB-webcam som kort 1 og enhed 0 . Bemærk kort- og enhedsnumrene til både mikrofon- og højttalerudgang.

Nu skal du sørge for at være i biblioteket / home / pi, oprette en ny fil og åbne den i nano:

 sudo nano .asoundrc 

Indholdet af dette bibliotek afhænger af, hvilket kort- og enhedsnumre du bruger. Det er her du kan vælge at favorisere HDMI-output snarere end 3, 5 mm, hvis du ønsker det.

asoundrec-konfigurationsfil til mikrofon og højttaler

Når du har indtastet din version af ovenstående kode, skal du trykke på Ctrl + X for at gemme og afslutte.

Test dit setup ved at optage og afspille et kort klip:

Foretag en testoptagelse for at kontrollere dit setup

Valgfrit trin: Hvis du vil ændre indgangsvolumen på din mikrofon, skal du åbne alsamixer og trykke på F6 for at skifte mellem enheder.

Det er det! Lyden er indstillet.

Oprettelse af Google-projektet

Åbn Pis browser, alternativt, hvis du er tilsluttet via SSH, åbn en browser lokalt. Naviger til Google Action Console, og klik på New Project .

Opret et nyt Google-projekt

Dette kan tage et par øjeblikke. Når du er færdig, skal du lade vinduet være aktivt og åbne en ny fane - vi kommer til dette i et øjeblik.

Aktivering af Google Assistant API

Der er et par onlinejusteringer, du skal foretage for at fortsætte. Naviger til Google Assistant API-webstedet, og klik på Aktiver .

Aktivér Google Assistant API

Projektet kræver også aktivitetstilladelser. Gå til dit Aktivitetskontrolpanel, og sørg for, at følgende aktiviteter er tændt:

  • Web- og appaktivitet (inklusive afkrydsningsfelt i Chrome-historik)
  • Enhedsoplysninger
  • Stemme- og lydaktivitet

Ændring af indstillinger for Google Aktivitet

Nu kan du gå videre til registrering af enheden.

Registrering af din Raspberry Pi

Tilbage i handlingskonsollen skal du vælge Enhedsregistrering fra venstre panel. Opret et produkt, der er let at huske på din enhed under Produkt . Producentnavnet er ikke vigtigt (men skal være der), og vælg Auto til enhedstypen.

Registrer din Pi som model

Klik på Registrer model, og klik på Download OAuth 2.0-legitimationsoplysninger på det næste skærmbillede. Dette henter en JSON-fil til din computer. Hvis du ikke er bekendt med JSON-filer, skal du ikke bekymre dig, men lære at bruge JSON JSON Python-parsing: En simpel guide JSON Python-parsing: En enkel guide Der er biblioteker og værktøjssæt til rådighed til at analysere og generere JSON fra næsten ethvert sprog og miljø. Denne artikel koncentrerer sig om metoder og problemer, der stammer fra JSON-python-parsing. Læs mere er værd at gøre for fremtiden!

Den officielle Google-guide anbefaler, at du flytter filen til / home / pi, så åbn filhåndteringen, og gør dette nu.

Ekstra trin til SSH-brugere:

Hvis du bruger SSH, har du downloadet JSON-filen til din lokale maskine i stedet for Pi. For at overføre det skal du åbne et separat terminalvindue uden SSH-forbindelse. I dette vindue kopieres den klienthemmelige JSON-fil over denne kommando:

 scp ~/Downloads/client_secret_client-id.json :/home/pi/ 

Udskift "hindbær-pi-ip-adresse" med din Pi's ip-adresse, og glem ikke kolon før stien. Hvis du downloadede JSON-filen til en anden placering, skal du ændre din lokale sti for at afspejle dette. Indtast din adgangskode, når du bliver bedt om det, og filen kopieres til Pis hjemmekatalog.

Kopier det hemmelige cient-id til PI

Skift tilbage til SSH-terminalen, og naviger til / home / pi . Indtast ls -l for at vise filerne i biblioteket. Du skal se den overførte klienthemmelige JSON-fil.

Installation af SDK

Google anbefaler at arbejde i et virtuelt Python-miljø. Opret et nyt virtuelt miljø kaldet env .

Hvis du aldrig har gjort dette før, vil denne tutorial hjælpe dig med at lære, hvordan du bruger virtuelle Python-miljøer.

Installer de nyeste versioner af Pip, Setuptools og Wheel og aktiver dit virtuelle miljø:

 env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate 

Google Assistant har nogle afhængigheder, som du skal installere i det virtuelle miljø nu.

 sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev 

Endelig skal du installere værktøjet Google Assistant SDK, prøver og OAuth.

 python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples] python -m pip install --upgrade google-auth-oauthlib[tool] 

Det er alt, hvad der kræves for at komme i gang. Hvis nogle af installationerne mislykkes, skal du kontrollere stavningen og afstanden grundigt.

Autentificering af Raspberry Pi

Brug google-autor-oauthlib [værktøjet] med den legitimation JSON-fil, der er downloadet tidligere, for at godkende din Raspberry Pi.

 google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype \ --scope https://www.googleapis.com/auth/gcm \ --save --headless --client-secrets /home/pi/YOUR_CLIENT_SECRET_ID.json 

Du skal erstatte YOUR_CLIENT_SECRET_ID med den downloadede fil, så det er værd at kopiere filnavnet først. Dette klient-id skal være korrekt. Skift ikke filnavnet!

Du skal få en meddelelse med et link, der beder dig om at indsætte en tilladelseskode.

Genererer autorisationslinket fra kommandolinjen.

Klik på linket åbner browseren. Du bliver bedt om at aktivere enheden på din Google-konto. Kopier den tilladelseskode, der følger, og indsæt den tilbage i dit terminalvindue.

Du skal modtage en bekræftelse, der læser Credentials Saved: / home / pi…, hvilket betyder, at Pi er godkendt med din Google-konto.

Test det ud

Nu hvor alt er på plads, er det tid til at teste din Pi Google Assistant. Kør assistenten med denne kommando:

 googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model 

Du bliver nødt til at udskifte mit-dev-projekt med dit projekt-id (findes under indstillingshjulet på handlingskonsollen). Din enhedsmodel-id vises under afsnittet Enhedsregistrering i handlingskonsollen.

Prøve det! Sig ”OK Google” og still et spørgsmål. Du kan se programoutput i terminalen, når du hører svaret:

Terminaloutput til Google Assistant

Det er det! Google Assistant kører nu på din Raspberry Pi. Bemærk, at hvis outputvolumen er lidt lav, kan du ændre den ved at sige "Hej Google, skift din lydstyrke op til 80%."

Bonus: Stemmeaktiveret GPIO

Det er muligt at kontrollere lys med en Arduino og Siri, men der er en enklere metode. Hvis du konfigurerer en LED, kan du bruge Google Assistant til at kontrollere den med din stemme.

Det er relativt enkelt at indstille Google Assistant til at arbejde med GPIO-stifterne, men det kræver nogle ekstra trin. Gå til Google Action Console, og find din enhed under Enhedsregistrering. Klik på det, og åbn trækmenuen:

Aktivering af OnOff Assistant-træk

Tænd OnOff- egenskaben, og klik på Gem.

Nu skal du sikre dig, at du er inde i det virtuelle env- miljø, klone en version af SDK til din Pi vha. Git:

 git clone https://github.com/googlesamples/assistant-sdk-python 

Da dette er et virtuelt miljø, skal du installere RPi.GPIO, før du går videre.

 pip install rpi.gpio 

Naviger nu til den mappe, der indeholder scriptet hotword.py .

 cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library 

Ændring af scriptet

Du skal tilføje et par linjer til hotword.py-scriptet, så åbn det i nano-editoren:

 nano hotword.py 

Tilføj dine egne til RPi.GPIO under importopgørelserne.

 import RPi.GPIO as GPIO 

Se efter process_event- metoden. På linje 66 skal du fjerne eller kommentere udskrivningen og tilføje en if-sætning for at kontrollere lysdioden.

 #print('Do command', command, 'with params', str(params)) if command == "action.devices.commands.OnOff": if params['on']: print('---------------') print('Led turned on') print('---------------') GPIO.output(18, GPIO.HIGH) else: print('---------------') print('Led turned off') print('---------------') GPIO.output(18, GPIO.LOW) 

Denne logik styrer LED'en, men indtil videre er den ikke konfigureret til at blive output. Indstil den i hovedfunktionen (), før process_event-metoden bliver kaldt.

 GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW) 

Nu er GPIO-nålen indstillet til at blive output og initialiseres i en lav tilstand. Gem og luk. Du kan køre dit ændrede script, der videregiver dit model-id-nummer (findes i Action Console) som et argument.

 python hotword.py --device-model-id YOUR-MODEL-ID-HERE 

Terminaludgangen er den samme som før, og assistenten fungerer som standard. Nu, når du siger "OK ​​Google, tænd", vil du imidlertid se en ny output:

Terminalmeddelelse, der viser "LED tænder" udskrivning

Bemærk: Ovenstående billede er beskåret, der kun viser assistenten, der hører anmodningen, og den udskrivning, der er føjet til scriptet.

Du skal også se din LED-lampe op!

Stemmeaktiveret LED.

Din egen DIY Raspberry Pi Google Hjemmeassistent

Dette projekt er en god introduktion til brug af Google API-tjenester. Nu hvor du har en Google Assistant-enhed, kan du prøve nogle af de bedste Google Home-kommandoer Google Home Commands Cheat Sheet Google Home Commands Cheat Sheet Vores snyderark med Google Home kommandoer indeholder mange handy handlinger, herunder underholdning, information og automatisering. Læs mere —Vi har set på nogle gode Google Home-minispil 15 Google-hjemmekommandoer til minispil og mere 15 Google-hjemmekommandoer til minispil og mere Du kan gøre så mange ting med Google Hjem-kommandoer. Her er flere underholdende Google Home-kommandoer, der er værd at prøve. Læs mere .

Udforsk mere om: DIY-projektvejledninger, Google Assistant, LED-lamper, Raspberry Pi, Smart Hubs.