numass-framework/numass-core/docs/server_commands.md

189 lines
5.7 KiB
Markdown
Raw Normal View History

2015-12-18 16:20:47 +03:00
# Команды сервера 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](https://stackedit.io/).