XBee传感器,ConnectPort X4H和Digi Cloud之间的通信

时间:2015-12-02 15:37:38

标签: api cloud xbee zigbee

我们是建筑行业的Startup建筑远程施工监控平台。我们擅长Web开发(Web应用程序,Web API,数据可视化),但对RF低级工程和编程知之甚少。

在我们的区域内找到任何XBee开发人员都非常困难。为了实现这一目标并提供MVP,我们决定购买即用型套装和Digi Cloud,因此我们得到了:

我们已经知道的事情:

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

我们想要实现的目标并提出疑问:

场景1(简单):

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

  • 使用Digi Cloud Interface创建数据流
    • 由于每个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. 是否可以定义采样频率并从Digi Cloud界面启用采样而无需编写ConnectPort的Python代码(无需无限循环定时器)?
  4. 如果不需要python代码来启用采样和数据发送,该怎么做?
  5. 如果python代码是强制性的,是否意味着每次我们要将XBee Sensors分配到不同的测量区域时,我们需要将新的Python文件上传到ConnectPort中?
  6. 场景2(扩展)

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

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

    问题:

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

1 个答案:

答案 0 :(得分:1)

鉴于其广度以及提供准确答案所需的详细信息,很难在帖子中专门解决所有问题,但这是一次尝试:

情景1:

你有几个选择。您可以编写在网关上运行的自定义python脚本,因为有些API可以与XBee节点进行交互,并且可以根据需要将数据点发送到Device Cloud。这样可以在没有框架开销的情况下为您提供大量控制,但您可能会发现必须深入了解一些细节以确定如何完成每项任务。

或者,看看可以在网关上运行的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会将这些传输上传到服务器。然后,您可以根据其IO采样率调整XBee节点上的设置,以使事情发生变化。但这并不是非常简单。

  4. 如上所述,试用DIA以确定它是否符合您的需求。它可以进行一些配置并构建一组在网关上运行的python代码,而不需要你编写任何python。

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

  6. 场景2

    1. 您可以使用Device Cloud中的API获取所有流和数据点的列表。您还可以创建新数据点或执行编辑流或数据点描述等操作。

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

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

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

    5. 与之前相同,因为它使用的是API。