跳转到主要内容

将英特尔® EDISON 开发板连接至 IBM IOT FOUNDATION

editor 提交于

本文讨论了使用 NodeRED 流程编辑器创建 Bluemix 应用、注册设备和设置触发器,以及使用 Rickshaw JS 视觉化数据。

<strong>使用 IoTF 入门样板文件创建 Bluemix 应用</strong>

1、登录 Bluemix 控制台。 访问 console.ng.bluemix.net 并选择 "LOG IN"。

2、登录后,您将进入 "DASHBOARD " 视图。

3、点击 "CREATE APP"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1140-create…; alt=""></center>

4、选择 "WEB"。

5、S选择 "Browse Boilerplates" 选项,然后点击 "BROWSE BOILERPLATES"。

6、从可用样本文件中选择 "Internet of Things Starter"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1141-iot-fo…; alt=""></center>

7、命名应用…,然后点击 "CREATE"。

8、等待您的应用完成创建。 完成后,将会显示一条消息 "Your app is running"

9、当 IBM Cloud 创建应用后,从应用的指示板上找到并点击 "ADD A SERVICE OR API"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1142-add-se…; alt=""></center>

10、您可以看到可用服务清单。 在页面上方显示的搜索框中输入物联网。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1143-search…; alt=""></center>

11、从显示的服务列表中选择 "Internet of Things Service"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1144-iotf-s…; alt=""></center>

12、屏幕上弹出带有自动生成的名称的窗口。 您可以保留该名称,也可以按照自己的需要对其重新命名。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1145-iotf-c…; alt=""></center>

13、点击 "CREATE"。

14、创建服务后,将会显示一个弹出窗口,要求重新显示您的应用。 点击 "RESTAGE"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1146-iotf-r…; alt=""></center>

15、等待您的应用完成创建。 完成后,将会显示一条消息 "Your app is running"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1147-iotf-r…; alt=""></center>

<strong>获取英特尔® Edison 设备的 ID</strong>

1、创建一个名为 ibm-iotf 的文件夹。

2、更改至目录 ibm-iotf。

3、使用 putty 将 MQTT 安装到主板上。 运行:
1 $npm install mqtt

4、安装 getmac 节点包,获取 Edison 设备的 mac 地址
1 $npm install getmac

5、创建文件 index.js。
1 $vi index.js

6、打开 index.js 文件,为模块 mqtt 和 getmac 创建节点参考变量。
1 var mqtt = require('mqtt');
2 var getmac= require('getmac');

7、使用 getmac 模块提供的 getMac 函数打印 MAC 地址。
1 getmac.getMac(function(err, macAddress) {
2 if (err) throw err;
3 var deviceId = macAddress.toString().replace(/:/g, '').toLowerCase();
4 console.log("Device ID: " + deviceId);
5 });
6 <span>注: 我们使用 MAC 地址作为设备 ID。</span>

8、保存文件并运行 index.js。
1 $node index.js

9、复制控制台上印出的设备 ID/ MAC 地址。

<strong>注册英特尔® Edison 设备</strong>

您需要注册设备方可与 Bluemix 云进行通信。

1、访问 console.ng.bluemix.net,从左侧面板打开创建的应用。从应用的指示板上找到并点击 "Internet of Things service"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1148-iotf-l…; alt=""></center>

2、您将被重新导航至 "Internet of Things Foundation" 主页,页面如下
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1149-iotf-p…; alt=""></center>

3、点击 "Launch Dashboard"。 指示板在新页面中打开。

4、查找并点击 +,添加设备。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1170-iotf-a…; alt=""></center>

5、屏幕上弹出 "Add Device " 窗口。 点击 "Create device type",为您的 Edison 设备定义类型。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1150-iotf-t…; alt=""></center>

6、输入 edison 作为名称,并点击页面右下方的 Next (下一步)。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1151-iotf-n…; alt=""></center>

7、点击以下页面中的 "Next",直至看到 "Create Device Type"。 点击 "Create"。

8、您将返回 "Add Device" 页面。 点击 "Next"。

9、复制上一步中获取的设备 ID 或者 Mac 地址并粘贴到 设备 ID 字段。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1152-iotf-i…; alt=""></center>

10、点击"Next",直至您看到 "Add Device"。 点击 "Add"。

11、将您的设备证书作为 config.json 保存到一个文件中,后续您需要使用它向云发送数据。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1153-iotf-i…; alt=""></center>

<strong>向 IBM Cloud 发送数据</strong>

1、确保将 config.json 文件存放在 ibm-iotf along 文件夹中,与 index.js 存放在一起。 它应显示为以下格式,并包含您在上一步中获取的值。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1154-send-d…; alt=""></center>
org - 组织名称
port - 端口编号(1883 固定)
type - 设备类型
id - 设备 ID
auth-method - 身份验证类型
username - 用户名 (use-token-auth)

2、打开 index.js 文件。

3、创建变量主机以存储主机名。
1 var host = config.org + ".messaging.internetofthings.ibmcloud.com";

4、创建一个变量 clientId,存储客户端 ID,其中包括组织、设备类型和设备 ID。
1 var clientId = "d:" + config.org + ":" + config.type + ":" + config.id;

5、创建一个变量 topic_pub,以存储发布数据的主题。
1 var topic_pub = "iot-2/evt/status/fmt/json";
2 status - event type
3 json - data format

6、通过调用包含所需参数的 mqtt API mqtt.connect 创建一个变量客户端。
1 var client = mqtt.connect(
2 {
3 host: host,
4 port: config.port,
5 username: config.username,
6 password : config.password,
7 clientId : clientId
8 });

7、创建函数 sendMessage,向 IBM Cloud 发布数据。
01 function sendMessage(){
02 // Generates a random value, you can use the actual sensor value.
03 var value = Math.floor((Math.random() * 30) + 60);
04 var message = {
05 "d" : {
06 "value" : value,
07 }
08 };
09 client.publish(topic_pub, JSON.stringify(message));
10 }

8、与 IBM Cloud 建立连接后,使用 JavaScript 内建函数 setInterval 定期调用上述函数。
1 client.on('connect', function () {
2 console.log('Connected to IBM');
3 setInterval(sendMessage, 1000);
4 });

9、运行该应用。
1 $node index.js

10、访问 console.ng.bluemix.net,启动物联网指示板。 请参考 “Register your Edison Device” 部分,了解如何启动指示板。

11、在指示板上,访问 "DEVICES" 选项卡,并点击您的设备。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1155-dashbo…; alt=""></center>

12、打开弹出窗口,您可以查看到消息接收为事件。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1156-recent…; alt=""></center>

<strong>创建 API 密钥</strong>

IBM 提供了一种接口,可使用 NODE-RED 流程编辑器响应实时事件或数据。 如要实施 Node-RED 应用,处理物联网组织的设备中的实时事件,您需要生成 API 密钥,以访问设备生成的数据。

1、从您的物联网组织指示板上,访问 "ACCESS" 选项卡并点击 "API Keys"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1157-organi…; alt=""></center>

2、点击 "Generate API Key"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1158-genera…; alt=""></center>

3、复制并保存访问密钥,您需要使用它在 NODE-RED 流程编辑器中访问数据。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1159-save-a…; alt=""></center>

4、注: 您仅可查看其一次,但是可以创建多个密钥。

<strong>创建触发器。</trong>

1、从应用的指示板上找到并点击路线。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1160-iot-wo…; alt=""></center>

2、点击红色按钮,访问 Node-RED bluemix 流程编辑器。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1161-node-r…; alt=""></center>

3、双击 "IBM IoT App In",并将身份验证更改为 API 密钥。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1162-ibm-io…; alt=""></center>

4、点击 API 密钥旁边的编辑图标。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1163-edit-i…; alt=""></center>

5、在弹出窗口中,输入作为 API 的名称。 输入从 “Generate API Key” 部分获取的 API 密钥和口令。 点击 "Add"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1164-add-ne…; alt=""></center>

6、输入设备类型、设备 ID 和格式的值,留出事件的字段。 点击 "Ok"。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1165-enter-…; alt=""></center>

7、双击温度阈值,将值更改为 40 至 70。

8、从左侧面板拖放 ibmiot 输出节点。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1166-drag-d…; alt=""></center>

9、双击输出节点。 在编辑弹出窗口中,选择输入节点使用的 API 密钥,选择 "Output Type" 作为设备命令,并填写其他字段。 点击 OK。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1167-edit-i…; alt=""></center>

10、现在,将此 IBM 输出节点连接到危险模板。br>
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1168-connec…; alt=""></center>

11、双击危险模板,将其更改为 JSON 并更新模板。
<center><img src="http://intel.eetrend.com/files/2016-03/wen_zhang_/100001251-1169-danger…; alt=""></center>

12、点击右上角的 "Deploy"。

13、如果没有错误,您可以选择设备数据或 CPU 状态节点,查看调试控制台上的消息。

<strong>订阅触发器</strong>

1、打开 index.js 文件并创建一个变量 topic_sub 存储要订阅的主题。
1 var topic_sub = "iot-2/cmd/trigger/fmt/json";

2、订阅与 IBM 连接的主题。 在 onConnect 内添加一个订阅函数。
1 client.on('connect', function () {
2 client.subscribe(topic_sub);
3 console.log('Connected to IBM');
4 setInterval(sendMessage, 1000);
5 });

3、On receive, log the message to console.
1 client.on('message', function(topic, message) {
2 console.log(JSON.parse(message));
3 });

文章来源:
<a href="https://software.intel.com/zh-cn/articles/connect-to-ibm-iot-foundation…;英特尔开发人员专区