diff --git a/deployments/k8s/operator.yaml b/deployments/k8s/operator.yaml index d30abc6..009b8c7 100644 --- a/deployments/k8s/operator.yaml +++ b/deployments/k8s/operator.yaml @@ -75,7 +75,7 @@ spec: - name: operator # При обновлении версии оператора — менять тег здесь (не latest!) # v0.1.50 — добавлены IoT controller, IoT REST API, MQTT auth endpoint - image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.54 + image: pearlharbor.registryk8s.services.ngcloud.ru/naeel/sless-operator:v0.1.56 # Always — чтобы всегда тянуть по точному тегу (не кешировать старый) imagePullPolicy: Always ports: diff --git a/internal/api/ui/iot-console.html b/internal/api/ui/iot-console.html index 591b04b..c6f470e 100644 --- a/internal/api/ui/iot-console.html +++ b/internal/api/ui/iot-console.html @@ -176,6 +176,13 @@ .coming-soon h3 { font-size: 18px; font-weight: 600; margin-bottom: 8px; color: #64748b; } a { color: #3b82f6; text-decoration: none; } a:hover { text-decoration: underline; } + .help-block { border: 1px solid #1e293b; border-radius: 10px; padding: 14px 18px; background: #0f172a; } + .help-block summary::-webkit-details-marker { display: none; } + .help-block[open] summary span { transform: rotate(90deg); display: inline-block; } + .help-step { display: flex; gap: 14px; align-items: flex-start; font-size: 13px; color: #94a3b8; line-height: 1.6; } + .help-num { flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; background: #1e3a5f; color: #60a5fa; font-weight: 700; font-size: 12px; display: flex; align-items: center; justify-content: center; margin-top: 2px; } + .help-step strong { color: #e2e8f0; } + .help-step em { color: #60a5fa; font-style: normal; } @@ -473,14 +480,6 @@ function renderLogin() {
Управление устройствами и телеметрией
-
- - -
-
- - -
@@ -500,8 +499,6 @@ function renderLogin() { // doLogin — вычислить namespace из токена, проверить доступность API, перейти к устройствам. // Пользователь НИКОГДА не вводит namespace — он однозначно определяется из токена. async function doLogin() { - const api = (document.getElementById('f-api').value || '').trim().replace(/\/$/, ''); - const mqtt = (document.getElementById('f-mqtt').value || '').trim(); const tok = (document.getElementById('f-tok').value || '').trim(); if (!tok) { loginErr('Укажите токен'); return; } @@ -521,8 +518,8 @@ async function doLogin() { return; } - S.apiBase = api || 'https://sless.kube5s.ru'; - S.mqttBase = mqtt || 'wss://iot.kube5s.ru/mqtt'; + S.apiBase = 'https://sless.kube5s.ru'; + S.mqttBase = 'wss://iot.kube5s.ru/mqtt'; S.ns = ns; S.token = tok; @@ -722,7 +719,65 @@ function deviceLayout(d) {
Эмулятор
Телеметрия
-
${tabContent(d, S.activeTab)}
`; +
${tabContent(d, S.activeTab)}
+ +
+ + Как это работает — краткая инструкция + +
+ +
+
1
+
+ Credentials — параметры для прошивки
+ Перейдите на вкладку Credentials. Там четыре параметра: Broker URL, Username, Password, Топик. + Нажмите «📋 Скопировать всё» и вставьте в код устройства. + Больше ничего настраивать не нужно. +
+
+ +
+
2
+
+ Публикация данных — формат сообщения
+ Устройство должно публиковать JSON в указанный топик. Структура произвольная:
+ + {"temp": 22.5, "humidity": 60, "status": "ok"} + +
+
+ +
+
3
+
+ Эмулятор — проверить без железа
+ Вкладка Эмулятор работает прямо из браузера как настоящее устройство. + Нажмите «Подключиться», отредактируйте JSON, нажмите «Отправить». + Зелёная запись в логе = брокер принял сообщение. +
+
+ +
+
4
+
+ Автоотправка — имитировать поток данных
+ В Эмуляторе можно включить «Авто» — сообщения будут уходить каждые N секунд. + Удобно для проверки что данные стабильно принимаются. +
+
+ +
+
5
+
+ Телеметрия — история данных (в разработке)
+ Вкладка Телеметрия — скоро здесь будет таблица с историей всех сообщений + от этого устройства с фильтрами по времени. +
+
+ +
+
`; } // switchTab — переключить вкладку без перезагрузки данных устройства