Índice:
- Etapa 1: configuração inicial
- Etapa 2: configurar o Ngrok
- Etapa 3: Script Python para controle de interruptor de luz
- Etapa 4: Script Python para controle de fãs
- Etapa 5: Instalação e configuração do pacote LIRC
- Etapa 6: Python Script para controle de TV
- Etapa 7: Faça login na conta AWS
- Etapa 8: configuração da habilidade Alexa para TV
- Etapa 9: Configuração da habilidade Alexa para luzes
- Etapa 10: Configuração da habilidade Fan Alexa
- Etapa 11: Construir o Ciruit
- Etapa 12: Comandos Alexa
Vídeo: Controle a sala de estar com Alexa e Raspberry Pi: 12 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:34
Controle a TV, as luzes e a ventoinha da sua sala de estar com Alexa (Amazon Echo ou Dot) e Raspberry Pi GPIO.
Etapa 1: configuração inicial
Usei uma imagem Raspberry Pi 2 e Raspbian Jessie baixada de
Depois de fazer login, digite os seguintes comandos para instalar os pacotes e bibliotecas Python necessários:
sudo apt-get update && sudo apt-get upgrade -ysudo apt-get install python2.7-dev python-dev python-pip sudo pip instalar Flask flask-ask sudo apt-get install lirc
Etapa 2: configurar o Ngrok
Visite https://ngrok.com/download e obtenha a versão mais recente do Linux ARM como um arquivo compactado e descompacte dentro do diretório inicial:
descompacte /home/pi/ngrok-stable-linux-arm.zip
Abra um novo terminal e digite o seguinte comando:
sudo./ngrok http 4000
Abra outro novo terminal e digite o seguinte comando:
sudo./ngrok http 4500
Abra o terceiro novo terminal e digite o seguinte comando:
sudo./ngrok http 5000
Etapa 3: Script Python para controle de interruptor de luz
Abra uma nova sessão de terminal e crie um novo arquivo python denominado light_control.py:
nano light_control.py
Copie / cole o seguinte código no novo arquivo:
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 exceto Exceção como instrução e: return ('Número do PIN inválido.') GPIO.setup (pinNum, GPIO. OUT) se o status estiver em ['ligado', 'alto']: GPIO.output (pinNum, GPIO. LOW) se o status estiver em ['desligado', ' 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)
Salve e feche o arquivo.
Inicie o servidor Flask com:
sudo python light_control.py
Deixe ngrok e light_control.py em execução
Etapa 4: Script Python para controle de fãs
Abra uma nova sessão de terminal e crie um novo arquivo Python denominado fan_control.py:
nano fan_control.py
Copie / cole o seguinte código no novo arquivo:
from flask importar 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 exceto Exceção como declaração e: return ('Número do PIN não é válido. ') GPIO.setup (pinNum, GPIO. OUT) se status em [' ligado ',' alto ']: GPIO.output (pinNum, GPIO. LOW) se status em [' desligado ',' baixo ']: 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)
Salve e feche o arquivo.
Inicie o servidor Flask com:
sudo python fan_control.py
Deixe ngrok, light_control.py e fan_control.py em execução
Etapa 5: Instalação e configuração do pacote LIRC
Para controlar a TV, você deve configurar um pino no Raspberry Pi para gerar sinais infravermelhos (IR) para sua TV específica. Abra o terminal e digite o seguinte comando para instalar um pacote LIRC que emula os sinais infravermelhos de muitos controles remotos.
sudo apt-get install lirc
Em seguida, você precisa habilitar e configurar o módulo do kernel lirc_rpi. Para fazer isso, abra os módulos no editor Nano
sudo nano / etc / modules
Adicione as linhas abaixo ao arquivo (certifique-se de que o parâmetro gpio_out_pin aponta para o pino que controla o LED IV):
lirc_devlirc_rpi gpio_out_pin = 17
Em seguida, abra o arquivo hardware.conf no Nano como antes com sudo:
sudo nano /etc/lirc/hardware.conf
Adicione a seguinte configuração ao arquivo:
LIRCD_ARGS = "- uinput" LOAD_MODULES = verdadeiro
DRIVER = "padrão"
DEVICE = "/ dev / lirc0"
MODULES = "lirc_rpi"
LIRCD_CONF = ""
LIRCMD_CONF = ""
Agora, reinicie o Raspberry Pi:
sudo reboot
Etapa 6: Python Script para controle de TV
Abra uma nova sessão de terminal e crie um novo arquivo python denominado ir_control.py:
nano ir_control.py
Vá para
Encontre um controle remoto compatível com sua TV. No meu caso, tenho uma TV Sanyo que funciona com o arquivo de configuração sanyo-tv01. Depois de encontrar um arquivo compatível com sua TV, abra-o e verifique as opções de comando.
Copie / cole o código a seguir no novo arquivo e substitua sanyo-tv01 pelo nome do arquivo que funciona com a sua TV. Certifique-se também de que os comandos tv são suportados pelo arquivo de configuração de sua TV; Pode ser necessário modificar os comandos KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN e KEY_MUTE para funcionar corretamente com o arquivo de configuração da 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): se o status em ['ligar']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER") declaração de retorno ('Ligar a TV') status elif em ['desligar']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_POWER ") declaração de retorno ('Desligando a TV') status elif em ['alterar entrada']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") os.system (" irsend SEND_ONCE sanyo-tv01 KEY_VIDEO ") return instrução ('Alterando a entrada na TV') status elif em ['aumentar 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 ") declaração de retorno ('Aumentando o Volume na TV') status elif em ['diminuir o 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_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 KEY_VOLUMEDOWN") os.system ("irsend_VOLUMEDOWN_VOLUMEDOWN") os.system ("irsend SEND_ONCE sanyo-tv01 sanyo-tv01 ") return statement ('Diminuindo o Volume na TV') status elif em ['mute']: os.system (" irsend SEND_ONCE sanyo-tv01 KEY_MUTE ") return statement ('Silenciando a TV') status elif em ['unmute ']: os.system ("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") instrução return (' Ativando o mudo da TV ') else: return instrução (' Função remota não encontrada. ') if _name_ ==' _main_ ': porta = 5000 app.run (host = '0.0.0.0', porta = porta)
Salve e feche o arquivo.
Inicie o servidor Flask com:
sudo python ir_control.py
Deixe todas as três janelas do terminal ngrok, light_control.py, fan_control.py e ir_control.py em execução
Etapa 7: Faça login na conta AWS
Primeiro, crie ou faça login em sua conta de desenvolvedor AWS e abra sua lista de habilidades Alexa.
Etapa 8: configuração da habilidade Alexa para TV
Selecione "Adicionar uma nova habilidade".
Defina o nome da habilidade para 'Trigger TV' e o nome de invocação para a (s) palavra (s) que deseja usar para ativar a habilidade.
Clique em próximo para continuar.
Copie / cole o seguinte na caixa 'Esquema de Intenção':
"slots": [{"name": "status", "type": "TV_Function"}, {"name": "amount", "type": "AMAZON. NUMBER"}], "intent": "GPIOControlIntent "}]}
Em seguida, clique em 'Adicionar tipo de slot'
Digite TV_Function no campo 'Enter Type'.
Insira os seguintes valores no campo 'Inserir valores':
ligar
desligar alterar entrada aumentar volume diminuir volume sem som ativar som
Em seguida, copie / cole o seguinte na caixa 'Amostras de expressões':
GPIOControlIntent {status}
GPIOControlIntent {status} por {amount}
Clique em próximo para continuar.
Selecione 'HTTPS' como o tipo de terminal de serviço e selecione uma região. Insira o URL ngrok da etapa 2 e clique em 'Avançar'. O URL deve ser algo como:
ed6ea04d.ngrok.io
Clique em 'Avançar' para continuar e pressione 'Salvar'.
Etapa 9: Configuração da habilidade Alexa para luzes
Feche a habilidade aberta e selecione "Adicionar uma nova habilidade".
Defina o nome da habilidade para 'Controle de luzes' e o nome de invocação para a (s) palavra (s) que deseja usar para ativar a habilidade.
Clique em próximo para continuar. Copie / cole o seguinte na caixa 'Esquema de Intenção':
{
"intents": [{"slots": [{"name": "status", "type": "LIGHTS_CONTROL"}], "intent": "LightsControlIntent"}]}
Em seguida, clique em 'Adicionar tipo de slot'.
Digite "LIGHTS_CONTROL" no campo 'Enter Type'.
Insira os seguintes valores no campo 'Inserir valores':
sobre
desligado
Em seguida, copie / cole o seguinte na caixa 'Amostras de expressões':
LightsControlIntent turn {status}
Clique em próximo para continuar. Selecione 'HTTPS' como o tipo de terminal de serviço e selecione uma região. Digite o URL ngrok da etapa 2 e clique em 'Avançar'. O URL deve ser algo como:
ed6ea04d.ngrok.io
Clique em 'Avançar' para continuar e pressione 'Salvar'.
Etapa 10: Configuração da habilidade Fan Alexa
Feche a habilidade aberta e selecione "Adicionar uma nova habilidade".
Defina o Nome da Habilidade para 'Controle de Ventilador' e o Nome de Invocação para a (s) palavra (s) que deseja usar para ativar a habilidade.
Clique em próximo para continuar.
Copie / cole o seguinte na caixa 'Esquema de Intenção':
{
"intents": [{"slots": [{"name": "status", "type": "FAN_CONTROL"}], "intent": "FANControlIntent"}]}
Em seguida, clique em 'Adicionar tipo de slot'.
Digite "FAN_CONTROL" no campo 'Enter Type'.
Insira os seguintes valores no campo 'Inserir valores':
sobre
desligado
Em seguida, copie / cole o seguinte na caixa 'Amostras de expressões':
FANControlIntent turn {status}
Clique em próximo para continuar. Selecione 'HTTPS' como o tipo de terminal de serviço e selecione uma região. Digite o URL ngrok da etapa 2 e clique em 'Avançar'. O URL deve ser algo como:
ed6ea04d.ngrok.io
Clique em 'Avançar' para continuar e pressione 'Salvar'.
Etapa 11: Construir o Ciruit
Conecte o circuito conforme mostrado no diagrama. Eu usei um módulo de relé JBtek de 8 canais DC 5V para conectar a linha CA 120v de minha casa e aterramento.
Etapa 12: Comandos Alexa
Agora, os seguintes comandos podem ser falados para Alexa para controlar sua sala de estar.
Recomendado:
Controle de luzes da sala com as mãos livres: 10 etapas
Controle de luzes da sala com as mãos livres: Como no filme " Missão impossível " diz " Tempos desesperados exigem medidas desesperadas " meu irmão que está na 10ª classe teve a ideia de controlar as luzes da cozinha usando o telefone em vez de usar interruptores e o motivo
Sala de estar para cinema com Shelly: 4 etapas
Sala de estar para filme com Shelly: Resumo executivo do projeto Como criar uma automação muito simples usando as rotinas home do Google para tornar a sala de estar confortável para assistir a um filme
Jogos prontos para RV da sala de estar com Linux: 4 etapas
Jogos prontos para VR de sala de estar com Linux: introduçãoEu queria fazer um equipamento de jogos para VR e jogos sociais na minha sala de estar. Eu sou um fã do Linux e da comunidade de código aberto, então a questão era " o Linux pode fazer VR? &Quot;, Linux é um sistema operacional de jogos muito capaz - em grande parte graças ao Win
Controle de sala com ESP8266 - Temperatura, movimento, cortinas e iluminação: 8 etapas
Controle de sala com ESP8266 | Temperatura, Movimento, Cortinas e Iluminação: Este projeto consiste em um sistema baseado no módulo NodeMCU ESP8266 que permite controlar o brilho de uma Faixa de LED e da cortina de sua sala, além de enviar dados sobre os eventos de movimento de sua sala e a temperatura para a nuvem w
Controle inteligente de sala: 5 etapas
Controle de sala inteligente: neste projeto, pretendemos aprender como usar AWS e MQTT em nossa configuração. Por estar no mundo da tecnologia, quão bom será poder controlar sua sala apenas com seu laptop! Imagine-se correndo atrás de tempo para concluir seus projetos, caminhando