Система мониторинга предприятия с использованием AWS IoT
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Необходимые инструменты и машины
|
Приложения и онлайн-сервисы
| ||||
| ||||
| ||||
| ||||
| ||||
|
Об этом проекте
Представьте себе, что вы собираетесь в отпуск на неделю или около того и беспокоитесь о своем домашнем растении дома. Вот отличный проект, который стоит выполнить за неделю, прежде чем отправиться в отпуск.
Создайте себе систему мониторинга и уведомлений на предприятии со следующей функцией
- Контролируйте температуру, светимость и влажность почвы с помощью dweet.io
- ИЛИ с помощью новой службы Amazon IoT для регистрации данных в AWS - DynamoDB
- Используйте уведомление AWS -SNS, чтобы отправить электронное письмо самому себе, чтобы вы могли сообщить своему двоюродному брату / соседу, чтобы тот быстро полил растение или проверил термостат дома.
Кроме того, я разработал корпус, напечатанный на 3D-принтере, для размещения Arduino Yun, щитка Grove Shield и датчиков.
Если вам интересно узнать, как обстоят дела у моего завода, вот ссылка
http://dweet.io/follow/PlantMonitorTorontoON
Вот шаги, которые вам нужно будет выполнить для завершения сборки
# 1 Постройте схему с помощью экрана разъема Grove как показано в схематическом разделе проекта, в основном подключите
- Датчик температуры к A0
- Датчик влажности почвы по A1
- Датчик освещенности до A2
- И с помощью резистора 220 Ом подключите светодиод к контакту №2.
# 2 3D-печать файлов STL прикреплен к пользовательская часть и раздел корпуса , здесь у вас есть 3 файла STL для печати, установите в программе для нарезки высоту слоя 0,3 мм и плотность заполнения не менее 25% или выше
3D-печать должна занять около 2 часов, поэтому загрузите файлы STL и запустите свой 3D-принтер, пока вы выполняете остальные шаги, указанные ниже
№ 3 Определение значения влажности почвы
Загрузите прилагаемый ниже код (значение влажности почвы) на ваш Arduino Yun и определите tooDryValue в приведенном ниже коде. Обычно, если значение влажности почвы падает ниже tooDryValue, вам необходимо полить растение. (И это значение является значением, которое вы будет использоваться в состоянии AWS-SNS для отправки электронного письма)
Вот видео, показывающее метод, который я использовал для определения toodryvalue
# 4 Загрузите код Arduino в Юн, чтобы опубликовать данные на dweet.io
Теперь, когда вы выбрали значение toodryvalue, загрузите файл ArduinoYunDweetIO.ino в Yun, и как часть кода также замените «PlantMonitorTorontoON» на что-то более значимое для вас.
Вот видео, тестирующее загрузку данных датчиков на dweet.io
# 5 Настройка AWS CLI на вашем компьютере (здесь я использую Mac)
Теперь, чтобы регистрировать данные с помощью AWS IoT в DyanamoDB, вам нужно будет создать учетную запись на https://aws.amazon.com/free, здесь вам также нужно будет указать данные своей кредитной карты, но для приведенного ниже руководства вы не должны нести любые расходы (опять же, это зависит от региона установки AWS)
После этого создайте папку « AWS "на вашем Mac и перейдите по ссылке ниже, чтобы загрузить и установить AWS CLI
http://docs.aws.amazon.com/iot/latest/developerguide/installing-aws-cli.html
Я использую Mac, вот инструкции, которым я следовал
$ 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
Примечание:в терминале вы должны находиться в только что созданной папке AWS
# 6 Создание объекта с помощью интерфейса командной строки, который должен отображаться в консоли AWS IoT
Теперь мы создадим вещь в AWS IoT с помощью следующей команды
aws iot create-thing --thing-name "plantSystem"
Для получения дополнительной информации перейдите по ссылке
http://docs.aws.amazon.com/iot/latest/developerguide/create-thing.html
# 7 Создание сертификатов
Чтобы создать и активировать сертификаты, которые вам понадобятся, введите следующую команду
aws iot create-keys-and-certificate --set-as-active --certificate-pem-outfile cert.pem --public-key-outfile publicKey.pem --private-key-outfile privateKey .pem
эта команда создаст для вас сертификаты (3 файла pem) в папке AWS, как показано на снимке экрана ниже
# 8 Создайте и прикрепите политику AWS IoT к своим сертификатам
Начните с создания файла json в папке AWS с помощью вашего любимого текстового редактора (я предпочитаю возвышенный текст 2) - назовите файл policy.json
{"Версия":"2012-10-17", "Заявление":[{"Эффект":"Разрешить", "Действие":["iot:*"], "Ресурс":[ "*"]}]}
Затем скопируйте и вставьте следующую команду в текстовый редактор
aws iot create-policy --policy-name "PubSub" --policy-document file://./policy.json
# 9 Прикрепите политику к сертификату, а затем прикрепите сертификат к устройству
Дайте команды ниже одну за другой
$ 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"
Вот простой способ получить сертификат, если вы его не записали, - это перейти в консоль AWS IoT, щелкнуть сертификат и перейти к подробным сведениям в правой части экрана. Отсюда вы можете скопировать и вставить arn в теминал
Для получения дополнительной информации см. Документацию на
http://docs.aws.amazon.com/iot/latest/developerguide/secure-communication.html
# 10 Проверка / тестирование вашей настройки на вашем компьютере и тестирование с помощью MQTT.fx
Теперь, чтобы заявить, что установка выполнена на вашем компьютере, загрузите и установите MQTT.fx по ссылке ниже, чтобы проверить, работает ли установка и можем ли мы публиковать данные и подписываться на них через AWS IoT
http://mqttfx.jfx4ee.org/index.php/download
Для получения дополнительной информации о настройке и загрузки корневого сертификата используйте ссылку ниже
http://docs.aws.amazon.com/iot/latest/developerguide/verify-pub-sub.html
- здесь в MQTT.fx вам нужно будет настроить свой профиль подключения
- и свяжите свои сертификаты, которые вы загрузили в рамках описанных выше шагов
Вот короткое видео, в котором показано, как можно протестировать настройку на своем компьютере, который в моем случае является MAC с помощью инструмента MQTT.fx.
После того, как вы завершили и проверили, что ваша установка в порядке, выполните следующие действия, чтобы загрузить сертификат в Arduino Yun
# 11 Настройка Arduino Yun для связи с облаком AWS IoT
Загрузите последнюю версию Arduino Yun SDK с github и распакуйте в папку «Библиотеки» Arduino
https://github.com/aws/aws-iot-device-sdk-arduino-yun
Если вы впервые используете Arduino Yun, следуйте инструкциям по установке на странице
https://www.arduino.cc/en/Guide/ArduinoYun
В основном, используя ссылку, вы узнаете, как настроить Arduino Yun для подключения к домашней сети Wi-Fi.
Затем загрузите эскиз примера процесса Arduino IDE в ваш YUN (Файл-> Примеры-> Мост-> Процесс), это подтвердит, что Yun имеет доступ к Интернету
Поместите файл rootCA, закрытый ключ и сертификат в папку сертификатов, как показано на снимке экрана ниже
Затем измените codebase_upload.sh и environment_setup.sh и замените [your_boards_IP] IP-адресом вашей доски, а [your_boards_IP] своим паролем
В вашем терминале выполните следующие команды, чтобы разрешить доступ к файлам .sh, это займет около 5-10 минут, что приведет к перемещению сертификатов и установке distribute, python-openssl, pip, paho-mqtt на Yun. Это пакеты, которые вам нужны для связи с облаком AWS от вашего Yun (в нашем случае он называется PlantSystem)
$ chmod 755 codebase_upload.sh $. / codebase_upload.sh $ chmod 755 environment_setup.sh $. / environment_setup.sh
Для установки в Linux / Windows перейдите по ссылке
https://github.com/aws/aws-iot-device-sdk-arduino-yun#installation
Теперь, как часть следующей пары, использующей AWS CLI, мы собираемся создать таблицу в DynamoDB для публикации данных датчиков
# 12 Создание роли IAM и предоставление разрешений
В основном, чтобы ввести данные в таблицу датчиков DynamoDB, которую мы собираемся создать как часть следующего шага, нам нужно создать правило IoT, которое будет действовать на сообщение MQTT, полученное AWS, для этого нам нужно создать роль и предоставить это необходимые разрешения
Создайте файл json rolePolicy.json
{"Версия":"2012-10-17", "Заявление":[{"Сид":"", "Эффект":"Разрешить", "Принципал":{"Услуга":" iot.amazonaws.com "}," Action ":" sts:AssumeRole "}]}
и для создания роли выполните следующую команду в терминале
aws iam create-role --role-name iot-actions-role --assume-role-policy-document файл://./rolePolicy.json
Создайте еще один файл json policy.json
{"Версия":"2012-10-17", "Заявление":[{"Эффект":"Разрешить", "Действие":["Dynamodb:*", "lambda:InvokeFunction"] , "Ресурс":["*"]}]}
затем вызовите create-policy и укажите документ политики IAM
aws iam create-policy --policy-name iot-actions-policy --policy-document file://./policy.json
И, наконец, прикрепите политику к роли, используя - измените policy-ARN на ARN, который вы получили на предыдущем шаге
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 Настройка таблицы в DynamoDB в консоли AWS
В рамках этого шага мы собираемся создать DynamoDB в консоли AWS
Имя таблицы:plantSensor
Ключ раздела:ключ
Ключ сортировки:отметка времени
а также установите для единиц емкости чтения и емкости записи значение 1.
# 14 Создание правила для вставки данных в таблицу PlantSensor
Создайте файл json - plantdatarule.json (здесь измените значение roleArn в разделе ниже, перейдите в IAM-> Roles-> iot-action-role, чтобы получить arn)
{"sql":"SELECT * FROM 'topic / plantdata'", "ruleDisabled":false, "actions":[{"DynamoDB":{"tableName":"plantSensor", "hashKeyField" :"ключ", "hashKeyValue":"$ {topic (2)}", "rangeKeyField":"отметка времени", "rangeKeyValue":"$ {отметка времени ()}", "roleArn":"arn:aws:iam ::XXXXXXXXXXXX:role / iot-actions-role "}}]}
затем запустите следующую команду на своем терминале
aws iot create-topic-rule --rule-name plantDataToDynamoDB --topic-rule-payload file://./plantdatarule.json
Теперь, если вы перейдете в консоль AWS IoT, вы должны увидеть созданное правило под названием «PlantDataToDynamoDB», как показано на снимке экрана ниже («игнорируйте правило отправки электронной почты, которое является частью шагов ниже.)
с помощью MQTT.FX запустите быстрый тест, чтобы увидеть, создаются ли записи в созданной таблице.
# 15 Загрузите скетч Arduino для публикации данных в AWS IoT от Yun
Здесь сначала нужно загрузить библиотеку ArduinoJSON с github по адресу
https://github.com/bblanchon/ArduinoJson
Теперь загрузите файлы YunAWSIoTDynamoDB, ino и aws_iot_config.h из раздела кода ниже и загрузите их в Yun.
Откройте монитор последовательного порта, и вы должны увидеть значение температуры, освещенности и влажности почвы, отправленные в DynamoDB.
Если вы уже работали на AWS, вы можете делать всевозможные удивительные вещи, настраивая функцию Lambda и публикуя кинезис данных ...
Примечание. Если вы планируете сделать это постоянной настройкой, не забудьте увеличить задержку в конце цикла, чтобы увеличить временной интервал публикации в DynamoDB, чтобы вы не понесли дополнительных затрат. Подробнее о ценах см. Https://aws.amazon.com/iot/pricing/
.
# 16 Настройка правила AWS-IoT для SNS для получения и электронной почты, если значение влажности почвы упадет ниже порогового значения.
Обычно этот шаг включает настройку простой базы уведомлений SNS на основе правила AWS IoT.
Начните с назначения следующих политик роли AWS (iot-action-role), которую вы создали на предыдущем шаге в консоли IAM
-AmazonSNSRole
-AmazonSNSFullAccess
После этого в консоли SNS создайте тему под названием sendMail . и создайте подписку и настройте электронную почту на телефоне, чтобы получать уведомления, когда значение влажности почвы НИЗКОЕ.
Теперь вернитесь в консоль AWS IoT и с помощью кнопки + Create Resource создайте правило под названием Email Send и укажите следующую информацию
- Имя:EmailSend
- Атрибут:mositValue (он должен соответствовать значению json, которое вы публикуете как часть вашей темы в коде Arduino)
- Фильтр тем:тема / данные предприятия
- Условие:влажное значение <250 (это значение, которое вы определили на первых шагах руководства).
- Выбрать действие:отправить сообщение в виде push-уведомления в социальных сетях
- Цель соцсети:sendEmail
- Роль:iot-action-role
После этого консоль должна выглядеть, как на снимке экрана ниже
Вот образец электронного письма, которое я получил, когда вынул датчик влажности почвы из стакана воды
Чтобы узнать больше об AWS-SNS
https://aws.amazon.com/sns/faqs/
№15 Собираем детали, напечатанные на 3D-принтере, и кладем их в горшок.
Вам понадобятся винт и гайка 4x40, чтобы прикрепить деталь, напечатанную на 3D-принтере Black Earth Poker, к базовой части Arduino Yun
Верхняя часть легко устанавливается на защелках, здесь не забудьте направить верхнее отверстие к вашему окну и вытолкнуть влагу из почвы в горшок. И подключите Yun с помощью вилки кабеля micro-USB к розетке.
Обратите внимание, я все еще изучаю и изучаю удивительный мир AWS, и я был в восторге от функций консоли AWS, поэтому, если вы уже давно используете AWS, опубликуйте комментарий или предложение для функции, которая у вас была бы понравилось видеть / применимо к проекту мониторинга завода. Спасибо ..
Код
- SoilMoistureValue
- ArduinoYunDweetio
- ArduinoYunAWSIoTDynamodb
- aws_iot_config.h
SoilMoistureValue Arduino
Скетч Arduino для определения идеального значения влажности почвы для вашего домашнего растения// @ CarmelitoA - Проект мониторинга домашних растений, определяющий значение влажности почвыconst int влажностьPin =A1; // Датчик влажности Grove, подключенный к A1 на Grove Shieldconst int ledPin =2; int weturValue =0; int tooDryValue =250; // изменить это значение в зависимости от того, что вы придумалиvoid setup () {Serial.begin (9600); pinMode (ledPin, OUTPUT); digitalWrite (ledPin, LOW);} void loop () {weturValue =analogRead (влагопин); Serial.print ("Датчик влажности ="); Serial.println (влажное значение); // Проверяем значение с помощью сухого песка, а затем с помощью мокрого Sandif (влажное значениеArduinoYunDweetio Arduino
Публикация данных датчика в dweet.io с использованием Arduino Yun// Создано @CarmelitoA для проекта мониторинга домашних растений - загрузка данных на dweet.io. (CC BY-SA https://creativecommons.org/licenses/by-sa/4.0/)#include#include #define SITE_URL "www.dweet.io" #include
Изготовленные на заказ детали и корпуса
Схема
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
Производственный процесс
- С# с использованием
- Удаленный мониторинг погоды с помощью Raspberry Pi
- Кнопка AWS IoT с управлением движением
- Как построить более разумную операцию с использованием технологии IoT для мониторинга резервуаров
- Система управления лесами IoT двойного назначения
- Система удаленного мониторинга нефтяных и дизельных резервуаров на основе IoT
- 8 преимуществ системы мониторинга веса автопарка на основе IoT
- Важность использования мониторинга активов с поддержкой IoT в нефтегазовой отрасли
- Улучшите хранение молока с помощью Интернета вещей:система мониторинга уровня молока
- Использование системы мониторинга уровня реки на основе IoT для эффективного управления водными ресурсами