Типы
Модель
Функции и принципы построения моделей описаны в разделе документации:
TypeScript
import type { Base, ModelNode } from "@rightech/api"; export interface Model extends Base { base: string; // идентификатор базовой модели: mqtt, lorawan, http ... data: ModelNode; // содержимое модели в виде древовидной структуры}Узлы модели
Все узлы модели, имеют следущий минимальный набор полей:
TypeScript
export type BaseNode = { type: string; id: string; name: string; description?: string; active: boolean; // видимость узла, может быть скрыт children?: ModelNode[]; // дочерние узлы};Поле type определяет тип узла:
TypeScript
export type ModelNode = | BaseNode | SystemNode | EventNode | ArgumentNode | ActionNode;Подсистема
TypeScript
export type SystemNode = BaseNode & { type: "subsystem";};Аргумент
TypeScript
export type ArgumentDataType = | "number" | "boolean" | "string" | "object" | string; export type ArgumentNode = BaseNode & { type: "argument"; dataType: ArgumentDataType; unit?: string; // еденица измерения};Список доступных для использования едениц измерения можно получить через GET /api/v1/locale в поле units
Действие
TypeScript
export type ActionNode = BaseNode & { type: "action"; service: string; command?: string; params?: Record<string, string>;};Чаще всего используется для описания команд к устройству в терминах базового протокола.
Например команда PUBLISH протокола MQTT будет иметь следующий вид:
JSON
{ "id": "led-on", "name": "Turn-on LED", "active": true, "type": "action", "command": "publish", "params": { "topic": "base/relay/led1", "payload": "1" }}TypeScript
export type EventNode = BaseNode & { type: "event";};