Skip to content

Параметры проекта

Страница настроек контроллера. Содержит поля для управления и отображения информации о нем.

Резервные контроллеры

Нода пункта списка:

ts
/**
 * @description
 * Нода контроллера — основной или резервный. Пункты списка панели
 * «Параметры проекта»: основной приходит из `self` ответа `getNodes`,
 * резервные — из `connections` того же ответа; `root.connections`
 * хранит сохранённые адреса (плейсхолдер до ответа и persistence).
 */
export interface INodeInfo {
  /** Адрес контроллера (host:port, без протокола). */
  address: string;
  /** Статус связи с контроллером. */
  status: ControllerStatus;
  /** Роль ноды: Master — основной, Slave — резервный, Default — роль не определена. */
  role: "Master" | "Slave" | "Default";
  /** Уникальный идентификатор контроллера. */
  uid?: string;
  /** Время последнего контакта с нодой. */
  lastSeen?: string;
}

Статус связи (INodeInfo.status):

ts
/**
 * @description
 * Статусы подключения контроллера. Значения приходят от контроллера
 * в ответе `getNodes` (replication API). Билдер сам выставляет только
 * `Undefined` — плейсхолдер для записей, построенных из сохранённых
 * `root.connections` до получения ответа.
 */
export enum ControllerStatus {
  Connected = "connected",
  Disconnected = "disconnected",
  Syncing = "syncing",
  Undefined = "undefined",
}

Статусы и переключение

Статусы запрашиваются у текущего контроллера; если он упал, запрос завершается ошибкой и статусы не приходят — остаётся переключаться на другие адреса кнопкой смены, пока один из них не ответит. Вызывает {@link getNodes} для получения информации о всех нодах с активного контроллера. Сохраняет адреса connections в root.connections для persistence.

Диагностика контроллера (PLC)

ts
export interface NetworkInterface {
  /** IPv4-адрес интерфейса. */
  IPv4: string;
  /** Шлюз по умолчанию. */
  gateway: string;
  /** Маска подсети. */
  netmask: string;
}

export interface NetworkData {
  /** Сетевой интерфейс eth0. */
  eth0: NetworkInterface;
}

/**
 * @description
 * Информация о контроллере (PLC) — содержимое правой панели «Дополнительные
 * параметры» вкладки «Параметры проекта». Получается запросом `GET /plcInfo`
 * runtime-контроллера.
 */
export interface ControllerInfo {
  ControllerInfoId: number;
  /** Имя хоста контроллера. */
  hostName: string;
  /** MAC-адрес контроллера. */
  macAddress: string;
  /** Версия сборки. */
  build: string;
  plcTimeGMT0: number;
  /** Часовой пояс: числовое смещение относительно GMT. */
  timeZone: number;
  /** Уникальный идентификатор контроллера. */
  uid: string;
  /** Текущее время контроллера (Unix, мс, GMT) — тикает на панели каждую секунду. */
  plcTimeGMT: number;
  /** Статус (скрыт на панели). */
  electionStatus: string;
  /** Время старта контроллера (GMT) — из него считается время работы. */
  startDateGMT: string;
  /** ID проектов, загруженных на контроллере. */
  projectIDs: string[];
  foreignConnectionAddr: string;
  /** Время последнего обновления БД контроллера (Unix, мс). */
  dBUpdatedAt: number;
  /** Количество ядер CPU. */
  cpuCount: number;
  /** Всего памяти. */
  totalMemory: string;
  /** Свободно памяти. */
  freeMemory: string;
  networkData: NetworkData;
  environment: string;
}

Хранение

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

Mentioned In

None yet.