Мы столкнулись с непонятной проблемой с типами сигналов 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');
Все созданные тревоги будут иметь серьезность И текст, соответствующий их серьезности и тексту в первом наборе вызовов, независимо от того, что мы сейчас указываем серьезность КРИТИЧЕСКИЙ и различный текст для каждого; например, будет создан новый сигнал тревоги с {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"}
или чей «тип» начинается с префикса «Warning» , будет иметь {severity: "WARNING", text: "WOAHDUDE"}
.
Напомним, что если мы попытаемся создать Alarm с типом «Warning», исходящим из ЛЮБОГО источника, на нашей панели инструментов появится новый "WOAHDUDE"
.
В какой-то момент я создал будильник с {severity: "WARNING", type: "Warning", text: "WOAHDUDE"}
. Я понятия не имею, как это создало своего рода шаблон "WOAHDUDE" на протяжении всего срока аренды, но, похоже, так оно и есть. Как я могу отменить это?