Appearance
Group object
Группа представляет несколько объектов одного типа как один объект: значение группы — агрегат по членам (минимум/максимум/среднее/сумма или значение первого), команда группе рассылается членам, а перечисления редактора (команды, поля, состояния) делегируются от первого объекта списка. Тип членов фиксируется при создании (settings.ObjectType), состав — упорядоченный список id (ObjectsAR).
Настройки
ts
export const GroupObjectSettingsSchema = z.object({
settings: z.object({
/** Тип агрегирования значений группы (T_1OBJ, T_MIN, T_MAX, T_AVER, T_SUMM). */
ValueType: z.nativeEnum(EGroupObjectValueType),
/** Интервал опроса значений группы (миллисекунды). */
ValueSamplingMs: z.number(),
/** Массив id объектов, входящих в группу. */
ObjectsAR: z.array(z.string()),
/** Интервал отправки команды на объекты (миллисекунды). */
CommandIntervalMs: z.number(),
/** Тип объекта-владельца группы (строка). */
ObjectType: z.string(),
/** Максимальное уставочное значение (optional). */
MaxSetpoint: z.number().optional(),
/** Минимальное уставочное значение (optional). */
MinSetpoint: z.number().optional(),
}),
});Тип значения и первый объект
Как из значений членов получается значение группы:
ts
/**
* Тип значения группы (`settings.ValueType`): как из значений членов получается
* значение группы. Человекочитаемые названия — подписи редактора
* (group_object.value_types), приведены в литералах.
*/
export interface IGroupValueTypeMeanings {
/**
* Значение группы = значение первого объекта. Первый объект — объект с
* индексом 0 в списке членов (ObjectsAR), а не первый добавленный: время
* добавления роли не играет, член может встать на нулевую позицию когда
* угодно. Переупорядочивание списка меняет, чьи перечисления (команды,
* поля, состояния, операторы) делегируются группе.
*/
[EGroupObjectValueType.T_1OBJ]: "первый объект";
/** минимум по значениям членов */
[EGroupObjectValueType.T_MIN]: "минимальное";
/** максимум по значениям членов */
[EGroupObjectValueType.T_MAX]: "максимальное";
/** среднее по значениям членов */
[EGroupObjectValueType.T_AVER]: "среднее";
/** сумма значений членов */
[EGroupObjectValueType.T_SUMM]: "сумма";
}
export enum EGroupObjectValueType {
T_1OBJ = "T_1OBJ",
T_MIN = "T_MIN",
T_MAX = "T_MAX",
T_AVER = "T_AVER",
T_SUMM = "T_SUMM",
}Логика и команды
Перечень команд группы зависит от типа члена: группе цифровых входов нечего обновлять — CMD_UPDATE для неё не объявляется.
★ — значение по умолчанию (чем предзаполнена форма / что выбрано при создании).
События — когда объект владелец реакции
- изменение (
MSG_STATUS_CHANGED) ★
Действия — когда объект выбран целью действия
установить значение (CMD_CHANGE_VALUE) ★
- установить на значение (
value) — число; ★ 0; минимум 0, максимум 86400
обновить (CMD_UPDATE)
- полей нет: команда без параметров
Условия — когда объект связан в кейсе реакции
- значение (
Value) ★- операторы:
- «равно» (
eq) ★ - «не равно» (
neq) - «больше» (
more) - «меньше» (
less)
- «равно» (
- значение — число: ★ 0
- операторы:
Драйвер-линки
★ — поле по умолчанию в новой связи.
Поля объекта для связи с драйвером
| Поле | Чт. | Зап. |
|---|---|---|
| значение ★ | ✓ | ✓ |
| обновить (служебный канал) | ✓ | — |
| авария (служебный канал) | ✓ | — |
Связи только на чтение у драйверов: SNMP, PING.
Хранение
Сохраняется в таблице project_objects через RepositoryObject (Dexie).
Mentioned In
None yet.