Skip to content

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.