Quantcast
Channel: 英特尔开发人员专区文章
Viewing all articles
Browse latest Browse all 583

将英特尔® Edison 开发板连接至 IBM IoT Foundation

$
0
0

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

使用 IoTF 入门样板文件创建 Bluemix 应用

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

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

   3. 点击 "CREATE APP"。

new.png

   4. 选择 "WEB"。

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

   6. 从可用样本文件中选择 "Internet of Things Starter"。

         IOTF.png

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

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

   9. 当 IBM Cloud 创建应用后,从应用的指示板上找到并点击 "ADD A SERVICE OR API"。

add-service.png

   10.  您可以看到可用服务清单。 在页面上方显示的搜索框中输入物联网。

search-service.png

   11. 从显示的服务列表中选择 "Internet of Things Service"。

iotf-service.png

   12.  屏幕上弹出带有自动生成的名称的窗口。 您可以保留该名称,也可以按照自己的需要对其重新命名。

iotf-create.png

   13. 点击 "CREATE"。

   14.  创建服务后,将会显示一个弹出窗口,要求重新显示您的应用。 点击 "RESTAGE"。

iotf-restage.png

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

iotf-running.png

获取英特尔® Edison 设备的 ID

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

  2. 更改至目录 ibm-iotf。

  3. 使用 putty 将 MQTT 安装到主板上。 运行:

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

    $npm install getmac

     

  5. 创建文件 index.js。

    $vi index.js
  6. 打开 index.js 文件,为模块 mqtt 和 getmac 创建节点参考变量。

    var mqtt = require('mqtt'); var getmac= require('getmac');
  7. 使用 getmac 模块提供的 getMac 函数打印 MAC 地址。
    getmac.getMac(function(err, macAddress) { if (err) throw err; var deviceId = macAddress.toString().replace(/:/g, '').toLowerCase(); console.log("Device ID: " + deviceId); }); 注: 我们使用 MAC 地址作为设备 ID。
  8. 保存文件并运行 index.js。
    $node index.js
  9. 复制控制台上印出的设备 ID/ MAC 地址。

注册英特尔® Edison 设备

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

   1. 访问 console.ng.bluemix.net,从左侧面板打开创建的应用。
        从应用的指示板上找到并点击 "Internet of Things service"。

iotf-launch.png

   2.  您将被重新导航至 "Internet of Things Foundation"主页,页面如下

iotf-page.png

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

   4. 查找并点击 +,添加设备。

iotf-add.png

   5.  屏幕上弹出 "Add Device "窗口。 点击 "Create device type",为您的 Edison 设备定义类型。

iotf-type.png

   6. 输入 edison 作为名称,并点击页面右下方的 Next (下一步)。

iotf-next.png

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

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

   9. 复制上一步中获取的设备 ID 或者 Mac 地址并粘贴到 设备 ID 字段。

iotf-id.png

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

   11.  将您的设备证书作为 config.json 保存到一个文件中,后续您需要使用它向云发送数据。

iotf-info.png

向 IBM Cloud 发送数据

   1.  确保将 config.json 文件存放在 ibm-iotf along 文件夹中,与 index.js 存放在一起。 它应显示为以下格式,并包含您在上一步中获取的值。

Screen Shot 2015-10-11 at 11.30.45 PM.png

org - 组织名称

port - 端口编号(1883 固定)

type - 设备类型

id - 设备 ID

auth-method - 身份验证类型

password - 身份验证口令

username - 用户名 (use-token-auth)

   2.  打开 index.js 文件。

   3.  创建变量主机以存储主机名。

var host = config.org + ".messaging.internetofthings.ibmcloud.com";

   4. 创建一个变量 clientId,存储客户端 ID,其中包括组织、设备类型和设备 ID。

var clientId = "d:" + config.org + ":" + config.type + ":" + config.id;

   5. 创建一个变量 topic_pub,以存储发布数据的主题。

var topic_pub = "iot-2/evt/status/fmt/json"; status - event type json - data format

   6. 通过调用包含所需参数的 mqtt API mqtt.connect 创建一个变量客户端。

var client = mqtt.connect( { host: host, port: config.port, username: config.username, password : config.password, clientId : clientId });

   7.  创建函数 sendMessage,向 IBM Cloud 发布数据。

function sendMessage(){ // Generates a random value, you can use the actual sensor value. var value = Math.floor((Math.random() * 30) + 60); var message = { "d" : { "value" : value, } }; client.publish(topic_pub, JSON.stringify(message)); }

   8. 与 IBM Cloud 建立连接后,使用 JavaScript 内建函数 setInterval 定期调用上述函数。

client.on('connect', function () { console.log('Connected to IBM'); setInterval(sendMessage, 1000); });

   9.  运行该应用。

$node index.js

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

   11. 在指示板上,访问 "DEVICES"选项卡,并点击您的设备。

Screen Shot 2015-10-11 at 11.19.20 PM.png

   12.  打开弹出窗口,您可以查看到消息接收为事件。

Screen Shot 2015-10-11 at 11.18.29 PM.png

 

创建 API 密钥

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

   1.  从您的物联网组织指示板上,访问 "ACCESS"选项卡并点击 "API Keys"。

Screen Shot 2015-10-12 at 12.08.41 AM.png

   2.  点击 "Generate API Key"。

Screen Shot 2015-10-12 at 12.21.31 AM.png

   3.  复制并保存访问密钥,您需要使用它在 NODE-RED 流程编辑器中访问数据。

Screen Shot 2015-10-12 at 12.27.01 AM.png

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

 

创建触发器。

   1.  从应用的指示板上找到并点击路线。

Screen Shot 2015-10-12 at 2.17.10 AM.png

   2.  点击红色按钮,访问 Node-RED bluemix 流程编辑器。

Screen Shot 2015-10-12 at 2.24.27 AM.png

   3. 双击 "IBM IoT App In",并将身份验证更改为 API 密钥。

Screen Shot 2015-10-12 at 2.28.00 AM.png

   4.  点击 API 密钥旁边的编辑图标。

Screen Shot 2015-10-12 at 2.38.51 AM.png

   5.  在弹出窗口中,输入作为 API 的名称。 输入从 “Generate API Key” 部分获取的 API 密钥和口令。 点击 "Add"。

Screen Shot 2015-10-12 at 2.37.10 AM.png

   6.  输入设备类型、设备 ID 和格式的值,留出事件的字段。 点击 "Ok"。

Screen Shot 2015-10-12 at 2.48.46 AM.png

   8.  双击温度阈值,将值更改为 40 至 70。

   9.  从左侧面板拖放 ibmiot 输出节点。

Screen Shot 2015-10-12 at 3.05.32 AM.png

   10.  双击输出节点。 在编辑弹出窗口中,选择输入节点使用的 API 密钥,选择 "Output Type"作为设备命令,并填写其他字段。 点击 OK。

Screen Shot 2015-10-12 at 3.13.38 AM.png

   11.  现在,将此 ibm 输出节点连接到危险模板。

Screen Shot 2015-10-12 at 3.31.25 AM.png

   12.  双击危险模板,将其更改为 JSON 并更新模板。

Screen Shot 2015-10-12 at 3.31.08 AM.png

   13.  点击右上角的 "Deploy"。

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

订阅触发器

  1. 打开 index.js 文件并创建一个变量 topic_sub 存储要订阅的主题。

    var topic_sub = "iot-2/cmd/trigger/fmt/json";
  2. 订阅与 IBM 连接的主题。 在 onConnect 内添加一个订阅函数。

    client.on('connect', function () { client.subscribe(topic_sub); console.log('Connected to IBM'); setInterval(sendMessage, 1000); });
  3. 收到后,将消息记录到控制台上。

    client.on('message', function(topic, message) { console.log(JSON.parse(message)); });

更多资源

 

 


Viewing all articles
Browse latest Browse all 583

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>