5.5 KiB
Команды сервера Numass
Адрес сервера
Адрес сервера в локальной сети по-умолчанию 192.168.111.1
, адрес сервера в сети института 172.20.75.178
Хранение данных
Хранение данных осуществляется в файловом репозитории /home/trdat/numass-repo
. Считается, что все фалы репозитория с названиями, начинающимися с @
являются системными.
Формат сообщения
Сообщение содержит иерархически организованный текст в формате JSON (meta), а также может опционально содержать данные в бинарном формате (data).
Команды
Сообщение содержит два поля, определяющих его содержание: поле типа сообщения type
и поле типа действия action
.
Поддерживаются следующие типы команд:
numass.storage
- Загрузка и получение данных из репозиторияnumass.state
- Получение или изменение состояния текущего сеанса (напряжение, токи, и т. д.)numass.event
- Отправка сообщения по текущему сеансуnumass.control
- Отправка управляющей команды для оборудованияnumass.run
- получение или изменение параметров текущего сеанса
numass.storage
Обращение к репозиторию текущего сеанса.
numass.state
Считывание или изменение состояния для текущего сеанса. Доступны следующие действия:
-
get
- считать состояние (или состояния) - Not tested Запрос:{ "type": "numass.state", "action": "get", "name": [ "<state 1 name>", "<state 2 name>", ... ] }
Ответ:
{ "type": "numass.state.get.response", "state": [ { "name": "<state 2 name>", "value": <state 1 value> }, { "name": "<state 2 name>", "value": <state 2 value> }, ... ] }
В запросе вместо массива может стоять простая строка
state: "<>"
. В этом случае в ответе вместо массива будет один JSON объект. -
set
- установить состояние (или состояния) - Not tested Запрос:{ "type": "numass.state", "action": "set", "state": [ { "name": "<state 2 name>", "value": <state 1 value> }, { "name": "<state 2 name>", "value": <state 2 value> }, ... ] }
или
{ "type": "numass.state", "action": "set", "name": "<state name>", "value": <state value> }
Ответ:
{ type: "numass.state.get.response", state: [ { "name": "<state 2 name>", "value": <state 1 value> }, { "name": "<state 2 name>", "value": <state 2 value> }, ... ] }
Если запрашивалось изменение единичного состояния, то возвращается единичный JSON объект.
numass.event
Not implemented
numass.control
Not implemented
numass.run
Считываие или изменение текущего сеанса. Доступны следующие действия:
-
get
- Считать конфигурацию текущего сеанса Запрос:{ "type": "numass.run", "action": "get", }
Ответ:
{ "type": "numass.run.response", "run": { "path": "<path to run repo>", "meta": { <run metadata> } } }
-
start
- Начать новый сеанс и обозначить его как текущийЗапрос:
{ "type": "numass.run", "action": "start", "path: "<path to run repo>", "meta": { <run metadata, optional> } }
Ответ: То же, что и в
get
. -
reset
- Сбросить настройки текущего сеанса Эквивалентноget
с пустым путем илиdefault
в качестве пути. Дополнительных аргументов нет
Протокол dataforge-envelope
Для обмена сообщениями может использоваться протокол dataforge-envelope (типа message). В этой вариации протокола запрещено автоматическое определение длинны метаданных и данных, в качестве метаданных используется JSON в кодировке UTF-8.
Используются следующие атрибуты конверта:
version = 1;
type = 33;
metaType = 1;
metaEncoding = 0;
Пакет с dataType = 0xffffffff
считается терминирующим пакетом, закрывающим соединение.
Порт сервера для работы по этому протоколу по умолчанию 8335
.
Протокол Http
Пока не реализован.
Written with StackEdit.