ModbusSlave HTTP API
Базовый URL: /api/v2/<object>/
/help
Возвращает список доступных команд и их краткое описание.
GET /api/v2/<object>/help
/
Возвращает стандартную информацию об объекте.
Включает extensionType=ModbusSlave и секцию LogServer (если включён).
/registers
Возвращает список регистров (датчиков) с пагинацией и фильтрами. Формат совместим с ModbusMaster.
GET /api/v2/MBSlave1/registers
GET /api/v2/MBSlave1/registers?offset=0&limit=50
GET /api/v2/MBSlave1/registers?search=Sensor&iotype=AI
GET /api/v2/MBSlave1/registers?filter=1003,Sensor1_AI,1005
Параметры:
- offset — пропустить первые N записей (default: 0)
- limit — максимум записей (0 = без ограничений)
- search — поиск по имени (подстрока, без учёта регистра)
- filter — список ID или имён (смешанный формат, как у IONC /get)
- iotype — AI | AO | DI | DO
- addr — Modbus-адреса через запятую
- regs — номера регистров (функция учитывается по умолчанию)
Пример ответа:
{
"result": "OK",
"devices": { "1": {} },
"registers": [
{
"id": 1003,
"name": "Sensor1_AI",
"iotype": "AI",
"value": 42,
"vtype": "signed",
"device": 1,
"mbreg": 10,
"amode": "rw"
}
],
"total": 150,
"count": 50,
"offset": 0,
"limit": 50
}
Описание полей: id, name, iotype, value, vtype, device, mbreg, amode, total, count, offset, limit.
/get
Возвращает указанные датчики по ID или именам. Совместим с IONC /get.
GET /api/v2/MBSlave1/get?filter=1003,1004,1005
GET /api/v2/MBSlave1/get?filter=Sensor1_AI,Sensor2_AO
GET /api/v2/MBSlave1/get?filter=1003,Sensor1_AI,1005
Параметры:
- filter — список ID или имён через запятую (числа трактуются как ID, остальное — имена).
Пример ответа:
{
"sensors": [
{ "id": 1003, "name": "Sensor1_AI", "iotype": "AI", "value": 42 },
{ "name": "BadName", "error": "not found" }
]
}
/getparam и /setparam
Чтение/изменение runtime‑параметров процесса. Базовый путь: /api/v2/<object>/....
Поддерживаемые параметры:
- force (0|1|true)
- sockTimeout (ms)
- sessTimeout (ms)
- updateStatTime (ms)
Чтение:
GET /api/v2/MBSlave1/getparam?name=force&name=sockTimeout&name=sessTimeout&name=updateStatTime
Ответ:
{
"result": "OK",
"params": {
"force": 0,
"sockTimeout": 30000,
"sessTimeout": 2000,
"updateStatTime": 4000
},
"unknown": ["..."]
}
Изменение:
GET /api/v2/MBSlave1/setparam?force=1&sockTimeout=45000&sessTimeout=2500&updateStatTime=5000
Ответ:
{
"result": "OK",
"updated": {
"force": 1,
"sockTimeout": 45000,
"sessTimeout": 2500,
"updateStatTime": 5000
},
"unknown": ["..."]
}
Ограничения:
- /setparam может быть заблокирован флагом httpEnabledSetParams (CLI/конфиг --<prefix>-http-enabled-setparams=1).
- При блокировке /setparam возвращает ошибку.
Коды ошибок:
- 400/5xx — некорректные значения (например, sockTimeout="abc").
- 400 — пустой /setparam (нет key=value) или /getparam (нет name).
/status
Возвращает текущее состояние объекта (аналогично getInfo()).
GET /api/v2/MBSlave1/status
Ключевые поля ответа:
- name
- tcp.{ip,port} (если TCP слот)
- monitor
- logserver.{host,port}
- iomap.{size,map[{mbaddr,iomap}]}
- myaddr
- stat.{connectionCount,smPingOK,restartTCPServerCount}
- tcp_clients[]
- tcp_sessions.{count,max_sessions,updateStatTime,items[]}
- плоские поля: sockTimeout, sessTimeout, updateStatTime, force