So erstellen Sie einen DIY Google Home-Assistenten mit Raspberry Pi
Werbung
Sprachgesteuerte Assistenten sind schnell zur Normalität geworden. Viele Haushalte verfügen über eine Alexa oder Google-Startseite, die von der Beleuchtung über die Medien bis hin zur Zeitmessung alles kontrolliert.
Die Technologie, auf der diese Geräte ausgeführt werden, steht - zumindest teilweise - jedem zur Verfügung. Mit dem Google Assistant SDK können Sie den Dienst auf Ihren eigenen Geräten nutzen. In diesem Tutorial erfahren Sie, wie Sie den Google-Assistenten auf Ihrem Raspberry Pi einrichten und eine LED über GPIO-Pins per Sprachbefehl aktivieren.
Erforderliche Hardware für einen Raspberry Pi Home Assistant
Du wirst brauchen:
- Raspberry Pi mit einer neuen Raspbian-Installation auf der SD-Karte So installieren Sie ein Betriebssystem auf einem Raspberry Pi So installieren Sie ein Betriebssystem auf einem Raspberry Pi So installieren Sie ein Betriebssystem auf Ihrem Raspberry Pi und klonen Sie schnell Ihr perfektes Setup Notfallwiederherstellung. Weiterlesen .
- USB-Webcam oder Mikrofon.
- Externer Lautsprecher.
- Schaltung aus dem Pi LED-Tutorial So programmieren Sie Ihren Raspberry Pi zur Steuerung von LED-Lichtern So programmieren Sie Ihren Raspberry Pi zur Steuerung von LED-Lichtern Suchen Sie ein einfaches Raspberry Pi-Projekt, um mit Codierung und Elektronik zu beginnen? Versuchen Sie, einige LEDs anzuschließen und zu codieren, um sie ein- und auszuschalten! Lesen Sie mehr (optional)
- Ein Browser, der in Ihrem Google-Konto angemeldet ist.
Hinweis: Die Ausstattung dieses Tutorials kann etwas variieren. Ich habe eine Ersatz-USB-Webcam nur für das Mikrofon verwendet. Jede kompatible Webcam oder jedes kompatible Mikrofon sollte einwandfrei funktionieren, und es gibt eine umfangreiche Liste von Pi-kompatiblen Geräten, die Sie dabei unterstützen können.
Außerdem verwende ich den 3, 5-mm-Ausgang für Audio. HDMI und andere Ausgangsquellen funktionieren ebenfalls, es sind jedoch Änderungen am Sound-Setup unten erforderlich.
Schließen Sie die USB-Webcam und den USB-Lautsprecher an und richten Sie die LED-Schaltung ein, wenn Sie sie verwenden.
Ton einstellen
Dieses Tutorial kann direkt auf dem Pi oder über eine SSH-Verbindung in den Pi verfolgt werden.
Beide Möglichkeiten beginnen im Terminal, um die Toneinstellungen zu überprüfen. Verwenden Sie die Befehle arecord -l und aplay -l, um die verfügbaren Geräte aufzulisten .
Das Bild oben zeigt die USB-Webcam als Karte 1 und Gerät 0 . Notieren Sie sich die Karten- und Gerätenummern für die Mikrofon- und Lautsprecherausgabe.
Stellen Sie nun sicher, dass Sie sich im Verzeichnis / home / pi befinden, erstellen Sie eine neue Datei und öffnen Sie sie in nano:
sudo nano .asoundrc
Der Inhalt dieses Verzeichnisses hängt davon ab, welche Karten- und Gerätenummern Sie verwenden. Hier können Sie wählen, ob Sie den HDMI-Ausgang anstelle von 3, 5 mm bevorzugen möchten.
Wenn Sie Ihre Version des obigen Codes eingegeben haben, drücken Sie Strg + X, um zu speichern und zu beenden.
Testen Sie Ihr Setup, indem Sie einen kurzen Clip aufnehmen und wiedergeben:
Optionaler Schritt: Wenn Sie die Eingangslautstärke Ihres Mikrofons ändern möchten, öffnen Sie alsamixer und drücken Sie F6, um zwischen den Geräten zu wechseln.
Das ist es! Der Ton ist eingestellt.
Google Project erstellen
Öffnen Sie alternativ den Browser des Pi. Wenn Sie über SSH verbunden sind, öffnen Sie lokal einen Browser. Navigieren Sie zur Google Action Console und klicken Sie auf Neues Projekt .
Dies kann einige Momente dauern. Wenn Sie fertig sind, lassen Sie das Fenster aktiv und öffnen Sie einen neuen Tab. Wir werden gleich darauf zurückkommen.
Aktivieren der Google Assistant-API
Es sind einige Online-Anpassungen erforderlich, um fortzufahren. Navigieren Sie zur Google Assistant-API-Website und klicken Sie auf Aktivieren .
Für das Projekt sind außerdem Aktivitätsberechtigungen erforderlich. Gehen Sie zu Ihrem Aktivitätsbedienfeld und vergewissern Sie sich, dass die folgenden Aktivitäten aktiviert sind:
- Web- und App-Aktivität (einschließlich Kontrollkästchen "Chrome-Verlauf")
- Geräteinformation
- Sprach- und Audioaktivität
Jetzt können Sie mit der Registrierung des Geräts fortfahren.
Registrieren Sie Ihren Raspberry Pi
Wählen Sie in der Aktionskonsole im linken Bereich die Option Geräteregistrierung aus. Erstellen Sie unter Produkt einen leicht zu merkenden Namen für Ihr Gerät. Der Herstellername ist nicht wichtig (muss aber vorhanden sein), und wählen Sie Auto als Gerätetyp.
Klicken Sie auf Modell registrieren und im nächsten Bildschirm auf OAuth 2.0-Anmeldeinformationen herunterladen . Dadurch wird eine JSON-Datei auf Ihren Computer heruntergeladen. Wenn Sie mit JSON-Dateien nicht vertraut sind, machen Sie sich keine Sorgen, aber lernen Sie, wie man JSON-Python-Parsing verwendet: Eine einfache Anleitung. JSON-Python-Parsing: Eine einfache Anleitung jede Sprache und Umgebung. Dieser Artikel konzentriert sich auf Methoden und Probleme, die beim Python-Parsing mit JSON auftreten. Mehr lesen lohnt sich für die Zukunft!
Der offizielle Google-Leitfaden empfiehlt, die Datei nach / home / pi zu verschieben . Öffnen Sie also den Dateimanager und führen Sie dies jetzt aus.
Zusätzlicher Schritt für SSH-Benutzer:
Wenn Sie SSH verwenden, haben Sie die JSON-Datei anstelle des Pi auf Ihren lokalen Computer heruntergeladen. Öffnen Sie zum Übertragen ein separates Terminalfenster ohne SSH-Verbindung. Kopieren Sie in diesem Fenster die geheime JSON-Datei des Clients mit dem folgenden Befehl:
scp ~/Downloads/client_secret_client-id.json :/home/pi/
Ersetzen Sie „Himbeer-Pi-IP-Adresse“ durch die IP-Adresse Ihres Pi und vergessen Sie nicht den Doppelpunkt vor dem Pfad. Wenn Sie die JSON-Datei an einen anderen Speicherort heruntergeladen haben, ändern Sie den lokalen Pfad entsprechend. Geben Sie Ihr Passwort ein, wenn Sie dazu aufgefordert werden, und die Datei wird in das Ausgangsverzeichnis des Pi kopiert.
Wechseln Sie zurück zum SSH-Terminal und navigieren Sie zu / home / pi . Geben Sie ls -l ein, um die Dateien im Verzeichnis aufzulisten . Sie sollten die übertragene geheime JSON-Clientdatei sehen.
Installieren des SDK
Google empfiehlt, in einer virtuellen Python-Umgebung zu arbeiten. Erstellen Sie eine neue virtuelle Umgebung mit dem Namen env .
Wenn Sie dies noch nie zuvor getan haben, erfahren Sie in diesem Lernprogramm, wie Sie mit virtuellen Python-Umgebungen umgehen.
Installieren Sie die neuesten Versionen von Pip, Setuptools und Wheel und aktivieren Sie Ihre virtuelle Umgebung:
env/bin/python -m pip install --upgrade pip setuptools wheel source env/bin/activate
Google Assistant verfügt über einige Abhängigkeiten, die Sie jetzt in der virtuellen Umgebung installieren sollten.
sudo apt-get install portaudio19-dev libffi-dev libssl-dev libmpg123-dev
Installieren Sie abschließend das Google Assistant SDK, die Beispiele und das OAuth-Tool.
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]
Das ist alles, was Sie brauchen, um loszulegen. Wenn eine der Installationen fehlschlägt, überprüfen Sie die Schreibweise und den Abstand sorgfältig.
Authentifizierung des Raspberry Pi
Verwenden Sie das Tool google-auth-oauthlib [tool] mit der zuvor heruntergeladenen JSON-Anmeldeinformationsdatei, um Ihren Raspberry Pi zu authentifizieren.
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
Sie müssen YOUR_CLIENT_SECRET_ID durch die heruntergeladene Datei ersetzen, daher empfiehlt es sich, zuerst den Dateinamen zu kopieren. Diese Client-ID muss korrekt sein. Ändern Sie den Dateinamen nicht!
Sie sollten eine Nachricht mit einem Link erhalten, in der Sie aufgefordert werden, einen Autorisierungscode einzugeben.
Durch Klicken auf den Link wird der Browser geöffnet. Sie werden aufgefordert, das Gerät in Ihrem Google-Konto zu aktivieren. Kopieren Sie den folgenden Autorisierungscode und fügen Sie ihn wieder in Ihr Terminalfenster ein.
Sie sollten die Bestätigung erhalten, dass die Anmeldeinformationen gespeichert wurden: / home / pi…, was bedeutet, dass der Pi mit Ihrem Google-Konto erfolgreich autorisiert wurde.
Testen Sie es aus
Nachdem alles eingerichtet ist, können Sie Ihren Pi Google Assistant testen. Führen Sie den Assistenten mit folgendem Befehl aus:
googlesamples-assistant-hotword --project-id my-dev-project --device-model-id my-model
Sie müssen my-dev-project durch Ihre Projekt-ID ersetzen (im Zahnrad Einstellungen der Aktionskonsole). Ihre Gerätemodell-ID wird im Abschnitt Geräteregistrierung der Aktionskonsole aufgeführt.
Versuch es! Sagen Sie "OK Google" und stellen Sie eine Frage. Sie können die Programmausgabe im Terminal sehen, wenn Sie die Antwort hören:
Das ist es! Google Assistant wird jetzt auf Ihrem Raspberry Pi ausgeführt. Beachten Sie, dass Sie die Lautstärke ändern können, wenn sie etwas zu niedrig ist, indem Sie sagen: "Hey, Google, stellen Sie die Lautstärke auf 80% ein."
Bonus: Sprachaktiviertes GPIO
Es ist möglich, Lichter mit einem Arduino und Siri zu steuern, aber es gibt eine einfachere Methode. Wenn Sie eine LED eingerichtet haben, können Sie sie mit dem Google-Assistenten mit Ihrer Stimme steuern.
Das Einrichten von Google Assistant für die Verwendung der GPIO-Pins ist relativ einfach, erfordert jedoch einige zusätzliche Schritte. Rufen Sie die Google Action Console auf und suchen Sie Ihr Gerät unter Geräteregistrierung. Klicken Sie darauf und öffnen Sie das Traits-Menü:
Schalten Sie die OnOff- Eigenschaft ein und klicken Sie auf Speichern.
Stellen Sie nun sicher, dass Sie sich in der virtuellen Umgebung von env befinden, und klonen Sie eine Version des SDK mit git auf Ihren Pi:
git clone https://github.com/googlesamples/assistant-sdk-python
Da dies eine virtuelle Umgebung ist, müssen Sie RPi.GPIO installieren, bevor Sie fortfahren können.
pip install rpi.gpio
Navigieren Sie nun zu dem Ordner, der das Skript hotword.py enthält .
cd assistant-sdk-python/google-assistant-sdk/googlesamples/assistant/library
Ändern des Skripts
Sie müssen dem Skript hotword.py einige Zeilen hinzufügen, also öffnen Sie es im Nano-Editor:
nano hotword.py
Fügen Sie unter den Importanweisungen Ihre eigene für RPi.GPIO hinzu.
import RPi.GPIO as GPIO
Suchen Sie nach der Methode process_event . Entfernen oder kommentieren Sie in Zeile 66 die print-Anweisung und fügen Sie eine if-Anweisung hinzu, um die LED zu steuern.
#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)
Diese Logik steuert die LED, ist jedoch bisher nicht für die Ausgabe konfiguriert. Richten Sie es in der main () - Funktion ein, bevor die process_event-Methode aufgerufen wird.
GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT, initial=GPIO.LOW)
Jetzt ist der GPIO-Pin auf Ausgabe eingestellt und wird in einem niedrigen Zustand initialisiert. Speichern und Beenden. Sie können Ihr modifiziertes Skript ausführen, indem Sie Ihre Modell-ID (in der Aktionskonsole) als Argument übergeben.
python hotword.py --device-model-id YOUR-MODEL-ID-HERE
Die Terminalausgabe ist dieselbe wie zuvor, und der Assistent arbeitet standardmäßig. Wenn Sie jetzt jedoch "OK Google, einschalten" sagen, wird eine neue Ausgabe angezeigt:
Hinweis: Das obige Bild wurde beschnitten und zeigt nur den Assistenten, der die Anforderung hört, und die zum Skript hinzugefügte Druckanweisung.
Sie sollten auch Ihre LED leuchten sehen!
Ihr eigener DIY Raspberry Pi Google Home-Assistent
Dieses Projekt ist eine gute Einführung in die Verwendung von Google API-Diensten. Probieren Sie jetzt, da Sie ein Google Assistant-Gerät haben, einige der besten Google Home-Befehle aus. Das Cheat-Sheet für die Google Home-Befehle Das Cheat-Sheet für die Google Home-Befehle Unser Cheat-Sheet für die Google Home-Befehle enthält unzählige praktische Aktionen, einschließlich Unterhaltung, Informationen und Automatisierung. Lesen Sie mehr - wir haben uns einige großartige Google Home-Minispiele angesehen. 15 Google Home-Befehle für Minispiele und mehr 15 Google Home-Befehle für Minispiele und mehr Mit Google Home-Befehlen können Sie so viele Dinge tun. Hier sind einige unterhaltsame Google Home-Befehle, die es wert sind, ausprobiert zu werden. Weiterlesen .
Erfahren Sie mehr über: DIY-Projekt-Tutorials, Google Assistant, LED-Leuchten, Raspberry Pi, Smart Hubs.