Table des matières:
- Étape 1: configuration initiale
- Étape 2: Configurer Ngrok
- Étape 3: Script Python pour le contrôle de l'interrupteur d'éclairage
- Étape 4: Script Python pour le contrôle des ventilateurs
- Étape 5: Installation et configuration du package LIRC
- Étape 6: Script Python pour le contrôle TV
- Étape 7: connexion au compte AWS
- Étape 8: Configuration des compétences TV Alexa
- Étape 9: Configuration des compétences Alexa des lumières
- Étape 10: Configuration des compétences Fan Alexa
- Étape 11: Construire le circuit
- Étape 12: Commandes Alexa
Vidéo: Contrôler le salon avec Alexa et Raspberry Pi : 12 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:05
Contrôlez la télévision, les lumières et le ventilateur de votre salon avec Alexa (Amazon Echo ou Dot) et Raspberry Pi GPIO.
Étape 1: configuration initiale
J'ai utilisé un Raspberry Pi 2 et une image Raspbian Jessie téléchargée à partir de
Une fois connecté, saisissez les commandes suivantes pour installer les packages et les bibliothèques python requis:
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
Étape 2: Configurer Ngrok
Visitez https://ngrok.com/download et obtenez la dernière version de Linux ARM sous forme de zip et décompressez dans le répertoire personnel:
décompressez /home/pi/ngrok-stable-linux-arm.zip
Ouvrez un nouveau terminal et entrez la commande suivante:
sudo./ngrok http 4000
Ouvrez un autre nouveau terminal et entrez la commande suivante:
sudo./ngrok http 4500
Ouvrez le troisième nouveau terminal et entrez la commande suivante:
sudo./ngrok http 5000
Étape 3: Script Python pour le contrôle de l'interrupteur d'éclairage
Ouvrez une nouvelle session de terminal et créez un nouveau fichier python nommé light_control.py:
nano light_control.py
Copiez/collez le code suivant dans le nouveau fichier:
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 except Exception as e: return statement('Numéro de broche non valide.') GPIO.setup(pinNum, GPIO. OUT) si état dans ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) si état dans ['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)
Enregistrez et fermez le fichier.
Démarrez le serveur de flacons avec:
sudo python light_control.py
Laissez ngrok et light_control.py en cours d'exécution
Étape 4: Script Python pour le contrôle des ventilateurs
Ouvrez une nouvelle session de terminal et créez un nouveau fichier python nommé fan_control.py:
nano fan_control.py
Copiez/collez le code suivant dans le nouveau fichier:
de la fiole import fiole
de flask_ask importer Ask, instruction, convert_errors importer RPi. GPIO en tant que 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 except Exception as e: return statement('Pin number non valide.') GPIO.setup(pinNum, GPIO. OUT) si état dans ['on', 'high']: GPIO.output(pinNum, GPIO. LOW) si état dans ['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)
Enregistrez et fermez le fichier.
Démarrez le serveur de flacons avec:
sudo python fan_control.py
Laissez ngrok, light_control.py et fan_control.py en cours d'exécution
Étape 5: Installation et configuration du package LIRC
Afin de contrôler le téléviseur, vous devez configurer une broche sur le Raspberry Pi pour générer des signaux infrarouges (IR) pour votre téléviseur spécifique. Ouvrez le terminal et entrez la commande suivante pour installer un package LIRC qui émule les signaux infrarouges de nombreuses télécommandes.
sudo apt-get install lirc
Ensuite, vous devez activer et configurer le module de noyau lirc_rpi. Pour ce faire, ouvrez les modules dans l'éditeur Nano
sudo nano /etc/modules
Ajoutez les lignes ci-dessous au fichier (assurez-vous que le paramètre gpio_out_pin pointe vers la broche contrôlant la LED IR):
lirc_devlirc_rpi gpio_out_pin=17
Ensuite, ouvrez le fichier hardware.conf dans Nano comme auparavant avec sudo:
sudo nano /etc/lirc/hardware.conf
Ajoutez la configuration suivante au fichier:
LIRCD_ARGS="--uinput"LOAD_MODULES=true
DRIVER="par défaut"
APPAREIL="/dev/lirc0"
MODULES="lirc_rpi"
LIRCD_CONF=""
LIRCMD_CONF=""
Maintenant, redémarrez le Raspberry Pi:
redémarrage sudo
Étape 6: Script Python pour le contrôle TV
Ouvrez une nouvelle session de terminal et créez un nouveau fichier python nommé ir_control.py:
nano ir_control.py
Allez sur
Trouvez une télécommande compatible avec votre téléviseur. Dans mon cas, j'ai un téléviseur Sanyo qui fonctionne avec le fichier de configuration sanyo-tv01. Une fois que vous avez trouvé un fichier prenant en charge votre téléviseur, ouvrez-le et parcourez les options de commande.
Copiez/collez le code suivant dans le nouveau fichier et remplacez sanyo-tv01 par le nom de fichier qui fonctionne avec votre téléviseur. Assurez-vous également que les commandes tv sont prises en charge par le fichier de configuration de votre téléviseur; Vous devrez peut-être modifier les commandes KEY_POWER, KEY_VIDEO, KEY_VOLUMEUP, KEY_VOLUMEDOWN et KEY_MUTE pour qu'elles fonctionnent correctement avec le fichier de configuration de votre téléviseur:
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 ['allumer']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") déclaration de retour ('Allumer le téléviseur') état elif dans ['éteindre']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_POWER") déclaration de retour ('Éteindre le téléviseur') état elif dans ['changer l'entrée']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") os.system("irsend SEND_ONCE sanyo-tv01 KEY_VIDEO") return instruction('Modification de l'entrée sur le téléviseur') état elif dans ['augmenter le 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") déclaration de retour ("Augmentation du volume sur le téléviseur") état elif dans ['diminuer le 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 sanyo-tv01 KEY_VOLUMEDOWN") os.system("irsend SEND_ONCE sanyo ") return statement('Diminution du volume sur le téléviseur') état elif dans ['mute']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") return statement('Mettre le téléviseur en sourdine') état elif dans ['unmute ']: os.system("irsend SEND_ONCE sanyo-tv01 KEY_MUTE") déclaration de retour ('Réactiver le son du téléviseur') else: déclaration de retour('Fonction à distance introuvable.') if _name_ == '_main_': port = 5000 app.run(hôte='0.0.0.0', port=port)
Enregistrez et fermez le fichier.
Démarrez le serveur de flacons avec:
sudo python ir_control.py
Laissez les trois fenêtres de terminal ngrok, light_control.py, fan_control.py et ir_control.py en cours d'exécution
Étape 7: connexion au compte AWS
Créez d'abord ou connectez-vous à votre compte de développeur AWS et ouvrez votre liste de compétences Alexa.
Étape 8: Configuration des compétences TV Alexa
Sélectionnez "Ajouter une nouvelle compétence".
Définissez le nom de la compétence sur « Trigger TV » et le nom d'appel sur le(s) mot(s) que vous souhaitez utiliser pour activer la compétence.
Cliquer sur Suivant pour continuer.
Copiez/collez les éléments suivants dans la zone « Intent Schema »:
{ "intentions": [{
"slots": [{ "name": "status", "type": "TV_Function" }, { "name": "amount", "type": "AMAZON. NUMBER" }], "intent": "GPIOControlIntent " }] }
Ensuite, cliquez sur « Ajouter un type d'emplacement »
Entrez TV_Function dans le champ 'Entrez le type'.
Saisissez les valeurs suivantes dans le champ « Saisir des valeurs »:
allumer
éteindre changer l'entrée augmenter le volume diminuer le volume couper le son rétablir le son
Ensuite, copiez/collez ce qui suit dans la case « Exemples d'énoncés »:
GPIOControlIntent {statut}
GPIOControlIntent {status} par {amount}
Cliquer sur Suivant pour continuer.
Sélectionnez « HTTPS » comme type de point de terminaison de service et sélectionnez une région. Saisissez l'URL ngrok de l'étape 2 et cliquez sur « Suivant ». L'URL devrait ressembler à ceci:
ed6ea04d.ngrok.io
Cliquez sur « Suivant » pour continuer et appuyez sur « Enregistrer ».
Étape 9: Configuration des compétences Alexa des lumières
Fermez la compétence ouverte et sélectionnez « Ajouter une nouvelle compétence ».
Définissez le nom de la compétence sur « Contrôle des lumières » et le nom d'invocation sur le(s) mot(s) que vous souhaitez utiliser pour activer la compétence.
Cliquer sur Suivant pour continuer. Copiez/collez les éléments suivants dans la zone « Intent Schema »:
{
"intents": [{ "slots": [{ "name": "status", "type": "LIGHTS_CONTROL" }], "intent": "LightsControlIntent" }] }
Ensuite, cliquez sur « Ajouter un type d'emplacement ».
Saisissez "LIGHTS_CONTROL" dans le champ "Enter Type".
Saisissez les valeurs suivantes dans le champ « Saisir des valeurs »:
au
désactivé
Ensuite, copiez/collez ce qui suit dans la case « Exemples d'énoncés »:
LightsControlIntent turn {status}
Cliquer sur Suivant pour continuer. Sélectionnez « HTTPS » comme type de point de terminaison de service et sélectionnez une région. Entrez l'URL ngrok de l'étape 2 et cliquez sur « Suivant ». L'URL devrait être quelque chose comme:
ed6ea04d.ngrok.io
Cliquez sur « Suivant » pour continuer et appuyez sur « Enregistrer ».
Étape 10: Configuration des compétences Fan Alexa
Fermez la compétence ouverte et sélectionnez « Ajouter une nouvelle compétence ».
Définissez le nom de la compétence sur « Contrôle du ventilateur » et le nom d'appel sur le(s) mot(s) que vous souhaitez utiliser pour activer la compétence.
Cliquer sur Suivant pour continuer.
Copiez/collez les éléments suivants dans la zone « Intent Schema »:
{
"intents": [{ "slots": [{ "name": "status", "type": "FAN_CONTROL" }], "intent": "FANControlIntent" }] }
Ensuite, cliquez sur « Ajouter un type d'emplacement ».
Saisissez « FAN_CONTROL » dans le champ « Entrez le type ».
Saisissez les valeurs suivantes dans le champ « Saisir des valeurs »:
au
désactivé
Ensuite, copiez/collez ce qui suit dans la case « Exemples d'énoncés »:
FANControlIntent turn {status}
Cliquer sur Suivant pour continuer. Sélectionnez « HTTPS » comme type de point de terminaison de service et sélectionnez une région. Entrez l'URL ngrok de l'étape 2 et cliquez sur « Suivant ». L'URL devrait être quelque chose comme:
ed6ea04d.ngrok.io
Cliquez sur « Suivant » pour continuer et appuyez sur « Enregistrer ».
Étape 11: Construire le circuit
Connectez le circuit comme indiqué sur le schéma. J'ai utilisé un module de relais JBtek 8 canaux DC 5V pour me connecter à la ligne et à la terre AC 120v de ma maison.
Étape 12: Commandes Alexa
Maintenant, les commandes suivantes peuvent être parlées à Alexa pour contrôler votre salon.
Conseillé:
Salon pour film avec Shelly : 4 étapes
Living Room for Movie With Shelly : Résumé exécutif du projetComment créer une automatisation très simple à l'aide des routines Google Home pour rendre le salon de ma chambre confortable pour regarder un film
Contrôler plusieurs LED avec Python et les broches GPIO de votre Raspberry Pi : 4 étapes (avec photos)
Contrôler plusieurs LED avec Python et les broches GPIO de votre Raspberry Pi : Ce Instructable montre comment contrôler plusieurs broches GPIO sur votre RaspberryPi pour alimenter 4 LED. Il vous présentera également les paramètres et les instructions conditionnelles en Python. Notre précédent Instructable Using Your Raspberry Pi's GPIO Pins to Con
Le salon du capitaine Lee De Martian : 6 étapes
Captain Lee De Martian's Parlor: Captain Lee est un outil libre de droits pour créer des jeux vidéos à propos de donjonsListe des matériauxFeuillesFeutrescrayons Liste des outils OrdinateursScannersSite internet : Captainlee.org
Comment contrôler la lumière / les lumières de la maison à l'aide d'Arduino et d'Amazon Alexa : 16 étapes (avec photos)
Comment contrôler la lumière/les lumières domestiques à l'aide d'Arduino et d'Amazon Alexa : j'ai expliqué comment contrôler la lumière qui est connectée à UNO et contrôlée par Alexa
Comment contrôler les appareils ménagers avec la télécommande du téléviseur avec fonction de minuterie : 7 étapes (avec images)
Comment contrôler les appareils ménagers avec la télécommande du téléviseur avec fonction de minuterie : Même après 25 ans de son introduction sur le marché grand public, la communication infrarouge est toujours très pertinente ces derniers jours. Qu'il s'agisse de votre téléviseur 4K 55 pouces ou de votre système audio de voiture, tout a besoin d'une télécommande IR pour répondre à nos