Устройство может отправлять сообщения в двух форматах: JSON и MessagePack.Я пытаюсь угадать это из правила IOT.Я написал следующий SQL:
SELECT
topic(5) as event_name,
isUndefined(device) as msgpack,
case isUndefined(device)
when true then encode(*, 'base64')
when false then * as encoded_data
FROM 'some_prefix/+/+/+/+'
Моя идея основана на следующей логике: если данные в формате JSON, они всегда должны иметь поле device
(оно действительно есть).В противном случае это MessagePack.
Он отлично работает с данными JSON и возвращает false
в поле msgpack
, но не работает с MessagePack.Похоже, сообщения не обрабатываются вообще.Я не вижу их ни в «успехе», ни в «1009».Я также не заметил никаких ошибок в CloudWatch.
Я хотел бы знать:
- что не так с моим правилом?
- Есть ли другой способ сделать то, что я описал выше?