CEP генерирует измерение / событие не во время UTC, а в локальном

#iot #complex-event-processing #esper #cumulocity

#iot #сложная обработка событий #esper #кумулятивность

Вопрос:

Все измерения были получены с отметкой времени (время события), когда измерение было создано. Некоторые из этих измерений являются искусственными, что означает, что они создаются не самим устройством, а правилом CEP, запущенным внутри CoT.

 The "normal" measurements have the time format coded as UTC 
[{ 
"id": "12704547", 
"data": { 
"data": { 
"time": "2016-07-25T15:24:11.000Z", 
"id": "1152930", 
"self": "http://testTenant.c8y.com/measurement/measurements/1152930", 
"source": { 
"id": "222812", 
"self": "http://testTenant.c8y.com/inventory/managedObjects/222812" 
}, 
"type": "tsystems_cumulocity_energymeter_digital_ping", 
"Energieverbrauch": { 
"Ping": { 
"unit": "Wh", 
"value": 1 
} 
} 
}, 
"realtimeAction": "CREATE" 
}, 
"channel": "/measurements/222812" 
}, { 
"successful": true, 
"channel": "/meta/connect" 
}] 
  

Но «искусственные» измерения (созданные правилом CEP) используют временную метку с указанием местного времени

 [{ 
"id": "12704578", 
"data": { 
"data": { 
"time": "2016-07-25T17:24:00.952 02:00", 
"id": "1152931", 
"self": "http://testTenant.c8y.com/measurement/measurements/1152931", 
"source": { 
"id": "222812", 
"self": "http://testTenant.c8y.com/inventory/managedObjects/222812" 
}, 
"type": "tsystems_cumulocity_energymeter_power_consumption", 
"Leistung": { 
"Aggregation_1min": { 
"unit": "W", 
"value": 900 
} 
} 
}, 
"realtimeAction": "CREATE" 
}, 
"channel": "/measurements/222812" 
}] 
  

Измерения с одного устройства всегда должны кодироваться в одном и том же часовом поясе (предпочтительно UTC), поскольку разные часовые пояса могут создавать проблемы у клиентов, использующих эти данные.

Я создаю «время» в CEP с помощью

 current_timestamp().toDate() as time 
  

Ответ №1:

пожалуйста, используйте:

 com.cumulocity.model.util.DateTimeUtils.newUTC(current_timestamp().toDate()) as dateTime,
  

вместо

 current_timestamp().toDate() as time 
  

в вашем правиле cep.

С наилучшими пожеланиями,
Аркадиуш
, Команда поддержки Cumulocity