Содержание


Сокращение расхода воды с помощью "Интернета вещей", часть 1

Создайте систему мониторинга Raspberry Pi на основе IBM Bluemix, используя IoT Foundation Starter, Node-RED и Cloudant

Comments

Проект Poseidon - это добровольное движение, целью которого является сокращение потребления водных ресурсов в мире. На начальном этапе проекта были созданы обучающие материалы с информацией об отслеживании влажности грунта комнатных растений с помощью приложения, которое анализирует показатели датчиков растения, чтобы определить, когда требуется полив. Основная цель заключается в создании сообщества энтузиастов, занимающихся поиском способов сокращения расхода воды за счет использования таких технологий, как "Интернет вещей", облачные вычисления, мобильные технологии и средства анализа.

В этой серии из трех учебников рассказывается о создании недорогой системы полива растений и совместной работе над ее улучшением. Эта система основана на Raspberry Pi и использует IBM Bluemix для сбора и визуализации показателей датчиков и публикации обновлений в социальной сети.

Вот пример работающей системы:

Фото пример работающей системы
Фото пример работающей системы


Такое сообщение система публикует в Twitter:

скриншот  сообщения которое  система публикует в Twitter
скриншот сообщения которое система публикует в Twitter


Архитектура решения выглядит следующим образом:

Diagram of the solution design
Diagram of the solution design


Система использует следующее:

  • Raspberry Pi с платой расширения GrovePi, температурный/атмосферный датчик и датчик влажности грунта.
  • Брокер облачной среды "Интернета вещей" Это бесплатная служба, доступная в сети Интернет, которая получает показатели датчиков и рассылает их всем оформившим подписку клиентам. Для передачи показателей датчиков используется открытый протокол MQTT.
  • IBM Bluemix в качестве облачной платформы, на которой выполняется приложение. Приложение Internet of Things Foundation Starter позволяет сохранять и визуализировать показатели датчиков на рабочих станциях и мобильных устройствах. Приложение IoT Starter использует следующие службы Bluemix:
    • Node.js: расположенная на сервере платформа для выполнения приложений JavaScript.
    • Node-RED: служба, позволяющая связать узлы (функции) в графическом редакторе, доступом в браузере. С помощью Node-RED можно связать входящие показатели датчиков с базой данных для их сохранения, а также с узлом микроблога, отправляющим данные в Twitter.
    • Cloudant: облачная база данных типа NoSQL, основанная на CouchDB.
  • Внешние службы, такие как Twitter, для публикации уведомлений о необходимости полива растений.

Решение IBM Internet of Things Foundation Starter предоставляет среду выполнения Node.js и приложение Node-RED, а также создает экземпляр базы данных Cloudant класса NoSQL.

Что потребуется для создания системы

  • Учетная запись Bluemix и учетная запись DevOps Services, связанные с вашим идентификатором в IBM. (Учетная запись DevOps Services потребуется при работе с частью 2 и 3.)
  • Знание Linux и Python желательно, но не обязательно.

Необходимое оборудование

  • Raspberry Pi, модель B (SKU: 800025001). (Более поздняя модель B+ также скорее всего подходит.)
  • Плата расширения GrovePi для Raspberry Pi (SKU: 830004001)
  • Grove - барометр (с высокой точностью и датчиком температуры) (SKU: 811027001)
  • Grove - датчик влажности (SKU: SEN92355P)
  • 2 универсальных кабеля Grove с 4-штырьковым разъемом (SKU ACC90453O)
  • Карта памяти SD на 4 ГБ

Дополнительное оборудование

  • Блок питания Raspberry Pi (или другой миниатюрный блок питания USB)
  • Кабель HDMI для подключения Pi к телевизору или монитору
  • Сетевой кабель Ethernet
  • Мышь и клавиатура с подключением через USB для однократной настройки Pi

Запустите приложениеПолучите код

Шаг 1. Настройка Raspberry Pi

Для того чтобы максимально упростить установку операционной системы в Raspberry Pi, компания Raspberry Foundation предоставляет программу установки NOOBS (New Out Of The Box).

  1. Настройте систему Raspberry Pi для ее подготовки к установке ОС:
    1. Подключите Pi к монитору или телевизору кабелем HDMI.
    2. Подключите сетевой кабель Ethernet.
    3. Подключите мышь и клавиатуру к портам USB.
  2. Установите Raspian OS в системе Pi, следуя инструкциям из документа Getting Started with NOOBS.
  3. Убедитесь в том, что вы можете подключиться к системе Pi через SSH и войти в нее.
  4. Пока не подключайте плату расширения GrovePi. Выполните инструкции из документа Connecting the Raspberry Pi and Grove Sensors компании Dexter Industries (изготовителя GrovePi).

Теперь все оборудование настроено. Перейдите к установке сценария, отправляющего показатели датчиков в центральную облачную службу для дальнейшей обработки.

Шаг 2. Установка сценария клиента Poseidon

Используйте протокол MQTT— упрощенный протокол доставки сообщений методом публикации/подписки — для отправки показателей датчиков в облачную среду IBM IoT. Клиенты MQTT на различных языках программирования доступны в проекте Paho. Вам потребуется клиент на языке Python.

  1. Перейдите в домашний каталог (cd ~) и создайте дубликат хранилища Git PoseidonProject:
    git clone https://hub.jazz.net/git/bbhavers/PoseidonProject
  2. Скопируйте зависимые файлы и модули:
    cd PoseidonProject/Tutorial1/PoseidonClient
    cp ~/GrovePi/Software/Python/grove_barometer_lib.py
    cp ~/GrovePi/Software/Python/grovepi.py
  3. Отредактируйте файл конфигурации config.py (используя редактор vi или nano): введите имя датчика в поле clientID и местную долготу и ширину в поле location.
  4. Установите библиотеки клиента MQTT:
    sudo pip install paho-mqtt
  5. Протестируйте код:
    sudo python PoseidonClient.py
  6. Включите автоматический запуск PoseidonClient при загрузке:
    1. Скопируйте файл сценария в каталог начальной загрузки:
      sudo cp poseidon.sh /etc/init.d
    2. Измените права доступа:
      sudo chmod 755 /etc/init.d/poseidon.sh
    3. Протестируйте запуск сценария:
      sudo /etc/init.d/poseidon.sh start

      Должно появиться сообщение "Starting PoseidonClient".
    4. Проверьте, работает ли сценарий:
      ps -ef |grep Poseidon

      Должны быть показаны две записи.
    5. Проверьте, ведется ли протокол сценария:
      tail /home/pi/PoseidonProject/Tutorial1/PoseidonClient/poseidon.log

      Протокол содержит все отправленные данные. Он начинает вестись заново при каждом запуске клиента.
    6. Протестируйте завершение работы сценария (в ходе которого убиваются все процессы Python):
      sudo /etc/init.d/poseidon.sh stop
    7. Проверьте, был ли остановлен сценарий:
      ps -ef |grep Poseidon
    Записи, которые были показаны на шаге 6d, теперь должны отсутствовать.
  7. Если все работает как нужно, активируйте сценарий для автоматической загрузки (игнорируя предупреждение об отсутствии тегов LSB):
    sudo update-rc.d poseidon.sh defaults
  8. Убедитесь в том, что сценарий запускается при перезагрузке:
    sudo shutdown -r now

    После загрузки повторите команды, выполненные ранее в этом разделе.
  9. Поместите датчик влажности в грунт рядом с растением, чтобы начать отслеживание показателей.

Система Raspberry Pi полностью настроена и готова к отправке данных в микроброкер, находящийся в Интернете. Публикуемые данные будут доступны любому клиенту MQTT, который подпишется на тему в соответствии с конфигурацией в config.py.

Далее необходимо настроить облачную среду на основе Bluemix для получения данных, их сохранения в базе данных и публикации в Twitter.

Шаг 3. Настройка среды Bluemix

Теперь необходимо создать приложение в Bluemix, которое использует Internet of Things Foundation Starter. Решение IoT Starter предоставляет среду выполнения Node.js и приложение Node-RED, а также создает экземпляр базы данных Cloudant класса NoSQL.

  1. Войдите в среду Bluemix. На сводной панели нажмите кнопку CREATE AN APP (СОЗДАТЬ ПРИЛОЖЕНИЕ). Найдите и выберите Internet of Things Foundation Starter в разделе Boilerplates каталога: Скриншот  IoT Foundation Starterв каталоге
    Скриншот IoT Foundation Starterв каталоге
  2. Введите имя приложения и имя хоста. Оставьте во всех остальных полях значения по умолчанию и нажмите кнопку CREATE (СОЗДАТЬ): Скриншот  UI for creating an IoT Foundation app
    Скриншот UI for creating an IoT Foundation app

    Приложению будут предоставлены ресурсы, и оно будет автоматически запущено.
  3. Щелкните на пути ROUTES приложения для перехода на веб-сайт приложения: Скриншот  initial Node-RED app UI
    Скриншот initial Node-RED app UI
  4. Нажмите Go to your Node-RED flow editor (Перейти к редактору потока Node-RED).
  5. В редакторе потока Node-RED показана диаграмма потока "Интернета вещей" по умолчанию: Screenshot of the Node-RED flow editor
    Screenshot of the Node-RED flow editor

    Слева показан список доступных узлов (коннекторов ввода и вывода и функций для обработки входящих данных или создания вывода). Справа показаны свойства выбранного узла.
  6. Выберите все узлы на листе (щелкнув на каждом из них, удерживая нажатой клавишу Shift) и нажмите Delete для их удаления с листа.

Шаг 4. Настройка Bluemix для хранения данных

На этом шаге необходимо настроить среду Bluemix для получения показателей датчиков и их сохранения в базе данных Cloudant.

  1. В редакторе потока Node-RED перетащите узел ввода mqtt на рабочий лист для создания узла, получающего данные от брокера MQTT, в котором публикует показатели датчиков клиент, работающий в системе Raspberry Pi.
  2. Дважды щелкните на узле ввода mqtt на листе и укажите следующие параметры:
    • Broker (Брокер):realtime.ngi.ibm.com (без ИД клиента и без имени и пароля пользователя)
    • ClientID (ИД клиента): Выберите любой уникальный идентификатор, например MyPoseidon23.
    • Topic (Тема):/org/dutchcourage/poseidon/client/sensor
    • Name (Имя):Receive Sensor Data
    Скриншот  dialog box for editing the mqtt input node
    Скриншот dialog box for editing the mqtt input node
  3. Добавьте узел debug в поток и свяжите его с узлом ввода Receive Sensor Data. Узел debug будет показывать полученные сообщения на вкладке отладки в правой области редактора:
  4. Разверните поток для его тестирования. (В правом верхнем углу редактора нажмите кнопку Deploy (Развернуть).)
  5. Просмотрите входящие сообщения на вкладке отладки: Сриншот  debug tab
    Сриншот debug tab

    При необходимости перезапустите клиент Poseidon в системе Raspberry Pi, чтобы он отправил новые значения. (По умолчанию он отправляет сообщения раз в час.) См. Шаг 2 для получения инструкций по перезапуску клиента.
  6. Если тест приема данных завершится успешно, добавьте эти данные в базу данных Cloudant. Для этого добавьте узел вывода cloudant в поток и свяжите его с узлом Receive Sensor Data. .
  7. Дважды щелкните на узле вывода cloudant для изменения его параметров:
    • Service (Служба): Выберите экземпляр Bluemix Cloudant.
    • Database (База данных): poseidonsensors
    • Only store msg.payload object? (Сохранять только объект msg.payload?): Включите переключатель.
    • Name (Имя):Save to Cloudant
    Скриншот  dialog box for editing the cloudant out node
    Скриншот dialog box for editing the cloudant out node
  8. Нажмите Deploy (Развернуть) в редакторе, чтобы активировать поток и сохранить данные в базе данных Cloudant.
  9. Для просмотра сохраненных данных в Cloudant снова войдите в Bluemix со своей учетной записью. На сводной панели настроенный экземпляр Cloudant будет показан в разделе Services (Службы):Screenshot of the LAUNCH button
    Screenshot of the LAUNCH button

    Щелкните на экземпляре Cloudant и нажмите LAUNCH (ЗАПУСТИТЬ). Будет показана сводная панель Cloudant, на которой можно создать новые базы данных, создать задачи репликации, а также просмотреть и изменить записи базы данных.
  10. Выберите базу данных poseidonsensors (созданную узлом Save to Cloudant ). Для просмотра актуальных показателей датчиков поместите указатель мыши на документ и нажмите Edit doc (Изменить документ) в правом верхнем углу документа: Скриншот  poseidonsensors database
    Скриншот poseidonsensors database

    Будет показана структура данных JSON и содержимое документа: Скриншот  структура данных JSON и содержимое документа
    Скриншот структура данных JSON и содержимое документа

Теперь данные сохраняются в базе данных.

Шаг 5. Настройка Bluemix для отправки записей в микроблог

После настройки и запуска экземпляра Node-RED можно усовершенствовать поток для публикации полученных сообщений MQTT в Twitter:

  1. Откройте редактор потока Node-RED.
  2. Нажмите кнопку "hamburger" в правом верхнем углу редактора потока и выберите Import (Импортировать) > Clipboard (Буфер обмена): Скриншот  importing data into Node-RED from the clipboard
    Скриншот importing data into Node-RED from the clipboard
  3. Импортируйте исходный код всего потока Node-RED:
    1. В отдельном окне браузера откройте хранилище кода PoseidonProject и выберите файл Tutorial1/Nodered/NodeRedFlow.txt.
    2. Скопируйте содержимое файла NodeRedFlow.txt в буфер обмена.
    3. Вернитесь в редактор Node-RED. Вставьте содержимое буфера обмена в текстовое поле и нажмите Ok: Screenshot of the pasted data
      Screenshot of the pasted data
    4. Разместите поток в произвольном месте рабочего листа.
  4. Свяжите новые узлы с существующим потоком Node-RED:
    1. Удалите ранее созданные узлы из импортированного потока (Receive Sensor Data, Save to Cloudant и debug).
    2. Свяжите узел Receive Sensor Data с только что импортированным узлом JSON to JSOBJECT.
    Теперь поток Node-RED должен выглядеть следующим образом: Screenshot of the full Node-RED flow
    Screenshot of the full Node-RED flow
  5. Дважды щелкните на узле Tweet Sensor Values и щелкните на значке в виде ручки, чтобы ввести идентификационные данные своей учетной записи Twitter в Node-RED: Скриншот  dialog box for authenticating with Node-RED
    Скриншот dialog box for authenticating with Node-RED
  6. Нажмите Deploy (Развернуть) для сохранения изменений.
  7. Остановите и снова запустите клиент Poseidon в системе Raspberry Pi, чтобы заново начать отправку данных, и отследите сообщение с показателями датчиков в своем микроблоге Twitter: Скриншот sensor-data tweet
    Скриншот sensor-data tweet

Теперь данные отправляются в Twitter.

Часть 1 - Заключение

Используя информацию из этого учебника, вы настроили систему Raspberry Pi и датчики для отслеживания влажности грунта, атмосферного давления и температуры. Вы настроили клиент для отправки данных по протоколу MQTT в брокер облачной среды IBM IoT. Эти данные принимаются, сохраняются в базе данных Cloudant и публикуются в Twitter с помощью Bluemix. Вы научились создавать поток данных датчика от начала до конца, чтобы делиться данными в социальной сети, и готовы приступить к расширению возможностей системы — например, за счет мобильных приложений и анализа данных для определения того, когда потребуется полив растения.

Перейдите к Части 2 для настройки защиты экземпляра Node-RED и автоматического развертывания изменений в приложении. Затем приступите к Части 3 , чтобы расширить возможности систему за счет создания приложения-клиента, отображающего показатели датчиков в виде графика.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления, Web-архитектура, Open source
ArticleID=994481
ArticleTitle=Сокращение расхода воды с помощью "Интернета вещей", часть 1
publish-date=02102015