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.
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.
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. Figure 1 Organigramme des données
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)
Figure 2 Schéma du circuit
Connectez-vous à Raspberry Pi et activez l'interface 1-Wire dans les paramètres Raspberry Pi. Figure 3 Configuration 1-Wire du Raspberry Pi
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
Connectez-vous à la console IoT Platform et sélectionnez la région Région Chine (Shanghai).
Créez un produit de base avec le type de nœud comme périphérique Figure 4 Configuration du produit
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. Figure 5 Paramètres de l'appareil
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.
É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. Figure 6 expression de requête SQL
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. Figure 7 Règles de transfert de données
from aliyunsdkcore import client
from aliyunsdkiot.request.v20170420 import RegistDeviceRequest
from aliyunsdkiot.request.v20170420 import PubRequest
import time
import base64
from w1thermsensor import W1ThermSensor
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>'
topicName = '/'+productKey+'/'+deviceName+'/update'
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.
sensor = W1ThermSensor()
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)
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. Figure 8 Sortie Raspberry Pi Les mesures de température sont affichées dans le tableau du magasin de tableaux comme indiqué ci-dessous. Figure 9 Données de stockage de table
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. Figure 10 Journal de l'appareil
Recommended Posts