Table des matières:
- Étape 1: Fournitures et connexions
- Étape 2: configuration de PI
- Étape 3: Téléchargement et compilation du code
- Étape 4: l'utiliser
- Étape 5: Comment fonctionne le code
- Étape 6: personnalisation et noms conviviaux
Vidéo: Contrôleur de relais Alexa Raspberry Pi : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
J'ai créé ce Instructable pour partager mes expériences avec l'intégration d'appareils IOT avec Alexa d'Amazon.
Ce projet permet de contrôler une carte relais connectée à un raspberry pi à partir du contrôleur smarthome.
Il a été testé avec Alexa mais semble également fonctionner correctement avec Samsung Smartthings et d'autres interfaces de contrôle car il émule une série de prises Belkin Wemo.
Il y a BEAUCOUP d'exemples basés sur l'excellent code FAUXMO, mais cela signifiait apprendre python et ne m'a pas donné le contrôle détaillé dont j'avais besoin pour mes appareils et j'ai donc décidé d'en recréer un à partir de zéro en utilisant C comme langage de codage de base.
Je ne voulais pas non plus avoir à aller dans les profondeurs du code lambda sur Amazon.com, donc j'ai gardé les choses très simples.
J'ai posté la source et les notes sur Github:
github.com/Switchdoctorstu/StuPiMo
Le tutoriel est vraiment destiné à expliquer comment le faire fonctionner et à publier mes notes au cas où cela aiderait les autres.
Étape 1: Fournitures et connexions
Les choses dont vous avez besoin sont facilement disponibles sur Amazon/EBay:
- Tarte aux framboises *
- Alimentation Pi
- Connecteurs Dupont
- Carte relais
- Ancien cordon micro USB (à couper en deux pour l'alimentation de la carte relais)
N'importe quel Raspberry Pi fonctionnera, je l'ai testé sur un modèle B et Zero.
* Si vous utilisez Pi Zero, vous aurez besoin d'un adaptateur réseau OTG (sauf si vous achetez la version 'W' avec une connexion WiFi)
Vous devrez connecter le Pi au réseau.
Utilisez les connecteurs dupont pour connecter la carte relais au Pi.
Notez que la carte relais doit utiliser une alimentation externe (retirez le lien et connectez-vous au 5v externe). Il fonctionnera à partir du PI mais ce n'est pas conseillé pour le fonctionnement en production.
Pour ma configuration, j'ai utilisé un HUB USB alimenté en externe. Cela fournit la puissance au PI.
J'ai également coupé l'extrémité d'un ancien câble USB et alimenté les relais d'une 2e connexion USB au concentrateur pour rester en sécurité. Ma version "production" utilise une petite alimentation à découpage 5V 5A. Encore une fois, je viens de couper un câble USB en deux pour alimenter le Pi via Micro-USB et de couper deux des connecteurs dupont pour alimenter la carte relais. Il y a 4 fils dans le câble USB, la plupart utilisent du rouge/noir pour indiquer l'alimentation 5v, mais en cas de doute, utilisez un compteur pour vous assurer d'obtenir les bons fils.
Les broches de relais sur la carte sont connectées aux broches GPIO pertinentes sur l'en-tête PI.
Le code vous permet de choisir les broches GPIO mais la valeur par défaut que j'ai utilisée était:
- Relais Broche 1 - Masse
- Relais Broche 2 - Relais 1 - GPIO 0
- Relais Broche 3 - Relais 2 - GPIO 1
- Relais Broche 4 - Relais 3 - GPIO 2
- Relais Broche 5 - Relais 4 - GPIO 3
- Relais Broche 6 - Relais 5 - GPIO 4
- Relais Broche 7 - Relais 6 - GPIO 5
- Relais Broche 8 - Relais 7 - GPIO 6
- Relais Broche 9 - Relais 8 - GPIO 7
- Relais Pin 10 - +5v pour logique
Étape 2: configuration de PI
Je ne vais pas recréer un didacticiel sur la façon de faire fonctionner votre PI et de le connecter au réseau.
Il existe de nombreux guides dont un excellent instructable à:
www.instructables.com/id/Ultimate-Raspberr…
Vous devrez vous rendre au point où le PI est visible sur le réseau et vous pouvez vous y connecter.
Peu importe que ce soit via Ethernet ou sans fil.
Ce projet peut être complété uniquement avec le Raspberry PI à l'aide de l'éditeur de programmeurs Geany, mais je trouve personnellement qu'il est plus facile de préparer mon code sur un PC à l'aide de Visual Studio ou d'Eclipse (ou même de Notepad ++), puis de le télécharger sur le PI pour le débogage à l'aide d'un Connexion VNC. Encore une fois, je ne vais pas couvrir cela ici car il existe de nombreuses excellentes instructions sur la configuration de VNC sur un RPi.
Tout ce dont vous avez besoin est d'arriver au point où vous pouvez télécharger et compiler le code.
Une note importante est que puisque le gestionnaire UPNP requiert la multidiffusion UDP, les interfaces utilisées doivent être définies en mode « Promiscuous ».
Cela peut être fait sur la ligne de commande:
pi@raspberrypi:~ $ ifconfig eth0 promisc
et/ou
pi@raspberrypi:~ $ ifconfig wlan0 promisc
Cela doit être rendu permanent, j'ai donc édité le fichier /etc/rc.local
sudo nano \etc\rc.local
pour inclure la ligne:
sudo ifconfig eth0 promisc
après le premier ensemble de lignes # de bannière pour s'assurer que les interfaces ont été définies au démarrage.
Étape 3: Téléchargement et compilation du code
Le code lui-même se trouve dans mon répertoire Github;
github.com/Switchdoctorstu/StuPiMo/blob/ma…
alors qu'il existe des moyens "corrects" de cloner le référentiel. J'ai trouvé plus simple d'ouvrir l'éditeur Geany sur le bureau Pi et de coller le code.
De même, si vous utilisez la ligne de commande;
Créer un nouveau répertoire
mkdir Stu
Changez-le
cd
Créer un nouveau fichier texte
nano StuPiMo.c
Copiez le code du Github raw et collez-le dans le nouveau fichier
Sauvegarder et quitter.
Une fois que vous avez le fichier en tant qu'objet de code source C, vous pouvez le compiler en utilisant
gcc -o StuPiMo StuPiMo.c -l câblagePi
notez que le "-l câblagePi" est nécessaire pour s'assurer que le compilateur se connecte à la bibliothèque câblagePi requise.
Le code peut alors être exécuté en utilisant
./StuPiMo
Encore une fois, si vous voulez que cela s'exécute au démarrage, utilisez la commande:
sudo nano /etc/rc.local
ajouter la ligne suivante
sudo /home/pi/Stu/StuPiMo &
dans votre fichier /etc/rc.local. N'oubliez pas de sauvegarder votre fichier en quittant.
Notez que le '&' est essentiel pour s'assurer qu'un sous-processus est généré pour s'assurer que le script n'est pas bloqué à ce stade.
Étape 4: l'utiliser
Une fois que vous avez exécuté le code, demandez à Alexa de « Découvrir les appareils » et elle devrait trouver les 8 appareils Wemo virtuels.
Ensuite, il suffit de dire: « Alexa allume la prise 1 » ou « Alexa éteint la prise 6 », etc. et le relais correspondant sera modifié.
Étape 5: Comment fonctionne le code
Le code fonctionne en émulant une série de dispositifs de socket Belkin Wemo.
Pour y parvenir, il doit gérer 2 fonctions principales
- un gestionnaire de diffusion de découverte UPNP
- un « device handler » (un par périphérique virtuel) pour gérer les commandes envoyées au périphérique et les réponses requises.
Une fonctionnalité « bonus » est qu'il publie également une page Web pour permettre le contrôle des appareils.
Gestionnaire UPNP
Le gestionnaire UPNP ouvre un socket pour surveiller les paquets de protocole SSDP sur le port 1900 239.255.255.250.
Il répond à toutes les requêtes « M-SEARCH » entrantes avec un paquet de réponse de découverte qui annonce les émulateurs wemo individuels à quiconque le demande.
Gestionnaire de périphérique
Les gestionnaires de périphériques (un par périphérique virtuel) surveillent une série de ports IP et répondent aux demandes.
Il servira une réponse setup.xml lorsque demandé
Il servira un fichier de description d'événement lorsque demandé
Il répondra à une requête GETBINARYSTATE
Il traitera et répondra à une demande SETBINARYSTATE
Serveur Web
Le serveur Web est une routine simple qui construit un formulaire HTML contenant un bouton par relais.
Il répondra aux boutons enfoncés et changera l'état du relais en conséquence.
Étape 6: personnalisation et noms conviviaux
Je ne suis pas devenu fou avec le code pour le garder simple et modifiable.
Les bases peuvent être personnalisées par des définitions en début de code:
// définitions globales#define WEBPORT 5353 // port sur lequel exécuter le serveur Web
#define NUMDEVICES 8 // Nombre d'appareils virtuels à créer
#define PORTBASE 43450 // port IP de base à incrémenter à partir de
WEBPORT est le numéro de port sur lequel s'exécute le serveur Web intégré. Cela pourrait être fait pour s'asseoir à 80 pour rendre les choses faciles, mais j'ai trouvé que cela était en conflit avec Tomcat ou d'autres services exécutés localement.
NUMDEVICES définit le nombre d'émulateurs WEMO individuels à lancer. Si vous avez une carte relais à 2 ports, réglez-la sur 2, 4 ports = 4, etc.
Les noms conviviaux des périphériques sont définis dans une routine appelée setup_names:
int setup_names(char friendly[NUMDEVICES][NAMELEN]) { int i = 0;
// utilise cette boucle
pour (i = 0; i < NUMDEVICES; i++) {
sprintf(friendly, "Socket %d", i + 1);
}
// ou le tableau manuel suivant pour renseigner les noms de périphériques
/*
strcpy(friendly[0], "Chambre TV");
strcpy(friendly[1], "Couverture électrique");
strcpy(friendly[2], "Lampe de chambre");
strcpy(friendly[3], "Socket 4");
strcpy(friendly[4], "Socket 5");
strcpy(friendly[5], "Socket 6");
strcpy(friendly[6], "Socket 7");
strcpy(friendly[7], "Socket 8");
*/
retourner je;
}
J'ai utilisé une boucle pour appeler chacun des appareils 'Socket n' mais vous pouvez supprimer cette boucle et ajouter vos propres noms conviviaux à la place (assurez-vous simplement d'ajouter le même numéro que NUMDEVICES) si vous supprimez le /* */
N'oubliez pas de recompiler le code si vous apportez des modifications.
Conseillé:
Contrôleur TV Alexa IoT ESP8266 : 10 étapes (avec photos)
Contrôleur TV Alexa IoT ESP8266 : J'ai récemment acheté un Amazon Echo Dot pendant la journée Amazon Prime pour environ 20 €. Ces petits assistants vocaux sont bon marché et parfaits pour la domotique DIY si vous savez ce qui est possible et comment construire des appareils intelligents. J'ai une Smart TV Samsung mais je voulais t
Système Alexa Smart Home utilisant le module de relais NodeMCU : 10 étapes
Système Alexa Smart Home utilisant le module de relais NodeMCU: Dans ce projet IoT, j'ai créé le système Alexa Smart Home Automation à l'aide du NodeMCU ESP8266 & Module relais. Vous pouvez facilement contrôler la lumière, le ventilateur et d'autres appareils ménagers avec la commande vocale. Pour connecter l'enceinte intelligente Echo Dot avec le
Commutateur de relais IOT à commande vocale basé sur Arduino (prise en charge par Google Home et Alexa) : 11 étapes
Commutateur de relais IOT à commande vocale basé sur Arduino (prise en charge par Google Home et Alexa) : ce projet décrit comment créer un commutateur de relais IOT à commande vocale basé sur Arduino. Il s'agit d'un relais que vous pouvez activer et désactiver à distance à l'aide d'une application pour iOS et Android, ainsi que le lier à IFTTT et le contrôler avec votre voix à l'aide de Goog
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables
YABC - Encore un autre contrôleur Blynk - Contrôleur de température et d'humidité du cloud IoT, ESP8266 : 4 étapes
YABC - Encore un autre contrôleur Blynk - Contrôleur de température et d'humidité du cloud IoT, ESP8266 : Salut les fabricants, j'ai récemment commencé à cultiver des champignons à la maison, des pleurotes, mais j'ai déjà 3x de ces contrôleurs à la maison pour le contrôle de la température du fermenteur pour ma bière maison, femme fait aussi ce truc de Kombucha maintenant, et en tant que thermostat pour la chaleur