Примеры DataPipe
LastValue
Например, нам нужно отображать только самое последнее значение в UnitNode интерфейсе:
Подойдёт конфигурация с постоянным временем действия, которая бы не позволяла обновляться чаще чем 1 раз в 5 секунд, без проверки на уникальность, с максимальной длинной текста 100. Политика cохранения LastValue:
TIP
За счёт политики LastValue, данная конфигурация почти не потребляет CPU и RAM, поскольку постоянно хранится только 1 запись.
active_period:
type: Permanent
filters:
type_input_value: Text
max_rate: 5
last_unique_check: false
max_size: 100
processing_policy:
policy_type: LastValueNRecords
Например, нам нужно увидеть некоторые ивентовые события: открытие заслонки или включение чего-либо. Для этого нужно хранить N записей, и, как только их становится больше определённого числа, затирать старые:
Подойдёт конфигурация, которая начнёт действовать в определённый момент и без лимита, с текстовым типом данных. Ограничим возможные значения через WhiteList, будем сохранять все значения, но одинаковые подряд будем игнорировать. 512 записей вполне подойдёт.
TIP
За счёт дедупликации и WhiteList, данная конфигурация почти не потребляет CPU и RAM. Также сама политика не позволяет создать больше ~= 512 записей.
active_period:
type: FromDate
start: '2023-11-15T00:00:00+00:00'
filters:
type_input_value: Text
type_value_filtering: WhiteList
filtering_values:
- Alarm
- Error
- Warning
max_rate: 0
last_unique_check: true
max_size: 100
processing_policy:
policy_type: NRecords
n_records_count: 512TimeWindow
Например, мы хотим в течении 1 недели оценивать динамику влажности в комнате с окном в 1 день:
Мы установим, до какой даты мы будем проводить замеры. Определим ограничение возможного значения влажности от 0 до 100 %. Ограничимся разрешением в 1 минуту, но будем учитывать все значения. Округлим до значащих 2 цифр. И будем наблюдать за окном в 86400 секунд.
TIP
За счёт разрешения max_rate, данная конфигурация почти не потребляет CPU и RAM. Число записей для данной политики будет постоянным ~= 1440.
active_period:
type: ToDate
end: '2025-11-15T00:00:00+00:00'
filters:
type_input_value: Number
type_value_threshold: Range
threshold_min: 0
threshold_max: 100
max_rate: 60
last_unique_check: false
max_size: 50
transformations:
round_decimal_point: 2
processing_policy:
policy_type: TimeWindow
time_window_size: 86400Aggregation
Например, нам нужно накапливать статистику с датчика температуры ds18b20. Мы не хотим тратить большой объём памяти, но нам нужны данные за очень длительный период c разрешением 15 минут:
Подойдёт конфигурация с заданным периодом действия, ограничением ошибочных значений, ограничением реальных значений, проверкой всех значений, дедупликацией. Ограничим до 2 значащих цифр, ведь точность датчика 12 бит. Выставим период 900 секунд, а функцию расчёта как среднее.
TIP
За счёт применения агрегации, данная конфигурация почти не потребляет CPU и RAM. Данный DataPipe будет создавать 96 записей в бд в день.
active_period:
type: DateRange
start: '2023-11-15T00:00:00+00:00'
end: '2200-11-15T00:00:00+00:00'
filters:
type_input_value: Number
type_value_filtering: BlackList
filtering_values:
- -127.00
- 85.00
type_value_threshold: Range
threshold_min: -50
threshold_max: 120
max_rate: 0
last_unique_check: true
max_size: 100
transformations:
round_decimal_point: 2
processing_policy:
policy_type: Aggregation
time_window_size: 900
aggregation_functions: Avg