doc: MQTTX Web подключение работает через wss://iot.kube5s.ru/mqtt

This commit is contained in:
Naeel
2026-04-05 10:14:18 +03:00
parent 661218bb73
commit 36789d6da2
2 changed files with 50 additions and 1 deletions
+15
View File
@@ -31,8 +31,23 @@
### Текущий статус
- ✅ Все баги телеметрии задеплоёны
- ✅ Ветка `iot-pg-telemetry`, последний коммит `5e3c82d`
- ✅ MQTTX Web протестирован — внешний эмулятор работает через `wss://iot.kube5s.ru/mqtt`
- ⏳ Merge в main — когда пользователь скажет
### MQTTX Web — настройки подключения
| Поле | Значение |
|------|----------|
| Protocol | `wss` |
| Host | `iot.kube5s.ru` |
| Port | `443` |
| Path | `/mqtt` |
| Username | `{namespace}_{deviceId}` (из IoT Console → Credentials) |
| Password | из того же экрана Credentials |
| Topic для publish | `{namespace}/telemetry/{deviceId}` |
**Важно:** ACL строгий — топик должен совпадать точно. `{namespace}/telemetry/{deviceId}` — не wildcards.
---
## 2026-04-01 — PG_TEST: создание и отладка lifecycle-тестов для nubes PostgreSQL
+35 -1
View File
@@ -49,4 +49,38 @@ Postgres для invocations есть, для IoT телеметрии — нет
### Итог
autoTimer теперь не убивается при переключении вкладок.
Останавливается только явным нажатием "Стоп", mqttDisconnect, или nav() (уход со страницы устройства).
Останавливается только явным нажатием "Стоп", mqttDisconnect, или nav() (уход со страницы устройства)
---
## Задача 2 — Подключение MQTTX Web как внешнего эмулятора
### Анализ инфраструктуры
- Ingress `emqx-mqtt-websocket` уже существовал (создан 20ч назад): `wss://iot.kube5s.ru/mqtt` → emqx-ws:8083
- TLS сертификат Let's Encrypt на `iot.kube5s.ru` — валидный
- TCP MQTT 1883 торчит наружу через LoadBalancer: `185.247.187.147:31406`
- Nginx правильно настроен: Upgrade/Connection/proxy_http_version 1.1 уже в nginx.conf
### Проблемы по порядку
**1. Reconnecting после публикации**
- Версия nginx-ingress 1.12.6 — `configuration-snippet` отключён по умолчанию → моя аннотация была проигнорирована
- Добавил `websocket-services=emqx-ws` и `use-http2=false` аннотации
- НО реальная проблема была не в этом — nginx.conf уже содержал правильные WebSocket заголовки
**2. not_authorized при публикации (настоящая причина)**
- MQTTX Web по умолчанию предлагает вписать topic в поле subscribe/publish
- Пользователь ввёл `55667` и `5566711` вместо правильного топика
- EMQX ACL жёстко: `sless-ffd1f598c169b0ae_s1` может публиковать ТОЛЬКО в `sless-ffd1f598c169b0ae/telemetry/s1`
- После исправления topic → всё заработало
### Итог: MQTTX Web работает
- Подключение: `wss://iot.kube5s.ru` port `443` path `/mqtt`
- Username: `sless-ffd1f598c169b0ae_s1`
- Password: из секрета `iot-s1` в namespace `sless-ffd1f598c169b0ae`
- Topic для publish: `sless-ffd1f598c169b0ae/telemetry/s1`
- Данные доходят до bridge → Postgres → REST API ✅
### Урок
ACL устроен так, что топик должен совпадать точно с `{namespace}/telemetry/{deviceId}`.
Это нужно явно указывать в документации для пользователей IoT Console..