基于Type的Cumulocity Alarm Text重写

时间:2018-05-01 07:28:11

标签: cumulocity

我们遇到了一个令人困惑的问题,即积水的警报类型。

我们发现当我们通过HTTPS或MQTT使用代理创建警报时,第一个警报创建的“类型”字段(对于给定类型)确定任何后续调用的严重性和文本字段具有相同的类型。

例如,如果第一次运行MQTT代理程序,它将运行:

client.publish('s/us', '301,Critical,TextA');
await waitFor(400);
client.publish('s/us', '302,Major,TextB');
await waitFor(400);
client.publish('s/us', '303,Minor,TextC');
await waitFor(400);
client.publish('s/us', '304,Warning,TextD');

如果随后将相同的代码行更改为:

// Note that 301 is used for all alarms, indicating severity critical
client.publish('s/us', '301,Critical,Apple');
await waitFor(400);
client.publish('s/us', '301,Major,Banana');
await waitFor(400);
client.publish('s/us', '301,Minor,Coconut');
await waitFor(400);
client.publish('s/us', '301,Warning,Durian');

创建的警报都将在第一组调用中具有与其严重性和文本相对应的严重性和文本,而不管我们现在为每个调用指定严重性CRITICAL和不同的文本;例如,将创建一个{severity: "MAJOR", text: "TextB"}的新警报。

更奇怪的是,此行为似乎基于前缀。如果代码被更改为:

client.publish('s/us', '301,Critical1000,Apple');
await waitFor(400);
client.publish('s/us', '301,Major1000,Banana');
await waitFor(400);
client.publish('s/us', '301,Minor1000,Coconut');
await waitFor(400);
client.publish('s/us', '301,Warning1000,Durian');

创建的警报将再次保留第一次警报创建的严重性和文本,例如将创建一个{severity: "MAJOR", text: "TextB", type: "Major1000"}的第三个警报。

好的,所以基于前缀的某种缓存正在进行中。也许有办法清除它?

但是,我还没有描述最神秘的现象。到目前为止,我所拥有的一切都是基于每个ManagedObject。缓存不会转移到新设备/托管对象。

但是,在我们的整个租赁期间,对于任何来源,任何{type: "Warning"}的警报或其“类型”以前缀“警告”开头,将有{severity: "WARNING", text: "WOAHDUDE"}

总结一下,如果我们尝试创建一个警告,其中包含从任何来源发出的“警告”类型,我们的信息中心会显示新的 "WOAHDUDE"

在某些时候,我用{severity: "WARNING", type: "Warning", text: "WOAHDUDE"}创建了一个闹钟。我不知道这是如何在整个租赁期间建立某种“WOAHDUDE”模板,但它似乎有。我该怎么撤消这个?

1 个答案:

答案 0 :(得分:3)

我认为您的体验只是警报重复数据删除(https://www.cumulocity.com/guides/reference/alarms/搜索重复数据删除)。

每当有一个给定类型为x的设备有一个活动警报,并且您为同一类型设备创建一个新警报时,警报就会被完全丢弃,并且在第一个警报中计数器会增加。

因此,如果第二个警报具有不同的严重性,文本或其他任何信息,则此信息不会更新到现有警报中。

关于获取相同文本的类型中带有前缀“Warning”的所有警报的问题。也许您在管理中创建了警报映射。这些映射是租户范围的,在创建时会覆盖警报的严重性和文本。