-
Notifications
You must be signed in to change notification settings - Fork 0
API
EvelRus edited this page Mar 4, 2026
·
1 revision
Базовый URL: http://localhost:3000
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/info |
Версии node-poweredup, socket.io, uptime, версия Node.js |
Пример ответа:
{ "poweredUp": "10.1.0", "socketIO": "4.8.3", "uptime": 3600, "nodeVersion": "v20.11.0" }| Метод | Путь | Описание |
|---|---|---|
| GET | /api/config |
Получить конфигурацию всех хабов |
| POST | /api/config |
Сохранить конфигурацию (body: JSON-объект) |
| Метод | Путь | Параметры | Описание |
|---|---|---|---|
| GET | /api/logs |
?n=200 |
Последние N записей из буфера в памяти |
| GET | /api/logs/files |
— | Список файлов логов (по убыванию даты) |
| GET | /api/logs/file |
?name=2026-03-04.log |
Содержимое файла лога |
| Метод | Путь | Описание |
|---|---|---|
| GET | /api/scenarios |
Все сохранённые сценарии |
| GET | /api/schedules |
Расписание |
| GET | /api/consists |
Составы |
| Метод | Путь | Параметры | Описание |
|---|---|---|---|
| GET | /api/browse |
?path=sound/ |
Список папок и файлов в public/
|
Используется для выбора звуков и фото в настройках поезда.
Пример ответа:
{
"dirs": ["crocodile", "passenger"],
"files": ["logo.png"],
"current": "sound/"
}| Событие | Данные | Описание |
|---|---|---|
setSpeed |
{trainId, speed, source?} |
Установить скорость (−100..+100) |
estop |
— | Экстренная остановка всех поездов |
reconnectHub |
{trainId} |
Запрос повторного сканирования BLE |
setRampParams |
{trainId, stepSize, stepMs} |
Изменить параметры рампа |
savePresets |
{trainId, presets} |
Сохранить пресеты скорости |
setLED |
{trainId, color} |
Цвет LED хаба ("red", "green", …) |
saveConsist |
{id, consist} |
Сохранить состав |
deleteConsist |
{id} |
Удалить состав |
setConsistSpeed |
{consistId, speed} |
Скорость состава |
startRecording |
{name} |
Начать запись сценария |
stopRecording |
— | Завершить запись |
playScenario |
{name, loops?} |
Воспроизвести сценарий |
stopScenario |
{name} |
Остановить воспроизведение |
deleteScenario |
{name} |
Удалить сценарий |
saveScenario |
{name, data} |
Сохранить сценарий из построителя |
addSchedule |
{id, schedule} |
Добавить задачу расписания |
removeSchedule |
{id} |
Удалить задачу расписания |
| Событие | Данные | Описание |
|---|---|---|
newTrain |
TrainPayload | Новый хаб подключён |
speedUpdate |
{trainId, speed} |
Скорость изменилась (рамп / пресет) |
hubStatus |
{id, connected?, battery?, lowBattery?, reconnecting?} |
Изменение статуса хаба |
sensorUpdate |
{trainId, port, type, color?, distance?, colorName?} |
Данные датчика |
log |
{ts, level, trainId, message} |
Новая запись в лог |
logs |
[LogEntry] |
История логов (при подключении) |
playHorn |
{trainId} |
Сигнал от кнопки на хабе |
scenariosUpdate |
Scenarios | Обновление списка сценариев |
schedulesUpdate |
Schedules | Обновление расписания |
consistsUpdate |
Consists | Обновление составов |
scenarioPlayback |
{name, active} |
Статус воспроизведения сценария |
scenarioRecording |
{active, name?} |
Статус записи сценария |
{
"id": "fac6140fa0bc8b0f40411d9ad36ac40e",
"name": "Пассажирский поезд",
"speed": 0,
"connected": true,
"battery": 85,
"firmwareVersion": "3.0.0.0000",
"hardwareVersion": "3.0.0.0000",
"hubTypeName": "SmartHub",
"deviceTypeName": "TrainMotorLarge",
"motorPort": "A",
"rampStepSize": 10,
"rampStepMs": 100,
"presets": [20, 50, 80],
"sounds": { "start": "sound/...", "stop": "sound/...", "horn": "sound/...", "moving": "sound/..." },
"photo": "photo/train.jpg",
"sensors": {},
"ports": { "A": {"type":"motor","name":"TrainMotorLarge"}, "B": null, "C": null, "D": null }
}