随着物联网(IoT)技术的快速发展,越来越多的开发者开始使用Intel® Galileo和Intel® Edison等开发板来创建创新的解决方案。本文将介绍如何创建一个Bluemix应用,注册设备,使用Node-RED流编辑器设置触发器,以及使用Rickshaw JS可视化数据。
创建Bluemix应用
首先,需要在IBM Cloud上创建一个应用。这可以通过以下步骤完成:
- 登录到Bluemix控制台:。
- 登录后,将看到DASHBOARD视图。
- 点击"CREATE APP"。
- 选择"WEB"。
- 选择"Browse Boilerplates"选项,然后点击"BROWSE BOILERPLATES"。
- 从可用的模板中选择"Internet of Things Starter"。
- 为应用命名,然后点击"CREATE"。
- 等待应用完成部署。完成后,会显示"Your app is running"的消息。
- 应用创建后,从应用的仪表盘中找到并点击"ADD A SERVICE OR API"。
- 将看到一个服务列表。在页面顶部的搜索栏中输入"Internet of Things"。
- 从显示的列表中选择"Internet of Things Service"。
- 一个窗口会弹出,显示自动生成的名称。可以保留它,也可以根据需要重命名。
- 点击"CREATE"。
- 服务创建后,会弹出一个窗口请求重新部署应用。点击"RESTAGE"。
- 等待应用完成部署。完成后,会显示"Your app is running"的消息。
获取Intel® Edison设备的设备ID
为了与Bluemix云通信,需要获取Intel® Edison设备的设备ID。这可以通过以下步骤完成:
- 创建一个名为"ibm-iotf"的文件夹。
- 切换到"ibm-iotf"目录。
- 使用putty在开发板上安装MQTT。运行:
$npm install mqtt
- 安装getmac node包,以获取Edison设备的MAC地址。运行:
$npm install getmac
- 创建文件
index.js
。
- 打开
index.js
文件,并为模块mqtt和getmac创建node引用变量。
- 使用getmac模块提供的
getMac
函数打印MAC地址。
- 注意:使用MAC地址作为设备ID。
- 保存文件并运行
index.js
。
- 复制控制台上打印的设备ID/MAC地址。
注册Intel® Edison设备
为了与Bluemix云通信,需要注册设备。这可以通过以下步骤完成:
- 访问并从左侧面板中打开创建的应用。
- 从应用的仪表盘中找到并点击"Internet of Things service"。
- 将被重定向到"Internet of Things Foundation"主页。
- 点击"Launch Dashboard"。仪表板将在新页面中打开。
- 找到并点击"+ Add a device"。
- 一个窗口会弹出,标题为"Add Device"。点击"Create device type"以定义Edison设备的类型。
- 输入"edison"作为名称,然后点击右下角的"Next"。
- 继续点击"Next",直到看到"Create Device Type"。点击"Create"。
- 将返回到"Add Device"页面。点击"Next"。
- 复制上一步中获得的设备ID/MAC地址,并粘贴到"Device ID"字段中。
- 继续点击"Next",直到看到"Add Device"。点击"Add"。
- 将设备凭据保存到文件中,作为
config.json
,将使用它将数据发送到云。
向IBM Cloud发送数据
确保ibm-iotf
文件夹中包含config.json
和index.js
文件。它应该包含以下格式的值:
{
"org": "organization name",
"port": "port number (1883 fixed)",
"type": "device type",
"id": "device id",
"auth-method": "Authentication type",
"password": "Authentication token",
"username": "Username (use-token-auth)"
}
打开index.js
文件,并执行以下步骤:
- 创建一个变量
host
来存储主机名。
- 创建一个变量
clientId
来存储客户端ID,它是组织、设备类型和设备ID的组合。
- 创建一个变量
topic_pub
来存储发布数据的主题。
- 创建一个变量
client
,通过调用MQTT API mqtt.connect
并提供所需的参数。
- 创建一个函数
sendMessage
来发布数据到IBM Cloud。
- 使用JavaScript内置函数
setInterval
定期调用上述函数sendMessage
,当与IBM Cloud建立连接时。
- 运行应用程序。
- 访问并启动"Internet of Things"仪表板。
- 在仪表板上,转到"DEVICES"标签并点击设备。
- 一个弹出窗口将打开,可以查看接收到的事件消息。
创建API密钥
IBM提供了一个接口,用于使用NODE-RED流编辑器响应实时事件或数据。为了实现一个处理设备生成的实时事件的Node-RED应用程序,需要生成一个API密钥来访问设备生成的数据。这可以通过以下步骤完成:
- 从IoT组织仪表板转到"ACCESS"标签并点击"API Keys"。
- 点击"Generate API Key"。
- 复制并保存访问密钥,将在NODE-RED流编辑器中使用它来访问数据。
创建触发器
- 从应用的仪表盘中找到并点击路由。
- 点击红色按钮,进入Node-REDbluemix流编辑器。
- 双击"IBM IoT App In"并更改身份验证为API密钥。
- 点击API密钥旁边的编辑图标。
- 在弹出窗口中,输入名称为"API"。输入生成API密钥部分获得的API密钥和令牌。点击"Add"。
- 输入设备类型、设备ID和格式的值,留下事件字段。点击"Ok"。
- 双击"temp threshold"并更改值从40到70。
- 从左侧面板拖放"ibmiot output node"。
- 双击输出节点。在编辑弹出窗口中,选择与输入节点相同的API密钥,选择输出类型为"Device Command"并填写其余字段。点击"OK"。
- 现在将这个ibm输出节点连接到"danger template"。
- 双击"danger template",更改为JSON并更新模板。
- 点击右上角的"Deploy"。
- 如果没有错误,可以选择设备数据或CPU状态节点,在调试控制台上查看消息。
订阅触发器
- 创建一个变量
topic_sub
来存储订阅的主题。
- 在与IBM建立连接时订阅主题。在
on connect
中添加订阅函数。
- 在接收到消息时,将消息记录到控制台。