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

189 lines
5.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Команды сервера 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/).