Формат описания конфигурируемых драйверов

Формат описания конфигурируемых драйверов

Разработчикам / Язык конфигурации драйверов 1.0

Для описания конфигураций драйверов в BOOCO используется формат YAML. Это универсальный язык для описания различных структур и конфигураций в виде, доступном для чтения человеком.

Подробнее о YAML-формате (расширение .yml или .yaml).

Правила работы с файлами в формате YAML

При работе с файлами в формате YAML рекомендуется придерживаться следующих основных правил:

  • Используйте ровно два пробела в качестве отступа.
  • Не используйте символ табуляции (убедитесь, что в текстовом редакторе при нажатии на клавишу табуляции ставятся пробелы).
  • Символ # означает комментарий (всё, что идет после него, игнорируется).
  • Конфигурационные файлы BOOCO всегда начинаются с названия драйвера.
  • Один файл — это один драйвер (хотя в одном файле можно указать и несколько драйверов, мы не рекомендуем так делать).

Формат интервалов времени

В качестве значений некоторых параметров нужно указать время.

Формат интервалов времени задается разными способами, например:

  • 60000;
  • 60000 ms;
  • 60 sec;
  • 60 s;
  • 1 min;
  • 1 m.

Как задать логические значения

Логические значения задаются следующими способами:

  • true или false;
  • yes или no;
  • 1 или 0.

Как задать обратные связи и аргументы команд

Обратные связи и аргументы команд имеют свои типы данных — они отличаются от типов данных, получаемых от устройств.

Какие типы данных поддерживаются

  • number — числовое значение;
  • string — строка;
  • [value1, value2, …] — одно из значений, это может быть строка или число;
  • none — значение отсутствует (только для команд);
  • any — любое значение (рекомендуется использовать в исключительных случаях);
  • boolean — логическое значение (не рекомендуется использовать). Вместо этого типа данных лучше использовать список из двух значений, например: [off, on];
  • object — экспериментальный тип с неполной поддержкой (рекомендуется использовать в исключительных случаях — например, если нужно сохранить XML-объект или JSON-объект).

Пример:

MyDriver:
  #свойства пропущены
  feedbacks:
    - volume: number
    - power: [off, on]
  channels:
    - setVolume: number
    - setPower: [off, on]
    - powerOn: none
    - powerOff: none

В этом примере заданы две обратные связи:

  • volume (значение громкости) — может иметь числовое значение;
  • power (состояние питания) — может принимать значения off или on.

В примере также определены три команды: setPower, powerOn и powerOff. Команда setPower принимает аргумент off или on, а команды powerOn и powerOff вызываются без аргументов. При вызове этих команд с любым аргументом возникнет ошибка.

💡
Значение обратной связи power , а также значения команд setPower, powerOn, powerOff и togglePower являются специальными. Если они указаны в файле драйвера, то в веб-интерфейсе сервера BOOCO на странице Оборудование будет отображаться статус питания, а также будет доступна функция включения/выключения.