Système de surveillance d'usine utilisant AWS IoT
Composants et fournitures
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Outils et machines nécessaires
|
Applications et services en ligne
| ||||
| ||||
| ||||
| ||||
| ||||
|
À propos de ce projet
Imaginez que vous partez en vacances pendant environ une semaine et que vous vous inquiétez pour votre plante d'intérieur à la maison. Voici un excellent projet à réaliser une semaine avant de partir en vacances.
Créez vous-même un système de surveillance et de notification de l'usine avec la fonctionnalité suivante
- Surveillez la température, la valeur lumineuse et la valeur d'humidité du sol à l'aide de dweet.io
- OU en utilisant le nouveau service Amazon IoT pour enregistrer les données sur AWS - DynamoDB
- Utilisez la notification AWS -SNS, pour vous envoyer un e-mail, afin que vous puissiez informer votre cousin/voisin d'arroser rapidement l'usine ou de vérifier votre thermostat à la maison.
De plus, j'ai conçu un boîtier imprimé en 3D, pour abriter l'Arduino Yun , le bouclier du bosquet et les capteurs.
Si vous souhaitez voir comment se porte mon usine, voici le lien
http://dweet.io/follow/PlantMonitorTorontoON
Voici les étapes à suivre pour terminer la compilation
#1 Construire le circuit à l'aide du blindage de connecteur Grove comme indiqué dans la section schématique du projet, connectez essentiellement le
- Capteur de température vers A0
- Capteur d'humidité du sol vers A1
- Capteur de lumière vers A2
- Et en utilisant une résistance de 220 Ohms, connectez une LED à la broche 2
#2 imprimer en 3D les fichiers STL , joint dans le partie personnalisée et section boîtier , ici vous avez 3 fichiers STL à imprimer , réglez votre logiciel de tranchage sur hauteur de couche 0,3 mm et une densité de remplissage d' au moins 25 % ou supérieur
L'impression 3D devrait prendre environ 2 heures, alors téléchargez les fichiers STL et lancez votre imprimante 3D pendant que vous effectuez les autres étapes ci-dessous
#3 Détermination de la valeur d'humidité du sol
Téléchargez le code ci-dessous (valeur d'humidité du sol) sur votre Arduino Yun et déterminez la tooDryValue dans le code ci-dessous. Fondamentalement, si la valeur de l'humidité du sol tombe en dessous de tooDryValue, vous devez arroser la plante. (et cette valeur est la valeur que vous utilisera dans la condition AWS-SNS pour envoyer un e-mail)
Voici la vidéo montrant la méthode que j'ai utilisée pour déterminer la valeur toodry
#4 Téléchargez le code Arduino sur Yun pour publier des données sur dweet.io
Maintenant, une fois que vous avez décidé de la valeur toodry , téléchargez le fichier ArduinoYunDweetIO.ino sur le Yun. Dans le cadre du code, remplacez également "PlantMonitorTorontoON" par quelque chose de plus significatif pour vous.
Voici une vidéo testant le téléchargement des données du capteur sur dweet.io
#5 Configuration de l'AWS CLI sur votre ordinateur (ici j'utilise un Mac)
Maintenant, pour enregistrer des données à l'aide d'AWS IoT dans DynaamoDB, vous devrez créer un compte sur https://aws.amazon.com/free, ici vous devrez également fournir les détails de votre carte de crédit, mais pour le tutoriel ci-dessous, vous ne devriez pas engager des frais (encore une fois, cela dépend de la région d'installation d'AWS)
Une fois cela fait, créez un dossier "AWS " sur votre mac et suivez le lien ci-dessous pour télécharger et installer l'AWS CLI
http://docs.aws.amazon.com/iot/latest/developerguide/installing-aws-cli.html
J'utilise un mac, voici les instructions que j'ai suivies
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"$ unzip awscli-bundle.zip$ sudo ./awscli -bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Remarque :au terminal, vous devez être dans le dossier AWS que vous venez de créer
#6 Création d'un élément à l'aide de la CLI qui doit s'afficher dans la console AWS IoT
Nous allons maintenant créer un objet dans AWS IoT à l'aide de la commande suivante
aws iot create-thing --thing-name "plantSystem"
Pour plus d'informations, reportez-vous au lien
http://docs.aws.amazon.com/iot/latest/developerguide/create-thing.html
#7 Création de certificats
Pour créer et activer les certificats dont vous aurez besoin, donnez la commande suivante
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey .pem
cette commande créera les certificats (3 fichiers pem) pour vous dans le dossier AWS comme indiqué dans la capture d'écran ci-dessous
#8 Créez et attachez une stratégie AWS IoT à vos certificats
Commencez par créer un fichier json dans le dossier AWS, en utilisant votre éditeur de texte préféré (je préfère le texte sublime 2) - nommez le fichier policy.json
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Autoriser", "Action":["iot:*"], "Resource":[ "*"] }]}
Copiez ensuite la commande suivante dans votre éditeur de texte
aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json
#9 Attacher la politique au certificat suivi de l'attachement du certificat à l'appareil
Donnez les commandes ci-dessous l'une après l'autre
$aws iot attach-principal-policy --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx" --policy-name "PubSub"$ aws iot attach-thing-principal --thing-name "PlantSystem" --principal "arn:aws:iot:xxxxxxxxxxxxxxxxxxxxxxxx"
Voici un moyen simple d'obtenir votre certificat arn si vous ne l'avez pas noté est d'aller sur la console AWS IoT, cliquez sur votre certificat et accédez aux détails sur le côté droit de votre écran. De là, vous pouvez copier coller l'arn vers le terminal
Pour plus d'informations, reportez-vous à la documentation sur
http://docs.aws.amazon.com/iot/latest/developerguide/secure-communication.html
# 10 Vérifier/tester votre configuration sur votre ordinateur et la tester à l'aide de MQTT.fx
Maintenant, pour prétendre que la configuration est effectuée sur votre ordinateur, téléchargez et installez MQTT.fx à partir du lien ci-dessous pour tester si la configuration fonctionne et si nous sommes en mesure de publier et de souscrire des données via AWS IoT
http://mqttfx.jfx4ee.org/index.php/download
Pour plus d'informations sur la configuration et pour télécharger le certificat racine, utilisez le lien ci-dessous
http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html
- ici dans MQTT.fx, vous devrez configurer votre profil de connexion
- et liez vos certificats que vous avez téléchargés dans le cadre des étapes ci-dessus
Voici une vidéo rapide qui montre comment vous pouvez tester votre configuration sur votre ordinateur qui, dans mon cas, est un MAC à l'aide de l'outil MQTT.fx.
Une fois que vous avez terminé et vérifié que votre configuration est correcte, suivez les étapes ci-dessous pour télécharger le certificat sur l'Arduino Yun
#11 Configuration de l'Arduino Yun pour communiquer avec le cloud AWS IoT
Téléchargez la dernière version du SDK Arduino Yun à partir de github et décompressez-la dans votre dossier "Bibliothèques" Arduino
https://github.com/aws/aws-iot-device-sdk-arduino-yun
Si vous utilisez l'Arduino Yun pour la première fois, suivez les instructions de configuration sur
https://www.arduino.cc/en/Guide/ArduinoYun
En gros, en utilisant le lien, vous apprendrez comment configurer l'Arduino Yun pour se connecter au réseau WiFi domestique.
Chargez ensuite l'esquisse de l'exemple de processus Arduino IDE sur votre YUN (Fichier-> Exemples-> Pont -> Processus), cela confirmera que le Yun a accès à Internet
Mettez votre fichier rootCA, votre clé privée et votre certificat dans le dossier certs comme indiqué dans la capture d'écran ci-dessous
Modifiez ensuite codebase_upload.sh et environment_setup.sh et remplacez [your_boards_IP] par l'adresse IP de votre forum et [your_boards_IP] par votre mot de passe
Dans votre terminal, exécutez les commandes suivantes pour autoriser les fichiers .sh, cela prendra environ 5 à 10 minutes, ce qui déplace les certificats et installe les distributions, python-openssl, pip, paho-mqtt sur le Yun. Ce sont les packages dont vous avez besoin pour communiquer avec le cloud AWS à partir de votre Yun (appelé le truc PlantSystem dans notre cas)
$chmod 755 codebase_upload.sh$./codebase_upload.sh$chmod 755 environment_setup.sh$./environment_setup.sh
Pour l'installation sous Linux/Windows, suivez le lien sur
https://github.com/aws/aws-iot-device-sdk-arduino-yun#installation
Maintenant, dans le cadre du prochain couple utilisant l'AWS CLI, nous allons créer une table dans DynamoDB pour publier les données du capteur
#12 Création d'un rôle IAM et octroi d'autorisations
Fondamentalement, pour entrer des données dans la table de capteurs DynamoDB que nous allons créer dans le cadre de l'étape suivante, nous devons créer une règle IoT qui agira sur le message MQTT reçu par AWS, pour cela nous devons créer un rôle et accorder les autorisations nécessaires
Créer un fichier json rolePolicy.json
{"Version":"2012-10-17", "Statement":[{ "Sid":"", "Effect":"Autoriser", "Principal":{ "Service":" iot.amazonaws.com" }, "Action":"sts:AssumeRole" }]}
et pour créer le rôle exécutez la commande suivante dans le terminal
aws iam create-role --role-name iot-actions-role --assume-role-policy-document file://./rolePolicy.json
Créez un autre fichier json policy.json
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Autoriser", "Action":[ "dynamodb:*", "lambda:InvokeFunction"] , "Ressource":["*"] }]}
puis appelez create-policy et spécifiez le document de stratégie IAM
aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json
Et enfin, attachez la stratégie au rôle en utilisant - modifiez le policy-ARN à l'ARN que vous avez reçu dans le cadre de l'étape précédente
aws iam attach-role-policy --role-name iot-actions-role --policy-arn "arn:aws:xxxxxxxxxxxxx:policy/iot-action-policy"
http://docs.aws.amazon.com/iot/latest/developerguide/config-and-test-rules.html
#13 Configuration de la table dans DynamoDB dans la console AWS
Dans le cadre de cette étape, nous allons créer une DynamoDB dans la console AWS
Nom de la table :plantSensor
Clé de partition :clé
Clé de tri :horodatage
et définissez également vos unités de capacité de lecture et votre capacité d'écriture sur 1.
#14 Création d'une règle pour insérer des données dans la table PlantSensor
Créez un fichier json - plantdatarule.json (modifiez ici la valeur roleArn dans la section ci-dessous, accédez à IAM->Roles->iot-action-role pour obtenir l'arn)
{ "sql":"SELECT * FROM 'topic/plantdata'", "ruleDisabled":false, "actions":[{ "dynamoDB":{ "tableName":"plantSensor", "hashKeyField" :"key", "hashKeyValue":"${topic(2)}", "rangeKeyField":"timestamp", "rangeKeyValue":"${timestamp()}", "roleArn":"arn:aws:iam ::XXXXXXXXXXXX:role/iot-actions-role" } }]}
puis lancez la commande suivante sur votre terminal
aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json
Maintenant, si vous accédez à la console AWS IoT, vous devriez voir une règle créée appelée "PlantDataToDynamoDB" comme indiqué dans la capture d'écran ci-dessous (''ignorez la règle d'envoi d'e-mails qui fait partie des étapes ci-dessous.)
en utilisant MQTT.FX, exécutez un test rapide pour voir si les enregistrements sont créés dans la table créée.
#15 Chargez le sketch Arduino pour publier des données sur AWS IoT depuis le Yun
Ici, commencez par télécharger la bibliothèque ArduinoJSON à partir de github à l'adresse
https://github.com/bblanchon/ArduinoJson
Téléchargez maintenant les fichiers YunAWSIoTDynamoDB,ino et aws_iot_config.h à partir de la section de code ci-dessous et téléchargez-les sur le Yun.
Ouvrez votre moniteur série et vous devriez voir la température, la valeur de luminosité et la valeur d'humidité du sol affichées dans DynamoDB.
Si vous avez été AWS, vous pouvez faire toutes sortes de choses géniales en configurant la fonction Lambda et en publiant des données kinésie...
Remarque : Si vous envisagez d'en faire une configuration permanente, n'oubliez pas d'augmenter le délai à la fin de la boucle, pour augmenter l'intervalle de temps de publication sur DynamoDB afin de ne pas encourir de frais supplémentaires. Pour en savoir plus sur les tarifs, consultez la page https://aws.amazon.com/iot/pricing/
#16 Configuration d'une règle AWS-IoT SNS pour recevoir et envoyer des e-mails si la valeur de l'humidité du sol tombe en dessous d'un seuil.
Fondamentalement, cette étape comprend la configuration d'une base de notification SNS simple sur la règle AWS IoT.
Commencez par attribuer les stratégies suivantes au rôle AWS (iot-action-role) que vous avez créé à l'étape précédente dans la console IAM
-AmazonSNSRole
-AmazonSNSFullAccess
Une fois cela fait dans la console SNS, créez un sujet appelé sendMail et créez un abonnement et configurez votre e-mail sur votre téléphone pour être averti lorsque la valeur d'humidité du sol est FAIBLE.
Revenez maintenant à la console AWS IoT et en utilisant le bouton +Créer une ressource, créez une règle appelée Email Send et fournissez les informations suivantes
- Nom :EmailEnvoyer
- Attribut :mositValue (cela doit correspondre à la valeur json que vous publiez dans le cadre de votre sujet dans le code Arduino)
- Filtre par sujet : sujet/données sur les plantes
- Condition :as moitval <250 (il s'agit de la valeur que vous avez déterminée au cours des premières étapes du didacticiel)
- Choisissez l'action :envoyer le message en tant que notification push SNS
- Cible SNS :sendEmail
- Rôle :iot-action-role
Une fois cela fait, votre console devrait ressembler à la capture d'écran ci-dessous
Voici un exemple d'e-mail que j'ai reçu lorsque j'ai retiré le capteur d'humidité du sol d'un verre d'eau
Pour en savoir plus sur AWS-SNS
https://aws.amazon.com/sns/faqs/
#15 Assembler les pièces imprimées en 3D et les ajouter au pot.
Vous aurez besoin d'une vis et d'un écrou 4x40 pour fixer la partie imprimée en 3D du poker de sol noir à la partie de base de l'Arduino Yun
La partie supérieure s'emboîte simplement, rappelez-vous ici de pointer l'ouverture supérieure vers votre fenêtre et d'injecter l'humidité du sol dans le pot.Et alimentez le Yun avec une prise de câble micro USB à une prise murale.
Veuillez noter que je suis toujours en train d'explorer et d'apprendre le monde génial d'AWS, et je suis impressionné par les fonctionnalités de la console AWS, donc si vous utilisez AWS depuis un certain temps, publiez un commentaire ou une suggestion pour la fonctionnalité que vous auriez aimé voir/applicable au projet de surveillance de l'usine.Merci ..
Code
- SoilMoistureValue
- ArduinoYunDweetio
- ArduinoYunAWSIoTDynamodb
- aws_iot_config.h
SoilMoistureValueArduino
Croquis Arduino pour déterminer la valeur d'humidité du sol idéale pour votre plante d'intérieur // Capteur d'humidité Grove connecté à A1 sur le Grove Shieldconst int ledPin =2;int moisturValue =0;int tooDryValue =250;//modifiez cette valeur en fonction de ce que vous obtenez avec void setup() {Serial.begin(9600); pinMode(ledPin,OUTPUT);digitalWrite(ledPin,LOW);}void loop() {moisturValue =analogRead(moisturePin);Serial.print("Moisture sensor =" );Serial.println(moisturValue); //Vérifiez la valeur avec le sable sec, puis avec le sable humide(moisturValueArduinoYunDweetioArduino
Publication des données du capteur sur dweet.io à l'aide d'Arduino Yun//Créé par @CarmelitoA pour le projet House Plant Monitoring - téléchargement des données sur dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include#include #define SITE_URL "www.dweet.io"#include
Pièces et boîtiers personnalisés
Schémas
Connect the sensors to the Grove starter kit that is- Temperature sensor to A0
- Soil Moisture sensor to A1
- Light sensor to A2
In addition, using a 220 Ohms resistor connect an LED to pin#2. Connect the
Temperature sensor to A0
Soil Moisture sensor to A1
Light sensor to A2
And using a 220 Ohms resistor connect an LED to pin#2
Processus de fabrication
- C# en utilisant
- Surveillance à distance de la météo à l'aide de Raspberry Pi
- Bouton AWS IoT à contrôle de mouvement
- Comment créer une opération plus intelligente à l'aide de la technologie IoT de surveillance des réservoirs
- Système de gestion forestière IoT à double usage
- Système de surveillance à distance des réservoirs d'huile et de diesel basé sur l'IdO
- 8 avantages du système de surveillance du poids de la flotte basé sur l'IoT
- Importance de l'utilisation de la surveillance des actifs compatible IoT dans l'industrie pétrolière et gazière
- Améliorez le stockage du lait avec une pincée d'IoT :système de surveillance du niveau de lait