Vil du bygge ditt eget stemmestyrte smarthub?  Slik bruker du Google Assistant med en Raspberry Pi!

Slik bygger du en DIY Google Home Assistant Med Raspberry Pi

Annonse Stemmestyrte assistenter har raskt blitt vanlig. Mange hjem har en Alexa eller Google Home som styrer alt fra belysning til media og til og med tidtaking. Teknologien disse enhetene kjører på er tilgjengelig - i det minste delvis - for alle. Googles Assistant SDK lar deg bruke tjenesten på dine egne enheter. D

Annonse

Stemmestyrte assistenter har raskt blitt vanlig. Mange hjem har en Alexa eller Google Home som styrer alt fra belysning til media og til og med tidtaking.

Teknologien disse enhetene kjører på er tilgjengelig - i det minste delvis - for alle. Googles Assistant SDK lar deg bruke tjenesten på dine egne enheter. Denne opplæringen dekker hvordan du konfigurerer Google Assistant på Raspberry Pi, og stemme aktiverer en LED via GPIO-pinner.

Maskinvare som kreves for en Raspberry Pi hjemmeassistent

Raspberry Pi Google-assistent nødvendig utstyr

Du vil trenge:

  1. Raspberry Pi med en fersk Raspbian-installasjon på SD-kortet Slik installerer du et operativsystem på en Raspberry Pi Slik installerer du et operativsystem på en Raspberry Pi Slik installerer du et operativsystem på Raspberry Pi og hvordan du kloner det perfekte oppsettet ditt for raskt katastrofegjenoppretting. Les mer .
  2. USB-webkamera eller mikrofon.
  3. Ekstern høyttaler.
  4. Krets fra Pi LED-veiledningen Hvordan programmere Raspberry Pi for å kontrollere LED-lys Hvordan programmere Raspberry Pi for å kontrollere LED-lys Ser du etter et enkelt Raspberry Pi-prosjekt for å komme i gang med koding og elektronikk? Prøv å koble til noen lysdioder og kod dem for å slå av og på! Les mer (valgfritt)
  5. En nettleser logget på Google-kontoen din.

Merk: Utstyret for denne opplæringen kan variere noe. Jeg brukte et ekstra USB-webkamera rent for mikrofonen. Enhver kompatibel webkamera eller mikrofon bør gjøre det bra, og det er omfattende lister med Pi-kompatible enheter som kan hjelpe.

I tillegg bruker jeg 3, 5 mm utgang for lyd. HDMI og andre utgangskilder vil også fungere, selv om det krever endringer i lydoppsettet nedenfor.

Koble til USB-webkameraet og høyttaleren, og sett opp LED-kretsen hvis du bruker den.

Sette opp lyden

Denne opplæringen kan følges direkte på Pi eller via en SSH-tilkobling til Pi.

Begge veier begynner i terminalen, for å sjekke lydinnstillingene. Bruk kommandoene arecord -l og aplay -l for å liste over tilgjengelige enheter.

Sjekk avspillings- og opptaksenhetene

Bildet over viser USB-webkameraet som kort 1 og enhet 0 . Legg merke til kort- og enhetsnumrene for både mikrofon- og høyttalerutgang.

Nå, sørg for at du er i / home / pi- katalogen, lag en ny fil og åpne den i nano:

 sudo nano .asoundrc 

Innholdet i denne katalogen vil variere avhengig av hvilket kort- og enhetsnummer du bruker. Det er her du kan velge å favorisere HDMI-utgang fremfor 3, 5 mm hvis du ønsker det.

asoundrec konfigurasjonsfil for mikrofon og høyttaler

Når du har skrevet inn versjonen av koden ovenfor, trykk Ctrl + X for å lagre og avslutte.

Test oppsettet ditt ved å spille inn og spille av et kort klipp:

Gjør et testopptak for å sjekke oppsettet

Valgfritt trinn: Hvis du vil endre inngangsvolumet til mikrofonen din, åpner du alsamixer og trykker F6 for å bla mellom enhetene.

Det er det! Lyden er satt opp.

Opprette Google-prosjektet

Åpne Pis nettleser, alternativt, hvis du er tilkoblet via SSH, åpne en nettleser lokalt. Naviger til Google Action Console og klikk på New Project .

Lag et nytt Google-prosjekt

Dette kan ta noen få øyeblikk. Når du er ferdig, lar du vinduet være aktivt og åpne en ny fane - vi kommer til dette om et øyeblikk.

Aktivering av Google Assistant API

Det er noen få nettjusteringer du må gjøre for å fortsette. Naviger til nettstedet Google Assistant API og klikk på Aktiver .

Aktiver Google Assistant API

Prosjektet krever også aktivitetstillatelser. Gå til Aktivitetskontrollpanelet og sørg for at følgende aktiviteter er slått på:

  • Nett- og appaktivitet (inkludert avmerkingsboksen for Chrome Historie)
  • Enhetsinformasjon
  • Stemme- og lydaktivitet

Endre innstillinger for Google Aktivitet

Nå kan du gå videre til registrering av enheten.

Registrer bringebærpien din

Tilbake i handlingskonsollen, velg Enhetsregistrering fra venstre panel. Under Produkt lager du et husk som er lett å huske på enheten din. Produsentnavnet er ikke viktig (men må være der), og velg Auto for enhetstypen.

Registrer din Pi som modell

Klikk på Registrer modell, og klikk på Last ned OAuth 2.0-legitimasjon på neste skjermbilde. Dette laster ned en JSON-fil til datamaskinen din. Hvis du ikke er kjent med JSON-filer, ikke bekymre deg, men lære hvordan du bruker JSON JSON Python-parsing: En enkel guide JSON Python-parsing: En enkel guide Det er biblioteker og verktøysett tilgjengelig for analyse og generering av JSON fra nesten ethvert språk og miljø. Denne artikkelen konsentrerer seg om metoder og problemer som følge av JSON python-parsing. Les mer er verdt å gjøre for fremtiden!

Den offisielle Google-guiden anbefaler å flytte filen til / home / pi, så åpne filbehandleren og gjør dette nå.

Ekstra trinn for SSH-brukere:

Hvis du bruker SSH, vil du ha lastet ned JSON-filen til din lokale maskin i stedet for Pi. For å overføre det, åpner du et eget terminalvindu uten SSH-tilkobling. Kopier over klienthemmelige JSON-filer fra dette vinduet ved å bruke denne kommandoen:

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

Bytt ut "bringebær-pi-ip-adresse" med din Pis ip-adresse, og ikke glem kolon før banen. Hvis du lastet ned JSON-filen til et annet sted, endre din lokale bane for å gjenspeile dette. Skriv inn passordet ditt når du blir bedt om det, og filen vil kopiere til Pis hjemmekatalog.

Kopier den hemmelige cient-ID til PI

Bytt tilbake til SSH-terminalen, og naviger til / hjem / pi . Skriv inn ls -l for å liste filene i katalogen. Du bør se den overførte klienthemmelige JSON-filen.

Installere SDK

Google anbefaler å jobbe i et virtuelt Python-miljø. Lag et nytt virtuelt miljø som heter env .

Hvis du aldri har gjort dette før, vil denne opplæringen hjelpe deg med å lære hvordan du bruker virtuelle Python-miljøer.

Installer de nyeste versjonene av Pip, Setuptools og Wheel og aktiver ditt virtuelle miljø:

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

Google Assistant har noen avhengigheter som du bør installere i det virtuelle miljøet nå.

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

Til slutt installerer du Google Assistant SDK, prøver og OAuth-verktøyet.

 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 som trengs for å komme i gang. Hvis noen av installasjonene mislykkes, må du kontrollere stavingen og avstanden grundig.

Autentisere Raspberry Pi

Bruk google-auth-oauthlib [verktøyet] med den legitimasjon JSON-filen som er lastet ned tidligere for å autentisere 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 må erstatte YOUR_CLIENT_SECRET_ID med den nedlastede filen, så det er verdt å kopiere filnavnet først. Denne klient-IDen må være riktig. Ikke endre filnavnet!

Du bør få en melding med en lenke der du ber om å lime inn en autorisasjonskode.

Genererer autorisasjonslenken fra kommandolinjen.

Ved å klikke på lenken åpnes nettleseren. Du blir bedt om å aktivere enheten på Google-kontoen din. Kopier autorisasjonskoden som følger, og lim den tilbake i terminalvinduet.

Du må motta en bekreftelse som har lest Credentials Saved: / home / pi ..., noe som betyr at Pi er autorisert med Google-kontoen din.

Test det ut

Nå som alt er på plass, er det på tide å teste din Pi Google Assistant. Kjør assistenten med denne kommandoen:

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

Du må bytte ut mitt-dev-prosjekt med prosjekt-ID-en din (funnet under Innstillingshjulet på Action Console). Enhetsmodell -IDen din er oppført under Enhetsregistreringsdelen av Action Console.

Prøv det! Si "OK Google" og still et spørsmål. Du kan se programutgangen i terminalen når du hører svaret:

Terminalutgang for Google Assistant

Det er det! Google Assistant kjører nå på Raspberry Pi. Merk at hvis utskriftsvolumet er litt lavt, kan du endre det ved å si "Hei Google, skru opp volumet til 80%."

Bonus: Stemmeaktivert GPIO

Det er mulig å kontrollere lys med en Arduino og Siri, men det er en enklere metode. Hvis du setter opp en LED, kan du bruke Google Assistant til å kontrollere den med stemmen din.

Å sette opp Google Assistant for å jobbe med GPIO-pinnene er relativt enkelt, men krever noen ekstra trinn. Gå til Google Action Console, og finn enheten din under Enhetsregistrering. Klikk på den og åpne trekkmenyen:

Aktivering av OnOff Assistant-egenskapen

Slå på OnOff- egenskapen, og klikk Lagre.

Nå, og sørg for at du er i det virtuelle env -miljøet, klon en versjon av SDK til din Pi ved hjelp av git:

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

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

 pip install rpi.gpio 

Naviger nå til mappen som inneholder skriptet hotword.py .

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

Endre skriptet

Du må legge til noen linjer i hotword.py-skriptet, så åpne det i nano-editoren:

 nano hotword.py 

Legg til dine egne for RPi.GPIO under importoppgavene.

 import RPi.GPIO as GPIO 

Se etter process_event- metoden. Fjern eller kommenter utskriftserklæringen på linje 66, og legg til en if-setning for å 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 logikken styrer lysdioden, men så langt er den ikke konfigurert til å gi ut. Konfigurer den i hovedfunksjonen () før prosess_event-metoden blir kalt.

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

Nå er GPIO-pinnen satt til å komme ut og initialiseres i lav tilstand. Lagre og avslutt. Du kan kjøre det modifiserte skriptet som passerer modell-ID-nummeret ditt (funnet i Action Console) som et argument.

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

Terminalutgangen er den samme som før, og assistenten vil fungere som standard. Nå, men når du sier "OK ​​Google, slå på", vil du se en ny utgang:

Terminalmelding som viser "LED slår på" utskrift

Merk: Bildet over er beskåret, og viser bare assistenten som har hørt forespørselen, og utskriftsuttalelsen lagt til skriptet.

Du bør også se din LED-lampe!

Stemmeaktivert LED.

Din egen DIY Raspberry Pi Google Hjemmeassistent

Dette prosjektet er en god introduksjon til bruk av Google API-tjenester. Nå som du har en Google Assistant-enhet, kan du prøve noen av de beste Google Home-kommandoene. Google Home Commands Cheat Sheet. Google Home Commands Cheat Sheet. Vår jukseark med Google Home-kommandoer inneholder mange nyttige handlinger, inkludert underholdning, informasjon og automatisering. Les mer — vi har sett på noen gode Google Home minispel 15 Google Hjemmekommandoer for minispel og mer 15 Google Hjemmekommandoer for Minispel og mer Du kan gjøre så mange ting med Google Hjemmekommandoer. Her er flere underholdende Google Home-kommandoer som er verdt å prøve. Les mer .

Utforsk mer om: DIY-prosjektveiledninger, Google Assistant, LED-lys, bringebærpi, smarte huber.