- Composants requis
- Schéma
- Installation des bibliothèques cloud MQTT sur Raspberry Pi
- Explication de codage pour contrôler Raspberry Pi GPIO avec MQTT
Dans le tutoriel précédent, nous avons discuté du protocole MQTT et installé le serveur MQTT local sur notre Raspberry Pi pour contrôler le GPIO localement. Mais l'inconvénient du serveur MQTT local est que nous ne pouvons pas contrôler les GPIO de n'importe où dans le monde, il ne fournit des services que localement. Mais si ce serveur MQTT est hébergé sur un cloud, tous les appareils connectés à Raspberry Pi peuvent être contrôlés globalement.
Ici, dans ce tutoriel, nous utiliserons Adafruit IO comme courtier MQTT pour contrôler une appliance AC connectée au Raspberry Pi GPIO. Consultez également d'autres didacticiels de domotique contrôlés par l'IoT:
- Domotique à commande vocale basée sur l'IOT utilisant ESP8266 et l'application Android
- Domotique contrôlée par téléphone intelligent avec Arduino
- Domotique contrôlée Web basée sur l'IoT utilisant le microcontrôleur PIC et Adafruit IO
- Domotique contrôlée Web basée sur l'IoT avec Raspberry Pi
- Domotique à commande vocale basée sur Google Assistant utilisant le bouclier Wi-Fi DIY Arduino
Composants requis
- Raspberry Pi avec Raspbian Stretch installé.
- Module de relais
- Ampoule
- Fils de cavalier
Ici, nous utiliserons SSH pour accéder à Raspberry Pi sur l'ordinateur portable. Vous pouvez utiliser la connexion VNC ou Remote Desktop sur l'ordinateur portable, ou connecter votre Raspberry pi à un moniteur. En savoir plus sur la configuration de Raspberry Pi sans tête ici sans moniteur.
Schéma
Le schéma de circuit pour cet appareil électroménager contrôlé par l'IoT avec le cloud MQTT et le Raspberry Pi est simple, il suffit de connecter une ampoule avec un module de relais sur la broche GPIO 35 du raspberry Pi.
Installation des bibliothèques cloud MQTT sur Raspberry Pi
Ici, la plate-forme Adafruit IO est utilisée avec Raspberry Pi en tant que courtier MQTT. Comme nous avons utilisé la plate-forme Adafruit IO à plusieurs reprises dans nos tutoriels précédents, nous pouvons également l'utiliser dans Raspberry Pi.
Créez simplement un compte sur la plateforme Adafruit IO et créez un flux.Si vous ne savez pas comment créer un flux et personnaliser le tableau de bord Adafruit, suivez le lien.
Après avoir créé le tableau de bord, installez quelques bibliothèques dans Raspberry Pi pour démarrer avec MQTT.
1. Tout d'abord, mettez à jour votre Pi et Python en émettant les commandes suivantes
sudo apt-get mise à jour sudo apt-get mise à niveau sudo pip3 installation --upgrade setuptools
2. Maintenant, installez les bibliothèques Rpi.gpio et Adafruit blink en utilisant les commandes ci-dessous
sudo pip3 installer RPI.GPIO sudo pip3 installer adafruit-blinka
3. Installez la bibliothèque Adafruit IO en utilisant la commande ci-dessous
sudo pip3 installer adafruit-io
4. Clonez les exemples adafruit de github en utilisant la commande ci-dessous
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. Ensuite, accédez au dossier des exemples en entrant la commande suivante dans le terminal:
cd Adafruit_IO_Python / examples / basics
Si vous n'êtes pas sûr du répertoire dans lequel vous vous trouvez, vous pouvez le vérifier en exécutant pwd.
6. Pour tous les exemples de ce dossier, vous devrez définir ADAFRUIT_IO_KEY et ADAFRUIT_IO_USERNAME, qui peuvent être trouvés dans le tableau de bord Adafruit. Comme indiqué ci-dessous
Activez le bouton sur le tableau de bord Adafruit IO, et vous devriez voir ce qui suit dans le terminal de votre Pi.
7. Ouvrez maintenant le fichier subscribe.py à l'aide de nano editor. Tapez la commande suivante pour l'ouvrir
sudo nano subscribe.py
Nous devons modifier ce programme pour contrôler n'importe quel GPIO à partir du tableau de bord.
Explication de codage pour contrôler Raspberry Pi GPIO avec MQTT
Tout d'abord, importez toutes les bibliothèques requises pour utiliser les broches GPIO et le client Adafruit MQTT.
importer RPi.GPIO comme système d'importation GPIO à partir d'Adafruit_IO importer MQTTClient
Maintenant, définissez le mode GPIO et définissez le numéro de broche LED et définissez-le comme sortie.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (False) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Ensuite, nous devons définir la clé AIO et le nom d'utilisateur que nous avons trouvés lors de la création du tableau de bord.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'VOTRE_AIO_USERNAME'
Entrez le nom du flux que vous avez donné pour allumer et éteindre la lumière. Ici, c'est «léger».
FEED_ID = 'léger'
Maintenant, définissez une fonction qui sera appelée quand un événement se produira. Nous allons donc souscrire au flux en utilisant client.subscribe (FEED_ID)
def connected (client): client.subscribe (FEED_ID) print ('Waiting for feed data…')
Après avoir souscrit au flux, nous devons vérifier la nouvelle valeur et la stocker dans une variable de charge utile . Pour ce message, la fonction est appelée. Ainsi, chaque fois qu'il y a «1» dans la variable de charge utile, mettez la broche de led à HAUT et pour «0», rendez-la à BAS.
def message (client, feed_id, payload): print ('Feed {0} a reçu une nouvelle valeur: {1}'. format (feed_id, payload)) if payload == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Maintenant, créez un client MQTT pour vous connecter à la plate-forme Adafruit IO et envoyer les messages aller et retour.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = client connecté.on_disconnect = déconnecté
Faites également attention à l'indentation correcte dans le code, sinon il affichera une erreur. Le code python complet est donné à la fin du tutoriel.
Enfin, enregistrez le programme en utilisant ctrl + x et appuyez sur Entrée. Maintenant, nous devons exécuter le script afin de souscrire les messages. Donc, dans le terminal, tapez python subscribe.py et appuyez sur Entrée.
python subscribe.py
Vous verrez un message En attente de données d'alimentation … comme illustré ci-dessous.
Maintenant, assurez-vous que le module de relais est connecté à la broche GPIO de Raspberry Pi, puis accédez au tableau de bord Adafruit IO et modifiez l'alimentation lumineuse. L' ampoule doit s'allumer lorsque «1» est reçu et s'éteindre lorsque «0» est reçu comme indiqué ci-dessous.
De cette façon, nous pouvons contrôler n'importe quel appareil de n'importe où dans le monde en utilisant Raspberry Pi et le cloud MQTT