将Raspberry Pi连接到IBM Watson,Bluemix和Node-RED

IBM最近通过向注册了Bluemix平台试用版的开发人员发送Raspberry Pi 3计算机,从而激发了一大批开发人员对物联网的热情。 我一直渴望尝试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的时候!

在我们的Raspberry Pi上设置Watson IoT的快速测试

要在Raspberry Pi上设置IBM Watson IoT Platform,我们在Pi本身上运行以下命令:

首先,我们从IBM的GitHub下载Watson IoT Platform安装程序:

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

它将返回我们设备的ID和我们应访问的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 (使用我们的设备的ID而不是占位符),我们应该可以从IBM那里获得一个非常整洁的可视化效果! 在其中,我们可以从云中查看Raspberry Pi的CPU温度和其他统计信息。

我们的数据通过简单的可视化流

现在,让我们以不同的方式进行处理,并设置IBM Bluemix来处理我们的数据。

Bluemix入门

要登录Bluemix,请转至IBM Bluemix登录页面 。 如果您还没有帐户,也可以从那里注册IBM ID和BlueMix。

Bluemix加载后,我们通过单击右上角帐户图标选择我们的区域:

选择地区

然后,如果Bluemix要求我们在该区域中创建空间,那么我们将这样做。 我已将我的空间命名为“ dev”:

输入我们的空间名称

然后,我们单击“使用服务或API”以为我们的应用找到良好的初始服务。

选择使用服务或API

在此屏幕中,我们需要找到“物联网平台”服务。 您可以通过单击左侧的“物联网”复选框来过滤选择内容,或者在搜索栏中输入“物联网平台”。 但是,我们会搜索它,一旦找到它,便会为我们的应用选择它。

在Bluemix中选择物联网平台

然后,我们在下一个屏幕上单击“创建”,如果要调整此名称,则可以更改“服务名称”。 它实际上并没有太大影响,因此对于我的示例,我只是将其保留了下来。 如果需要,可以将其命名为“ Raspberry Pi Service”:

选择创建我们的物联网服务

我们在出现的欢迎屏幕上向下滚动,然后选择“启动仪表板”:

单击以启动Bluemix仪表板

现在,我们可以通过单击“添加设备”将Raspberry Pi添加到此新服务中:

将设备添加到Bluemix

单击以“创建设备类型”:

选择创建设备类型

将会出现另一个屏幕,询问我们是否要创建设备类型或网关类型。 我们需要一种设备类型:

选择设备类型选项

最后,我们命名设备类型。 第一个字段用于将在我们的API等中使用的设备类型名称,因此,请保持小写字母并用破折号分隔。 例如“ my-pis”或“ iot-sample-devices”。 在此之下,您可以写一个更长,更易理解的描述:

添加我们的设备类型详细信息

下一个屏幕为我们提供了设备模板的选项,提供了我们可以用于每个设备的字段以定义其特征。 这取决于您以及您要在此设备类型中记录哪些设备数据。 当我使用这种设备类型来跟踪Raspberry Pi时,我仅选择定义其“模型”(例如Raspberry Pi 2,Raspberry Pi 3…等)。

仅选择模型,然后单击下一步

然后,我们设置默认模型类型。 我将此设备模板的主要模型类型设置为“ Raspberry Pi 3 Model B”:

输入Raspberry Pi 3 Model B作为型号名称

如果您愿意,可以按照JSON格式添加自己的自定义元数据,出于本教程的目的,我们可以跳过此步骤。

我们可以为我们的设备类型添加示例JSON数据

现在我们的设备类型可以使用了! 我们应该回到“添加设备”屏幕。 这次,应该选择我们的新设备类型。 检查是否存在这种情况,然后单击“下一步”。

选择设备类型(如果未选择),然后单击下一步

现在,我们将Raspberry Pi的个人设备信息设置到Bluemix系统中。 我们为我们的设备提供唯一的ID(与您系统中所有其他设备的ID有所不同),例如“ PiBrain” (可以随意选择自己的机智名称或使用我的机智!) 。 该模型应为您先前设置的默认模型。 如果您已更改为其他型号,请随时更改此值。 所有这些值正确后,我们单击“下一步”:

为我们的设备设置唯一的ID,然后单击“下一步”

除非您要存储有关设备的特定数据,否则我们可以再次跳过元数据部分。 然后,我们设置我们的身份验证令牌。 您可以定义一个自定义名称,也可以将其留空以使系统自动为您生成一个。 如果您要生成自己的密码,请确保遵循其指导原则- “令牌的长度必须介于8到36个字符之间,并且应包含大小写字母,数字和符号(连字符,下划线,和期限是允许的)。 该令牌应没有重复,字典词,用户名和其他预定义序列。” 一个提示-如果您想自己生成一个,那么一个随机的密码生成器(如LastPass中的密码生成器)将非常有用。

就我而言,我很高兴他们能为我创造一个:

安全令牌选项

检查详细信息以确保它们正确无误,然后单击“添加”:

检查所有内容,然后单击下一步

最终屏幕将显示设备的所有详细信息,包括生成的身份验证令牌(或您为其放置的令牌)。 将所有这些详细信息复制到安全且易于查找的地方! 尤其要确保将身份验证令牌保存在易于访问的位置,因为如果不访问Pi便无法再次获得此值 。 一旦确定保存了所有这些值(对吗?),请关闭此弹出窗口。

将该令牌保存在安全的地方

将Raspberry Pi链接到Bluemix中的设备

现在,我们想将Raspberry Pi链接到我们刚刚在Bluemix中设置的设备。 为此,我们需要首先停止在Pi上运行的Watson IoT服务,该服务是作为测试启动的:

sudo service iot stop

然后,键入以下内容以打开Raspberry Pi的Watson IoT配置文件(如果文件不存在,则在保存文件时将创建该文件)

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 。如果显示的文件名正确,请按Enter。

保存后,我们准备设置Node-RED!

在我们的Raspberry Pi上设置Node-RED

为了做一些更高级的事情,我们将安装并运行Node-RED,该环境可让您使用连接的设备和数据,而无需进行过多的编码。

让我们转到Raspberry Pi上的终端,然后键入以下内容以将Raspberry Pi上的所有内容更新为最新版本。 用于Raspberry Pi(Raspbian Jessie)的Raspian的较新版本已经带有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或任何安装了Raspbian Jessie的Raspberry Pi,则无需安装Node-RED,因为它应该已经存在(并通过您刚运行的最后一个命令将其更新为最新版本!)。

如果没有最新版本的Raspbian,则可能需要安装Node-RED。 您可以通过首先安装其所有依赖项来做到这一点:

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

如果您在尝试下一个命令后收到有关sudo: npm: command not found的错误,则需要先运行以下命令来安装npm(我不需要在一个Pi上安装npm:另一个):

sudo apt-get install npm

然后,通过npm本身安装Node-RED:

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

为了访问IBM Watson IoT Node,我们也运行以下命令:

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

(对我来说,上述命令无法运行,并且由于脚本引用node而不是nodejs出现错误而nodejs —我猜这将在Raspbian Jessie上发生,如果是这样,您不必担心,因为这是已在该版本的Raspbian上为您安装!)。

如果您想从计算机而不是Pi上访问Node-RED,则需要知道Pi的本地IP地址。 您可以使用以下方法找到它:

hostname -I

或者,如果您希望获得更多细节:

ifconfig

如果全部安装成功,我们应该可以使用以下命令在您的Pi上运行Node-RED:

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

然后,如果我们从自己的Pi上转到http://127.0.0.1:1880或从同一网络上的另一台计算机访问http://{your-pi-ip-address}:1880 ,则应该看到Node-RED准备就绪等待。 检查接口内的输入和输出,是否将Watson IoT作为选项:

检查Watson IoT是否在输入和输出中

将Bluemix链接到我们的Raspberry Pi

现在,我们已经在我们的Pi上安装了Node-RED Watson IoT Platform,在我们的Pi上安装了Node-RED,并准备了Bluemix并等待我们的Pi。 剩下的就是通过Node-RED将我们的Pi链接到Bluemix。

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数据粘贴到textarea中,然后单击OK:

粘贴示例JSON数据,然后单击“确定”。

现在,导入的节点将跟随您的鼠标光标,单击以将它们整齐地放置在Node-RED表上的某个位置:

单击以将那些导入的节点放下

要设置Node-RED以便将我们在Bluemix中设置的Pi链接到此处的Pi,我们双击“事件”节点:

双击事件节点

然后,我们在出现的弹出窗口中单击“已注册”,然后单击“凭据”行旁边的铅笔图标:

选择注册并单击编辑按钮

我们像以前一样在Pi上的device.cfg文件中填写详细信息(我们不必担心“名称”字段)。 完成后,我们单击“添加”:

填写设备详细信息,然后单击添加

然后单击“确定”。

现在一切准备就绪,可以进行测试了! 点击右上角的“部署”按钮:

点击部署我们的创作

我们应该看到一条消息,指出“已成功部署”:

成功部署流程

单击右侧的“调试”选项卡以查看我们节点的输出。 msg.payload触发一些控制台调试消息,这些消息以两种格式(一个字符串和一个JSON对象)显示温度。

我们的调试标签

注意:如果从 事件节点看到诸如“错误发送消息:错误:客户端未连接”之类的错误 ,则需要首先运行sudo service iot stop以停止其他Watson IoT服务。 我们不希望同时运行! 我自己犯了几次这个错误!

连接失败错误

在Bluemix中的Watson IoT平台中看到您的价值

要查看您的Raspberry Pi值是否成功通过,请访问https://{YOURORGANISATIONID}.internetofthings.ibmcloud.com/dashboard/#/overview

在这里,我们单击左侧菜单上的“设备”选项(菜单中的第二项):

单击设备菜单选项

我们的Raspberry Pi设备应在此处列出,单击以打开更多详细信息:

单击我们的Raspberry Pi设备

我们的数据应该成功流式传输!

我们的数据成功传输

调整我们的Node-RED流

我们可以通过编辑每个节点中的设置来调整Node-RED流的运行方式设置。 例如,如果我们双击时间戳记节点,我们可以更改其运行频率:

双击时间戳

然后,我们可以将间隔更改为较低频率/较高频率。 例如,下面我们将其更改为30秒:

将频率更改为每30秒

再次单击“部署”按钮以应用这些更改并放慢速度:

单击部署以应用那些更改

结论

现在,我们可以通过多种方式将Raspberry Pi连接到IBM的IoT云服务,从而为通过Raspberry Pi创新地使用IBM Watson,数据分析和其他云服务奠定了基础。 我们可以使用Node-RED构建可以连接到云和各种API的任意数量的功能。 在本系列的下一篇文章中,我们将更进一步,并通过在语音中添加文本使Pi发出声音来利用云和IBM Bluemix!

From: https://www.sitepoint.com/connecting-a-raspberry-pi-to-ibm-watson-and-bluemix/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值