Connected Field Service 自动化
在 CFS 中生成 IoT 警报以后,您需要确定应采取的下一步操作。 IoT 警报记录自带几项信息,包括警报类型、时间、设备 ID 和警报数据。 “Alert Data”字段由 JSON 数据构成,其中包含有关事件的具体详细信息。 所含数据可能因设备而异。 “Alert Data”字段中的信息通常可指示应采取的下一步具体操作。 在开始围绕后续步骤构建自动化功能时,必须了解有哪些可用的工具和信息,以及这些工具如何帮助您实现目标。
简化警报处理的一种方法是定义警报触发时,如何对警报进行分组。 默认情况下,将基于触发警报的设备将相似警报分组在一起。 但是,有时添加一个额外分组层可能很有帮助。 例如,组织可以选择按相关数据(如设备类别、帐户或客户资产)对警报进行分组。
这些设置可以从设置 - IoT 设置 - 警报聚合规则中使用。 可以基于 IoT 警报、相关设备或相关客户资产来定义警报聚合。
处理警报数据
Connected Field Service 解决方案提供多项现成的操作和工作流,可用于协助实现一些项目自动化功能,例如创建和注册设备,以及在记录中填充相关数据等。
与 IoT 警报相关的一些关键操作包括:
显示名称 | 描述 |
---|---|
基于 JSON 的字段值 - Get Number | 读取指定 JSON 对象中的数值属性。 |
基于 JSON 的字段值 - Get String | 读取指定 JSON 对象中的字符串属性。 |
基于 JSON 的字段值 - Get Boolean | 读取指定 JSON 对象中的布尔值属性。 |
“Alert Data”字段中的数据采用 JSON 格式。 以下文本是引发 IoT 警报时传递到“Alert Data”字段的示例。
{"deviceid":"smt-1298","readingtype":"Temperature","reading":113,"eventtoken":"c802338d-60f2-4a79-b45c-e164e2191ce0","threshold":70,"ruleoutput":"AlarmTemp","time":"2018-09-06T15:58:08.964Z"}
您通常不能直接使用“警报数据”字段的内容,因为您可能希望基于其中一个属性而不是全部属性进行查询。 您必须先分析要使用的相关参数,以便使用这些参数推动查询并支持后续步骤。
如果分析 JSON 字符串,可以看出它传达了以下参数和值:
参数 | 值 |
---|---|
deviceid | Smt-1298 |
readingtype | Temperature |
reading | 113 |
eventtoken | c802338d-60f2-4a79-b45c-e164e2191ce0 |
threshold | 70 |
ruleoutput | AlarmTemp |
time | 09/06/2018 06:58:08 AM |
要帮助从 JSON 字符串中分析出您可能需要的特定参数,可以使用某项 JSON - Based Field Value 操作。
“JSON - Based Field Value”操作包含以下参数:
参数 | 类型 | 描述 |
---|---|---|
JSON | 输入 | 要检查的 JSON 对象。 (本例中为“警报数据”字段) |
PropertyPath | 输入 | 要读取的值的属性名称或路径。 (区分大小写) |
DefaultReturnValue | 输入 | 未找到指定属性时返回的默认值。 |
Response | 输出 | 指定的属性的响应值。 |
根据“基于 JSON 的字段值”操作,您指定输出参数可能是文本字符串 (String)、数值 (Number) 或布尔值 (Boolean)。
例如:如果您之前使用 JSON - Based Field Value - Get Number 操作来提取此 Alert Data JSON 字符串的读取值:
{"deviceid":"smt-1298","readingtype":"Temperature","reading":113,"eventtoken":"c802338d-60f2-4a79-b45c-e164e2191ce0","threshold":70,"ruleoutput":"AlarmTemp","time":"2018-09-06T15:58:08.964Z"}
结果可能如这个表所示:
参数 | 值 |
---|---|
JSON | Alert Data(字段名称) |
PropertyPath | reading |
DefaultReturnValue | 70(表示当前温度阈值) |
值 | 113 |
该值表示操作返回的值,在本例中为 113,因为它是与“reading”属性关联的值。 之所以使用“Get Number”操作,是因为如此一来我们可以将该值传递至一个数值字段,然后使用对于值的数值查询选项来确定如何处理该项。
实际应用
现在我们看一下本概念的实际应用。
假设,我们有一台智能恒温器注册为 IoT 设备。 如果警报上的读数超过 70 度,则在 CFS 中生成 IoT 警报。
如果设备读数介于 70 度和 85 度之间,则让 Connected Field Service 自动向设备发送命令以重新启动该设备。
如果设备读数大于 85 度,则需要技术人员进行人工故障排除。
我们可以创建执行以下操作的工作流来实现这一目标:
首先执行 JSON -Based Field Value - Get Number 操作以捕获“reading”属性的值。
然后,将返回的输出值写入到 IoT 警报记录上的自定义字段,例如“设备读数”字段。
“设备读数”字段的更新可以触发另一个工作流,该工作流执行以下操作:
如果“设备读数”字段介于 70 和 85 之间:创建一个与 IoT 警报关联的命令,该命令向设备发出重启命令。
如果设备读数字段大于 85 度,则工作流将以成功状态结束。
重要提示
虽然 Connected Field Service 解决方案包括上述工作流和操作,但许多组织并不使用 Dynamics 365 工作流功能。 许多组织将使用 Power Automate 解析 JSON,因为它提供了灵活性和可以使用的更多服务选择。
使用 Power Automate
这个相同的概念也可以用于 Power Automate。 我们可以在流中使用“分析 JSON”操作,而不是使用“JSON - Based Field Value”自定义操作。 当触发“分析 JSON”操作时,“Alert Data”字段中的 JSON 将分解为各个属性。 必须定义架构,以便指示命令如何分析数据。 IoT 警报中的示例有效负载可用于生成架构。
在下图中,我们使用了一条 IoT 警报中包含的相同 JSON 字符串来创建架构:
{"deviceid":"nest1234","readingtype":"Temperature","reading":80,"eventtoken":"cfd5e690-ee88-4ca8-a75d-3b86ac61295c","threshold":70,"ruleoutput":"AlarmTemp","time":"2019-10-19T16:42:26.457Z"}
可以看到,其创建了多个属性来表示传入 JSON 的每个项,如 deviceid、readingtype、reading 等。
就像我们在工作流中的操作一样,数据分析后可用于填充 IoT 警报中的其他字段。 现在,每个属性都可以用作工作流中任何后续步骤的动态内容。
如果回到前面的智能恒温器示例,我们可以在 Power Automate 中创建执行以下操作的流,实现相同的结果:
首先,创建新的 IoT 警报记录时执行流。
执行“分析 JSON”操作以将 JSON 分析为各个属性。
然后,工作流使用某个返回属性的输出值更新 IoT 警报记录。 例如,Reading 属性可用于更新“设备读数”字段。
“设备读数”字段的更新可以触发另一个工作流,该工作流执行以下操作:
如果“设备读数”字段介于 70 和 85 之间:创建一个与 IoT 警报关联的命令,该命令向设备发出重启命令。
如果“设备读数”字段大于 85 度,工作流将以“成功”状态完成。