Holen Sie sich einen Bildschirm für Ihr Google Home mit Raspberry Pi und Dialogflow (Chromecast-Alternative) - Gunook
Holen Sie sich einen Bildschirm für Ihr Google Home mit Raspberry Pi und Dialogflow (Chromecast-Alternative) - Gunook
Anonim
Holen Sie sich einen Bildschirm für Ihr Google Home mit Raspberry Pi und Dialogflow (Chromecast-Alternative)
Holen Sie sich einen Bildschirm für Ihr Google Home mit Raspberry Pi und Dialogflow (Chromecast-Alternative)

Seit ich mein Google Home gekauft habe, wollte ich meine Geräte zu Hause per Sprachbefehl steuern. Es funktioniert in jeder Hinsicht großartig, aber ich fühlte mich wegen seiner Videofunktion schlecht. Wir können Youtube und Netflix nur ansehen, wenn wir ein Chromecast-Gerät oder einen Fernseher mit integrierter Chromecast-Funktion haben. Ich habe einen Raspberry Pi bei mir, also dachte ich daran, ihn zu verwenden, um meine Lieblingsvideos und -filme mit Sprachbefehlen abzuspielen.

Schritt 1:

Image
Image

Dazu habe ich folgendes Setup gemacht

Google Home -> Dialogflow -> Rpi IP-Adresse auf Dataplicity -> Nodejs Server -> Code zum Öffnen von URLs

Dialogflow ist eine Mensch-Computer-Interaktionstechnologie von Google, die auf Konversationen in natürlicher Sprache basiert. Mit Hilfe dessen können wir unsere eigenen Konversationen oder Aufgaben entwickeln, um sie als Input für Google Home zu geben. Das funktioniert wie folgt

Absicht [Eingabe, Frage, Konversation, Befehl….] -> Google Home -> Aktion [Antwort]

Hier kann die Antwort entweder eine einfache Konversation sein oder Daten, die von einem Webhook abgerufen werden, die wir mit dem Rpi-Server erstellen werden. Gehen Sie also zur Dialogflow-Website und erstellen Sie ein Konto und einen neuen Agenten.

Dann erstellen Sie eine neue Absicht….

Schritt 2:

Bild
Bild

Geben Sie dann die Trainingsphrasen ein. Dies sind die Befehle, die Benutzer sprechen, wenn sie versuchen, über Google Home auf eine bestimmte Aufgabe zuzugreifen.

Schritt 3:

Hier kann das Wort "Website" in alles wie Youtube, Netflix, Amazon Prime usw. geändert werden. Dieses Wort fungiert also als Variable und wenn Sie das Wort Website [mit der Maus] auswählen, erhalten Sie Folgendes:

Schritt 4:

Bild
Bild

Wählen Sie im Dropdown-Menü „@sys.any“aus und drücken Sie die Eingabetaste.

Schritt 5:

Bild
Bild

Geben Sie dann im Abschnitt Aktionen denselben Parameternamen ein. Die in diesem Abschnitt erwähnten Werte werden als JSON-Datei an den Webhook gesendet, die wir auf dem Server abrufen müssen, um zu wissen, welche Website der Benutzer aufgerufen hat.

Der Wert einer Variablen wird mit ‚$variable_name‘abgerufen.

Schritt 6:

Bild
Bild

Fügen Sie die Antwort hinzu, die wir hören müssen, nachdem Sie den Befehl zu Google Home gesagt haben. Dann speichern Sie die Absicht. Legen Sie bei Bedarf diese Absicht als Ende des Gesprächs fest.

Schritt 7:

Jetzt richten wir unseren Back-End-Dienst ein, um diese Abfragen zum Öffnen von Videos und Websites auf unserem Himbeer-Pi zu veranlassen.

Das restliche Setup

Dataplicity -> Nodejs-Server -> Code

Warum brauchen wir Dataplicity? weil Google Home eine Verbindung zu Webhooks herstellt, die über das Internet zugänglich sind. Obwohl unser GHome mit dem lokalen Netzwerk verbunden ist, kommen die Anfragen vom Google Cloud-Dienst und daher besteht die Notwendigkeit, unseren Server ins Internet zu portieren. Anstelle dieser Kopfschmerzen können wir Dataplicity-Dienste verwenden, um unseren Himbeer-Pi problemlos im Internet zu platzieren.

Verbinden Sie sich zuerst mit dem Raspberry Pi [direkt mit HDMI oder sogar mit SSh] Holen Sie sich die neueste nodejs-Laufzeit über den folgenden Befehl im Terminal.

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

Dann installieren Sie es mit

sudo apt-get install -y nodejs

Dann eine neue Datei erstellen

nano webserver.js

Schritt 8:

Fügen Sie dann den folgenden Code in die Datei ein

Hier verwende ich zur Demonstration nur zwei Websites (google, youtube). Man kann den Code bearbeiten und entsprechend ändern.

bodyParser = require('body-parser');var exec = require('child_process').exec; var express = require(‘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 (error !== null) { console.log(“exec error: “+ error); } }); zurückgeben res.end(); }); app.listen(80);

Schritt 9:

Bild
Bild

Der obige Code wurde nur geschrieben, um das Konzept zu erklären. Ich habe im Code den Midori-Browser verwendet, da Chromium nicht mit Remote-Befehlen funktioniert. Wir können auch Firefox verwenden. [Wir müssen Body-Parser, Express-Module mit Hilfe von npm installieren, bevor wir den Code schreiben]

Denken Sie daran, dass wir nur auf Port 80 lauschen sollten, da dataplicity nur Port 80 des Himbeer-Pi weiterleiten kann.

Jetzt müssen wir Dataplicity einrichten

Gehen Sie zur Dataplicity-Website, erstellen Sie Ihr Konto und folgen Sie den Anweisungen, um den Himbeer-Pi zum Dashboard hinzuzufügen.

Schritt 10:

Bild
Bild

Öffnen Sie danach Himbeer-Pi aus der Geräteliste und wählen Sie Wurmloch, um eine eindeutige IP-Adresse für das Himbeer-Pi zu erhalten, auf dem wir unseren Knotenserver bereitstellen können.

Kopieren Sie die IP-Adresse in die Zwischenablage.

Schritt 11:

Bild
Bild

Führen Sie nun den Code vom Himbeer-Pi-Terminal aus

sudo-Knoten webserver.js

Wenn es einen Fehler bezüglich der Anzeige oder der Protokolle anzeigt…. ausführen

sudo xhost +

Gehen Sie nun zurück zu dialogflow und klicken Sie auf den Fulfillment-Bereich

Schritt 12:

Bild
Bild

Geben Sie die IP-Adresse oder die URL von dataplicity in das obige Feld ein.

Schritt 13:

Bild
Bild

Gehen Sie schließlich zum Abschnitt "Intents" und aktivieren Sie den Webhook-Aufruf auf der Registerkarte "Fulfillment".

Das ist es! Gehen Sie jetzt zurück zu Ihrem Google-Home und prüfen Sie, wie es funktioniert!

Bis zum nächsten Mal, Happy Hacking:)

Empfohlen: