doc: MQTTX Web подключение работает через wss://iot.kube5s.ru/mqtt
This commit is contained in:
@@ -31,8 +31,23 @@
|
|||||||
### Текущий статус
|
### Текущий статус
|
||||||
- ✅ Все баги телеметрии задеплоёны
|
- ✅ Все баги телеметрии задеплоёны
|
||||||
- ✅ Ветка `iot-pg-telemetry`, последний коммит `5e3c82d`
|
- ✅ Ветка `iot-pg-telemetry`, последний коммит `5e3c82d`
|
||||||
|
- ✅ MQTTX Web протестирован — внешний эмулятор работает через `wss://iot.kube5s.ru/mqtt`
|
||||||
- ⏳ Merge в main — когда пользователь скажет
|
- ⏳ 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
|
## 2026-04-01 — PG_TEST: создание и отладка lifecycle-тестов для nubes PostgreSQL
|
||||||
|
|||||||
@@ -49,4 +49,38 @@ Postgres для invocations есть, для IoT телеметрии — нет
|
|||||||
|
|
||||||
### Итог
|
### Итог
|
||||||
autoTimer теперь не убивается при переключении вкладок.
|
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..
|
||||||
|
|||||||
Reference in New Issue
Block a user