Indholdsfortegnelse:

Få en skærm til dit Google -hjem ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ): 13 trin
Få en skærm til dit Google -hjem ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ): 13 trin

Video: Få en skærm til dit Google -hjem ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ): 13 trin

Video: Få en skærm til dit Google -hjem ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ): 13 trin
Video: Sådan får du adgang til hjemmenetværket fra internettet med Raspberry Pi og Zerotier 2024, November
Anonim
Få en skærm til dit Google Home ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ)
Få en skærm til dit Google Home ved hjælp af Raspberry Pi og Dialogflow (Chromecast -alternativ)

Lige siden jeg købte mit Google -hjem har jeg ønsket at styre mine enheder derhjemme ved hjælp af stemmekommandoer. Det fungerer på alle måder fantastisk, men jeg havde ondt af dets videofunktion. Vi kan kun se Youtube og Netflix, hvis vi har en Chromecast -enhed eller et tv med indbygget Chromecast -funktion. Jeg har en Raspberry Pi med, så jeg tænkte på at bruge den til at afspille mine yndlingsvideoer og film med stemmekommandoer.

Trin 1:

Image
Image

Til dette lavede jeg følgende opsætning

Google Home -> Dialogflow -> Rpi IP -adresse på Dataplicity -> Nodejs Server -> Kode til at åbne URL'er

Dialogflow er en Googles interaktionsteknologi mellem mennesker og computere baseret på samtaler på naturligt sprog. Ved hjælp af dette kan vi udvikle vores egne samtaler eller opgaver at give som input til Google home. Dette fungerer som følger

Hensigt [Input, spørgsmål, samtale, kommando….] -> Google Home -> handling [svar]

Her kan svaret enten være en simpel samtale eller data hentet fra et webhook, som vi skal lave ved hjælp af Rpi -server. Så gå til Dialogflow -webstedet og opret en konto og en ny agent.

Opret derefter en ny hensigt….

Trin 2:

Billede
Billede

Indtast derefter træningssætningerne. Dette er de kommandoer, som brugerne taler, når de prøver at få adgang til en bestemt opgave fra Google Home.

Trin 3:

Her kan ordet 'websted' ændres til alt som youtube, Netflix, amazon prime osv … Så dette ord fungerer som en variabel, og når du vælger ordet websted [ved hjælp af mus], får du følgende

Trin 4:

Billede
Billede

Fra rullemenuen skal du vælge '@sys.any' og trykke på enter.

Trin 5:

Billede
Billede

Indtast derefter det samme parameternavn i sektionen med handlinger. De værdier, der er nævnt i dette afsnit, sendes til webhook som en JSON -fil, som vi skal hente på serveren for at vide, hvilket websted brugeren har påberåbt.

Værdien af en variabel hentes ved hjælp af '$ variable_name'

Trin 6:

Billede
Billede

Tilføj det svar, som vi skal høre efter at have sagt kommandoen til Google Home. Gem derefter hensigten. Indstil om nødvendigt denne hensigt som afslutning på samtalen.

Trin 7:

Nu vil vi oprette vores back-end service for at få disse forespørgsler til at åbne videoer og websteder på vores hindbær pi.

Den resterende opsætning

Dataplicitet -> Nodejs -server -> kode

Hvorfor har vi brug for dataplicitet? fordi Google Home opretter forbindelse til webhooks, der er tilgængelige på internettet. Selvom vores GHome er forbundet til det lokale netværk, kommer forespørgslerne fra Google cloud -tjenesten, og derfor er der behov for at overføre vores server til internettet. I stedet for den hovedpine kan vi bruge dataplicity -tjenester til let at placere vores hindbærpi på internettet.

Først skal du oprette forbindelse til raspberry pi [direkte med HDMI eller endda med SSh] Få den seneste nodejs-løbetid fra følgende kommando i terminalen.

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

Installer det derefter ved hjælp af

sudo apt -get install -y nodejs

Opret derefter en ny fil

nano webserver.js

Trin 8:

Indsæt derefter nedenstående kode i filen

Her til demonstration bruger jeg kun to websteder (google, youtube). Man kan redigere koden og ændre i overensstemmelse hermed.

bodyParser = require ('body-parser'); var exec = require ('child_process'). exec; var express = require (‘express’); var app = express (); app.use (bodyParser.json ()); app.post ('/', funktion (req, res) {let variable = req.body.queryResult.parameters.website; exec ("midori www."+variable+". com", funktion (fejl, stdout, stderr) {console.log (“stdout:“+ stdout); console.log (“stderr:“+ stderr); if (error! == null) {console.log (“exec errror:“+ error);}}); returnere res.end ();}); app.listen (80);

Trin 9:

Billede
Billede

Ovenstående kode blev kun skrevet for at forklare konceptet. Jeg brugte Midori -browseren i koden, da chrom ikke fungerer med fjernkommandoer. Vi kan også bruge Firefox. [Vi skal installere body-parser, express-moduler ved hjælp af npm, før vi skriver koden]

Husk, at vi kun bør lytte på port 80, da dataplicitet kun kan videresende port 80 af hindbærpi.

Nu skal vi konfigurere Dataplicity

Gå til Dataplicity -webstedet, og opret din konto, og følg vejledningen for at tilføje raspberry pi til instrumentbrættet.

Trin 10:

Billede
Billede

Derefter åbner du hindbær pi fra enhedslisten og vælger ormhul for at få en unik IP -adresse til hindbær pi, som vi kan implementere vores nodeserver på.

Kopier IP -adressen til udklipsholderen.

Trin 11:

Billede
Billede

Kør nu koden fra hindbær pi -terminalen

sudo node webserver.js

Hvis det viser en fejl om display eller protokoller …. udføre

sudo xhost +

Gå nu tilbage til dialogflowet, og klik på opfyldelsesafsnittet

Trin 12:

Billede
Billede

Indtast IP -adressen eller webadressen fra dataplicitet i ovenstående rum.

Trin 13:

Billede
Billede

Gå endelig til afsnittet hensigter og aktiver webhook -opkaldet fra fanen Opfyldelse.

Det er det! Gå nu tilbage til dit google -hjem og tjek, hvordan det fungerer!

Indtil næste gang, Happy Hacking:)

Anbefalede: