Skip to content

MQTT / HTTP API

Зміст

Огляд

Ця документація API охоплює різноманітні функції, такі як отримання статистики пристрою, дзеркалювання екрану, сповіщення, користувацькі застосунки, відтворення звуку та фонове підсвічування. Ви можете взаємодіяти з цими функціями через протоколи MQTT та HTTP.

Отримання статусу

Доступ до різноманітної статистики пристрою, такої як батарея, RAM тощо:

MQTT-топікHTTP URLОпис
[PREFIX]/statshttp://[IP]/api/statsЗагальна статистика пристрою (батарея, RAM)
[PREFIX]/stats/effectshttp://[IP]/api/effectsСписок усіх ефектів
[PREFIX]/stats/transitionshttp://[IP]/api/transitionsСписок усіх ефектів переходу
[PREFIX]/stats/loophttp://[IP]/api/loopСписок усіх застосунків у циклі

Примітка: MQTT також транслює інші дані, наприклад натискання кнопок та поточний застосунок.

LiveView

Отримання поточного зображення матриці у вигляді масиву 24-бітних кольорів:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/sendscreenhttp://[IP]/api/screen-GET

При виклику MQTT API, SVITRIX надсилає масив до [PREFIX]/screen.

Додатково:

  • Переглядайте екран наживо у вашому браузері: http://[IP]/screen.
  • Можливість завантажити скріншот або згенерувати GIF із поточного вмісту дисплея.
  • http://[IP]/fullscreen надає повноекранний перегляд. Тут ви можете додатково встановити параметр fps (стандартно 30).

Керування живленням

Увімкнення або вимкнення матриці:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/powerhttp://[IP]/api/power{"power": true} або {"power": false}POST

Переведення плати в режим глибокого сну (також вимикає матрицю), корисно для збереження заряду батареї:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/sleephttp://[IP]/api/sleep{"sleep": X} де X — кількість секундPOST

SVITRIX прокинеться лише після завершення часу або натискання середньої кнопки. Немає можливості розбудити пристрій через API.

Відтворення звуку

Відтворення RTTTL-звуку з папки MELODIES.

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/soundhttp://[IP]/api/sound{"sound":"alarm"}POST

Відтворення RTTTL-звуку з заданого RTTTL-рядка:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/rtttlhttp://[IP]/api/rtttlrttl stringPOST

Фонове підсвічування

Встановлення кольору або температури для всієї матриці:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/moodlighthttp://[IP]/api/moodlightДив. нижчеPOST

⚠️ Увага: Використання цієї функції призводить до підвищеного споживання струму та нагрівання, особливо коли всі пікселі увімкнені. Переконайтеся, що ви відповідально керуєте значеннями яскравості.

Щоб вимкнути фонове підсвічування, надішліть порожнє тіло запиту.

Приклад:

json
{
  "brightness": 170,
  "kelvin": 2300
}

Можливі варіанти фонового підсвічування:

json
{"brightness":170,"kelvin":2300}
or
{"brightness":170,"color":[155,38,182]}
or
{"brightness":170,"color":"#FF00FF"}

Кольорові індикатори

Кольорові індикатори — це невеликі знаки сповіщень, що відображаються у певних областях екрану:

  • Верхній правий кут: Індикатор 1
  • Правий бік: Індикатор 2
  • Нижній правий кут: Індикатор 3
MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/indicator1http://[IP]/api/indicator1{"color":[255,0,0]}POST
[PREFIX]/indicator2http://[IP]/api/indicator2{"color":[0,255,0]}POST
[PREFIX]/indicator3http://[IP]/api/indicator3{"color":[0,255,0]}POST

Варіанти кольору:

  • Використовуйте RGB-масив, наприклад, {"color":[255,0,0]}
  • Використовуйте HEX-рядки кольорів, наприклад, {"color":"#32a852"}

Приховання індикаторів:

  • Щоб приховати індикатори, надішліть чорний колір ({"color":[0,0,0]}) або використовуйте скорочення {"color":"0"}. Також можна надіслати порожнє тіло запиту.

Додаткові ефекти:

  • Блимання: Щоб індикатор блимав, додайте ключ "blink" зі значенням, що вказує інтервал блимання у мілісекундах.
  • Згасання: Щоб індикатор плавно згасав і з'являвся, додайте ключ "fade" зі значенням, що вказує інтервал згасання у мілісекундах.

Користувацькі застосунки та сповіщення

З SVITRIX ви можете створювати користувацькі застосунки або сповіщення для відображення власного тексту та іконок.

Взаємодія

  • MQTT: Надішліть JSON-об'єкт до [PREFIX]/custom/[app], де [app] — назва вашого застосунку (без пробілів).
  • HTTP API: Додайте назву застосунку у параметр запиту (name=[appname]).
  • Оновлення: Щоб оновити користувацьку сторінку, надішліть змінений JSON-об'єкт на той самий endpoint. Дисплей оновиться миттєво.
  • Одноразове сповіщення: Використовуйте той самий формат JSON. Направте ваш JSON-об'єкт до [PREFIX]/notify або http://[IP]/api/notify.
MQTT-топікHTTP URLТіло запитуПараметри запитуHTTP-метод
[PREFIX]/custom/[appname]http://[IP]/api/customJSONname=[appname]POST
[PREFIX]/notifyhttp://[IP]/api/notifyJSON-POST

Властивості JSON

Нижче наведено властивості, які ви можете використовувати в JSON-об'єкті. Усі ключі необов'язкові; додавайте лише ті властивості, які вам потрібні.

КлючТипОписЗа замовч.ЗастосунокСповіщення
textstringТекст для відображення. Зверніть увагу, що шрифт не має фіксованого розміру, і I займає менше місця, ніж W. Це впливає на те, коли текст почне прокручуватися.N/AXX
textCaseintegerЗмінює налаштування великих літер. 0 = глобальне налаштування, 1 = примусово великі літери; 2 = відображати як надіслано.0XX
topTextbooleanМалювати текст зверху.falseXX
textOffsetintegerВстановлює зміщення позиції x для початку тексту.0XX
centerbooleanЦентрує короткий текст, що не прокручується.trueXX
colorstring або array of integersКолір тексту, стовпчикової діаграми або лінії.N/AXX
gradientArray of string або integersРозфарбовує текст градієнтом із двох заданих кольорів.N/AXX
blinkTextIntegerБлимання тексту із заданим інтервалом у мс, несумісне з градієнтом або веселкою.N/AXX
fadeTextIntegerПлавне згасання тексту із заданим інтервалом, несумісне з градієнтом або веселкою.N/AXX
backgroundstring або array of integersВстановлює колір фону.N/AXX
rainbowbooleanКожна літера тексту плавно переливається різними кольорами RGB-спектру.falseXX
iconstringID іконки або ім'я файлу (без розширення) для відображення у застосунку. Також можна надіслати 8x8 jpg як Base64-рядок.N/AXX
pushIconinteger0 = Іконка не рухається. 1 = Іконка рухається з текстом і більше не з'являється. 2 = Іконка рухається з текстом, але з'являється знову, коли текст починає прокручуватися знову.0XX
repeatintegerВстановлює, скільки разів текст має прокрутитися через матрицю перед завершенням застосунку.-1XX
durationintegerВстановлює тривалість відображення застосунку або сповіщення.5XX
holdbooleanВстановіть true, щоб утримувати сповіщення зверху, доки ви не натиснете середню кнопку або не закриєте його через HomeAssistant. Цей ключ стосується лише сповіщень.falseX
soundstringІм'я файлу RTTTL-мелодії з папки MELODIES (без розширення).N/AX
rtttlstringДозволяє надсилати RTTTL-рядок звуку разом з JSON.N/AX
loopSoundbooleanЗациклює звук або RTTTL на час відображення сповіщення.falseX
bararray of integersМалює стовпчикову діаграму. Без іконки максимум 16 значень, з іконкою 11 значень.N/AXX
linearray of integersМалює лінійний графік. Без іконки максимум 16 значень, з іконкою 11 значень.N/AXX
autoscalebooleanВмикає або вимикає автомасштабування для стовпчикової діаграми та лінійного графіка.trueXX
barBCstring або array of integersКолір фону стовпчиків.0XX
progressintegerПоказує індикатор прогресу. Значення може бути 0–100.-1XX
progressCstring або array of integersКолір індикатора прогресу.-1XX
progressBCstring або array of integersКолір фону індикатора прогресу.-1XX
posintegerВизначає позицію вашої користувацької сторінки у циклі, починаючи з 0 для першої позиції. Застосовується лише при першому надсиланні. Ця функція експериментальна.N/AX
drawarray of objectsМасив інструкцій малювання. Кожен об'єкт представляє команду малювання. Див. інструкції малювання нижче.XX
lifetimeintegerВидаляє користувацький застосунок, якщо не було оновлення протягом заданого часу в секундах.0X
lifetimeModeinteger0 = видаляє застосунок, 1 = позначає його як застарілий червоною рамкою навколо застосунку.0X
stackbooleanВизначає, чи буде сповіщення додано в чергу. false негайно замінить поточне сповіщення.trueX
wakeupbooleanЯкщо матриця вимкнена, сповіщення увімкне її на час відображення сповіщення.falseX
noScrollbooleanВимикає прокручування тексту.falseXX
clientsarray of stringsДозволяє пересилати сповіщення на інші пристрої SVITRIX. Використовуйте MQTT-префікс для MQTT та IP-адреси для HTTP.X
scrollSpeedintegerЗмінює швидкість прокручування. Введіть відсоткове значення від початкової швидкості прокручування.100XX
effectstringПоказує ефект як фон. Ефект можна видалити, надіславши порожній рядок для effect.XX
effectSettingsjson mapЗмінює колір та швидкість ефекту.XX
savebooleanЗберігає ваш користувацький застосунок у флеш-пам'ять та завантажує його після перезапуску. Уникайте цього для застосунків з високою частотою оновлення, оскільки флеш-пам'ять ESP має обмежену кількість циклів запису.X
overlaystringВстановлює накладення ефекту (не може використовуватися з глобальними накладеннями).XX

Колір: Приймає HEX-рядок або R,G,B масив: "#FFFFFF" або [255,255,0].

Ефекти накладення:

  • "clear"
  • "snow"
  • "rain"
  • "drizzle"
  • "storm"
  • "thunder"
  • "frost"

Приклад

Ось приклад JSON для відображення тексту "Hello, SVITRIX!" у веселкових кольорах протягом 10 секунд:

json
{
  "text": "Hello, SVITRIX!",
  "rainbow": true,
  "duration": 10
}

MQTT Placeholder

Ця функція особливо корисна для користувачів без повноцінної системи розумного дому. Вона усуває необхідність у зовнішній системі для відображення даних, наприклад від інвертора, який може надсилати свої дані через MQTT. Ви можете просто створити файл [AppName].json у папці CUSTOMAPP з вашими ключами JSON для користувацького застосунку. Цей JSON-файл буде завантажено при запуску, тому вам не потрібно надсилати його із зовнішнього джерела. Також ви можете використовувати його у вашому HTTP або MQTT API запиті.

Заповнювачі всередині значення text, укладені у , будуть замінені на payload вказаного MQTT-топіку. Наразі немає доступних варіантів форматування payload.

json
{"text": "Solar: {{inverter/total/P_AC}} W"}

Інструкції малювання

WARNING

Зверніть увагу: Залежно від кількості об'єктів, використання RAM може бути дуже високим. Це може спричинити зависання або перезавантаження.

Важливо враховувати кількість об'єктів та складність інструкцій малювання, щоб уникнути проблем з продуктивністю.

Кожна інструкція малювання — це об'єкт з обов'язковим ключем команди та масивом значень залежно від команди:

КомандаЗначення масивуОпис
dp[x, y, cl]Малює піксель у позиції (x, y) кольором cl
dl[x0, y0, x1, y1, cl]Малює лінію від (x0, y0) до (x1, y1) кольором cl
dr[x, y, w, h, cl]Малює прямокутник з верхнім лівим кутом у (x, y), шириною w, висотою h та кольором cl
df[x, y, w, h, cl]Малює зафарбований прямокутник з верхнім лівим кутом у (x, y), шириною w, висотою h та кольором cl
dc[x, y, r, cl]Малює коло з центром у (x, y), радіусом r та кольором cl
dfc[x, y, r, cl]Малює зафарбоване коло з центром у (x, y), радіусом r та кольором cl
dt[x, y, t, cl]Малює текст t з верхнім лівим кутом у (x, y) та кольором cl
db[x, y, w, h, [bmp]]Малює RGB888 растровий масив [bmp] з верхнім лівим кутом у (x, y) та розміром (w, h)

Приклад

Ось приклад JSON-об'єкта для малювання червоного кола, синього прямокутника та тексту "Hello" зеленим кольором:

json
{"draw":[
 {"dc": [28, 4, 3, "#FF0000"]},
 {"dr": [20, 4, 4, 4, "#0000FF"]},
 {"dt": [0, 0, "Hello", "#00FF00"]}
]}

Відображення тексту кольоровими фрагментами

SVITRIX дозволяє відображати текст, де окремі фрагменти можуть мати різні кольори. Використовуйте масив фрагментів, де "t" представляє текстовий фрагмент, а "c" — HEX-значення кольору.

json
{
  "text": [
    {
      "t": "Hello, ",
      "c": "FF0000"
    },
    {
      "t": "world!",
      "c": "00FF00"
    }
  ],
  "repeat": 2
}

Надсилання кількох користувацьких застосунків одночасно

SVITRIX дозволяє відправляти кілька користувацьких застосунків однією дією. Замість надсилання одного об'єкта користувацького застосунку, ви можете відправити масив об'єктів.

Наприклад, MQTT-топік: /custom/test

json
[
  {"text":"1"},
  {"text":"2"}
]

Обробка кількох користувацьких застосунків:

  • Присвоєння суфікса: Внутрішньо назва застосунку отримує суфікс, перетворюючись у формат на кшталт test0, test1 тощо.
  • Оновлення: Ви можете оновлювати кожен застосунок окремо або всі разом.
  • Видалення:
    • При видаленні застосунків SVITRIX не шукає точну назву. Натомість він знаходить застосунки, що починаються із зазначеної назви.
    • Щоб видалити всі пов'язані застосунки, надішліть порожнє тіло запиту до /custom/test. Ця дія видалить test0, test1 тощо.
    • Щоб видалити окремий застосунок, направте команду, наприклад, до /custom/test1.
    • Увага: Видалення лише одного застосунку може порушити порядок решти застосунків у циклі, оскільки немає механізму збереження позицій.

Видалення користувацького застосунку

Щоб видалити користувацький застосунок, надішліть порожнє тіло запиту на відповідний топік або URL.

Закриття сповіщення

Легко закрийте сповіщення, яке було налаштовано з "hold": true.

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/notify/dismisshttp://[IP]/api/notify/dismissПорожнє тілоPOST

Перемикання застосунків

Перехід до наступного або попереднього застосунку.

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/nextapphttp://[IP]/api/nextappПорожнє тілоPOST
[PREFIX]/previousapphttp://[IP]/api/previousappПорожнє тілоPOST

Перехід до конкретного застосунку

Безпосередній перехід до потрібного застосунку за його назвою.

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/switchhttp://[IP]/api/switch{"name":"Time"}POST

Вбудовані назви застосунків:

  • Time
  • Date
  • Temperature
  • Humidity
  • Battery

Для користувацьких застосунків використовуйте назву, яку ви вказали у топіку або HTTP-параметрі. У MQTT, якщо [PREFIX]/custom/test — ваш топік, то test буде назвою застосунку.

Зміна налаштувань

Налаштування різноманітних параметрів відображення застосунків.

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/settingshttp://[IP]/api/settingsJSONGET/POST

Властивості JSON

Ви можете налаштувати кожну властивість у JSON-об'єкті відповідно до ваших уподобань. Додавання властивості є необов'язковим.

КлючТипОписДіапазон значеньЗа замовч.
ATIMEnumberТривалість відображення застосунку у секундах.Додатне ціле число7
TEFFnumberВибір ефекту переходу між застосунками.0–101
TSPEEDnumberЧас переходу до наступного застосунку у мілісекундах.Додатне ціле число500
TCOLstring/array of intsГлобальний колір тексту.RGB-масив або HEX-колірN/A
TMODEintegerЗмінює стиль застосунку часу.0–61
CHCOLstring/array of intsКолір заголовка календаря у застосунку часу.RGB-масив або HEX-колір#FF0000
CBCOLstring/array of intsКолір тіла календаря у застосунку часу.RGB-масив або HEX-колір#FFFFFF
CTCOLstring/array of intsКолір тексту календаря у застосунку часу.RGB-масив або HEX-колір#000000
WDbooleanУвімкнути або вимкнути відображення дня тижня.true/falsetrue
WDCAstring/array of intsКолір активного дня тижня.RGB-масив або HEX-колірN/A
WDCIstring/array of intsКолір неактивного дня тижня.RGB-масив або HEX-колірN/A
BRInumberЯскравість матриці.0–255N/A
ABRIbooleanАвтоматичне керування яскравістю.true/falseN/A
ATRANSbooleanАвтоматичне перемикання на наступний застосунок.true/falseN/A
CCORRECTIONarray of intsКорекція кольору для матриці.RGB-масивN/A
CTEMParray of intsКолірна температура для матриці.RGB-масивN/A
TFORMATstringФормат часу для застосунку часу.Різні (див. нижче)N/A
DFORMATstringФормат дати для застосунку дати.Різні (див. нижче)N/A
SOMbooleanПочинати тиждень з понеділка.true/falsetrue
CELbooleanПоказувати температуру у Цельсіях (Фаренгейт, якщо false).true/falsetrue
BLOCKNbooleanБлокувати фізичні навігаційні кнопки (введення все одно надсилається до MQTT).true/falsefalse
UPPERCASEbooleanВідображати текст великими літерами.true/falsetrue
TIME_COLstring/array of intsКолір тексту застосунку часу. Використовуйте 0 для глобального кольору тексту.RGB-масив або HEX-колірN/A
DATE_COLstring/array of intsКолір тексту застосунку дати. Використовуйте 0 для глобального кольору тексту.RGB-масив або HEX-колірN/A
TEMP_COLstring/array of intsКолір тексту застосунку температури. Використовуйте 0 для глобального кольору тексту.RGB-масив або HEX-колірN/A
HUM_COLstring/array of intsКолір тексту застосунку вологості. Використовуйте 0 для глобального кольору тексту.RGB-масив або HEX-колірN/A
BAT_COLstring/array of intsКолір тексту застосунку батареї. Використовуйте 0 для глобального кольору тексту.RGB-масив або HEX-колірN/A
SSPEEDintegerЗміна швидкості прокручування.Відсоток від початкової швидкості прокручування100
TIMbooleanУвімкнути або вимкнути вбудований застосунок часу (потребує перезавантаження).true/falsetrue
DATbooleanУвімкнути або вимкнути вбудований застосунок дати (потребує перезавантаження).true/falsetrue
HUMbooleanУвімкнути або вимкнути вбудований застосунок вологості (потребує перезавантаження).true/falsetrue
TEMPbooleanУвімкнути або вимкнути вбудований застосунок температури (потребує перезавантаження).true/falsetrue
BATbooleanУвімкнути або вимкнути вбудований застосунок батареї (потребує перезавантаження).true/falsetrue
MATPbooleanУвімкнути або вимкнути матрицю. Аналогічно endpoint power, але без анімації.true/falsetrue
VOLintegerДозволяє встановити гучність зумера.0–3025
OVERLAYstringВстановлює глобальне накладення ефекту (не може використовуватися з накладеннями окремих застосунків).Різні (див. нижче)N/A

Значення кольору: Може бути RGB-масивом (наприклад, [255,0,0]) або 6-значним HEX-кольором (наприклад, "#FF0000" для червоного).

Ефекти накладення:

  • "clear"
  • "snow"
  • "rain"
  • "drizzle"
  • "storm"
  • "thunder"
  • "frost"

Доступні формати часу:

ФорматПрикладОпис
%H:%M:%S13:30:4524-годинний формат із секундами
%l:%M:%S1:30:4512-годинний формат із секундами
%H:%M13:3024-годинний формат
%H %M13.3024-годинний формат із блимаючою двокрапкою
%l:%M1:3012-годинний формат
%l %M1:3012-годинний формат із блимаючою двокрапкою
%l:%M %p1:30 PM12-годинний формат з індикатором AM/PM
%l %M %p1:30 PM12-годинний з блимаючою двокрапкою та AM/PM

Доступні формати дати:

ФорматПрикладОпис
%d.%m.%y16.04.22День.Місяць.Рік (скор.)
%d.%m16.04День.Місяць
%y-%m-%d22-04-16Рік-Місяць-День
%m-%d04-16Місяць-День
%m/%d/%y04/16/22Місяць/День/Рік
%m/%d04/16Місяць/День
%d/%m/%y16/04/22День/Місяць/Рік
%d/%m16/04День/Місяць
%m-%d-%y04-16-22Місяць-День-Рік

Доступні ефекти переходу:

КодЕфект
0Random
1Slide
2Dim
3Zoom
4Rotate
5Pixelate
6Curtain
7Ripple
8Blink
9Reload
10Fade

Оновлення

Ви можете ініціювати оновлення прошивки через кнопку оновлення в HA або за допомогою наступного:

MQTT-топікHTTP URLТіло запитуHTTP-заголовокHTTP-метод
[PREFIX]/doupdatehttp://[IP]/api/doupdateJSONпорожнє тілоPOST

Перезавантаження Svitrix

Якщо вам потрібно перезавантажити Svitrix:

MQTT-топікHTTP URLТіло запитуHTTP-метод
[PREFIX]/reboothttp://[IP]/api/reboot-POST

Очищення Svitrix

УВАГА: Ця дія відформатує флеш-пам'ять та EEPROM, але не змінить налаштування WiFi. По суті, це скидання до заводських налаштувань.

MQTT-топікHTTP URLТіло запитуHTTP-метод
N/Ahttp://[IP]/api/erase-POST

Скидання налаштувань

УВАГА: Ця дія скине всі налаштування з API налаштувань. Вона не скидає файли флеш-пам'яті та налаштування WiFi.

MQTT-топікHTTP URLТіло запитуHTTP-метод
N/Ahttp://[IP]/api/resetSettings-POST