电子说
步骤1:开始之前
确保已存在以下内容:
您已经完成了本教程的第1部分。
一个Bluemix帐户。
爱迪生中已安装Node-Red Watson IoT节点模块。为此,请查看官方文档。
步骤2:Watson IoT Application
此处的入口部分是创建Bluemix应用程序它将收集设备的数据,在这种情况下为LED状态。为此,请转到Bluemix目录并选择Internet of Things Platform Starter样板,如果愿意,请转到此链接并创建您的应用程序。
https://console.ng.bluemix.net/catalog/starters/internet-of-things-platform-starter/
请注意,通过此样板,您可以将Node.js运行时,物联网平台和Cloudant NoSQL DB服务绑定到该应用程序。我们对本教程感兴趣的是物联网平台和Node.js,因为它带有Node-Red。
创建应用程序后,转到物联网平台服务仪表板。在其中,您会找到按钮启动仪表板。单击它
在Watson IoT Platform仪表板中,转到设备,然后选择设备类型选项卡并创建设备类型。
在设备页面中,现在选择浏览标签,然后点击添加设备。选择您刚刚创建的设备类型并为其设置一个名称。完成向导,然后在结果页面中保存设备的详细信息,因为您需要它们来连接物理设备(此数据无法恢复)。要存储的重要数据是:
组织ID。
设备类型。
设备ID。
身份验证令牌。
步骤3:将电路连接到IoT
将电路连接到IoT
在本部分中,您将在Edison中修改Node-Red中的流,以现在就可以从IoT实例向IoT实例发送数据和接收命令,并从IoT实例接收命令,从而使其可以从Internet(而不是互联网)进行控制
此外,本节还假定Watson IoT节点已安装在Edison的Node-Red中。如果没有,请按照此处的说明
https://www.npmjs.com/package/node-red-contrib-ibm 。..
在爱迪生中启动Node-Red添加和配置Watson IoT连接。在这里,LED将连接到IoT平台,因此它可以从设备收集数据并发送命令以通过Internet打开和关闭它。
步骤4:读取LED状态
在输入抽屉中,选择 gpio 节点并将其拖放到画布上。双击它并指定:
电路板:您在第1部分中配置的电路板。
类型:数字(0/1)。
引脚:我使用了引脚6。
名称:ReadLED。
步骤5:形成Watson IoT的消息
Watson IoT期望一个非常特殊的消息。基本上,您需要从有效负载中读取LED的状态,并将其分配给Watson IoT期望的属性,这是JSON消息中的d属性。
为此,请使用 功能抽屉中的“功能”节点,然后在其中输入以下代码(不要忘记双击它)。
var ledState = msg.payload;
msg.payload = {
“d”: {
“led_state”: ledState
}
};
return msg;
现在
步骤6:将数据发送到IoT
选择 Watson IoT 从 Output 抽屉中将其拖放到画布上。双击它。
在将数据发送到IoT平台之前,您需要配置连接。为此,请点击凭据字段中的铅笔图标。在生成的表单中,输入本教程的 Watson IoT应用程序部分中创建设备时获得的凭据的信息。
一旦配置了凭据,请指定其余字段:
连接为:设备
已注册:应选择已注册的无线电
凭据:您刚刚配置的凭据
事件类型:事件
格式:json
单击完成,连接功能和该节点并部署更改。如果一切配置正确,ReadLED(如上图)和Watson IoT节点都将有一个指示灯,指示它们已正确连接。
步骤7:从IoT读取命令
现在将LED数据发送到IoT平台。但是,尚无法从Internet对其进行操作。基本上,它只是数据源,没有采取任何措施。现在可以从Internet读取状态并将其反映在LED上。这就是命令。
在输入抽屉中,找到 Watson IoT 节点并将其拖放到画布上。双击它并指定以下内容:
连接为:设备
凭据:您刚刚使用的凭据配置
命令:闪烁
保存节点。
步骤8:格式化传入消息
由于来自Watson IoT的传入消息具有特定格式,因此您需要提取要反映在物理LED中的状态。从 Functions 抽屉中拖放 function 节点,然后输入以下代码。
var ledState = msg.payload.d.led_state;
msg.payload = ledState;
return msg;
连接两个节点。最后,将功能节点与在本教程的第1部分中创建的LED节点连接起来。
最后,如果您遵循第1部分和第2部分中的这一部分,那么Edison中的流程应类似于此步骤中的图像。此图像的前两行节点已在第1部分中完成,而最后一行已在本节中完成。
步骤9:从IoT读取和控制设备
一旦设备通过Edison中的Node-Red连接到Watson IoT平台,就该在Bluemix应用程序中创建流以接收该信息并将命令发送到打开和关闭LED。这将使用与第1部分中使用的HTTP请求非常相似的HTTP请求来完成。
首先,您需要在Bluemix中启动Node-Red应用程序。为此,请转到Bluemix仪表板,然后在所有应用程序中单击应用程序的 Route 。出现的页面上有一个大按钮,显示转到您的Node-RED流编辑器。单击它,Node-Red编辑器将准备就绪,可以开始创建流了。
步骤10:读取数据
这是一项琐碎的任务在Watson IoT节点中已经预先安装了Watson IoT节点,因此可以在Bluemix中使用。就像从 Input 抽屉中添加 Watson IoT 节点并指定以下属性一样简单:
身份验证:Bluemix服务
输入:设备事件
设备类型:您在凭证中使用的那个。
设备ID :您在凭据中使用的设备
事件:+
Format :json
我将此节点连接到 debug 节点,只是为了在 Debug 窗格,但是通常的想法是,当设备将数据发送到IoT实例时,您应该适当地对待它,可能会向移动设备或电子邮件发送通知,或者可能会向连接到IoT的设备触发命令。
步骤11:HTTP请求
在Node-Red的 Input 抽屉中,选择 HTTP 节点,将其拖放到画布上。双击画布中的节点并指定以下参数:
方法:GET
URL :/led/:state
步骤12:从HTTP请求中提取操作
您可以在上面的URL中看到,操作作为URL的最后一部分传递。因此,我们需要提取它。 Node-Red使您可以使用标准Express API从请求中获取变量。
从 Function 抽屉中选择 function 节点并拖动并将其拖放到画布上。双击并放置以下JavaScript代码。
if (msg.req.path == “/led/on”) {
msg.payload = 1;
msg.httpMsg = “On”
} else if (msg.req.path == “/led/off”) {
msg.payload = 0;
msg.httpMsg = “Off”
} else {
msg = null;
}
return msg;
输入代码后,单击完成并连接两个节点。
步骤13:将命令发送到设备
消息正确形成后,您可以将该命令发送到设备。从“输出”抽屉中拖放一个Watson IoT节点,然后双击它。指定以下内容:
身份验证:Bluemix服务
输出类型:设备命令
设备类型:您凭据中的一个
设备ID :您凭据中的一个
命令 类型:闪烁
格式:json
数据:{“ d” :{“错误”:“有错误”}}
单击完成并将功能连接到该节点。
注意 Data 属性正在使用形成的JSON消息。只要其中具有 d 属性,该消息就会被替换。基本上是在说如果在消息中没有找到 d 属性,然后将错误消息发送到设备。在功能节点中,我们确保消息中存在该属性。
步骤14:发回响应
因为此请求是通过以下方式发起的:一个HTTP请求,您必须以HTTP响应完成它。为此,在 Output 抽屉中选择一个 HTTP Response 节点并将其拖放到画布上。将该节点连接到先前创建的功能以形成客户端消息。
单击部署以使流程栩栩如生。
第15步:测试流程
现在已经创建了流程,您可以使用网站了浏览器或处理HTTP请求(例如cURL或WGET)的任何其他程序来对其进行测试。
打开Web浏览器并使用这两个URL之一。就我而言,我的Bluemix应用程序的地址是https://vsiotll.mybluemix.net
https://vsiotll.mybluemix.net/led/on
https://vsiotll.mybluemix.net/led/off
注意:随着我将自己的空间用于自己的空间,此网址很快就会消失教育目的。
第16步:结论
使用适当的平台和工具,可以带给您永久的价值。相对轻松地实现生活中任何疯狂的想法。今天,与硬件和软件进行交互非常简单,此外,构建有趣的东西可以帮助您使生活更轻松:也许是一种能够感应到植物的水分或湿度,然后在需要时浇水的设备,或者是一种宠物饲养设备,单击移动设备中的按钮即可触发。可能性是无止境的!
您应该牢记的一件重要事情是:安全是一个大话题,永远不可低估。这是诸如IBM Watson IoT之类的平台帮助您保护和管理设备的机会。
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !