Skip to content

Direct timer

Таймер прямого отсчёта срабатывает по расписанию: режим (ETimerModeType), время срабатывания (Hour/Minute), дни недели (Mo–Fr, Sa, Su) и счётчик срабатываний.

Настройки

ts
export const DirectTimerSettingsSchema = z.object({
  settings: z.object({
    /** Сохранять пользовательские настройки (0/1). */
    SaveUserSettings: z.number(),
    /** Год срабатывания. */
    Year: z.number(),
    /** Месяц срабатывания. */
    Month: z.number(),
    /** День срабатывания. */
    Day: z.number(),
    /** Час срабатывания. */
    Hour: z.number(),
    /** Минута срабатывания. */
    Minute: z.number(),
    /** Счётчик срабатываний таймера. */
    Counter: z.number(),
    /** Режим работы таймера. */
    Mode: z.nativeEnum(ETimerModeType),
    /** Начальное состояние таймера. */
    Value: z.nativeEnum(DirectTimerStateValue),
    /** Понедельник. */
    Mo: z.union([z.literal(0), z.literal(1)]),
    /** Вторник. */
    Tu: z.union([z.literal(0), z.literal(1)]),
    /** Среда. */
    We: z.union([z.literal(0), z.literal(1)]),
    /** Четверг. */
    Th: z.union([z.literal(0), z.literal(1)]),
    /** Пятница. */
    Fr: z.union([z.literal(0), z.literal(1)]),
    /** Суббота. */
    Sa: z.union([z.literal(0), z.literal(1)]),
    /** Воскресенье. */
    Su: z.union([z.literal(0), z.literal(1)]),
  }),
});

Логика и команды

★ — значение по умолчанию (чем предзаполнена форма / что выбрано при создании).

События — когда объект владелец реакции

  • время (MSG_TIME) ★

Действия — когда объект выбран целью действия

запустить (CMD_START_TIMER) ★

  • полей нет: команда без параметров

остановить (CMD_STOP_TIMER)

  • полей нет: команда без параметров

настроить (CMD_SETUP)

  • настройка (__field_0) — directTimerWidget; ★

обновить (CMD_UPDATE)

  • полей нет: команда без параметров

Условия — когда объект связан в кейсе реакции

  • состояние (State) ★
    • операторы:
      • «находится в состоянии» (eq) ★
      • «не находится в состоянии» (neq)
    • значение — список:
      • «работает» ★
      • «выключен»
ts
/** Мета виджета CMD_SETUP для деклараций (адаптер строит поле с kind: "root"). */
export const DirectTimerSetupWidgetFieldMeta = {
  [ActionTypeDirectTimer.CMD_SETUP]: {
    timer: {
      widget: "directTimerWidget" as const,
      label: DirectTimerSetupWidgetLabel,
      timerSetup: {
        fields: DirectTimerSetupFieldLabels,
        valueMap: DirectTimerSetupValueMap,
      },
    },
  },
};

Мета виджета становится полем с persistence kind: "root": в actionData.values пишется сам объект виджета, без обёртки в ключ поля (см. Additional data команд).

Драйвер-линки

★ — поле по умолчанию в новой связи.

Поля объекта для связи с драйвером

ПолеЧт.Зап.
значение ★
понедельник
вторник
среда
четверг
пятница
суббота
воскресенье
количество повторений
обновить (служебный канал)
авария (служебный канал)

Связи только на чтение у драйверов: SNMP, PING.

Хранение

Сохраняется в таблице project_objects через RepositoryObject (Dexie).

Mentioned In

None yet.