Inhaltsverzeichnis:
- Schritt 1: Ersteinrichtung
- Schritt 2: Ngrok. einrichten
- Schritt 3: Python-Skript für die Lichtschaltersteuerung
- Schritt 4: Python-Skript zur Lüftersteuerung
- Schritt 5: Installieren und Konfigurieren des LIRC-Pakets
- Schritt 6: Python-Skript für die TV-Steuerung
- Schritt 7: Melden Sie sich beim AWS-Konto an
- Schritt 8: TV Alexa Skill-Setup
- Schritt 9: Beleuchtet das Alexa-Skill-Setup
- Schritt 10: Fan Alexa Skill-Setup
- Schritt 11: Bauen Sie die Schaltung auf
- Schritt 12: Alexa-Befehle
Video: Wohnzimmer mit Alexa und Raspberry Pi steuern - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Steuern Sie den Fernseher, die Beleuchtung und den Ventilator Ihres Wohnzimmers mit Alexa (Amazon Echo oder Dot) und Raspberry Pi GPIO.
Schritt 1: Ersteinrichtung
Ich habe einen Raspberry Pi 2 und ein Raspbian Jessie-Image verwendet, das von https://www.raspberrypi.org/downloads/raspbian/ heruntergeladen wurde.
Geben Sie nach der Anmeldung die folgenden Befehle ein, um die erforderlichen Pakete und Python-Bibliotheken zu installieren:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip install Flask Flask-ask sudo apt-get install lirc
Schritt 2: Ngrok. einrichten
Besuchen Sie https://ngrok.com/download und holen Sie sich die neueste Linux ARM-Version als ZIP-Datei und entpacken Sie sie im Home-Verzeichnis:
entpacken /home/pi/ngrok-stable-linux-arm.zip
Öffnen Sie ein neues Terminal und geben Sie den folgenden Befehl ein:
sudo./ngrok http 4000
Öffnen Sie ein weiteres neues Terminal und geben Sie den folgenden Befehl ein:
sudo./ngrok http 4500
Öffnen Sie das dritte neue Terminal und geben Sie den folgenden Befehl ein:
sudo./ngrok http 5000
Schritt 3: Python-Skript für die Lichtschaltersteuerung
Öffnen Sie eine neue Terminalsitzung und erstellen Sie eine neue Python-Datei namens light_control.py:
nano light_control.py
Kopieren Sie den folgenden Code und fügen Sie ihn in die neue Datei ein:
from Flask import Flaskfrom Flask_ask import Ask, Statement, convert_errors import RPi. GPIO als GPIO import Logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" Kolben_ask").setLevel(logging. DEBUG) @ask.intent('LightControlIntent', mapping={'status': 'status'}) def light_control(status): try: pinNum = 27 außer Ausnahme als e: return statement('Pinnummer nicht gültig.') GPIO.setup(pinNum, GPIO. OUT) wenn Status in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) wenn Status in ['off', ' low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4000 app.run(host=' 0.0.0.0', port=port)
Speichern und schließen Sie die Datei.
Starten Sie den Flaschenserver mit:
sudo python light_control.py
Lassen Sie sowohl ngrok als auch light_control.py laufen
Schritt 4: Python-Skript zur Lüftersteuerung
Öffnen Sie eine neue Terminalsitzung und erstellen Sie eine neue Python-Datei namens fan_control.py:
nano fan_control.py
Kopieren Sie den folgenden Code und fügen Sie ihn in die neue Datei ein:
aus Flaschenimport Flasche
from Flask_ask import Ask, Statement, convert_errors import RPi. GPIO als GPIO import Logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') Logging.getLogger("flask_ask").setLevel(logging. DEBUG) @ask.intent('FanControlIntent', mapping={'status': 'status'}) def fan_control(status): try: pinNum = 22 außer Ausnahme als e: return statement('Pin number nicht gültig.') GPIO.setup(pinNum, GPIO. OUT) wenn Status in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) wenn Status in ['off', 'low']: GPIO.output(pinNum, GPIO. HIGH) return statement('Turning {} the Living Room Lights'.format(status)) if _name_ == '_main_': port = 4500 app.run(host='0.0.0.0 ', port=port)
Speichern und schließen Sie die Datei.
Starten Sie den Flaschenserver mit:
sudo python fan_control.py
Lassen Sie ngrok, light_control.py und fan_control.py laufen
Schritt 5: Installieren und Konfigurieren des LIRC-Pakets
Um den Fernseher zu steuern, müssen Sie einen Pin auf dem Raspberry Pi konfigurieren, um Infrarot (IR)-Signale für Ihren spezifischen Fernseher zu erzeugen. Öffnen Sie das Terminal und geben Sie den folgenden Befehl ein, um ein LIRC-Paket zu installieren, das die Infrarotsignale vieler Fernbedienungen emuliert.
sudo apt-get install lirc
Als nächstes müssen Sie das Kernelmodul lirc_rpi aktivieren und konfigurieren. Öffnen Sie dazu Module im Nano-Editor
sudo nano /etc/modules
Fügen Sie der Datei die folgenden Zeilen hinzu (Stellen Sie sicher, dass der Parameter gpio_out_pin auf den Pin zeigt, der die IR-LED steuert):
lirc_devlirc_rpi gpio_out_pin=17
Als nächstes öffnen Sie die Datei hardware.conf in Nano wie zuvor mit sudo:
sudo nano /etc/lirc/hardware.conf
Fügen Sie der Datei die folgende Konfiguration hinzu:
LIRCD_ARGS="--uinput"LOAD_MODULES=true
DRIVER="Standard"
GERÄT="/dev/lirc0"
MODULE="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
Starten Sie nun den Raspberry Pi neu:
sudo neu starten
Schritt 6: Python-Skript für die TV-Steuerung
Öffnen Sie eine neue Terminalsitzung und erstellen Sie eine neue Python-Datei namens ir_control.py:
nano ir_control.py
Gehen Sie zu
Finden Sie eine Fernbedienung, die mit Ihrem Fernseher kompatibel ist. In meinem Fall habe ich einen Sanyo-Fernseher, der mit der Sanyo-tv01-Konfigurationsdatei funktioniert. Sobald Sie eine Datei gefunden haben, die Ihr Fernsehgerät unterstützt, öffnen Sie sie und sehen Sie sich die Befehlsoptionen an.
Kopieren Sie den folgenden Code, fügen Sie ihn in die neue Datei ein und ersetzen Sie sanyo-tv01 durch den Dateinamen, der mit Ihrem Fernseher funktioniert. Stellen Sie außerdem sicher, dass die TV-Befehle von der Konfigurationsdatei Ihres Fernsehers unterstützt werden. Möglicherweise müssen Sie die Befehle KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN und KEY_MUTE ändern, damit sie ordnungsgemäß mit der Konfigurationsdatei Ihres Fernsehgeräts funktionieren:
from Flask import Flaskfrom Flask_ask import Ask, Statement, convert_errors import RPi. GPIO als GPIO import Logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" Kolben_ask").setLevel(logging. DEBUG) @ask.intent('GPIOControlIntent', mapping={'status': 'status'}) #'pin': 'pin'}) def tv_function(status): if status in ['turn on']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Turning on the TV') elif status in ['turn off']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return-Anweisung('Fernseher ausschalten') elif-Status in ['Eingabe ändern']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return Statement('Eingabe am Fernseher ändern') elif Status in ['Lautstärke erhöhen']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("send SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") return statement('Increasing Volume on the TV') elif status in ['decrease volume']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE_SEND_VOLUMEDOWN") ") return statement('Lautstärke des Fernsehers verringern') elif status in ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('stummschalten des Fernsehers') elif status in ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Stummschaltung des Fernsehers aufheben') else: return statement('Remote-Funktion nicht gefunden.') if _name_ == '_main_': port = 5000 app.run(host='0.0.0.0', port=port)
Speichern und schließen Sie die Datei.
Starten Sie den Flaschenserver mit:
sudo python ir_control.py
Lassen Sie alle drei ngrok-Terminalfenster light_control.py, fan_control.py und ir_control.py laufen
Schritt 7: Melden Sie sich beim AWS-Konto an
Erstellen Sie zuerst Ihr AWS-Entwicklerkonto oder melden Sie sich an und öffnen Sie Ihre Liste der Alexa-Skills.
Schritt 8: TV Alexa Skill-Setup
Wählen Sie "Neuen Skill hinzufügen".
Setzen Sie den Skill-Namen auf 'Trigger TV' und den Aufrufnamen auf die Wörter, die Sie zum Aktivieren des Skills verwenden möchten.
Klicke weiter um fortzufahren.
Kopieren Sie Folgendes und fügen Sie es in das Feld "Intent-Schema" ein:
{ "Absichten": [{
"slots": [{ "name": "status", "type": "TV_Function" }, { "name": "amount", "type": "AMAZON. NUMBER" }], "intent": "GPIOControlIntent "}] }
Klicken Sie als Nächstes auf "Slot-Typ hinzufügen".
Geben Sie TV_Function in das Feld 'Typ eingeben' ein.
Geben Sie im Feld 'Werte eingeben' folgende Werte ein:
anmachen
ausschalten Eingang ändern Lautstärke erhöhen Lautstärke verringern stumm schalten
Kopieren Sie als Nächstes Folgendes und fügen Sie es in das Feld "Beispieläußerungen" ein:
GPIOControlIntent {status}
GPIOControlIntent {status} von {amount}
Klicke weiter um fortzufahren.
Wählen Sie 'HTTPS' als Dienstendpunkttyp und wählen Sie eine Region. Geben Sie die ngrok-URL aus Schritt 2 ein und klicken Sie auf 'Weiter'. Die URL sollte etwa so lauten:
ed6ea04d.ngrok.io
Klicken Sie auf „Weiter“, um fortzufahren, und klicken Sie auf „Speichern“.
Schritt 9: Beleuchtet das Alexa-Skill-Setup
Schließen Sie den geöffneten Skill und wählen Sie "Neuen Skill hinzufügen".
Setzen Sie den Skill-Namen auf 'Lights Control' und den Aufrufnamen auf die Wörter, die Sie verwenden möchten, um den Skill zu aktivieren.
Klicke weiter um fortzufahren. Kopieren Sie Folgendes und fügen Sie es in das Feld "Intent-Schema" ein:
{
"intents": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
Klicken Sie anschließend auf „Slot-Typ hinzufügen“.
Geben Sie "LIGHTS_CONTROL" in das Feld "Typ eingeben" ein.
Geben Sie im Feld 'Werte eingeben' folgende Werte ein:
An
aus
Kopieren Sie als Nächstes Folgendes und fügen Sie es in das Feld "Beispieläußerungen" ein:
LightsControlIntent Turn {status}
Klicke weiter um fortzufahren. Wählen Sie 'HTTPS' als Dienstendpunkttyp und wählen Sie eine Region aus. Geben Sie die ngrok-URL aus Schritt 2 ein und klicken Sie auf 'Weiter'. Die URL sollte etwa so lauten:
ed6ea04d.ngrok.io
Klicken Sie auf „Weiter“, um fortzufahren, und klicken Sie auf „Speichern“.
Schritt 10: Fan Alexa Skill-Setup
Schließen Sie den geöffneten Skill und wählen Sie "Neuen Skill hinzufügen".
Setzen Sie den Skill-Namen auf 'Fan Control' und den Aufrufnamen auf die Wörter, die Sie verwenden möchten, um den Skill zu aktivieren.
Klicke weiter um fortzufahren.
Kopieren Sie Folgendes und fügen Sie es in das Feld "Intent-Schema" ein:
{
"intents": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
Klicken Sie anschließend auf „Slot-Typ hinzufügen“.
Geben Sie "FAN_CONTROL" in das Feld "Typ eingeben" ein.
Geben Sie im Feld 'Werte eingeben' folgende Werte ein:
An
aus
Kopieren Sie als Nächstes Folgendes und fügen Sie es in das Feld "Beispieläußerungen" ein:
FANControlIntent Turn {status}
Klicke weiter um fortzufahren. Wählen Sie 'HTTPS' als Dienstendpunkttyp und wählen Sie eine Region aus. Geben Sie die ngrok-URL aus Schritt 2 ein und klicken Sie auf 'Weiter'. Die URL sollte etwa so lauten:
ed6ea04d.ngrok.io
Klicken Sie auf „Weiter“, um fortzufahren, und klicken Sie auf „Speichern“.
Schritt 11: Bauen Sie die Schaltung auf
Schließen Sie die Schaltung wie im Diagramm gezeigt an. Ich habe ein JBtek 8-Kanal-DC-5-V-Relaismodul verwendet, um eine Verbindung zu meiner 120-V-AC-Leitung und -Masse herzustellen.
Schritt 12: Alexa-Befehle
Jetzt können die folgenden Befehle an Alexa gesprochen werden, um Ihr Wohnzimmer zu steuern.
Empfohlen:
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais – DIE GRUNDLAGEN: 6 Schritte
So steuern Sie ein Gerät mit Raspberry Pi und einem Relais - DIE GRUNDLAGEN: Dies ist ein einfaches und unkompliziertes Tutorial zur Steuerung eines Geräts mit Raspberry Pi und einem Relais, das für die Erstellung von IoT-Projekten hilfreich ist folgen Sie, auch wenn Sie keine Ahnung von Raspberry haben
Steuern von Haushaltsgeräten mit Node-MCU und Google Assistant - IOT - Blynk - IFTTT: 8 Schritte
Steuern von Haushaltsgeräten mit Node-MCU und Google Assistant | IOT | Blynk | IFTTT: Ein einfaches Projekt zur Steuerung von Geräten mit Google Assistant: Warnung: Der Umgang mit Netzstrom kann gefährlich sein. Mit äußerster Sorgfalt behandeln. Stellen Sie einen professionellen Elektriker ein, während Sie mit offenen Stromkreisen arbeiten. Ich übernehme keine Verantwortung für die da
Gewusst wie: Geschwindigkeit des Motors steuern?: 5 Schritte (mit Bildern)
Gewusst wie: Geschwindigkeit des Motors steuern?: Wenn Sie ein paar DC-Motoren herumliegen haben, kommt Ihnen die erste Frage in den Sinn, wie ich die Geschwindigkeit dieser Motoren kontrolliere! Also in diesem Instructables werde ich zeigen, wie einfach es ist! Sie fühlen sich faul, Sie können Videos auf meinem Kanal ansehen Auch Huge Tha
Steuern Sie einen Roboterarm mit Zio-Modulen Teil 1: 8 Schritte
Steuern Sie einen Roboterarm mit Zio-Modulen Teil 1: Dieser Blogbeitrag ist Teil der Zio Robotics Series.EinführungIn diesem Tutorial werden wir ein Projekt erstellen, in dem wir Zio-Module verwenden, um den Roboterarm zu steuern. In diesem Projekt lernen Sie, wie Sie Ihre Roboterarmkralle öffnen und schließen. Diese n
PC drahtlos mit Augenzwinkern steuern;): 9 Schritte (mit Bildern)
Steuern Sie den PC drahtlos mit Augenzwinkern;): Wie wäre es, über Ihre Gewohnheiten hinauszugehen? Wie wäre es, etwas Neues auszuprobieren??!!!!Wie wäre es, wenn Sie Ihren PC steuern und alles tun, was Sie wollen, OHNE Tastatur und Maus zu benutzen!Hmm… Aber wie ist das möglich??Mit nur einem Wimpernschlag!! Nicht b