Newer
Older
smart-home-server / docs / server-api-v1 / devices.md

GET /api/v1/devices/list

Получить список устройств о которых знает сервер

Пример ответа

    {
        "status": "ok",
        "devices": [
            {
                "id": 12,
                "device": {
                    "device_name": "Relay 1",
                  "device_type": "relay",
                  "firmware_version": "1.0.3",
                  "device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
                  "device_ip": "192.168.1.13"
                },
                "alias": "alias_name_like_variable",
              "name": "Реле помпы септика",
                "description": "Управляет помпой, должно периодически включаться и выключаться",
                "connection_state": "active", // active | lost
                "last_contact": "2025-07-28 18:35",
            },
            ...
        ]
    }

GET /api/v1/devices/scan

Поиск новых устройств в сети

Пример ответа

    {
        "status": "ok",
        "devices": [
            {
                "device_name": "Relay 1",
              "device_type": "relay",
              "firmware_version": "1.0.3",
              "device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
              "device_ip": "192.168.1.42"
            },
            ...
        ]
    }

POST /api/v1/devices/add_new

Добавление нового устройства

Пример запроса

    {
        "device_ip": "192.168.1.43",
        "device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
        "alias": "alias_name_like_variable", // Must be uniq
        "name": "Реле помпы септика",
        "description": "Управляет помпой, должно периодически включаться и выключаться"
    }

Пример ответа

    {
        "status": "ok",
        "device": {
            "id": 12,
            "alias": "alias_name_like_variable",
            "device": {
                "device_name": "Relay 1",
              "device_type": "relay",
              "firmware_version": "1.0.3",
              "device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
              "device_ip": "192.168.1.13"
            },
          "name": "Реле помпы септика",
            "description": "Управляет помпой, должно периодически включаться и выключаться",
            "connection_state": "active", // active | lost
            "last_contact": "2025-07-28 18:35"
        }
    }

Пример НЕ успешного ответа

    {
        "status": "error",
        "field": "alias", // alias | name | device_ip | device_id
        "message": "Alias already exists" // "Name can`t be empty" | "Device not found by IP" | "Wrong device ID"
    }

GET /api/v1/devices/id/{{id}} OR GET /api/v1/devices/alias/{{alias}}

Получить статус по отдельному девайсу

Пример ответа

    {
        "status": "ok",
        "device": {
            "id": 12,
            "alias": "...",
            "device": {
                "device_name": "Relay 1",
              "device_type": "relay",
              "firmware_version": "1.0.3",
              "device_id": "ecf0a1b5c9d74f9a8e294c1f67b0a8b9",
              "device_ip": "192.168.1.13"
            },
          "name": "Реле помпы септика",
            "description": "Управляет помпой, должно периодически включаться и выключаться",
            "connection_state": "active", // active | lost
            "last_contact": "2025-07-28 18:35"
        }
    }

Пример НЕ успешного ответа

    {
        "status": "error",
        "message": "Device not exists" // "Permission error"
    }

GET /api/v1/devices/alias/{{alias}}/status OR GET /api/v1/devices/id/{{id}}/status

Получить отдельный девайс

Пример ответа

    {
        "status": "ok",
        "device": {
            "id": 12,
            "alias": "...",
            "device_status": {
                ...
            }
        }
    }

POST /api/v1/devices/id/{{id}}/action OR POST /api/v1/devices/alias/{{alias}}/action

Выполнить действие для отдельного девайса

Пример запроса

    {
        "action": "action_name",
        "params": {...}
    }

Пример успешного ответа

В ответе вернётся непосредственно ответ от устройства

    {
        "status": "ok",
        "device": {
            "id": 12,
            "alias": "alias_name_like_variable",
            "response": {
                ...
            }
        }
    }

Пример НЕ успешного ответа

    {
        "status": "error",
        "message": "Device does not support this action or params" // "Permission error"
    }

GET /api/v1/devices/id/{{id}}/forget OR GET /api/v1/devices/alias/{{alias}}/forget

Забыть выбраный девайс. Сам девайс при этом будет ресетнуть


GET /api/v1/devices/id/{{id}}/reboot OR GET /api/v1/devices/alias/{{alias}}/reboot

Принудительно перезагрузить устройство