65.9K
CodeProject 正在变化。 阅读更多。
Home

Intel® IoT Developer Kit 基于云的分析

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2015年2月19日

CPOL

10分钟阅读

viewsIcon

9382

访问和使用 IoT 分析

获取全新的 Intel® 物联网开发者套件,这是一个完整的软硬件解决方案,让开发者能够使用 Intel® Galileo 和 Intel® Edison 板卡创建令人兴奋的新解决方案。请访问 Intel® 物联网开发者专区

物联网分析:登录和账户创建

要开始使用物联网分析云站点,请创建一个新的管理员用户账户,该账户将能够注册设备、管理警报、创建账户以及在该站点上执行其他任务。

前往 物联网分析仪表盘网站。图 1 显示了将显示的登录屏幕。

图 2. 在物联网分析站点上创建账户

您可以选择使用 Facebook、Google+ 或 GitHub 身份验证,也可以使用电子邮件地址和密码创建一个本地账户。如果您单击在此处注册,将出现创建用户页面(参见图 2)。

图 3. 创建新用户

创建用户屏幕需要一个有效的电子邮件地址(用于发送激活链接以完成账户创建)和一个用户提供的密码。请阅读服务条款,如果您同意,请勾选我同意使用条款复选框,然后单击创建

用户登录创建后,系统将提示您创建一个账户名称(参见图 3)。

图 4. 创建新账户

登录后,此名称将显示在站点上。成功通过身份验证后,将显示我的仪表盘页面(参见图 4)。

图 5. 用户仪表盘和导航页面

我的仪表盘提供对所有系统功能的访问,包括设备数量、过去一小时收到的观测数量以及“健康”设备的百分比(意味着它们最近传输过数据)。您可以自定义下部区域以显示“收藏”图表,其中包含来自特定设备的特定时间序列图表。这将在用户手册中有更详细的描述。

账户管理

您在 物联网分析站点上创建的每个账户都是一个独立的工作区。您可以从我的账户页面(参见图 5)管理这些账户。

图 6. 账户管理

在此页面上,您可以查看账户详细信息,邀请其他用户参与分析站点(通过注册他们的电子邮件地址)并管理组件类型目录。

组件类型是定义您的设备将使用的时间序列和执行器的模板。请注意,目录中已包含一个名为“temperature.v1.0”的组件类型,我们将在接下来的示例中使用它。这定义了一个时间序列,其中每个观测值都是一个浮点数,并且度量单位是“摄氏度”。

物联网套件代理

物联网分析站点支持 REST 接口,这使得编写运行在设备上的客户端软件并将观测值发送到云端成为可能。但是,为了简化此过程,还有一个代理。该代理作为守护进程在设备上运行,监听来自其他进程的简单消息,并处理必要的消息格式化和安全性,以便将观测值发送到云端。代理附带另一个程序 iotkit-admin,它提供了许多实用功能,例如测试网络、激活设备、注册时间序列以及发送测试观测值。

接下来的步骤取决于 iotkit-agent 和 iotkit-admin 程序是否已预装

带有预装代理的 Galileo 和 Edison 设备

如果您有 Galileo 或 Edison,可以通过在 shell 中键入以下命令来检查 iotkit-agent 和 iotkit-admin 是否已预装

iotkit-admin

如果出现“Usage: iotkit-admin …”,则表示该程序已预装。这意味着

  • 您无需安装 Node.js、npm 或代理代码。
  • 这些程序已在路径中,您可以从任何目录运行它们。
  • 您无需为程序名称添加“.js”后缀。例如,您可以键入“iotkit-admin”,而不是“iotkit-admin.js”(不带引号)。
  • 代理由 systemd 服务管理器 systemctl 控制。

如果是这种情况,请在 shell 中键入以下命令来停止代理。稍后我们将重新启动它。

systemctl stop iotkit-agent

代理未预装

  • 您可能需要先安装 Node.js 和 npm。请参阅 Node.js 网站了解说明。
  • 您需要安装代理及其依赖项。为此,请“cd”到您希望安装代理的目录并键入
    npm install iotkit-agent
    mv node_modules/iotkit-agent/ .
    rm –rf node_modules
  • 程序将不在您的路径中,因此您需要“cd”到 iotkit-agent 目录并在那里运行它们。
  • 您需要为所有命令加上前缀 ./(这是 Bash shell 指示从本地目录运行程序的标准方式),并包含“.js”后缀。例如,您必须键入“./iotkit-admin.js”,而不是“iotkit-admin”(不带引号)。
  • 从本地目录运行程序)。您可能还需要为脚本名称添加“.js”后缀。

网络测试

要测试网络连接,请从命令行运行以下命令

iotkit-admin test

此命令应生成以下消息

2014-11-10T21:50:54.062Z - info: Trying to connect to host ...
2014-11-10T21:50:54.570Z - info: Connected to dashboard.us.enableiot.com
2014-11-10T21:50:54.571Z - info: Environment: prod
2014-11-10T21:50:54.571Z - info: Build: 0.10.6

如果您尝试从防火墙(带代理服务器)连接,请将代理服务器添加到 iotkit-admin 配置中

iotkit-admin proxy http://proxy.company.com 8080

重复上述测试命令。如果您仍然遇到连接问题,在继续安装之前必须解决这些问题。

注意:这仅适用于 REST 协议。MQTT 不支持通过代理运行。

获取和更改设备 ID

您应该知道您的设备 ID,因为如果您有多个设备,您可能需要它来在设备列表中查找设备。您可以使用以下命令显示设备 ID

iotkit-admin device-id

如果需要,您可以通过运行以下命令来更改此设备 ID。

注意:更改 ID 不提供匿名性。设备 ID 应该是唯一的。源 TCP/IP 地址仍然可以被云服务器访问。

iotkit-admin set-device-id «device_id»

另外需要注意的是,设备激活步骤返回的安全令牌仅与激活时使用的设备 ID 一起使用。激活后不应更改设备 ID。

激活设备

要完成设备激活,您必须提供来自物联网分析账户详细信息页面(参见图 6)的特定账户激活码。

图 7. 我的账户代理激活码

该代码仅在 60 分钟内有效。之后,您必须通过单击图 6 中指示的按钮来重新生成代码。在激活设备时必须提供此代码

iotkit-admin activate «activation_code»

激活过程会在云端创建设备记录,将设备与账户(激活码来自该账户)关联,并为设备提供安全凭据。

图 8. 访问设备页面

将显示我的设备页面,您可以在其中看到新激活的设备。单击设备 ID(如图 8 所示)可查看设备的详细信息。

图 9. 我的设备页面和添加新设备对话框

传感器注册和数据提交

设备激活后,下一步是注册组件。组件是以下两类之一:从设备发送传感器观测值的时间序列,或允许向设备发送命令的执行器。例如,如果您想同时发送温度和湿度,您将注册两个组件。

您为设备引用的每个组件都必须引用账户目录中的“组件类型”。为什么需要组件类型?如果您在城市中有许多测量相同事物的设备,例如二氧化氮 (NO2) 含量,那么组件类型可以为您省去为每个设备反复定义时间序列详细信息的麻烦。相反,目录将包含一个氮氧化物组件类型,该类型将定义一个整数值时间序列,度量单位为“NO2 pphm”(十亿分之百)。度量单位在绘制时间序列图时会显示在 Y 轴上。

您可以从我的账户访问目录,如图 9 所示。

图 10. “我的账户”页面中的组件目录

每个账户都有三个默认组件:湿度、电源和温度。您也可以从“添加新目录项”对话框中添加新的组件类型。如果添加了新的组件类型,则必须在注册新组件之前重新启动本地代理。

您只需为每个组件(即时间序列)执行一次注册步骤——例如

iotkit-admin register temp temperature.v1.0

在这里,我们注册了一个引用目录中名为“temperature.v1.0”的组件类型的时间序列。在这里,我们创建了一个名为“temp”的别名,用于将温度观测值发送到代理。

您可以使用设备上的以下命令在目录中查找已注册的组件类型

iotkit-admin catalog

注意:在仪表盘中所做的任何目录更改,在代理重新启动或手动发出“sync”命令之前,都不会在本地反映出来。

组件注册后,就可以开始向物联网分析站点发送此组件的观测值了。有几种方法可以做到这一点,但为了测试一切是否正常,请运行观测命令将单个观测值发送到物联网分析站点

iotkit-admin observation temp 35
iotkit-admin observation temp 30

以上两个命令都会导致一个观测值被发送到物联网分析站点。“temp”别名表示这些观测值应添加到先前注册的“temp”时间序列中。

切换回网站,从导航窗格中选择图表,然后选择设备和组件,即可查看新发送的数据元素(图 10)。将鼠标悬停在线条的末端,即可查看具体值以及发送观测值的时间戳。

图 11. 选定设备和组件的图表

发送多个数据包

iotkit-admin observation 命令旨在方便测试,而不是用于连续数据捕获。还有另外两种将观测数据发送到物联网分析站点的方法:

  • 客户端可以使用记录在 https://github.com/enableiot/iotkit-agent/wiki/Api-Home 的 REST 接口与云端进行直接交互。
  • 客户端可以向本地代理发送用户数据报协议 (UDP) 数据包。代理将这些数据包转换为 REST 调用,并代表客户端发送请求。

本节将介绍如何使用代理。首先,代理必须正在运行。在预装了软件的 Galileo 或 Edison 上,您可以使用以下命令

systemctl start iotkit-agent

如果您自己安装了代理,只需打开一个终端窗口,“cd”到 iotkit-agent 目录,然后运行

./iotkit-agent.js

并保持其运行。打开第二个终端来运行以下命令。

您可以通过设备 localhost 的端口 41234 发送 UDP 格式的消息(例如 UDP://:41234)。首先,创建一个 JavaScript 对象表示法 (JSON) 格式的文档,其中键“n" 是时间序列的名称,而“v" 是值

{ "n": "<sensor name>", "v": "<value>" }

Examples:
{ "n": "temp", "v": 21.0 }
{ "n": "humidity", "v": 71.5}

大多数编程语言都可以传输此消息,但在 Mac OS X* 和 Linux* 上,请使用 nc 程序,如下所示

echo -n '{"n": "temp", "v": 21.0}' | nc -u -w1 127.0.0.1 41234

此命令将文档发送到代理。代理(监听端口 41234 以接收 UDP 消息)会将观测值转换为 REST Web 服务调用(或 MQTT 消息)并将其转发到物联网分析站点。

Windows 不包含“nc”命令,并且 –u 参数在 Galileo 和 Edison 板上使用的 Yocto 构建中不受支持。因此,我们在代理中包含了一个实用程序,您可以使用它来执行相同的操作。

send-udp.js temp 21.0

此简单程序将创建 JSON 文档并使用 UDP 发送到 localhost 的端口 41234。如果您找不到该程序,请运行以下命令获取最新发布的 iotkit-agent,然后重试。

npm update iotkit-agent
© . All rights reserved.