【问题标题】:Communication between XBee Sensors, ConnectPort X4H and Digi CloudXBee 传感器、ConnectPort X4H 和 Digi Cloud 之间的通信
【发布时间】:2015-12-02 15:37:37
【问题描述】:

我们是一家面向建筑行业的初创公司建筑远程施工监控平台。我们擅长 Web 开发(Web 应用程序、Web API、数据可视化),但对 RF 低级工程和编程的了解为 0。

更重要的是,在我们所在的地区很难找到任何 XBee 开发人员。为了实现这一目标并提供 MVP,我们决定购买即用型套件和 Digi Cloud,因此我们得到了:

我们已经知道的:

  • 我们在 Digi Cloud 中发现了带有可见 ZigBee 网络的 ConnectPort,是的,它是可见的并且可以在线配置。
  • 我们知道 ConnectPort 已内置 Python 引擎,但仅支持 2.4.3 Python 版本。
  • 我们知道我们可以使用 Digi ESP for Python 将 Python 文件直接上传到 ConnectPort
  • 我们知道我们可以使用 Digi Cloud 将 Python 文件上传到 ConnectPort
  • 我们知道传感器可以将数据发送到数据流中,数据流会在一段时间后过期
  • 我们知道,每次将数据上传到 Data Stream 时,我们都可以使用 Monitor API 将数据转发到我们自己的外部 Web 服务中

我们想要达到的目标和疑问:

场景 1(简单):

在这种情况下,我们希望使用 Digi Cloud 在线界面指定所有设置和采样。

  • 使用 Digi 云接口创建数据流
    • 由于每个 XBee 传感器有 1 个温度、1 个湿度和 1 个光传感器,我们希望为每个 XBee 传感器指定 3 个数据流。共有 4 x 3 个数据流。
    • 除数据值外,每个数据流都应具有其他属性,例如:NodeId(XBee 传感器的 ID)、SensorTypeId(类型字典中的 ID)、SamplingFrequency(以毫秒为单位的值,0 = 实时) DateStart(从什么点开始的日期)收集数据),DateEnd(不应收集数据后的日期),MeasurementZoneId(用户指定的测量区域的ID,例如Floor 1),PlacementVector(建筑内的x,y,z位置)
  • 以某种方式将每个数据流与 XBee 传感器中的每个传感器链接并“启用采样”
  • 在 Digi Cloud 中在线观察数据变化

问题:

  1. 是否可以使用上述属性扩展数据流元数据?
  2. 是否可以在一个 XBee 传感器中为每个传感器定义一个数据流?
  3. 是否可以在不为 ConnectPort 编写 Python 代码的情况下定义采样频率并从 Digi Cloud 接口启用采样(无需无限循环计时器)?
  4. 如果不需要python代码来启用采样和数据发送,怎么办?
  5. 如果 Python 代码是强制性的,是否意味着每次我们要将 XBee 传感器分配到不同的测量区域时,都需要将新的 Python 文件上传到 ConnectPort?

场景 2(扩展)

在这种情况下,我们希望从我们自己的外部 API 配置设备和采样,并使用 Digi Cloud 作为配置和数据转发的中间人。

  • 在具有相同参数的同时,使用来自永恒网络服务的 Digi Cloud API 创建数据流(它将是 .NET 网络服务,用 C# 编写)
  • 在具有相同参数的情况下,使用 Monitor API 创建数据转发到外部 Web 服务(它将是 .NET Web 服务,用 C# 编写),每次新数据都将上传到 Digi Cloud
  • 虽然具有相同的参数,但以某种方式将每个数据流与 XBee 传感器内的每个传感器链接起来,并使用来自永恒 Web 服务的 Digi Cloud API“启用采样”(它将是 .NET Web 服务,用 C# 编写)
  • 无需手动查询即可在永恒的 Web 服务中接收数据

问题:

  1. 是否可以使用来自外部 Web 服务的 Digi Cloud API 来扩展具有上述属性的数据流元数据?
  2. 是否可以使用来自外部 Web 服务的 Digi Cloud API 在一个 XBee 传感器内为每个传感器定义一个数据流?
  3. 是否可以使用 Digi Cloud API 从外部 Web 服务定义采样频率并启用采样,而无需为 ConnectPort 编写 Python 代码(无需无限循环计时器)?
  4. 如果不需要python代码来启用采样和数据发送,怎么办?
  5. 如果 Python 代码是强制性的,是否意味着每次我们要将 XBee 传感器分配到不同的测量区域时,我们都需要使用 Digi Cloud API 生成新的 Python 文件并将其上传到 ConnectPort?

对于上述情况,我们将不胜感激。

【问题讨论】:

    标签: api cloud xbee zigbee


    【解决方案1】:

    鉴于帖子的广度和提供准确答案所需的详细信息,很难在您的帖子中具体解决所有问题,但这里有一个尝试:

    场景 1:

    您有几个选择。您可以编写一个在网关上运行的自定义 python 脚本,因为有 API 用于与 XBee 节点交互以及将数据点发送到您想要的结构化设备云。这使您无需框架开销即可进行大量控制,但您可能会发现您必须深入研究许多细节才能确定如何完成每项任务。

    另外,看看可以在网关上运行的 DIA Python 框架 (http://www.digi.com/support/productdetail?pid=3632&type=drivers)。该框架试图抽象设备和数据报告,以便您可以主要通过配置完成很多工作,而无需编写任何代码。我可能会建议您至少开始使用它并尝试一下,如果您觉得定制过于繁琐,至少您有一个起点可以查看。

    1. 设备端 API 允许提供描述以及上传的每个数据点。虽然对您列出的许多内容没有固有的支持,但您可以提出一个约定以将此信息包含在描述字段中(例如将描述格式化为 json)。无法在服务器端自动调整报告并让它在设备端自动反映。 Device Cloud 确实有 API,可让您向设备发送消息……因此您可以使用该 API 报告更改。

    2. 是的,使用 Python 和数据上传 API,您可以根据需要对流进行布局。为每个独特的数据源设置一个流绝对是有意义的,这将是 DIA 之类的默认方式来布置流。

    3. DIA 可能会这样做。我相信 XBee 传感器可以配置为定期发送 IO 样本,然后 DIA 会将这些样本上传到服务器。然后,您可以调整 XBee 节点上关于其 IO 采样率的设置以进行更改。然而,这不会非常简单。

    4. 如前所述,试用 DIA 以查看它是否满足您的需求。它可以进行一些配置并构建在网关上运行的 Python 代码包,而无需您编写任何 Python。

    5. 您可以通过设备云中的 API 向您的 python 代码发送消息。因此,您绝对可以实现它,因此您的设备上有一些配置文件可以跟踪每个设备的测量区域,然后支持从设备云接收消息以更新和保存新的测量区域配置。您无法将其集成到 Device Cloud 本身的 UI 中,但您可以使用 Device Cloud 中的 API Explorer 执行所需的 API。

    场景 2

    1. 您可以使用设备云中的 API 获取所有流和数据点的列表。您还可以创建新的数据点或执行诸如编辑流或数据点的描述之类的操作。

    2. 您可以使用 Device Cloud 中的 API 创建数据流并根据需要对其进行布局(请参阅 /ws/DataStream 和 /ws/DataPoint 或其更新的变体 /ws/v1/streams)

    3. 假设方案一中#3的解决方案有效,您可以使用设备云中的Web服务API调整XBee终端节点的IO采样频率。

    4. 试用 DIA 框架,看看它是否满足您的需求。

    5. 和以前一样,因为它使用了 API。

    【讨论】:

    • 目前这是唯一给我“提示”作为起点的答案,在交付初始原型后,我将用自己的答案更新这个问题。 DIA 是原型设计的不错起点,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    • 1970-01-01
    相关资源
    最近更新 更多