Перейти до вмісту

Системна інформація

Ідентифікація фізичного пристрою

Section titled “Ідентифікація фізичного пристрою”

Повертає унікальну інформацію про поточний пристрій, включно з моделлю, версією прошивки, MAC-адресою та відкритим ключем.

GET /api/identify/

Рівень доступу: 🟨 1

Відповідь:

ПолеТипОпис
manufacturerstringВиробник пристрою.
devicestringНазва моделі пристрою.
deviceIdintegerІдентифікатор пристрою.
firmwareTypeintegerТип прошивки (напр., базова, розширена тощо).
firmwareVerintegerВерсія прошивки.
releaseDatestringДата та час випуску у форматі ISO 8601.
macstringMAC-адреса інтерфейсу Ethernet.
uniqueMacbooleanПрапор, що вказує, чи MAC-адреса пристрою унікальна.
pubKeystringВідкритий ключ пристрою для криптографічної аутентифікації.

Приклад відповіді:

{
"manufacturer": "Novatek-Electro Ltd.",
"device": "MC252",
"deviceId": 46,
"firmwareType": 1,
"firmwareVer": 46,
"releaseDate": "2025-05-26T00:00:00",
"mac": "d8:80:39:69:0e:6d",
"uniqueMac": true,
"pubKey": "WB2dxH7Jk+tmW2TDwOmWxtBKjkKf4siJi42bDyCLLXQ="
}

GET /api/version/

Рівень доступу: 🟩 0

Відповідь:

ПолеТипОпис
devicestringМодель пристрою виробника.
deviceIdintegerІдентифікатор пристрою виробника.
firmwareTypeintegerМодифікація прошивки.
firmwareVerintegerВерсія прошивки.
releaseDatestringДата та час випуску у форматі ISO 8601.

Приклад відповіді:

{
"device": "MC252",
"deviceId": 46,
"firmwareType": 1,
"firmwareVer": 46,
"releaseDate": "2025-05-14T00:00:00"
}

Отримати стан пристрою

Section titled “Отримати стан пристрою”

Отримує поточний стан пристрою за ключем (або всі стани).

GET /api/state/get/?key&...

Рівень доступу: 🟨 1

Доступні ключі:

  • ethernet: Стан інтерфейсу Ethernet
  • gsm: Стан інтерфейсу GSM
  • vpn: Стан інтерфейсу VPN
  • mbTcpCallback: Стан хмарного з’єднання Modbus TCP
  • activation: Стан активації пристрою
  • fwUpdate: Стан оновлення
  • mbTcpServer: Стан TCP-сервера
  • mbTcpClients: Стан TCP-клієнта
  • inputs: Стан входів
  • outputs: Стан виходів
  • statistics: Загальна статистика
  • memTaskfiles: Стан файлів завдань
  • memCard: Стан SD-карти
  • settings: Стан налаштувань
  • time: Час пристрою
  • misc: Різне

Повертає інформацію про поточний стан з’єднання Ethernet.

Поля відповіді:

ПолеТипОпис
ipstring / nullПоточна IP-адреса, призначена пристрою, або null, якщо не призначена.
macstringMAC-адреса інтерфейсу Ethernet.
linkUpbooleanВказує, чи є активне з’єднання.

Повертає інформацію про поточний стан модуля GSM.

Поля відповіді:

ПолеТипОпис
signalLevelinteger / nullРівень сигналу GSM у %, або null, якщо GSM не підключено.
ipstring / nullIP-адреса, призначена інтерфейсу GSM, або null, якщо не призначена.
imeistring / nullIMEI модема, або null, якщо не визначено.
simStateintegerСтан SIM-карти: 0 — не вставлена, 1 — вставлена та активна.
pinStateintegerСтан PIN-коду:
0 - Невідомий стан;
1 - PIN не потрібен;
2 - PIN потрібен, кількість спроб невідома;
3 - PIN потрібен, 0 спроб залишилося;
4 - PIN потрібен, 1 спроба залишилася;
5 - PIN потрібен, 2 спроби залишилося;
6 - PIN потрібен, 3 спроби залишилося;
7 - PIN потрібен, >3 спроб залишилося;
8 - Потрібна інша аутентифікація (PUK тощо).
ccidstring / nullCCID SIM-карти, або null, якщо не визначено.
providerstring / nullНазва оператора SIM-карти, або null, якщо не визначено.
radioBandstring / nullСтандарт GSM: 2g, 3g, 4g, або null, якщо не визначено.
isTcpIpBusybooleanВказує, чи стек TCP/IP інтерфейсу GSM зайнятий.
isGsmRegisteredbooleanВказує реєстрацію в мережі оператора.
isGsmRoamingbooleanВказує статус роумінгу.
isGprsStartedbooleanВказує активне з’єднання GPRS.
traficTotalintegerЗагальна кількість переданих даних через інтерфейс GSM (у байтах).

Повертає інформацію про поточний стан з’єднання VPN (WireGuard).

Поля відповіді:

ПолеТипОпис
linkStatestringСтан з’єднання:
disabled - VPN вимкнено в налаштуваннях;
netifCreated - Мережевий інтерфейс створено;
peerConfigured - З’єднання з піром налаштовано;
peerConnected - З’єднання з піром встановлено;
peerUp - VPN-тунель активний і працює.
configServerReachedboolean / nullДоступність сервера конфігурації.
lastPeerUpstring / nullЧас останнього з’єднання з піром (ISO 8601), або null.
netifIpstring / nullIP-адреса інтерфейсу VPN, або null.
netifMaskstring / nullМаска підмережі інтерфейсу VPN, або null.
peerIpstring / nullIP-адреса віддаленого піра, або null.
peerPortintegerПорт віддаленого піра.
interfacestring / nullІнтерфейс з’єднання: eth, gsm, або null.
configStatestringСтан конфігурації:
errorKey - Помилка: недійсний ключ;
errorMem - Помилка: недостатньо пам’яті;
disabled - VPN вимкнено в налаштуваннях;
pause - Затримка між спробами конфігурації;
serverHostnameResolving - Розв’язання імені хоста сервера конфігурації;
serverConnecting - Підключення до сервера конфігурації;
serverConnected - Підключено, отримання конфігурації піра;
peerHostnameResolving - Розв’язання імені хоста піра;
ready - Конфігурація отримана і готова.
ownPubKeystringВласний відкритий ключ пристрою.

Стан хмарного з’єднання Modbus TCP.

Поля відповіді:

ПолеТипОпис
statestringПоточний стан з’єднання (disabled, waiting, connecting, connected).
waitingTimeSecinteger / nullЧас очікування з’єднання, у секундах.
interfacestring / nullІнтерфейс з’єднання: eth, gsm, wg, або null.
remoteIpstring / nullIP-адреса сервера, або null.
remotePortintegerВіддалений порт сервера.
connectionTimeSecintegerЧас з моменту встановлення з’єднання, у секундах.
idleTimeSecintegerЧас простою з’єднання, у секундах.
activationWithCodestring / nullСтан активації:
unused - Пристрій не отримав код активації;
activated - Пристрій активовано та прив’язано до мережі;
set - Пристрій отримав код і очікує прив’язки;
null - Немає з’єднання або помилка.
activationCodestring8-значний код активації пристрою.

Повертає інформацію про поточний стан активації пристрою.

Поля відповіді:

ПолеТипОпис
infrastructureNamestringНазва інфраструктури.
infrastructureShortUrlstringКоротка URL-адреса сайту інфраструктури.
domainstringАдреса сервера, що використовується для активації.
endpointIdstringУнікальний ідентифікатор пристрою.
endpointNamestringНазва пристрою.
propertyIdstringІдентифікатор організації.
propertyNamestringНазва організації.
pinstring8-значний PIN-код пристрою.
hasBonusesEurstringСума бонусів на рахунку організації.
activeTillstring / nullДата закінчення активації (ISO 8601), або null, якщо закінчилася.
supportEmailstringEmail служби підтримки.

Стан процесу оновлення прошивки.

Поля відповіді:

ПолеТипОпис
updateStatestringСтан оновлення:
SAVED_FILE_UNKNOWN - Файл оновлення не знайдено;
CARD_ABSENT - SD-карта не встановлена;
CARD_NOT_READY - SD-карта не готова;
CARD_FILES_CHECKING - Перевірка файлів оновлення на SD-карті;
CARD_FILE_UPDATED_READY - Файл оновлення на SD-карті готовий;
FILE_VERSION_MATCHES_ACTIVE - Версія файлу збігається з поточною.
downloadStatestringСтан завантаження:
SERVER_FILE_UNKNOWN - Файл на сервері не визначено;
DOWNLOADER_BUSY - Завантажувач зайнятий;
CARD_ABSENT - SD-карта не встановлена;
CARD_NOT_READY - SD-карта не готова;
CARD_FILES_CHECKING - Перевірка файлів на SD-карті;
SERVER_FILE_UPDATED_READY - Файл на сервері готовий до завантаження;
SERVER_FILE_DOWNLOADING - Завантаження файлу;
DOWNLOADED_FILE_CHECKING_INTEGRITY - Перевірка цілісності;
DOWNLOADED_FILE_CHECKING_APPLICABILITY - Перевірка сумісності;
DOWNLOADED_FILE_SAVING - Збереження файлу на SD-карту;
SERVER_FILE_VERSION_MATCHES_SAVED - Версія сервера збігається зі збереженою.
urlstring / nullURL-адреса файлу прошивки або null.
progressstring / nullВідсоток прогресу завантаження (0.00100.00) або null.
errorCodestring / nullКод помилки, якщо є, або null. Поширені коди:
ERROR_FR_DISK_ERR - Помилка диска низького рівня;
ERROR_FR_INT_ERR - Внутрішня помилка файлової системи;
ERROR_FR_NOT_READY - Носій не готовий;
ERROR_FR_NO_FILE - Файл не знайдено;
ERROR_FR_DENIED - Доступ заборонено;
ERROR_FR_EXIST - Файл вже існує;
ERROR_FR_WRITE_PROTECTED - Захищено від запису;
ERROR_FR_NOT_ENOUGH_CORE - Недостатньо пам’яті;
ERROR_HTTP_RESPONSE - Загальна помилка HTTP;
ERROR_CONNECT - Помилка TCP-з’єднання;
ERROR_RESPONSE_TIMEOUT - Час очікування сервера вичерпано.
availableVersioninteger / nullВерсія прошивки, доступна для завантаження, або null.
savedVersioninteger / nullВерсія прошивки, збережена на SD-карті, або null.
currentVersionintegerПоточна встановлена версія прошивки.

Список активних з’єднань сервера Modbus TCP.

Поля відповіді:

ПолеТипОпис
isActivebooleanВказує, чи працює сервер.
listenPortEthintegerПорт для клієнтів Ethernet.
listenPortGsmintegerПорт для клієнтів GSM.
clientsarrayМасив об’єктів клієнтів (interface, remoteIp, remotePort тощо).

Стан клієнтів Modbus TCP.

Поля відповіді:

ПолеТипОпис
statestringПоточний стан (waiting, connected, connecting).
waitingTimeSecinteger / nullЧас очікування з’єднання, у секундах.
interfacestring / nullІнтерфейс з’єднання.
remoteIpstringIP-адреса клієнта.
remotePortintegerВіддалений порт клієнта.
connectionTimeSecintegerЧас з моменту встановлення з’єднання, у секундах.
idleTimeSecintegerЧас простою з’єднання, у секундах.

Приклад запиту:

GET /api/state/get/?inputs

Приклад відповіді:

{
"inputs": {
// TODO: Не реалізовано
}
}

Приклад запиту:

GET /api/state/get/?outputs

Приклад відповіді:

{
"outputs": {
// TODO: Не реалізовано
}
}

Статистика роботи пристрою.

Поля відповіді:

ПолеТипОпис
serialAvgPerSecReqintegerСередня частота запитів RS-485 (запитів/сек).
serialAvgPerSecRespintegerСередня частота відповідей RS-485 (відповідей/сек).
serialAvgPerSecLoadintegerСереднє навантаження RS-485 (%/сек).
mbAvgPerSecReqintegerСередня частота запитів Modbus (запитів/сек).
ethAvgPerSecKbstringСередня швидкість передачі даних Ethernet (КБ/сек).
gsmAvgPerSecKbstringСередня швидкість передачі даних GSM (КБ/сек).
mbTcpServerMaxClientsintegerМаксимальна кількість клієнтів на сервері Modbus TCP.
runTimeMinintegerЧас роботи з останнього перезавантаження (хвилини).
totalRunTimeMinintegerЗагальний час роботи пристрою (хвилини).

Інформація про файли завдань та стан програмованої логіки.

Приклад запиту:

GET /api/state/get/?memTaskfiles

Поля відповіді:

ПолеТипОпис
filesFoundinteger / nullКількість файлів завдань, знайдених на SD-карті, або null, якщо невідомо.
loadedOnstring / nullДата і час завантаження файлів завдань (ISO 8601), або null.
heapUsedBinteger / nullОбсяг пам’яті для виконання завдань у байтах, або null.
errorFilestring / nullФайл, у якому знайдено першу помилку, або null, якщо помилок немає.
errorLineinteger / nullНомер рядка першої помилки, або null, якщо помилок немає.
errorCodestring / nullКод помилки компіляції файлу завдання, або null, якщо помилок немає.
tasksarrayМасив об’єктів завдань, які були завантажені.

Коди помилок компіляції:

КодОпис
ERROR_IOПомилка I/O під час обробки файлу завдання.
ERROR_OUT_OF_MEMORYНедостатньо пам’яті для обробки файлу завдання.
ERROR_NO_PATHНеможливо відкрити каталог файлів завдань.
ERROR_NO_FILEНеможливо відкрити файл завдання.
ERROR_LINE_UNRECOGNIZEDОчікувався явний тип рядка, такий як DEF, PUT, IF або DO.
ERROR_ITEM_NAMEІм’я надто довге або недійсне.
ERROR_UNKNOWN_TYPEЗабагато елементів або неможливо визначити тип рядка.
ERROR_EXPECTED_ASTERISKНезавершена послідовність екранування рядка.
ERROR_ITEM_REFНедійсне посилання на елемент.
ERROR_ILLEGAL_ARGUMENTБезпосереднє значення поза дозволеним діапазоном.
ERROR_EXPECTED_SEPARATORОчікувалися додаткові елементи або знайдено неочікуване ім’я елемента.
ERROR_VALUE_BITSIZE_UNSUPPORTEDЦей розмір значення не підтримується.
ERROR_EXPECTED_DOUBLE_QOUTESНезавершений рядковий літерал.
ERROR_EXPECTED_EOLРядок файлу завдання надто довгий.
ERROR_VERSION_UNSUPPORTEDВерсія файлу завдання не підтримується.
ERROR_CRCВиявлено пошкодження даних завдання (невідповідність CRC).
ERROR_UID_BROADCASTШирокомовний UID 0 не можна використовувати для читання.
ERROR_FILE_FORMAT_UNSUPPORTEDНепідтримуваний формат файлу. Спробуйте UTF-8 або ASCII.
ERROR_NAME_RESERVEDЗарезервоване слово використано як ім’я елемента.
ERROR_NAME_ALREADY_DEFINEDПовторне визначення імен елементів.
ERROR_UNSATISFIED_FORWARD_DECLARATIONПосилання на відсутній елемент.
ERROR_STRING_FUNCTION_ARGUMENT_TOO_SHORTАргумент рядкової функції надто короткий.
ERROR_VALUE_FORMATНеприпустимий формат безпосереднього значення.
ERROR_ILLEGAL_ARRAY_INDEXНеприпустимий індекс масиву.
ERROR_ARRAY_INDIRECT_INDEX_NOT_ALLOWED_HEREНепрямий індекс масиву тут не дозволений.
ERROR_ITEM_UNDECLAREDЕлемент не оголошено.
ERROR_OUT_OF_PARAMETER_STORAGE_MEMORYНедостатньо пам’яті для зберігання параметра.
ERROR_ILLEGAL_ARRAY_SIZEНеприпустимий розмір масиву.
ERROR_UNEXPECTED_VARIABLE_REFНеочікуване посилання на змінну.
ERROR_UNEXPECTED_CONDITION_REFНеочікуване посилання на умову.
ERROR_INDEX_BITSIZE_UNSUPPORTEDЦей розмір індексу не підтримується.
ERROR_EXPECTED_CLOSING_BRACKETОчікувалася закривальна дужка.
ERROR_UNKNOWN_STRING_FUNCTIONНевідома рядкова функція.
ERROR_LOGGING_UNMAPPED_PARAMETERСпроба журналювати невідображений параметр.
ERROR_MAPPED_PARAMETER_INTERSECT_PARTIALLYВідображені параметри частково перетинаються.
ERROR_MULTIPLE_WRITERS_FOR_MAPPED_PARAMETERКілька записувачів для одного й того самого відображеного параметра.
ERROR_OBSOLETE_FILE_LAYOUTЗастаріле компонування файлу завдання.

Поля об’єкта завдання:

ПолеТипОпис
sourceFilestringФайл, з якого було завантажено завдання.
periodMsintegerПеріод циклу завдання в мілісекундах.
statestringПоточний стан завдання: idle або running.
lastRunOnstring / nullЧас останнього запуску циклу завдання (ISO 8601), або null.
lastErrorCodestring / nullКод помилки останнього виконання завдання, або null.

Коди помилок виконання завдання:

КодОпис
EXC_MB_ILLEGAL_FUNCTIONModbus: неприпустима функція.
EXC_MB_ILLEGAL_DATA_ADDRESSModbus: неприпустима адреса даних.
EXC_MB_ILLEGAL_DATA_VALUEModbus: неприпустиме значення даних.
EXC_MB_SLAVE_DEVICE_FAILUREModbus: збій підлеглого пристрою.
EXC_MB_ACKNOWLEDGEModbus: запит підтверджено.
EXC_MB_SLAVE_BUSYModbus: підлеглий пристрій зайнятий.
EXC_MB_MEMORY_PARITY_ERRORModbus: помилка парності пам’яті.
EXC_PARAM_PATH_UNAVAILABLEПристрій недоступний; запит не надіслано.
EXC_PARAM_TARGET_FAILEDПристрій не відповів.
EXC_TYPE_UNKNOWNНевідомий тип параметра.
EXC_ACTION_UNKNOWNНевідомий тип дії.
EXC_IOПомилка зовнішнього ресурсу.
EXC_OUT_OF_MEMORYНедостатньо пам’яті.
EXC_STACK_OVERFLOWПереповнення стека (забагато CALL).
EXC_STACK_UNDERFLOWСпорожнення стека (RETURN без CALL).
EXC_RESULT_INFINITYРезультат — нескінченність (ділення на нуль).
EXC_RESULT_COMPLEXРезультат — комплексне число (SQRT від від’ємного).
EXC_OUT_OF_BOUNDSІндекс поза межами.
EXC_UNKNOWNНевідома помилка.

Приклад відповіді:

{
"memTaskfiles": {
"filesFound": 2,
"loadedOn": "2026-01-12T15:17:31Z",
"heapUsedB": 814,
"errorFile": "/TASKS/CLOCKS.TXT",
"errorLine": 3,
"errorCode": "ERROR_UNSATISFIED_FORWARD_DECLARATION",
"tasks": [
{
"sourceFile": "/TASKS/INIT.TXT",
"periodMs": 60000,
"state": "idle",
"lastRunOn": "2026-01-12T15:18:31Z",
"lastErrorCode": null
}
]
}
}

Інформація про стан SD-карти.

Поля відповіді:

ПолеТипОпис
capacityKbinteger / nullЗагальна ємність SD-карти в КБ, або null.
freeKbinteger / nullВільне місце на SD-карті в КБ, або null.
isMountedbooleanСтатус монтування (true — змонтовано).
isInsertedbooleanСтатус вставки (true — вставлено).

Інформація про стан налаштувань.

Поля відповіді:

ПолеТипОпис
modifyOnstring / nullЧас останньої зміни налаштувань (ISO 8601), або null.
isUserModifiedbooleanВказує, чи налаштування змінено, але не застосовано.
isDefaultbooleanВказує, чи поточні налаштування є значеннями за замовчуванням.

Інформація про поточний час пристрою.

Поля відповіді:

ПолеТипОпис
timeLocalintegerПоточний місцевий час (ISO 8601).
timeUtcintegerПоточний час UTC (ISO 8601).
isDstbooleanПрапор літнього часу.
sunriseLocalSecinteger / nullЧас сходу сонця в секундах від початку дня, або null.
sunsetLocalSecinteger / nullЧас заходу сонця в секундах від початку дня, або null.
polarDaybooleanВказує полярний день.
polarNightbooleanВказує полярну ніч.

Додаткові діагностичні дані.

Поля відповіді:

ПолеТипОпис
voltagestring / nullПоточна напруга живлення, або null.
temperaturestring / nullПоточна температура в градусах Цельсія, або null.