[PYTHON] Surveiller la température à l'aide de la plate-forme IoT cloud Raspberry Pi + Alibaba

Ce didacticiel montre comment utiliser la plate-forme IoT ** Alibaba Cloud ** pour établir une communication unidirectionnelle pour la livraison de messages des appareils finaux vers le cloud.

Aperçu

Alibaba Cloud IoT Platform vous permet de connecter et de gérer facilement et en toute sécurité les données de divers types d'appareils électroniques déployés à l'échelle mondiale. Vous pouvez ingérer. Plateforme IoT avec d'autres services cloud (ApsaraDB, Quick BI ja / product / quickbi), Message Queue, etc.) pour collecter, traiter, analyser et visualiser les données IoT en temps réel. Vous pouvez créer une solution complète pour vous aider à améliorer l'efficacité de votre entreprise.

Il existe deux types de canaux de communication, qui peuvent être définis entre l'appareil final et le cloud IoT. Dans la communication bidirectionnelle, les données peuvent être envoyées et reçues en utilisant le même canal de données, tandis que dans la communication unidirectionnelle, les données peuvent être envoyées et reçues du périphérique IoT vers la plate-forme IoT. Voici quelques exemples de projets qui peuvent être mis en œuvre à l'aide de canaux de communication unidirectionnels.

  1. Surveillez la température du réservoir d'eau à la maison.
  2. Détecte et reçoit les alarmes de sécurité telles que les fuites de gaz, les incendies et les intrusions non autorisées. 3, vous pouvez surveiller l'humidité et recevoir une notification des gouttes de pluie. 4, surveiller l'état des appareils électriques et des appareils électroniques.

Ces projets peuvent être étendus pour contrôler les paramètres de surveillance à l'aide d'une communication bidirectionnelle. Le meilleur exemple serait un contrôleur d'humidité du sol de jardin. Vous pouvez surveiller l'humidité du sol et si l'humidité tombe en dessous d'un certain seuil, vous pouvez indiquer à l'appareil IoT d'allumer l'arroseur et de permettre à l'humidité de revenir à des niveaux acceptables.

Cependant, ce didacticiel ne montre que la communication unidirectionnelle qui envoie un message d'un appareil final au cloud IoT. Raspberry PI mesure la température à l'aide d'un capteur de température toutes les 60 secondes et publie les données de température sur le cloud Alibaba IoT sous la forme d'une chaîne de caractères sérialisée JSON au format suivant.

{ 'temperature': 12 }

Où 12 est la température mesurée par le capteur.

Les mesures de température publiées sont stockées dans la configuration de table de l'instance Alibaba Cloud Table Store.

La figure ci-dessous simplifie la manière dont les données circulent dans le système d'exemple. Notez que tous les événements de cette figure se produisent de manière asynchrone. image.png Figure 1 Organigramme des données

Conditions préalables

Ce didacticiel est facile à comprendre et à suivre si vous maîtrisez les techniques suivantes:

1, langage de programmation Python 2. Construction d'un circuit électronique utilisant une planche à pain 3, environnement cloud Alibaba

** Prérequis matériels et logiciels ** Avant de travailler sur ce projet, veuillez construire le circuit électronique comme indiqué dans le schéma ci-dessous et vérifier qu'il fonctionne correctement. Téléchargez également la bibliothèque suivante dans l'environnement Raspberry pi.

1, bibliothèque python w1thermsensor (https://pypi.org/project/w1thermsensor/) 2. Exemple de code Python (https://github.com/itexpertshire/AlibabaIoTCloudDemo)

image.png Figure 2 Schéma du circuit

Paramètres d'environnement Raspberry

  1. Connectez-vous à Raspberry Pi et activez l'interface 1-Wire dans les paramètres Raspberry Pi. image.png Figure 3 Configuration 1-Wire du Raspberry Pi

  2. Ouvrez un terminal shell avec Raspberry pi et installez les bibliothèques suivantes.

sudo pip install aliyun-python-sdk-core
sudo pip install aliyun-python-sdk-iot
sudo pip install w1thermsensor

Configurer des appareils IoT dans Alibaba Cloud

  1. Connectez-vous à la console IoT Platform et sélectionnez la région Région Chine (Shanghai).

  2. Créez un produit de base avec le type de nœud comme périphérique image.png Figure 4 Configuration du produit

  3. Ajoutez l'appareil sous le produit créé à l'étape précédente. Assurez-vous que l'état de l'appareil est activé comme indiqué ci-dessous. image.png Figure 5 Paramètres de l'appareil

  4. Créez une règle avec le type de données JSON et cliquez sur le bouton Gérer pour définir les options suivantes.

  5. Écrivez une expression SQL pour sélectionner la valeur d'attribut de température qui peut être utilisée dans les données JSON publiées par Raspberry. image.png Figure 6 expression de requête SQL

  6. Définissez les règles de transfert de données. Les données extraites du message IoT sont stockées dans une table appelée myIOT créée dans l'instance Alibaba Table Store. Les tables du magasin de tables ont au moins une clé primaire. L'heure actuelle est incluse dans le message JSON à utiliser avec la clé primaire. Pour obtenir la valeur temporelle d'un message publié, vous devez utiliser la syntaxe suivante $ {attribut de message JSON}. Les autres attributs JSON sont automatiquement stockés en tant qu'attributs séparés dans la table Table Store. image.png Figure 7 Règles de transfert de données

Procédure pas à pas de l'application Python

  1. Téléchargez / clonez l'exemple de code python à partir du référentiel github. https://github.com/itexpertshire/AlibabaIoTCloudDemo
  2. Importez le SDK IoT python, W1TermSensor et la bibliothèque base64.
from aliyunsdkcore import client
from aliyunsdkiot.request.v20170420 import RegistDeviceRequest
from aliyunsdkiot.request.v20170420 import PubRequest
import time
import base64
from w1thermsensor import W1ThermSensor
  1. Initialisez les variables suivantes avec les informations d'identification de votre compte cloud et la clé d'appareil IoT.
accessKeyId='<This will be found in your account security management page>'
accessKeySecret='<This will be found in account security management page>'
clt = client.AcsClient(accessKeyId, accessKeySecret, '<IoT Region>')
productKey ='< This is available in ProductKey field of the product configured >'
deviceName = '<Name of the device created>'
  1. Pour émettre un message, le cloud IoT définit le sujet par défaut sur / $ {productKey} / $ {deviceName} / update. Par conséquent, préparez la chaîne de caractères suivante du nom de la rubrique publique.
topicName = '/'+productKey+'/'+deviceName+'/update'
  1. Initialisez l'objet de message "demande" avec le nom de la rubrique et la clé de produit.
request = PubRequest.PubRequest()
request.set_accept_format('json') # Set the response format as json.
request.set_ProductKey(productKey)
request.set_TopicFullName(topicName) #Full name of the topic to which the messages are sent.
  1. Initialisez la méthode du capteur de température avant de lire la température du capteur
sensor = W1ThermSensor()

  1. Dans une boucle infinie, utilisez sensor.get_temperature pour lire la température et utilisez la fonction clt.do_action_with_exception pour envoyer un message au périphérique IoT toutes les 60 secondes.
while True:
    temperature = sensor.get_temperature()
    timevalue = time.time()
    print("The temperature is %s celsius" % temperature)    
    message = "{ 'temperature': %s, 'time': %s }" % (temperature,timevalue)
    print (base64.urlsafe_b64encode(message)) 
    request.set_MessageContent(base64.urlsafe_b64encode(message)) #JSON message in Base64 String
    request.set_Qos(0)
    result = clt.do_action_with_exception(request)
    print 'result : ' + result
    time.sleep(60)

Exécuter et tester

Maintenant, exécutons le code python. Assurez-vous que le capteur est correctement connecté à la broche GPIO du Raspberry.

Dans le terminal Raspberry Unix, accédez au répertoire du code de l'application et utilisez la commande python pour exécuter le code.

pi@raspberrypi:~/iot/AlibabaIoTCloudDemo $ python tempMonitor.py

Le message suivant est envoyé au terminal. image.png Figure 8 Sortie Raspberry Pi Les mesures de température sont affichées dans le tableau du magasin de tableaux comme indiqué ci-dessous. image.png Figure 9 Données de stockage de table

dépannage

1, ** code Python qui renvoie l'erreur suivante ** w1thermsensor.errors.NoSensorFoundError. Aucun capteur de température inconnu avec l'ID «» trouvé.

Exécutez la commande suivante et vérifiez si cat w1_slave peut être exécuté.

cd /sys/bus/w1/devices
ls
cd 28-XXXXXXXXXXXX (change the X's to your own address)
cat w1_slave

Si vous ne voyez aucun périphérique commençant par 28, soit le DS18B20 n'est pas connecté correctement, le câblage est défectueux, soit le capteur est défectueux. Suivez exactement la figure ci-dessus pour la connexion.

2, ** Le message n'est pas enregistré dans le magasin de table ** Assurez-vous que le message est reçu et poussé vers le magasin de table dans la section du journal du périphérique. image.png Figure 10 Journal de l'appareil

Recommended Posts

Surveiller la température à l'aide de la plate-forme IoT cloud Raspberry Pi + Alibaba
Connectez Raspberry Pi à Alibaba Cloud IoT Platform avec «Python»
Créez votre propre plate-forme IoT à l'aide de raspberrypi et ESP32 (partie 3) ~ Paramètres ESP32 Capteur de température analogique
Créez votre propre plateforme IoT en utilisant raspberrypi et ESP32 (partie 1)
Détectez la température à l'aide de python sur Raspberry Pi 3!
Envoyer des données depuis Raspberry Pi à l'aide d'AWS IOT
Essayez d'utiliser le capteur de température (LM75B) avec Raspeye.
Créez votre propre plateforme IoT en utilisant raspberrypi et ESP32 (partie 2) ~ ESP32 Setting L Chika
Surveillance intérieure à l'aide de Raspberry Pi
Utilisez python sur Raspberry Pi 3 pour détecter la "température (en utilisant un convertisseur A / N)"!
Comment obtenir la température du thermo-hygromètre SwitchBot à l'aide de Raspberry Pi
USB sur Ethernet avec Raspberry pi
Essayez d'utiliser ArUco avec Raspberry Pi
Utiliser une webcam avec Raspberry Pi
[Python + PHP] Créez un moniteur de température / humidité / pression avec Raspberry Pi
Détectez la "luminosité" en utilisant python sur Raspberry Pi 3!
Faire en sorte que Raspberry Pi parle japonais en utilisant OpenJtalk
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
Utilisation du capteur de température numérique à 1 fil DS18B20 avec Raspberry Pi de Python
Détectez les interrupteurs à glissière à l'aide de python sur Raspberry Pi 3!
Essayez d'utiliser le code QR avec Raspberry Pi
Détectez les commutateurs magnétiques à l'aide de python sur Raspberry Pi 3!
Lancement automatique des programmes Raspberry Pi à l'aide de Systemd
Connexion facile entre Raspberry Pi et AWS IoT
Sonnez le buzzer en utilisant python sur Raspberry Pi 3!
Créer un système de notification des visiteurs à l'aide de Raspberry Pi
Afficher la température du processeur toutes les 5 secondes sur Raspberry Pi 4
Obtenez la température et l'humidité avec DHT11 et Raspberry Pi
Connectez votre Raspberry Pi à votre smartphone en utilisant Blynk
Exemple de programme de connexion Raspberry Pi et AWS IoT
[GoogleCloudPlatform] Utiliser l'API Google Cloud avec la bibliothèque cliente d'API
Mesurer la température du processeur de Raspeye avec Python