Measurement Units
В ходе обсуждения реализации сенсоров была отмечена необходимость справочника единиц измерения.
На настоящий момент существует поле MetricType.measure
, которое содержит текстовое описание единицы измерения для отображения в Grafana.
Поле не нормализовано и назрела необходимость унифицировать их в общий справочник, который также смогут использовать и сенсоры.
Предлагаемая реализация
Добавляется коллекция pm.measureunits
со следующими полями:
id
uuid
-
name
- название единицы -
description
- описание -
label
- краткая метка -
dashboard_label
- метка для дашбордов -
scale_type
- правила масштабирования (десятичные/бинарные)-
d
- decimal -
b
- binary (kilobit, etc)
-
-
alt_units
- альтернативные единицы измерения-
name
- название -
description
- описание -
label
- краткая метка -
dashboard_label
- метка для дашбордов -
from_primary
- формула перевода из базовой единицы в альтернативную -
to_primary
- формула перевода из альтернативной единицы в базовую
-
-
enum
- Перечислимые типы-
key
- ключ в виде строки, регистронезависимый -
value
- значение в виде целого числа
-
Единицы измерения
- Единица
- Секунда
- Метр
- Квадратный метр
- Кубический метр
- Вольт AC
- Вольт DC
- Ампер
- Ватт
- Градус Цельсия
- Относительная влажность
- Герц
- Обороты в минуту (RPM)
- Поток воздуха (куб. м в секунду)
- Уровень логарифмический (dB)
- Уровень логарифмический по отношению к 1mW (dBm)
- Байт
- Бит/с
- Пакеты в секунду
- Счетчик (количество срабатываний)
- Перечислимый тип
Альтернативные единицы
Единица измерения может иметь несколько альтернативных единиц. Например:
- Метры - футы, мили морские, мили английские
- Градус цельсия - Градусы Кельвина и Фаренгейта
В таком случае может возникать задача пересчета из системных единиц измерения в удобные пользователю.
Альтернативные единицы перечисляются в поле alt_units
. Формулы пересчета задаются в виде шаблона выражения python, где исходный параметр обозначен тегом x
.
Пример для градусов Фаренгейта:
-
from_primary
-(x - 32.0) * 5.0 / 9.0
-
to_primary
-x * 9.0 / 5.0 + 32.0
Перечислимые типы
В случае, когда сенсор выдает набор перечислимых состояний, можно использовать перечислимые типы. Например, для сенсора с состояниями
Ok, Warning, Error можно использовать значения enum
Key | Value |
---|---|
Ok | 0 |
Warning | 1 |
Error | 2 |
MetricType.measure
Поле measure заменяется на два:
- measure - ссылка на единицу измерения
- scale - масштаб