Tabla de contenido:
- Paso 1: Configuración inicial
- Paso 2: Configurar Ngrok
- Paso 3: secuencia de comandos de Python para el control del interruptor de luz
- Paso 4: secuencia de comandos de Python para el control de ventiladores
- Paso 5: Instalación y configuración del paquete LIRC
- Paso 6: secuencia de comandos de Python para control de TV
- Paso 7: inicie sesión en la cuenta de AWS
- Paso 8: Configuración de habilidades de TV Alexa
- Paso 9: Configuración de habilidades de Alexa de luces
- Paso 10: Configuración de habilidades de Fan Alexa
- Paso 11: construye el Ciruit
- Paso 12: comandos de Alexa
Video: Controle la sala de estar con Alexa y Raspberry Pi: 12 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Controle la TV, las luces y el ventilador de su sala de estar con Alexa (Amazon Echo o Dot) y Raspberry Pi GPIO.
Paso 1: Configuración inicial
Usé una Raspberry Pi 2 y una imagen de Raspbian Jessie descargada de
Una vez que haya iniciado sesión, ingrese los siguientes comandos para instalar los paquetes requeridos y las bibliotecas de 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
Paso 2: Configurar Ngrok
Visite https://ngrok.com/download y obtenga la última versión de ARM de Linux en formato zip y descomprímalo dentro del directorio de inicio:
descomprimir /home/pi/ngrok-stable-linux-arm.zip
Abra una nueva terminal e ingrese el siguiente comando:
sudo./ngrok http 4000
Abra otra terminal nueva e ingrese el siguiente comando:
sudo./ngrok http 4500
Abra la tercera terminal nueva e ingrese el siguiente comando:
sudo./ngrok http 5000
Paso 3: secuencia de comandos de Python para el control del interruptor de luz
Abra una nueva sesión de terminal y cree un nuevo archivo de Python llamado light_control.py:
nano light_control.py
Copie / pegue el siguiente código en el nuevo archivo:
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 excepto Exception como e: return statement ('El número de pin no es válido.') GPIO.setup (pinNum, GPIO. OUT) si el estado está en ['on', 'high']: GPIO.output (pinNum, GPIO. LOW) si el estado está en ['off', ' low ']: GPIO.output (pinNum, GPIO. HIGH) return statement (' Encendiendo {} las luces de la sala de estar '. formato (estado)) if _name_ ==' _main_ ': port = 4000 app.run (host =' 0.0.0.0 ', puerto = puerto)
Guarde y cierre el archivo.
Inicie el servidor de matraces con:
sudo python light_control.py
Deje ngrok y light_control.py en ejecución
Paso 4: secuencia de comandos de Python para el control de ventiladores
Abra una nueva sesión de terminal y cree un nuevo archivo de Python llamado fan_control.py:
nano fan_control.py
Copie / pegue el siguiente código en el nuevo archivo:
desde el matraz de importación Matraz
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 excepto Exception como e: return statement ('Pin number no válido. ') GPIO.setup (pinNum, GPIO. OUT) si el estado en [' on ',' high ']: GPIO.output (pinNum, GPIO. LOW) si el estado en [' off ',' low ']: GPIO.output (pinNum, GPIO. HIGH) return statement ('Encendiendo {} las luces de la sala de estar'.format (estado)) if _name_ == '_main_': port = 4500 app.run (host = '0.0.0.0 ', puerto = puerto)
Guarde y cierre el archivo.
Inicie el servidor de matraces con:
sudo python fan_control.py
Deje ngrok, light_control.py y fan_control.py en ejecución
Paso 5: Instalación y configuración del paquete LIRC
Para controlar el televisor, debe configurar un pin en la Raspberry Pi para generar señales de infrarrojos (IR) para su televisor específico. Abra el terminal e ingrese el siguiente comando para instalar un paquete LIRC que emula las señales infrarrojas de muchos controles remotos.
sudo apt-get install lirc
A continuación, debe habilitar y configurar el módulo del kernel lirc_rpi. Para hacerlo, abra los módulos en el editor Nano
sudo nano / etc / modules
Agregue las líneas siguientes al archivo (asegúrese de que el parámetro gpio_out_pin apunte al pin que controla el LED de infrarrojos):
lirc_devlirc_rpi gpio_out_pin = 17
A continuación, abra el archivo hardware.conf en Nano como antes con sudo:
sudo nano /etc/lirc/hardware.conf
Agregue la siguiente configuración al archivo:
LIRCD_ARGS = "- uinput" LOAD_MODULES = verdadero
DRIVER = "predeterminado"
DISPOSITIVO = "/ dev / lirc0"
MÓDULOS = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Ahora, reinicia la Raspberry Pi:
sudo reiniciar
Paso 6: secuencia de comandos de Python para control de TV
Abra una nueva sesión de terminal y cree un nuevo archivo de Python llamado ir_control.py:
nano ir_control.py
Vaya a
Busque un control remoto que sea compatible con su televisor. En mi caso, tengo un televisor Sanyo que funciona con el archivo de configuración sanyo-tv01. Una vez que encuentre un archivo que admita su televisor, ábralo y observe las opciones de comando.
Copie / pegue el siguiente código en el nuevo archivo y reemplace sanyo-tv01 con el nombre de archivo que funcione con su televisor. También asegúrese de que los comandos de tv sean compatibles con el archivo de configuración de su televisor; Es posible que deba modificar los comandos KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN y KEY_MUTE para que funcionen correctamente con el archivo de configuración de su televisor:
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): si el estado está en ['encender']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") declaración de retorno ('Encender el televisor') estado elif en ['apagar']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") return declaración ('Apagando el televisor') estado elif en ['cambiar entrada']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return declaración ('Cambio de entrada en el televisor') estado elif en ['aumentar volumen']: 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 del volumen en el televisor') estado elif en ['disminuir volumen']: 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") irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN ") irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") irsendyo KEY_VOLUMEDOWN "sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") irsendyo KEY_VOLUMEDOWN ") ") return statement ('Disminuyendo el volumen del televisor') estado elif en ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Silenciando el TV') estado elif en ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement (' Desactivar el sonido del televisor ') else: return statement (' Función remota no encontrada. ') if _name_ ==' _main_ ': port = 5000 app.run (host = '0.0.0.0', puerto = puerto)
Guarde y cierre el archivo.
Inicie el servidor de matraces con:
sudo python ir_control.py
Deje las tres ventanas de terminal ngrok, light_control.py, fan_control.py e ir_control.py en ejecución
Paso 7: inicie sesión en la cuenta de AWS
Primero cree o inicie sesión en su cuenta de desarrollador de AWS y abra su lista de habilidades de Alexa.
Paso 8: Configuración de habilidades de TV Alexa
Seleccione "Agregar una nueva habilidad".
Establezca el Nombre de la habilidad en 'Trigger TV' y el Nombre de invocación en la (s) palabra (s) que desea usar para activar la habilidad.
Presione siguiente para continuar.
Copie / pegue lo siguiente en el cuadro 'Esquema de intención':
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "intent": "GPIOControlIntent "}]}
A continuación, haga clic en 'Agregar tipo de ranura'
Ingrese TV_Function en el campo 'Ingresar tipo'.
Ingrese los siguientes valores en el campo 'Ingresar valores':
encender
apagar cambiar entrada aumentar volumen disminuir volumen silenciar activar sonido
A continuación, copie / pegue lo siguiente en el cuadro 'Expresiones de muestra':
GPIOControlIntent {status}
GPIOControlIntent {status} por {amount}
Presione siguiente para continuar.
Seleccione 'HTTPS' como el tipo de punto final de servicio y seleccione una región. Ingrese la URL ngrok del paso 2 y haga clic en 'Siguiente'. La URL debería ser algo como:
ed6ea04d.ngrok.io
Haga clic en 'Siguiente' para continuar y presione 'Guardar'.
Paso 9: Configuración de habilidades de Alexa de luces
Cierre la habilidad abierta y seleccione "Agregar una nueva habilidad".
Establezca el Nombre de la habilidad en 'Control de luces' y el Nombre de invocación en la (s) palabra (s) que desea usar para activar la habilidad.
Presione siguiente para continuar. Copie / pegue lo siguiente en el cuadro 'Esquema de intención':
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "intent": "LightsControlIntent"}]}
A continuación, haga clic en 'Agregar tipo de ranura'.
Ingrese "LIGHTS_CONTROL" en el campo 'Ingresar tipo'.
Ingrese los siguientes valores en el campo 'Ingresar valores':
sobre
apagado
A continuación, copie / pegue lo siguiente en el cuadro 'Expresiones de muestra':
LightsControlIntent turn {status}
Presione siguiente para continuar. Seleccione 'HTTPS' como el tipo de punto final de servicio y seleccione una región. Ingrese la URL de ngrok del paso 2 y haga clic en 'Siguiente'. La URL debería ser algo como:
ed6ea04d.ngrok.io
Haga clic en 'Siguiente' para continuar y presione 'Guardar'.
Paso 10: Configuración de habilidades de Fan Alexa
Cierre la habilidad abierta y seleccione "Agregar una nueva habilidad".
Establezca el Nombre de la habilidad en 'Control de ventilador' y el Nombre de invocación en la (s) palabra (s) que desea usar para activar la habilidad.
Presione siguiente para continuar.
Copie / pegue lo siguiente en el cuadro 'Esquema de intención':
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "intent": "FANControlIntent"}]}
A continuación, haga clic en 'Agregar tipo de ranura'.
Ingrese "FAN_CONTROL" en el campo 'Ingresar tipo'.
Ingrese los siguientes valores en el campo 'Ingresar valores':
sobre
apagado
A continuación, copie / pegue lo siguiente en el cuadro 'Expresiones de muestra':
FANControlIntent turn {status}
Presione siguiente para continuar. Seleccione 'HTTPS' como el tipo de punto final de servicio y seleccione una región. Ingrese la URL de ngrok del paso 2 y haga clic en 'Siguiente'. La URL debería ser algo como:
ed6ea04d.ngrok.io
Haga clic en 'Siguiente' para continuar y presione 'Guardar'.
Paso 11: construye el Ciruit
Conecte el circuito como se muestra en el diagrama. Utilicé un módulo de relé JBtek de 8 canales CC 5 V para conectarlo a la línea y tierra de CA de 120 V de mi hogar.
Paso 12: comandos de Alexa
Ahora los siguientes comandos se pueden decir a Alexa para controlar su sala de estar.
Recomendado:
¡Quiero estar rodeado por el efecto visual de iTunes !: 5 pasos
¡Quiero estar rodeado de iTunes Visual Effect !: iTunes Visual Effect es fantástico. Me gusta ver mi iTunes Visual Effect escuchando música. Mientras tanto, me gusta HOMESTAR desarrollado por SEGATOYS. HOMESTAR es un planetario nacional. Puede proyectar el cielo estrellado de 3 metros de diámetro al
Sala de estar para una película con Shelly: 4 pasos
Living Room for Movie With Shelly: Resumen ejecutivo del proyecto Cómo crear una automatización muy simple usando las rutinas de Google Home para hacer que mi sala de estar sea cómoda para ver una película
Juegos listos para la realidad virtual en la sala de estar con Linux: 4 pasos
Livingroom VR Ready Gaming con Linux: Introducción Quería hacer una plataforma de juegos para VR y juegos sociales en mi sala de estar. Soy fanático de Linux y de la comunidad de código abierto, por lo que la pregunta era "¿Puede Linux hacer realidad virtual?", Linux es un sistema operativo para juegos muy capaz, en gran parte gracias a Win
LUZ DE INUNDACIÓN LED EN MI SALA DE ESTAR !!!: 6 Pasos
LUZ DE INUNDACIÓN LED EN MI SALA DE ESTAR !!!: Bombilla de 18 LED para " extra " brillo
El lirio eléctrico o el imperdible: cómo estar seguro y lucir bien haciéndolo: 9 pasos (con imágenes)
El lirio eléctrico o el imperdible: cómo estar seguro y lucir bien haciéndolo: este instructivo es para caminantes y ciclistas por igual. Quien quiera ser visto de noche y seguir luciendo bien. Dáselo a tu novia, a tu hermana, a tu hermano, a tu amigo o incluso a tu mamá. Cualquiera que tenga estilo y camine, corra o ande en bicicleta ¡¡¡por la noche