使用Intel® Edison与IBM Cloud创建物联网应用

随着物联网(IoT)技术的快速发展,越来越多的开发者开始使用Intel® Galileo和Intel® Edison等开发板来创建创新的解决方案。本文将介绍如何创建一个Bluemix应用,注册设备,使用Node-RED流编辑器设置触发器,以及使用Rickshaw JS可视化数据。

创建Bluemix应用

首先,需要在IBM Cloud上创建一个应用。这可以通过以下步骤完成:

  1. 登录到Bluemix控制台:。
  2. 登录后,将看到DASHBOARD视图。
  3. 点击"CREATE APP"。
  4. 选择"WEB"。
  5. 选择"Browse Boilerplates"选项,然后点击"BROWSE BOILERPLATES"。
  6. 从可用的模板中选择"Internet of Things Starter"。
  7. 为应用命名,然后点击"CREATE"。
  8. 等待应用完成部署。完成后,会显示"Your app is running"的消息。
  9. 应用创建后,从应用的仪表盘中找到并点击"ADD A SERVICE OR API"。
  10. 将看到一个服务列表。在页面顶部的搜索栏中输入"Internet of Things"。
  11. 从显示的列表中选择"Internet of Things Service"。
  12. 一个窗口会弹出,显示自动生成的名称。可以保留它,也可以根据需要重命名。
  13. 点击"CREATE"。
  14. 服务创建后,会弹出一个窗口请求重新部署应用。点击"RESTAGE"。
  15. 等待应用完成部署。完成后,会显示"Your app is running"的消息。

获取Intel® Edison设备的设备ID

为了与Bluemix云通信,需要获取Intel® Edison设备的设备ID。这可以通过以下步骤完成:

  1. 创建一个名为"ibm-iotf"的文件夹。
  2. 切换到"ibm-iotf"目录。
  3. 使用putty在开发板上安装MQTT。运行:$npm install mqtt
  4. 安装getmac node包,以获取Edison设备的MAC地址。运行:$npm install getmac
  5. 创建文件index.js
  6. 打开index.js文件,并为模块mqtt和getmac创建node引用变量。
  7. 使用getmac模块提供的getMac函数打印MAC地址。
  8. 注意:使用MAC地址作为设备ID。
  9. 保存文件并运行index.js
  10. 复制控制台上打印的设备ID/MAC地址。

注册Intel® Edison设备

为了与Bluemix云通信,需要注册设备。这可以通过以下步骤完成:

  1. 访问并从左侧面板中打开创建的应用。
  2. 从应用的仪表盘中找到并点击"Internet of Things service"。
  3. 将被重定向到"Internet of Things Foundation"主页。
  4. 点击"Launch Dashboard"。仪表板将在新页面中打开。
  5. 找到并点击"+ Add a device"。
  6. 一个窗口会弹出,标题为"Add Device"。点击"Create device type"以定义Edison设备的类型。
  7. 输入"edison"作为名称,然后点击右下角的"Next"。
  8. 继续点击"Next",直到看到"Create Device Type"。点击"Create"。
  9. 将返回到"Add Device"页面。点击"Next"。
  10. 复制上一步中获得的设备ID/MAC地址,并粘贴到"Device ID"字段中。
  11. 继续点击"Next",直到看到"Add Device"。点击"Add"。
  12. 将设备凭据保存到文件中,作为config.json,将使用它将数据发送到云。

向IBM Cloud发送数据

确保ibm-iotf文件夹中包含config.jsonindex.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文件,并执行以下步骤:

  1. 创建一个变量host来存储主机名。
  2. 创建一个变量clientId来存储客户端ID,它是组织、设备类型和设备ID的组合。
  3. 创建一个变量topic_pub来存储发布数据的主题。
  4. 创建一个变量client,通过调用MQTT API mqtt.connect并提供所需的参数。
  5. 创建一个函数sendMessage来发布数据到IBM Cloud。
  6. 使用JavaScript内置函数setInterval定期调用上述函数sendMessage,当与IBM Cloud建立连接时。
  7. 运行应用程序。
  8. 访问并启动"Internet of Things"仪表板。
  9. 在仪表板上,转到"DEVICES"标签并点击设备。
  10. 一个弹出窗口将打开,可以查看接收到的事件消息。

创建API密钥

IBM提供了一个接口,用于使用NODE-RED流编辑器响应实时事件或数据。为了实现一个处理设备生成的实时事件的Node-RED应用程序,需要生成一个API密钥来访问设备生成的数据。这可以通过以下步骤完成:

  1. 从IoT组织仪表板转到"ACCESS"标签并点击"API Keys"。
  2. 点击"Generate API Key"。
  3. 复制并保存访问密钥,将在NODE-RED流编辑器中使用它来访问数据。

创建触发器

  1. 从应用的仪表盘中找到并点击路由。
  2. 点击红色按钮,进入Node-REDbluemix流编辑器。
  3. 双击"IBM IoT App In"并更改身份验证为API密钥。
  4. 点击API密钥旁边的编辑图标。
  5. 在弹出窗口中,输入名称为"API"。输入生成API密钥部分获得的API密钥和令牌。点击"Add"。
  6. 输入设备类型、设备ID和格式的值,留下事件字段。点击"Ok"。
  7. 双击"temp threshold"并更改值从40到70。
  8. 从左侧面板拖放"ibmiot output node"。
  9. 双击输出节点。在编辑弹出窗口中,选择与输入节点相同的API密钥,选择输出类型为"Device Command"并填写其余字段。点击"OK"。
  10. 现在将这个ibm输出节点连接到"danger template"。
  11. 双击"danger template",更改为JSON并更新模板。
  12. 点击右上角的"Deploy"。
  13. 如果没有错误,可以选择设备数据或CPU状态节点,在调试控制台上查看消息。

订阅触发器

  1. 创建一个变量topic_sub来存储订阅的主题。
  2. 在与IBM建立连接时订阅主题。在on connect中添加订阅函数。
  3. 在接收到消息时,将消息记录到控制台。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485