Sommario:
- Passaggio 1: configurazione iniziale
- Passaggio 2: configurazione di Ngrok
- Passaggio 3: script Python per il controllo dell'interruttore della luce
- Passaggio 4: script Python per il controllo della ventola
- Passaggio 5: installazione e configurazione del pacchetto LIRC
- Passaggio 6: script Python per il controllo della TV
- Passaggio 7: accesso all'account AWS
- Passaggio 8: configurazione delle abilità di Alexa TV
- Passaggio 9: accende la configurazione delle abilità di Alexa
- Passaggio 10: configurazione delle abilità di Alexa dei fan
- Passaggio 11: costruisci il circuito
- Passaggio 12: comandi di Alexa
Video: Controlla il soggiorno con Alexa e Raspberry Pi: 12 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Controlla la TV, le luci e la ventola del tuo soggiorno con Alexa (Amazon Echo o Dot) e Raspberry Pi GPIO.
Passaggio 1: configurazione iniziale
Ho usato un Raspberry Pi 2 e un'immagine Raspbian Jessie scaricata da
Una volta effettuato l'accesso, inserisci i seguenti comandi per installare i pacchetti richiesti e le librerie Python:
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
Passaggio 2: configurazione di Ngrok
Visita https://ngrok.com/download e ottieni l'ultima versione di Linux ARM come zip e decomprimi nella home directory:
unzip /home/pi/ngrok-stable-linux-arm.zip
Apri un nuovo terminale e inserisci il seguente comando:
sudo./ngrok http 4000
Apri un altro nuovo terminale e inserisci il seguente comando:
sudo./ngrok http 4500
Apri il terzo nuovo terminale e inserisci il seguente comando:
sudo./ngrok http 5000
Passaggio 3: script Python per il controllo dell'interruttore della luce
Apri una nuova sessione di terminale e crea un nuovo file python chiamato light_control.py:
nano light_control.py
Copia/incolla il seguente codice nel nuovo file:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('LightControlIntent', mapping={'status': 'status'}) def light_control(status): try: pinNum = 27 tranne Eccezione come e: return statement('Numero pin non valido.') GPIO.setup(pinNum, GPIO. OUT) se lo stato in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) se lo stato 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', porta=porta)
Salva e chiudi il file.
Avvia il server flask con:
sudo python light_control.py
Lascia in esecuzione sia ngrok che light_control.py
Passaggio 4: script Python per il controllo della ventola
Apri una nuova sessione di terminale e crea un nuovo file python chiamato fan_control.py:
nano fan_control.py
Copia/incolla il seguente codice nel nuovo file:
from flask import Flask
from flask_ask import Ask, statement, convert_errors import RPi. GPIO as 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 tranne Eccezione come e: return statement('Pin number non valido.') GPIO.setup(pinNum, GPIO. OUT) se lo stato in ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) se lo stato 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 ', porta=porta)
Salva e chiudi il file.
Avvia il server flask con:
sudo python fan_control.py
Lascia entrambi ngrok, light_control.py e fan_control.py in esecuzione
Passaggio 5: installazione e configurazione del pacchetto LIRC
Per controllare la TV devi configurare un pin sul Raspberry Pi per generare segnali a infrarossi (IR) per la tua TV specifica. Apri il terminale e digita il seguente comando per installare un pacchetto LIRC che emuli i segnali infrarossi di molti telecomandi.
sudo apt-get install lirc
Successivamente, è necessario abilitare e configurare il modulo del kernel lirc_rpi. Per farlo, apri i moduli nell'editor Nano
sudo nano /etc/modules
Aggiungi le righe sottostanti al file (assicurati che il parametro gpio_out_pin punti al pin che controlla il LED IR):
lirc_devlirc_rpi gpio_out_pin=17
Quindi, apri il file hardware.conf in Nano come prima con sudo:
sudo nano /etc/lirc/hardware.conf
Aggiungi la seguente configurazione al file:
LIRCD_ARGS="--uinput"LOAD_MODULES=true
DRIVER="predefinito"
DISPOSITIVO="/dev/lirc0"
MODULI="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
Ora riavvia il Raspberry Pi:
sudo reboot
Passaggio 6: script Python per il controllo della TV
Apri una nuova sessione di terminale e crea un nuovo file python chiamato ir_control.py:
nano ir_control.py
Vai a
Trova un telecomando compatibile con la tua TV. Nel mio caso ho una Sanyo TV che funziona con il file di configurazione sanyo-tv01. Una volta trovato un file che supporta la tua TV, aprilo e controlla le opzioni del comando.
Copia/incolla il seguente codice nel nuovo file e sostituisci sanyo-tv01 con il nome del file che funziona con la tua TV. Assicurati anche che i comandi tv siano supportati dal file di configurazione della tua TV; Potrebbe essere necessario modificare i comandi KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN e KEY_MUTE per funzionare correttamente con il file di configurazione della TV:
from flask import Flaskfrom flask_ask import Ask, statement, convert_errors import RPi. GPIO as GPIO import logging import os GPIO.setmode(GPIO. BCM) app = Flask(_name_) ask = Ask(app, '/') logging.getLogger(" flask_ask").setLevel(logging. DEBUG) @ask.intent('GPIOControlIntent', mapping={'status': 'status'}) #'pin': 'pin'}) def tv_function(status): if status in ['accendere']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") dichiarazione di ritorno('accendere la TV') stato elif in ['spegnere']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") return statement('Spegnimento TV') elif status in ['change input']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return statement('Modifica input sulla TV') elif status in ['aumenta volume']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEUP") os.system("irsend 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('Aumento volume sulla TV') elif status in ['riduzione 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-tv01 SEND_ONUMEDOWN") ") return statement('Diminuzione del volume sulla TV') elif status in ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Mute la TV') elif status in ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Riattivazione dell'audio della TV') else: return statement('Funzione remota non trovata.') if _name_ == '_main_': port = 5000 app.run(host='0.0.0.0', porta=porta)
Salva e chiudi il file.
Avvia il server flask con:
sudo python ir_control.py
Lascia tutte e tre le finestre del terminale ngrok, light_control.py, fan_control.py e ir_control.py in esecuzione
Passaggio 7: accesso all'account AWS
Per prima cosa crea o accedi al tuo account sviluppatore AWS e apri il tuo elenco di Alexa Skills.
Passaggio 8: configurazione delle abilità di Alexa TV
Seleziona "Aggiungi una nuova abilità".
Imposta il nome dell'abilità su "Trigger TV" e il nome di invocazione sulla parola o sulle parole che desideri utilizzare per attivare l'abilità.
Fare clic su "Avanti" per continuare.
Copia/incolla quanto segue nella casella "Schema di intenti":
{ "intenti": [{
"slots": [{ "name": "status", "type": "TV_Function" }, { "name": "amount", "type": "AMAZON. NUMBER" }], "intent": "GPIOControlIntent " }] }
Quindi, fai clic su "Aggiungi tipo di slot"
Immettere TV_Function nel campo "Inserisci tipo".
Inserisci i seguenti valori nel campo "Inserisci valori":
accendere
disattiva cambia ingresso aumenta il volume diminuisci il volume muto riattiva l'audio
Quindi, copia/incolla quanto segue nella casella "Enunciati di esempio":
GPIOControlIntent {stato}
GPIOControlIntent {status} per {amount}
Fare clic su "Avanti" per continuare.
Seleziona "HTTPS" come tipo di endpoint del servizio e seleziona una regione. Inserisci l'URL ngrok dal passaggio 2 e fai clic su "Avanti". L'URL dovrebbe essere qualcosa del tipo:
ed6ea04d.ngrok.io
Fare clic su "Avanti" per continuare e premere "Salva".
Passaggio 9: accende la configurazione delle abilità di Alexa
Chiudi l'abilità aperta e seleziona "Aggiungi una nuova abilità".
Imposta il nome dell'abilità su "Controllo luci" e il nome di invocazione sulle parole che vuoi usare per attivare l'abilità.
Fare clic su "Avanti" per continuare. Copia/incolla quanto segue nella casella "Schema di intenti":
{
"intents": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
Quindi, fai clic su "Aggiungi tipo di slot".
Inserisci "LIGHTS_CONTROL" nel campo "Inserisci tipo".
Inserisci i seguenti valori nel campo "Inserisci valori":
Su
spento
Quindi, copia/incolla quanto segue nella casella "Enunciati di esempio":
LightsControlIntento svolta {status}
Fare clic su "Avanti" per continuare. Seleziona "HTTPS" come tipo di endpoint del servizio e seleziona una regione. Inserisci l'URL ngrok del passaggio 2 e fai clic su "Avanti". L'URL dovrebbe essere qualcosa del tipo:
ed6ea04d.ngrok.io
Fare clic su "Avanti" per continuare e premere "Salva".
Passaggio 10: configurazione delle abilità di Alexa dei fan
Chiudi l'abilità aperta e seleziona "Aggiungi una nuova abilità".
Imposta il nome dell'abilità su "Controllo fan" e il nome di invocazione sulle parole che vuoi usare per attivare l'abilità.
Fare clic su "Avanti" per continuare.
Copia/incolla quanto segue nella casella "Schema di intenti":
{
"intents": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
Quindi, fai clic su "Aggiungi tipo di slot".
Inserisci "FAN_CONTROL" nel campo "Inserisci tipo".
Inserisci i seguenti valori nel campo "Inserisci valori":
Su
spento
Quindi, copia/incolla quanto segue nella casella "Espressioni di esempio":
FANControlIntento turno {status}
Fare clic su "Avanti" per continuare. Seleziona "HTTPS" come tipo di endpoint del servizio e seleziona una regione. Inserisci l'URL ngrok del passaggio 2 e fai clic su "Avanti". L'URL dovrebbe essere qualcosa del tipo:
ed6ea04d.ngrok.io
Fare clic su "Avanti" per continuare e premere "Salva".
Passaggio 11: costruisci il circuito
Collegare il circuito come mostrato nello schema. Ho usato un modulo relè JBtek a 8 canali DC 5V per collegarmi alla linea e alla terra AC 120v della mia casa.
Passaggio 12: comandi di Alexa
Ora i seguenti comandi possono essere pronunciati con Alexa per controllare il tuo soggiorno.
Consigliato:
Soggiorno per film con Shelly: 4 passaggi
Living Room for Movie With Shelly: riassunto dell'esecutivo del progetto Come creare un'automazione molto semplice utilizzando le routine di Google Home per rendere confortevole il soggiorno della mia stanza per guardare un film
Controlla gli elettrodomestici tramite Alexa con ESP8266 o ESP32: 8 passaggi
Controlla gli elettrodomestici tramite Alexa con ESP8266 o ESP32: Ehi, come va, ragazzi! Akarsh qui da CETech. Questo mio progetto ti aiuterà a semplificare la vita e ti sentirai come un re dopo aver controllato gli elettrodomestici di casa semplicemente dando un comando ad Alexa. La cosa principale dietro questo p
Gioco pronto per la realtà virtuale in soggiorno con Linux: 4 passaggi
Livingroom VR Ready Gaming con Linux: introduzioneVolevo creare un impianto di gioco per la realtà virtuale e il social gaming nel mio soggiorno. Sono un fan di Linux e della comunità open source, quindi la domanda era "Linux può fare la realtà virtuale?", Linux è un sistema operativo di gioco molto capace - in gran parte grazie a Win
Controlla il labirinto dell'equilibrio con Alexa: 6 passaggi (con immagini)
Controlla il labirinto dell'equilibrio con Alexa: controlla il labirinto dell'equilibrio con Alexa Muovi il labirinto con la voce. Prima di tutto, guarda il video. È un riepilogo del funzionamento. Parla con Alexa (Raspberry Pi + AVS)DIRE: Alexa Start SkillDIRE: BARANSU MEIRO WO KIDOU SHITE Istruire SkillDIRE: 1 DO, UE N
PROIETTORE A LED NEL MIO SOGGIORNO !!!: 6 Passaggi
PROIETTORE LED NEL MIO SOGGIORNO!!!: Lampadina 18 LED per "extra" luminosità