Недавно IBM помогла спровоцировать энтузиазм Интернета вещей в группу разработчиков, отправив компьютеры Raspberry Pi 3 разработчикам, которые подписались на пробную версию платформы Bluemix. Я очень хотел попробовать Bluemix и IBM Watson и решил, что сейчас самое подходящее время, чтобы зарегистрироваться! Мне посчастливилось быть одним из разработчиков, которые получили Raspberry Pi 3, и поэтому я сделал то, что всегда делаю с новыми технологиями, я начал возиться и писать о своем опыте.
Это первая часть серии статей об объединении 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», чтобы найти хороший начальный сервис для нашего приложения.
На этом экране нам нужно найти сервис «Интернет вещей». Вы можете сделать это, нажав на флажок «Интернет вещей» с левой стороны, чтобы отфильтровать выборки, или введя в строку поиска «Платформа Интернет вещей». Тем не менее, мы ищем его, как только он у нас есть, мы выбираем его для нашего приложения.
Затем мы нажимаем «Создать» на следующем экране, вы можете изменить «Имя службы», если хотите изменить это. На самом деле это не сильно влияет, поэтому для моего примера я оставил все как есть. Вы можете назвать это как «Raspberry Pi Service», если пожелаете:
Прокручиваем вниз по экрану приветствия и выбираем «Launch Dashboard»:
Теперь мы можем добавить наш Raspberry Pi к этому новому сервису, нажав «Добавить устройство»:
Нажмите «Создать тип устройства»:
Появится другой экран с вопросом, хотим ли мы создать тип устройства или тип шлюза. Мы хотим, чтобы тип устройства:
Наконец, мы называем наш тип устройства. Первое поле предназначено для имени типа устройства, которое будет использоваться в наших API и т. Д., Поэтому держите его строчными и разделяйте их тире. например, «my-pis» или «iot-sample-devices». Под этим вы можете написать более длинное и понятное человеку описание:
На следующем экране представлены параметры шаблона нашего устройства, а также поля, которые мы можем использовать для каждого устройства, чтобы определить его характеристики. Это зависит только от вас и от того, какие данные устройства вы хотите записать в этом типе устройства. Поскольку я использую этот тип устройства только для отслеживания Raspberry Pis, я выбрал только определение их «Модели» (например, Raspberry Pi 2, Raspberry Pi 3… и т. Д.).
Затем мы устанавливаем тип модели по умолчанию. Я установил свой основной тип модели для этого шаблона устройства как «Raspberry Pi 3 Model B»:
Вы можете добавить свои собственные метаданные в формате JSON, если хотите, для наших целей в этом простом учебнике мы можем пропустить этот шаг.
Теперь наш тип устройства готов к использованию! Мы должны вернуться на экран «Добавить устройство». На этот раз наш новый тип устройства должен быть выбран. Проверьте, что это так и нажмите «Далее».
Теперь мы настроили нашу индивидуальную информацию об устройстве для нашего Raspberry Pi в систему Bluemix. Мы даем нашему устройству уникальный идентификатор (который будет отличаться от всех других устройств в вашей системе), например «PiBrain» (не стесняйтесь выбирать свое собственное остроумное имя или использовать мое!) . Модель должна быть моделью по умолчанию, которую вы установили ранее. Если вы перешли на другую модель, смело меняйте это значение. Как только все эти значения верны, мы нажимаем «Далее»:
Мы можем снова пропустить часть метаданных, если нет конкретных данных, которые вы хотели бы сохранить о вашем устройстве. Затем мы устанавливаем наш токен аутентификации. Вы можете определить пользовательский или оставить его пустым, чтобы система автоматически сгенерировала его для вас. Если вы хотите создать свой собственный, убедитесь, что он следует их указаниям: «Токен должен иметь длину от 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 в качестве опции:
Соединение 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:
Импортированные узлы теперь будут следовать за курсором мыши, щелкните, чтобы разместить их где-то аккуратно на вашем листе 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 должно быть указано здесь, щелкните его, чтобы открыть более подробную информацию:
Наши данные должны быть успешно переданы!
Настройка нашего Node-RED Flow
Мы можем настроить параметры работы этого потока Node-RED, отредактировав настройки в каждом узле. Например, если дважды щелкнуть узел отметки времени , мы можем изменить частоту его запуска:
Затем мы можем изменить интервал на менее частый / более частый. Например, ниже мы изменили его на 30 секунд:
Нажмите кнопку «Развернуть» еще раз, чтобы применить эти изменения и немного замедлить процесс:
Вывод
Теперь мы можем подключить Raspberry Pi к облачным сервисам IBM IoT различными способами, заложив основу для инновационного использования IBM Watson, анализа данных и других облачных сервисов с нашим Raspberry Pi. Мы можем использовать Node-RED для создания любого количества функций и возможностей, которые могут подключаться к облаку и различным API. В следующей статье этой серии мы пойдем дальше и воспользуемся преимуществами облака и IBM Bluemix, добавив текст в речь, чтобы дать нашему Пи голос !