Anlagenüberwachungssystem mit AWS IoT
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Notwendige Werkzeuge und Maschinen
|
Apps und Onlinedienste
| ||||
| ||||
| ||||
| ||||
| ||||
|
Über dieses Projekt
Stellen Sie sich vor, Sie fahren für eine Woche oder so in den Urlaub und machen sich Sorgen um Ihre Zimmerpflanze zu Hause. Hier ist ein großartiges Projekt, das Sie eine Woche vor Ihrer Abreise in den Urlaub unternehmen sollten.
Bauen Sie sich ein Anlagenüberwachungs- und Benachrichtigungssystem mit der folgenden Funktion auf
- Überwachen Sie die Temperatur, den Lichtwert und den Bodenfeuchtigkeitswert mit dweet.io
- ODER Verwendung des neuen Amazon IoT-Service zum Protokollieren von Daten in AWS – DynamoDB
- Verwenden Sie AWS -SNS-Benachrichtigung, um eine E-Mail an sich selbst zu senden, damit Sie Ihren Cousin/Nachbarn benachrichtigen können, die Pflanze schnell zu gießen oder Ihren Thermostat zu Hause zu überprüfen.
Darüber hinaus habe ich ein 3D-gedrucktes Gehäuse entworfen, um das Arduino Yun, das Grove-Shield und die Sensoren unterzubringen.
Wenn Sie daran interessiert sind, zu sehen, wie es meiner Anlage geht, finden Sie hier den Link
http://dweet.io/follow/PlantMonitorTorontoON
Hier sind die Schritte, die Sie ausführen müssen, um den Build abzuschließen
#1 Baue die Schaltung auf mit dem Grove-Anschlussschild Wie im schematischen Abschnitt des Projekts gezeigt, verbinden Sie im Grunde die
- Temperatursensor auf A0
- Bodenfeuchtesensor an A1
- Lichtsensor auf A2
- Und mit einem 220-Ohm-Widerstand eine LED an Pin 2 anschließen
#2 3D-Druck der STL-Dateien , angehängt in der Abschnitt für benutzerdefinierte Teile und Gehäuse , Hier haben Sie 3 STL-Dateien zum Drucken, stellen Sie Ihre Slicing-Software auf 0,3 mm Schichthöhe und eine Fülldichte von mindestens 25 % oder höher
Der 3D-Druck sollte ungefähr 2 Stunden dauern. Laden Sie also die STL-Dateien herunter und starten Sie Ihren 3D-Drucker, während Sie die anderen Schritte unten ausführen
#3 Bestimmung des Bodenfeuchtewertes
Laden Sie den unten angehängten Code (Bodenfeuchtigkeitswert) auf Ihr Arduino Yun hoch und bestimmen Sie den tooDryValue im folgenden Code. Wenn der Wert der Bodenfeuchtigkeit den tooDryValue unterschreitet, müssen Sie die Pflanze gießen. (und dieser Wert ist der Wert, den Sie wird im AWS-SNS-Zustand zum Senden einer E-Mail verwendet)
Hier ist das Video, in dem die Methode gezeigt wird, mit der ich den Toodry-Wert bestimmt habe
#4 Lade Arduino-Code in Yun hoch, um Daten auf dweet.io zu posten
Nachdem Sie sich nun für den toodryvalue entschieden haben, laden Sie die Datei ArduinoYunDweetIO.ino in den Yun hoch und ersetzen als Teil des Codes auch "PlantMonitorTorontoON" durch etwas mehr Bedeutung für Sie.
Hier ist ein Video, das den Upload von Sensordaten auf dweet.io testet
#5 Einrichten von AWS CLI auf Ihrem Computer (hier verwende ich einen Mac)
Um nun Daten mit AWS IoT in DyanamoDB zu protokollieren, müssen Sie ein Konto unter https://aws.amazon.com/free erstellen. Hier müssen Sie auch Ihre Kreditkartendaten angeben, aber für die unten stehende Anleitung sollten Sie dies nicht tun Kosten entstehen (wiederum hängt dies von der Region der AWS-Einrichtung ab)
Erstellen Sie anschließend einen Ordner "AWS " auf Ihrem Mac und folgen Sie dem Link unten, um AWS CLI herunterzuladen und zu installieren
http://docs.aws.amazon.com/iot/latest/developerguide/installing-aws-cli.html
Ich benutze einen Mac, hier sind die Anweisungen, die ich befolgt habe
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip"$ entpacken awscli-bundle.zip$ sudo ./awscli -bundle/install -i /usr/local/aws -b /usr/local/bin/aws
Hinweis:Am Terminal müssen Sie sich im gerade erstellten AWS-Ordner befinden
#6 Erstellen eines Dings mithilfe der CLI, das in der AWS IoT-Konsole angezeigt werden soll
Jetzt erstellen wir mit dem folgenden Befehl ein Ding in AWS IoT
aws iot create-thing --thing-name "plantSystem"
Weitere Informationen finden Sie unter dem Link
http://docs.aws.amazon.com/iot/latest/developerguide/create-thing.html
#7 Zertifikate erstellen
Um die benötigten Zertifikate zu erstellen und zu aktivieren, geben Sie den folgenden Befehl ein
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey .pem
Dieser Befehl erstellt die Zertifikate (3 PEM-Dateien) für Sie im AWS-Ordner, wie im Screenshot unten gezeigt
#8 Erstellen und Anhängen einer AWS IoT-Richtlinie an Ihre Zertifikate
Beginnen Sie mit dem Erstellen einer json-Datei im AWS-Ordner mit Ihrem bevorzugten Texteditor (ich bevorzuge Sublime Text 2) - nennen Sie die Datei policy.json
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":["iot:*"], "Resource":[ "*"] }]}
Kopieren Sie dann den folgenden Befehl und fügen Sie ihn in Ihren Texteditor ein
aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json
#9 Richtlinie an Zertifikat anhängen gefolgt von Zertifikat an Gerät anhängen
Geben Sie die folgenden Befehle nacheinander ein
$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"
Eine einfache Möglichkeit, Ihr Zertifikat zu erhalten, wenn Sie es nicht notiert haben, besteht darin, zur AWS IoT-Konsole zu gehen, auf Ihr Zertifikat zu klicken und auf der rechten Seite Ihres Bildschirms zu den Details zu gehen. Von hier aus können Sie den Arn in das Terminal kopieren
Weitere Informationen finden Sie in der Dokumentation zu
http://docs.aws.amazon.com/iot/latest/developerguide/secure-communication.html
# 10 Ihre Einrichtung auf Ihrem Computer überprüfen/testen und mit MQTT.fx testen
Um nun zu behaupten, dass das Setup auf Ihrem Computer durchgeführt wurde, laden Sie MQTT.fx über den unten stehenden Link herunter und installieren Sie es, um zu testen, ob das Setup funktioniert und wir in der Lage sind, Daten über AWS IoT zu veröffentlichen und zu abonnieren
http://mqttfx.jfx4ee.org/index.php/download
Für weitere Setup-Informationen und zum Herunterladen des Root-Zertifikats verwenden Sie den folgenden Link
http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html
- Hier in MQTT.fx müssen Sie Ihr Verbindungsprofil einrichten
- und verknüpfen Sie Ihre Zertifikate, die Sie im Rahmen der obigen Schritte heruntergeladen haben
Hier ist ein kurzes Video, das zeigt, wie Sie die Einrichtung auf Ihrem Computer testen können, der in meinem Fall ein MAC mit dem MQTT.fx-Tool ist.
Sobald Sie fertig sind und getestet haben, dass Ihr Setup in Ordnung ist, führen Sie die folgenden Schritte aus, um das Zertifikat auf den Arduino Yun hochzuladen
#11 Einrichten des Arduino Yun für die Kommunikation mit der AWS IoT-Cloud
Laden Sie die neueste Version des Arduino Yun SDK von github herunter und entpacken Sie sie in Ihren Arduino-Ordner "Libraries"
https://github.com/aws/aws-iot-device-sdk-arduino-yun
Wenn Sie das Arduino Yun zum ersten Mal verwenden, folgen Sie den Setup-Anweisungen unter
https://www.arduino.cc/en/Guide/ArduinoYun
Grundsätzlich erfahren Sie über den Link, wie Sie den Arduino Yun so einrichten, dass er sich mit dem Heim-WLAN-Netzwerk verbindet.
Laden Sie dann die Prozessbeispielskizze Arduino IDE in Ihr YUN (Datei->Beispiele->Brücke -> Prozess). Dadurch wird bestätigt, dass Yun Zugriff auf das Internet hat.
Legen Sie Ihre RootCA-Datei, Ihren privaten Schlüssel und Ihr Zertifikat in den Ordner certs, wie im Screenshot unten gezeigt
Als nächstes ändern Sie codebase_upload.sh und environment_setup.sh und ersetze [your_boards_IP] durch die IP-Adresse deines Boards und [your_boards_IP] durch dein Passwort
Führen Sie in Ihrem Terminal die folgenden Befehle aus, um den .sh-Dateien die Berechtigung zu erteilen. Dies dauert etwa 5-10 Minuten, wodurch die Zertifikate verschoben und installiert werden, python-openssl, pip, paho-mqtt auf dem Yun. Dies sind die Pakete, die Sie benötigen, um von Ihrem Yun aus mit der AWS-Cloud zu kommunizieren (in unserem Fall als PlantSystem bezeichnet)
$chmod 755 codebase_upload.sh$./codebase_upload.sh$chmod 755 environment_setup.sh$./environment_setup.sh
Für die Installation unter Linux/Windows folgen Sie dem Link unter
https://github.com/aws/aws-iot-device-sdk-arduino-yun#installation
Als Teil des nächsten Paares, das AWS CLI verwendet, erstellen wir jetzt eine Tabelle in DynamoDB, um Sensordaten zu posten
#12 Erstellen einer IAM-Rolle und Erteilen von Berechtigungen
Um Daten in die DynamoDB-Sensortabelle einzugeben, die wir im nächsten Schritt erstellen werden, müssen wir eine IoT-Regel erstellen, die auf die von AWS empfangene MQTT-Nachricht reagiert. Dazu müssen wir eine Rolle erstellen und gewähren es sind Berechtigungen erforderlich
Erstellen Sie eine Json-Datei rolePolicy.json
{"Version":"2012-10-17", "Statement":[{ "Sid":"", "Effect":"Allow", "Principal":{ "Service":" iot.amazonaws.com" }, "Action":"sts:AssumeRole" }]}
und um die Rolle zu erstellen, führen Sie den folgenden Befehl im Terminal aus
aws iam create-role --role-name iot-actions-role --assume-role-policy-document file://./rolePolicy.json
Erstellen Sie eine weitere json-Datei policy.json
{ "Version":"2012-10-17", "Statement":[{ "Effect":"Allow", "Action":[ "dynamodb:*", "lambda:InvokeFunction"] , "Ressource":["*"] }]}
Rufen Sie dann create-policy auf und geben Sie das IAM-Richtliniendokument an
aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json
Und schließlich hängen Sie die Richtlinie an die Rolle an, indem Sie - ändern Sie den Richtlinien-ARN in den ARN, den Sie im vorherigen Schritt erhalten haben
aws iam attach-role-policy --role-name iot-actions-role --policy-arn "arn:aws:xxxxxxxxxxxx:policy/iot-action-policy"
http://docs.aws.amazon.com/iot/latest/developerguide/config-and-test-rules.html
#13 Einrichten der Tabelle in DynamoDB in der AWS-Konsole
Als Teil dieses Schritts erstellen wir eine DynamoDB in der AWS-Konsole
Tabellenname :plantSensor
Partitionsschlüssel :Schlüssel
Sortierschlüssel :Zeitstempel
und setzen Sie auch Ihre Lesekapazitätseinheiten und Schreibkapazität auf 1.
#14 Erstellen einer Regel zum Einfügen von Daten in die PlantSensor-Tabelle
Erstellen Sie eine JSON-Datei - plantdatarule.json (ändern Sie hier den roleArn-Wert im Abschnitt unten, gehen Sie zu IAM->Roles->iot-action-role, um den Arn zu erhalten)
{ "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" } }]}
Führen Sie dann den folgenden Befehl auf Ihrem Terminal aus
aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json
Wenn Sie jetzt zur AWS IoT-Konsole gehen, sollten Sie eine erstellte Regel namens "PlantDataToDynamoDB" sehen, wie im Screenshot unten gezeigt ('' ignorieren Sie die E-Mail-Senderegel, die als Teil der folgenden Schritte bereitgestellt wird.)
Führen Sie mit MQTT.FX einen Schnelltest durch, um zu sehen, ob Datensätze in der erstellten Tabelle erstellt werden.
#15 Laden Sie die Arduino-Skizze hoch, um Daten vom Yun in AWS IoT zu veröffentlichen
Hier beginnen Sie mit dem Herunterladen der ArduinoJSON-Bibliothek von github unter
https://github.com/bblanchon/ArduinoJson
Laden Sie nun die Dateien YunAWSIoTDynamoDB,ino und aws_iot_config.h aus dem Codeabschnitt unten herunter und laden Sie sie auf Yun hoch.
Öffnen Sie Ihren seriellen Monitor und Sie sollten die Temperatur, den Lichtwert und den Bodenfeuchtigkeitswert sehen, die an die DynamoDB gesendet werden.
Wenn Sie schon einmal AWS waren, können Sie alle möglichen großartigen Dinge tun, indem Sie die Lambda-Funktion einrichten und Datenkinese posten ...
Hinweis: Wenn Sie dies dauerhaft einrichten möchten, vergessen Sie nicht, die Verzögerung am Ende der Schleife zu erhöhen, um das Zeitintervall für die Veröffentlichung in DynamoDB zu verlängern, damit Ihnen keine zusätzlichen Kosten entstehen . Weitere Informationen zu den Preisen finden Sie unter https://aws.amazon.com/iot/pricing/
#16 Einrichten einer AWS-IoT-SNS-Regel zum Empfangen und E-Mailen, wenn Ihr Bodenfeuchtigkeitswert unter einen Schwellenwert fällt.
Im Wesentlichen umfasst dieser Schritt das Einrichten einer einfachen SNS-Benachrichtigungsbasis für die AWS IoT-Regel.
Beginnen Sie mit der Zuweisung der folgenden Richtlinien zu der AWS-Rolle (iot-action-role), die Sie im vorherigen Schritt in der IAM-Konsole erstellt haben
-AmazonSNSRole
-AmazonSNSFullAccess
Erstellen Sie anschließend in der SNS-Konsole ein Thema namens sendMail und erstellen Sie ein Abonnement und geben Sie Ihre E-Mail-Adresse auf Ihrem Telefon ein, um benachrichtigt zu werden, wenn der Bodenfeuchtigkeitswert NIEDRIG ist.
Kehren Sie nun zur AWS IoT-Konsole zurück und erstellen Sie mithilfe der Schaltfläche + Ressource erstellen eine Regel namens E-Mail senden und geben Sie die folgenden Informationen ein
- Name:E-MailSenden
- Attribut:mositValue (dies sollte mit dem Json-Wert übereinstimmen, den Sie als Teil Ihres Themas im Arduino-Code posten)
- Themenfilter: topic/plantdata
- Bedingung:as moistval <250 (dies ist der Wert, den Sie in den ersten Schritten der Anleitung ermittelt haben)
- Aktion auswählen:Nachricht als Push-Benachrichtigungs-SNS senden
- SNS-Ziel:sendEmail
- Rolle:iot-action-role
Sobald Sie fertig sind, sollte Ihre Konsole wie im Screenshot unten aussehen
Hier ist eine Beispiel-E-Mail, die ich erhalten habe, als ich den Bodenfeuchtigkeitssensor aus einem Glas Wasser entfernt habe
Um mehr über AWS-SNS zu erfahren
https://aws.amazon.com/sns/faqs/
#15 Zusammenfügen der 3D-gedruckten Teile und Hinzufügen zum Topf.
Sie benötigen eine 4x40-Schraube und -Mutter, um das 3D-gedruckte Teil des Black-Soil-Pokers am Basisteil des Arduino Yun zu befestigen.
Der obere Teil rastet einfach ein. Denken Sie daran, die obere Öffnung auf Ihr Fenster zu richten und die Bodenfeuchtigkeit in den Topf zu stecken. Und den Yun mit einem Micro-USB-Kabelstecker an eine Wandsteckdose anschließen.
Bitte beachten Sie, dass ich immer noch die fantastische Welt von AWS erforsche und lerne und von den Funktionen der AWS-Konsole beeindruckt bin. Wenn Sie AWS also schon länger verwenden, posten Sie einen Kommentar oder einen Vorschlag für eine Funktion, die Sie haben würden gerne gesehen/zutreffend für das Anlagenüberwachungsprojekt.Danke ..
Code
- BodenFeuchtigkeitswert
- ArduinoYunDweetio
- ArduinoYunAWSIoTDynamodb
- aws_iot_config.h
SoilMoistureValueArduino
Arduino-Skizze zur Bestimmung des idealen Bodenfeuchtewerts für Ihre Zimmerpflanze//@CarmelitoA -Hauspflanzenüberwachungsprojekt zur Bestimmung des Bodenfeuchtewertsconst int MoisturePin =A1; // Grove-Feuchtigkeitssensor, der an A1 des Grove Shieldconst angeschlossen ist int ledPin =2;int MoisturValue =0;int tooDryValue =250; // Ändern Sie diesen Wert basierend auf Ihrem Ergebnisvoid setup () {Serial.begin (9600); pinMode(ledPin,OUTPUT);digitalWrite(ledPin,LOW);}void loop() {moisturValue =analogRead(moisturePin);Serial.print("Feuchtigkeitssensor =");Serial.println(moisturValue); // Überprüfen Sie den Wert für mit trockenem Sand und dann mit nassem Sandif (moisturValueArduinoYunDweetioArduino
Senden von Sensordaten an dweet.io mit Arduino Yun// Erstellt von @CarmelitoA für das House Plant Monitoring-Projekt - Hochladen von Daten auf dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include#include #define SITE_URL "www.dweet.io"#include
Kundenspezifische Teile und Gehäuse
Schaltpläne
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
Herstellungsprozess
- C# verwenden
- Wetterfernüberwachung mit Raspberry Pi
- Bewegungsgesteuerte AWS IoT-Schaltfläche
- So bauen Sie mit der IoT-Technologie zur Tanküberwachung einen intelligenteren Betrieb auf
- Dual-Purpose-IoT-Waldverwaltungssystem
- IoT-basiertes Fernüberwachungssystem für Öl- und Dieseltanks
- 8 Vorteile eines IoT-basierten Flottengewichtsüberwachungssystems
- Bedeutung der Verwendung von IoT-fähiger Asset-Überwachung in der O&G-Industrie
- Verbessern Sie die Milchlagerung mit einer Prise IoT:Milk Level Monitoring System
- Verwendung eines IoT-betriebenen Flusspegel-Überwachungssystems für ein effizientes Wassermanagement