Inhoudsopgave:

Een scherm voor uw Google Home krijgen met Raspberry Pi en Dialogflow (Chromecast-alternatief): 13 stappen
Een scherm voor uw Google Home krijgen met Raspberry Pi en Dialogflow (Chromecast-alternatief): 13 stappen

Video: Een scherm voor uw Google Home krijgen met Raspberry Pi en Dialogflow (Chromecast-alternatief): 13 stappen

Video: Een scherm voor uw Google Home krijgen met Raspberry Pi en Dialogflow (Chromecast-alternatief): 13 stappen
Video: Dialogflow (Webhook) 2024, Juli-
Anonim
Krijg een scherm voor uw Google Home met Raspberry Pi en Dialogflow (Chromecast-alternatief)
Krijg een scherm voor uw Google Home met Raspberry Pi en Dialogflow (Chromecast-alternatief)

Sinds ik mijn Google Home heb gekocht, wil ik mijn apparaten thuis bedienen met spraakopdrachten. Het werkt in alle opzichten geweldig, maar ik voelde me slecht voor de videofunctie. We kunnen YouTube en Netflix alleen bekijken als we een Chromecast-apparaat of tv met ingebouwde Chromecast-functie hebben. Ik heb een Raspberry Pi bij me, dus ik dacht erover om die te gebruiken om mijn favoriete video's en films af te spelen met spraakopdrachten.

Stap 1:

Image
Image

Hiervoor heb ik de volgende setup gemaakt:

Google Home -> Dialogflow -> Rpi IP-adres op Dataplicity -> Nodejs Server -> Code om URL's te openen

Dialogflow is de mens-computer-interactietechnologie van Google op basis van natuurlijke taalconversaties. Met behulp hiervan kunnen we onze eigen gesprekken of taken ontwikkelen om als input te geven aan Google home. Dit werkt als volgt:

Intentie [Invoer, vraag, gesprek, opdracht….] -> Google Home -> actie [antwoord]

Hier kan het antwoord een eenvoudig gesprek zijn of anders gegevens die zijn opgehaald van een webhook, die we gaan maken met behulp van de Rpi-server. Ga dus naar de Dialogflow-website en maak een account en een nieuwe agent aan.

Maak dan een nieuwe intentie….

Stap 2:

Afbeelding
Afbeelding

Voer vervolgens de trainingszinnen in. Dit zijn de opdrachten die gebruikers uitspreken wanneer ze proberen toegang te krijgen tot een specifieke taak vanuit Google Home.

Stap 3:

Hier kan het woord 'website' worden gewijzigd in alles zoals youtube, Netflix, amazon prime enz … Dit woord fungeert dus als een variabele en wanneer u het woord website [met muis] selecteert, krijgt u het volgende

Stap 4:

Afbeelding
Afbeelding

Selecteer in het vervolgkeuzemenu '@sys.any' en druk op enter.

Stap 5:

Afbeelding
Afbeelding

Voer vervolgens dezelfde parameternaam in het gedeelte Acties in. De waarden die in deze sectie worden genoemd, worden naar de webhook verzonden als een JSON-bestand, dat we in de server moeten ophalen om te weten welke website de gebruiker heeft aangeroepen.

De waarde van een variabele wordt opgehaald met '$variable_name'

Stap 6:

Afbeelding
Afbeelding

Voeg het antwoord toe dat we moeten horen nadat we het commando hebben gegeven aan Google Home. Sla vervolgens de intentie op. Stel deze intentie indien nodig in als het einde van het gesprek.

Stap 7:

Nu zullen we onze back-endservice opzetten om die vragen te krijgen om video's en websites op onze raspberry pi te openen.

De overige instellingen

Datapliciteit -> Nodejs-server -> code

Waarom hebben we datapliciteit nodig? omdat Google Home verbinding maakt met webhooks die via internet toegankelijk zijn. Hoewel onze GHome is verbonden met het lokale netwerk, komen de vragen van de Google-cloudservice en daarom is het nodig om onze server naar internet te porteren. In plaats van die hoofdpijn, kunnen we dataplicity-services gebruiken om onze Raspberry Pi gemakkelijk op internet te plaatsen.

Maak eerst verbinding met de raspberry pi [direct met HDMI of zelfs met SSh] Haal de nieuwste nodejs-runtime op met de volgende opdracht in de terminal.

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

Installeer het dan met

sudo apt-get install -y nodejs

Maak dan een nieuw bestand aan

nano webserver.js

Stap 8:

Voeg vervolgens de onderstaande code in het bestand in:

Hier, voor demonstratie, gebruik ik slechts twee websites (google, youtube). Men kan de code bewerken en dienovereenkomstig wijzigen.

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

Stap 9:

Afbeelding
Afbeelding

De bovenstaande code is alleen geschreven om het concept uit te leggen. Ik heb de Midori-browser in de code gebruikt, omdat chroom niet werkt met externe opdrachten. We kunnen ook Firefox gebruiken. [We moeten body-parser, express-modules installeren met behulp van npm voordat we de code schrijven]

Onthoud dat we alleen op poort 80 moeten luisteren, omdat datapliciteit alleen poort 80 van de raspberry pi kan doorsturen.

Nu moeten we Dataplicity instellen

Ga naar de Dataplicity-website en maak uw account aan en volg de instructies om de raspberry pi aan het dashboard toe te voegen.

Stap 10:

Afbeelding
Afbeelding

Open daarna raspberry pi uit de lijst met apparaten en selecteer wormgat om een uniek IP-adres voor de raspberry pi te krijgen waarop we onze node-server kunnen implementeren.

Kopieer het IP-adres naar het klembord.

Stap 11:

Afbeelding
Afbeelding

Voer nu de code uit vanaf de Raspberry Pi-terminal

sudo node webserver.js

Als er een fout wordt weergegeven over de weergave of over protocollen… uitvoeren

sudo xhost +

Ga nu terug naar de dialoogstroom en klik op de uitvoeringssectie

Stap 12:

Afbeelding
Afbeelding

Voer het IP-adres of de URL van datapliciteit in de bovenstaande ruimte in.

Stap 13:

Afbeelding
Afbeelding

Ga ten slotte naar het gedeelte intenties en schakel de webhook-oproep in op het tabblad 'fulfilment'.

Dat is het! Ga nu terug naar je Google Home en kijk hoe het werkt!

Tot de volgende keer, Happy Hacking:)

Aanbevolen: