Статьи

Подключение Raspberry Pi к IBM Watson, Bluemix и Node-RED

Недавно IBM помогла спровоцировать энтузиазм Интернета вещей в группу разработчиков, отправив компьютеры Raspberry Pi 3 разработчикам, которые подписались на пробную версию платформы Bluemix. Я очень хотел попробовать Bluemix и IBM Watson и решил, что сейчас самое подходящее время, чтобы зарегистрироваться! Мне посчастливилось быть одним из разработчиков, которые получили Raspberry Pi 3, и поэтому я сделал то, что всегда делаю с новыми технологиями, я начал возиться и писать о своем опыте.

Raspberry Pi и IBM Bluemix Adventures часть первая

Работа сайта SitePoint / PatCat, права на логотип: IBM и Raspberry Pi Foundation

Это первая часть серии статей об объединении Raspberry Pi с IBM Watson и Bluemix. В этой статье рассматриваются различные способы подключения Raspberry Pi к облачным сервисам IBM, а также мои советы по этому вопросу на случай, если что-то не совсем запланировано для меня. Было очень весело, и я настоятельно рекомендую людям попробовать IBM Bluemix и Watson, особенно если у вас есть запасной Raspberry Pi!

Настройка быстрого теста Watson IoT на нашем Raspberry Pi

Чтобы настроить платформу IBM Watson IoT на нашем Raspberry Pi, мы запускаем следующие команды на самом Pi:

Сначала мы загружаем установщик Watson IoT Platform с GitHub от IBM:

curl -LO https://github.com/ibm-messaging/iot-raspberrypi/releases/download/1.0.2.1/iot_1.0-2_armhf.deb 

Затем мы запускаем следующую команду, чтобы установить его:

 sudo dpkg -i iot_1.0-2_armhf.deb 

После установки он автоматически запустит службу IBM Watson IoT Platform на нашем устройстве. На самом деле, сервис запускается автоматически каждый раз, когда загружается наш Pi. Если вы не уверены, запущен ли он и хотите быть уверенным, выполните следующую команду:

 service iot status 

Это должно вызвать ответ, который выглядит примерно так:

 ● iot.service - LSB: IoT service Loaded: loaded (/etc/init.d/iot) Active: active (running) since Fri 2016-04-29 23:33:47 UTC; 15s ago CGroup: /system.slice/iot.service └─11960 /opt/iot/iot /dev/null 

Если вы видите вышеупомянутое сообщение, вы можете идти! Фактически, мы уже можем видеть, как данные Raspberry Pi передаются в облако IBM. Для этого введите:

 service iot getdeviceid 

Он вернет идентификатор для нашего устройства и URL, который мы должны посетить:

 The device ID is abcdefghijkl For Real-time visualization of the data, visit http://quickstart.internetofthings.ibmcloud.com/?deviceId=abcdefghijkl 

Если мы http://quickstart.internetofthings.ibmcloud.com/?deviceId=abcdefghijkl к http://quickstart.internetofthings.ibmcloud.com/?deviceId=abcdefghijkl (с идентификатором нашего устройства, а не с заполнителем), мы должны увидеть довольно аккуратную визуализацию от IBM! В нем мы можем видеть температуру процессора нашего Raspberry Pi и другую статистику из облака.

Наши данные передаются в простой визуализации

Теперь давайте подойдем к этому по-другому и настроим IBM Bluemix для обработки наших данных.

Начало работы в Bluemix

Чтобы войти в Bluemix, перейдите на страницу входа в IBM Bluemix . Вы также можете подписаться на IBM ID и BlueMix, если у вас еще нет учетной записи.

После загрузки Bluemix мы выбираем наш регион, щелкая значок учетной записи в правом верхнем углу:

Выбор региона

Затем, если Bluemix запрашивает создание пространства в этом регионе, мы делаем это. Я назвал свое пространство «dev»:

Ввод названия нашего пространства

Затем мы нажимаем «Использовать сервисы или API», чтобы найти хороший начальный сервис для нашего приложения.

Выбор использования сервисов или API

На этом экране нам нужно найти сервис «Интернет вещей». Вы можете сделать это, нажав на флажок «Интернет вещей» с левой стороны, чтобы отфильтровать выборки, или введя в строку поиска «Платформа Интернет вещей». Тем не менее, мы ищем его, как только он у нас есть, мы выбираем его для нашего приложения.

Выбор платформы Интернета вещей в Bluemix

Затем мы нажимаем «Создать» на следующем экране, вы можете изменить «Имя службы», если хотите изменить это. На самом деле это не сильно влияет, поэтому для моего примера я оставил все как есть. Вы можете назвать это как «Raspberry Pi Service», если пожелаете:

Выбор создания нашего IoT сервиса

Прокручиваем вниз по экрану приветствия и выбираем «Launch Dashboard»:

Нажмите, чтобы запустить Bluemix Dashboard

Теперь мы можем добавить наш Raspberry Pi к этому новому сервису, нажав «Добавить устройство»:

Добавление устройства в Bluemix

Нажмите «Создать тип устройства»:

Выбор типа создания устройства

Появится другой экран с вопросом, хотим ли мы создать тип устройства или тип шлюза. Мы хотим, чтобы тип устройства:

Выбор типа устройства

Наконец, мы называем наш тип устройства. Первое поле предназначено для имени типа устройства, которое будет использоваться в наших API и т. Д., Поэтому держите его строчными и разделяйте их тире. например, «my-pis» или «iot-sample-devices». Под этим вы можете написать более длинное и понятное человеку описание:

Добавление информации о типе нашего устройства

На следующем экране представлены параметры шаблона нашего устройства, а также поля, которые мы можем использовать для каждого устройства, чтобы определить его характеристики. Это зависит только от вас и от того, какие данные устройства вы хотите записать в этом типе устройства. Поскольку я использую этот тип устройства только для отслеживания Raspberry Pis, я выбрал только определение их «Модели» (например, Raspberry Pi 2, Raspberry Pi 3… и т. Д.).

Выберите только модель и нажмите кнопку Далее

Затем мы устанавливаем тип модели по умолчанию. Я установил свой основной тип модели для этого шаблона устройства как «Raspberry Pi 3 Model B»:

Ввод в Raspberry Pi 3 Model B в качестве названия модели

Вы можете добавить свои собственные метаданные в формате JSON, если хотите, для наших целей в этом простом учебнике мы можем пропустить этот шаг.

Мы могли бы добавить пример данных JSON для нашего типа устройства

Теперь наш тип устройства готов к использованию! Мы должны вернуться на экран «Добавить устройство». На этот раз наш новый тип устройства должен быть выбран. Проверьте, что это так и нажмите «Далее».

Выберите тип устройства, если он не выбран, и нажмите «Далее».

Теперь мы настроили нашу индивидуальную информацию об устройстве для нашего Raspberry Pi в систему Bluemix. Мы даем нашему устройству уникальный идентификатор (который будет отличаться от всех других устройств в вашей системе), например «PiBrain» (не стесняйтесь выбирать свое собственное остроумное имя или использовать мое!) . Модель должна быть моделью по умолчанию, которую вы установили ранее. Если вы перешли на другую модель, смело меняйте это значение. Как только все эти значения верны, мы нажимаем «Далее»:

Установка уникального идентификатора для нашего устройства и нажатие Next

Мы можем снова пропустить часть метаданных, если нет конкретных данных, которые вы хотели бы сохранить о вашем устройстве. Затем мы устанавливаем наш токен аутентификации. Вы можете определить пользовательский или оставить его пустым, чтобы система автоматически сгенерировала его для вас. Если вы хотите создать свой собственный, убедитесь, что он следует их указаниям: «Токен должен иметь длину от 8 до 36 символов и содержать комбинацию букв нижнего и верхнего регистра, цифр и символов (дефис, подчеркивание, и период разрешены). В токене не должно быть повторений, слов в словарях, имен пользователей и других предопределенных последовательностей ». Один совет — если вы хотите сгенерировать его самостоятельно, для этого подойдет генератор случайных паролей, такой как в LastPass.

В моем случае я был более чем рад, что они сгенерировали один для меня:

Параметры токена безопасности

Проверьте правильность данных и нажмите «Добавить»:

Проверяем все и нажимаем Далее

На последнем экране будут показаны все детали устройства, включая сгенерированный токен аутентификации (или тот, который вы указали для него). Скопируйте все эти детали в безопасное и легко найти место! Особенно убедитесь, что у вас есть токен аутентификации, который легко доступен, поскольку вы не сможете получить это значение снова без доступа к своему Pi . Как только вы определенно сохраните все эти значения (вы правильно делаете?), Закройте это всплывающее окно.

Сохраните этот токен где-нибудь в безопасности

Связь нашего Raspberry Pi с нашим устройством в Bluemix

Теперь мы хотим подключить нашу Raspberry Pi к устройству, которое мы только что настроили в Bluemix. Для этого нам нужно сначала остановить нашу службу Watson IoT, запущенную на Pi, которая была запущена ранее в качестве теста:

 sudo service iot stop 

Затем введите следующее, чтобы открыть файл конфигурации Watson IoT для Raspberry Pi (он будет создан при сохранении файла, если он еще не существует) :

 sudo nano /etc/iotsample-raspberrypi/device.cfg 

Используя детали, которые мы сохранили ранее в безопасном месте, которое должно было выглядеть так:

 Organization ID abcde Device Type the-greatest-pis-in-the-world Device ID PiBrain Authentication Method token Authentication Token YOURTOKENWOULDBEHERE 

Мы вводим их в наш конфигурационный файл в следующем формате:

 #Device configuration file org = abcde type = the-greatest-pis-in-the-world id = PiBrain auth-method = token auth-token = YOURTOKENWOULDBEHERE #End of Configuration file 

Это может быть проще всего сначала настроить в простом текстовом редакторе, затем скопировать все и вставить в редактор, используя Ctrl + V.

Мы сохраняем эти изменения, нажимая Ctrl + X и затем набирая «Y», когда он спрашивает, хотим ли мы «Сохранить измененный буфер». Сохраните имя файла как есть, чтобы записать в тот же файл (убедитесь, что это /etc/iotsample-raspberrypi/device.cfg . Нажмите ввод, если оно показывает правильное имя файла.

Как только это будет сохранено, мы готовы установить Node-RED!

Настройка Node-RED на нашем Raspberry Pi

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

Давайте перейдем к терминалу на нашем Raspberry Pi и введем следующее, чтобы обновить все на нашем Raspberry Pi до последних версий. Более новые версии Raspian для Raspberry Pi (Raspbian Jessie) уже поставляются с Node-RED и Watson IoT. Однако я обнаружил, что важно обновить их все, чтобы все работало правильно. Так или иначе, обновите все, чтобы быть безопасным, или установите их с нуля, если у вас их еще нет!

 sudo apt-get update 

Запустите этот тоже:

 sudo apt-get dist-upgrade 

Если вы запускаете Node-RED ниже в этом руководстве и не видите «Watson IoT» в качестве входа или выхода, вам нужно запустить sudo apt-get dist-upgrade . Это не появилось для меня, пока я не сделал это!

Если у вас есть Raspberry Pi 3 или Raspberry Pi с установленной Raspbian Jessie, вам не нужно устанавливать Node-RED, поскольку он уже должен быть там (и обновляться до последней версии с помощью последней команды, которую вы только что выполнили!).

Если у вас не установлена ​​последняя версия Raspbian, вам может потребоваться установить Node-RED. Вы можете сделать это, сначала установив все его зависимости:

 sudo apt-get install build-essential python-dev python-rpi.gpio 

Если вы получите сообщение об ошибке sudo: npm: command not found после выполнения следующей команды, вам нужно будет выполнить следующее, чтобы сначала установить npm (мне не нужно было делать это на одном Pi, но затем нужно было сделать это на еще один):

 sudo apt-get install npm 

Затем, установив сам Node-RED через npm:

 sudo npm install -g --unsafe-perm node-red 

Чтобы получить доступ к узлу IoT IBM Watson, мы также запускаем эту команду:

 sudo npm install -g node-red-contrib-ibm-watson-iot 

(Для меня приведенная выше команда не сработала и не работает из-за ошибки в node , nodejs на скрипт, а не в nodejs — я предполагаю, что это произойдет с Распбианом Джесси, и если это так, вам не нужно беспокоиться, так как это уже установлена ​​для вас на этой версии Raspbian!).

Если вы хотите получить доступ к Node-RED с вашего компьютера, а не с Pi, вам необходимо знать локальный IP-адрес вашего Pi. Вы можете найти это используя:

 hostname -I 

Или, если вы предпочитаете гораздо больше деталей:

 ifconfig 

Если все установлено успешно, мы сможем запустить Node-RED на вашем Pi, используя следующую команду:

 node-red 

Когда он запускается, мы должны увидеть вывод примерно так:

 Welcome to Node-RED =================== 30 Apr 02:32:27 - [info] Node-RED version: v0.13.4 30 Apr 02:32:27 - [info] Node.js version: v0.10.29 30 Apr 02:32:27 - [info] Linux 4.1.18-v7+ arm LE 30 Apr 02:32:27 - [info] Loading palette nodes 30 Apr 02:32:33 - [info] Settings file : /home/pi/.node-red/settings.js 30 Apr 02:32:33 - [info] User directory : /home/pi/.node-red 30 Apr 02:32:33 - [info] Flows file : /home/pi/.node-red/flows_raspberrypi.json 30 Apr 02:32:33 - [info] Server now running at http://127.0.0.1:1880/ 30 Apr 02:32:33 - [info] Starting flows 30 Apr 02:32:33 - [info] Started flows 

Если затем мы перейдем по http://127.0.0.1:1880 на самом Pi или http://{your-pi-ip-address}:1880 с другого компьютера в той же сети, мы должны увидеть готовый Node-RED и ждет. Проверьте, что в интерфейсе, под обоими входами и выходами, вы видите Watson IoT в качестве опции:

Проверьте, что Watson IoT находится на входах и выходах

Соединение Bluemix с нашим Raspberry Pi

Теперь у нас на платформе Pi установлена ​​платформа Node-RED Watson IoT, на нашем — установлен Node-RED, а Bluemix настроен и ждет нашего Pi. Осталось только связать наш Pi с Bluemix через Node-RED.

У IBM есть примерный набор узлов, который мы можем использовать в качестве быстрого теста, и все, что нам нужно сделать, это импортировать его! Скопируйте JSON по этой ссылке из IBM в буфер обмена. Начало должно выглядеть примерно так:

 [{ "id": "41e935d1.d2619c", "type": "inject", "z": "d100b337.680e88", "name": "", "topic": "", "payload": "", "payloadType": "date", "repeat": "5", "crontab": "", "once": true, "x": 205, "y": 178.5, "wires": [["8332d581.5c7d58"]] }] // ... actual JSON file continues past here! 

Затем перейдите в Меню> Импорт> Буфер обмена в Node-RED:

Перейдите в Меню> Импорт> Буфер обмена

Вставьте эти данные JSON в текстовое поле и нажмите OK:

Вставка образца данных JSON и нажатие OK

Импортированные узлы теперь будут следовать за курсором мыши, щелкните, чтобы разместить их где-то аккуратно на вашем листе Node-RED:

Нажав, чтобы разместить эти импортированные узлы вниз

Чтобы настроить Node-RED, чтобы он мог связать Pi, который мы настроили в Bluemix, с нашим Pi, мы дважды щелкаем узел «event»:

Двойной щелчок по узлу события

Затем мы нажимаем «Зарегистрировано» в появившемся всплывающем окне и нажимаем значок карандаша рядом со строкой «Учетные данные»:

Выбрав зарегистрированного и нажав кнопку редактирования

Мы заполняем детали так же, как и раньше, в файле device.cfg на нашем Pi (нам не нужно беспокоиться о поле «Имя»). После этого мы нажимаем «Добавить»:

Заполнение информации об устройстве и нажмите кнопку Добавить

Затем нажмите «ОК».

Теперь все должно быть готово к тестовому запуску! Нажмите кнопку «Развернуть» в правом верхнем углу:

Нажав, чтобы развернуть наше творение

Мы должны увидеть сообщение «Успешно развернуто»:

Успешно развернутый поток

Нажмите на вкладку «Отладка» справа, чтобы увидеть выходные данные наших узлов. Msg.payload вызывает некоторые сообщения отладки консоли, которые показывают температуру в двух форматах (одна строка и один объект JSON).

Наша вкладка отладки

Примечание. Если вы видите ошибки, такие как «Ошибка отправки сообщения: Ошибка: клиент не подключен» с узла событий , вам необходимо сначала запустить sudo service iot stop чтобы остановить другую службу Watson IoT. Мы не хотим, чтобы это работало одновременно! Я сделал эту ошибку несколько раз сам!

Ошибки сбоев соединения

Просмотр ваших ценностей в IoT-платформе Watson в Bluemix

Чтобы узнать, успешно ли проходят ваши значения Raspberry Pi, перейдите по https://{YOURORGANISATIONID}.internetofthings.ibmcloud.com/dashboard/#/overview .

Отсюда мы нажимаем опцию «Устройства» в левом меню (второй пункт в меню):

Нажмите пункт меню устройства

Наше устройство Raspberry Pi должно быть указано здесь, щелкните его, чтобы открыть более подробную информацию:

Нажав на наше устройство Raspberry Pi

Наши данные должны быть успешно переданы!

Наши данные успешно транслируются

Настройка нашего Node-RED Flow

Мы можем настроить параметры работы этого потока Node-RED, отредактировав настройки в каждом узле. Например, если дважды щелкнуть узел отметки времени , мы можем изменить частоту его запуска:

Двойной щелчок на отметке времени

Затем мы можем изменить интервал на менее частый / более частый. Например, ниже мы изменили его на 30 секунд:

Изменение частоты каждые 30 секунд

Нажмите кнопку «Развернуть» еще раз, чтобы применить эти изменения и немного замедлить процесс:

Нажмите на кнопку развернуть, чтобы применить эти изменения.

Вывод

Теперь мы можем подключить Raspberry Pi к облачным сервисам IBM IoT различными способами, заложив основу для инновационного использования IBM Watson, анализа данных и других облачных сервисов с нашим Raspberry Pi. Мы можем использовать Node-RED для создания любого количества функций и возможностей, которые могут подключаться к облаку и различным API. В следующей статье этой серии мы пойдем дальше и воспользуемся преимуществами облака и IBM Bluemix, добавив текст в речь, чтобы дать нашему Пи голос !