Azure IOT 消息路由查询:阵列遥测:路由条件无效

问题描述

说明:
我想将查询放在下面以过滤遥测数据,这些数据应该只转到内置的 Eventthub 端点。

我的查询
(NOT(IS_ARRAY($body)) OR ($body.length = 1 AND $body[0].type != 'Gateway') OR $body.length > 1)

查询意图:
设备遥测数据将是数组或单个对象。我的大部分数据将是数组中的一个数据对象,即“网关”类型数据。所以我不想将该消息路由到内置端点,因为它不是必需的,而且我无法控制设备固件不发送该遥测。
如果我的遥测数组数据对象有多个对象,那么我想路由到内置端点。 如果我的遥测数据不是数组,那么我也需要路由到内置端点。
错误日志:
路由条件无效、RouteName:SensorsPayload、ErrorMessage:Message:二元运算符“!=”的操作数无效:有“未定义”和“字符串”,预期为“未定义”和“未定义”。
测试数据:
数据-1:
{"timestamp":"2020-12-21T10:17:42.074Z","type":"UnkNown","mac":"ACXXXXXXXXX3","bleName":"","RSSi":-55,"rawData ":"0201060303E1FF1016E1FFA10826F558263F23AC504C5553"}
数据 2:
[{"timestamp":"2020-12-21T10:17:42.074Z","type":"Gateway","mac":"ACXXXXXXXXX5"," rawData":"0201060303E1FF1016E1FFA10826F558263F23AC504C5553"},{"timestamp":"2020-12-21T10:17:42.074Z","XXXNamemac:"3","XXX RSSi":-55,"rawData":"0201060303E1FF1016E1FFA10826F558263F23AC504C5553"}]
数据 3:
[{"timestamp":"2020-12-21T10:17:42.074Z"," rawData":"0201060303E1FF1016E1FFA10826F558263F23AC504C5553"}]

测试数据的预期结果:
Data-1:应该路由到终点
Data-2:应该路由到终点
数据 3:不应路由。它应该被简单地忽略。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)