Ваши комментарии
Если значение "свет включен" не пришло в брокер, то подписчики не узнают о статусе. Это больше вопрос отказоустойчивости и доступности брокера. Драйвер MQTT в Иридиум не содержит брокера, это клиент.
Драйвер MQTT читает текущее состояние брокера, а не состояние издателей. Подписчики и издатели не должны знать друг о друге, это забота брокера.
Если брокер рестартует, то данные меняться не могут (брокер ещё не работает). В вашем случае подключитесь сторонним MQTT клиентом к брокеру и сравните значение в топике с тем, что показывает Иридиум. Если они отличаются, то нужно разбираться в причине.
У вас есть проект, в котором что-то работает не так, как вы ожидаете?
Если это просто теоретические рассуждения, то MQTT работает через подписку/публикацию. В контексте Иридиум:
1) Вы указываете в фидбэке топик. Это означает подписку на него.
2) При старте проекта (неважно - серверный или панельный) драйвер обращается к брокеру и если есть что-то в подписанных топиках - получает.
3) Если что-то в ходе работы приходит в подписанные топики - драйвер получает новые значения.
4) Соответственно, команда в канале это издатель (публикация в топик).
Можно без скриптов сделать:
1) Добавить драйвер MQTT в студии.
2) Прописать топики и прочие параметры в каналах и фидбэках.
3) Создать графические элементы.
4) Перетянуть фидбэки на нужные графические элементы.
Итог: при старте i3 pro вы получите значения топиков.
Ссылка на документацию по драйверу MQTT.
Set() отправляет команду в нативный драйвер (MQTT в Иридиум - нативный).
Топик нужно прописать в канале и/или фидбэке. Скриптом его указать нельзя. В скрипте указывайте канал драйвера с предварительно прописанным топиком.
Вы правы, условно одно устройство это один топик, если не используются регулярные выражения.
Фидбэк в драйвере MQTT нужен только для получения значения топика. GetFeedback(), если через скрипт.
Громоздкости тут не более, чем в любом другом драйвере.
Happy to help.
Hello.
You must send a command to the native driver. The script should do this via Set(). Using SetFeedback () for native drivers is not recommended. If you make a SetFeedback() for MQTT feedback, nothing will change in the topic, the broker will not know that you want to change something (will only change the value in the feedback of iRidium).
Добрый день.
В терминологии Иридиум значения топиков это значения фидбэков. Скриптом получить значение фидбэка можно через GetFeedback(). Отправить команду в драйвер (в данном случае отправить что-то в топик) можно через Set(). Документация по драйверу MQTT тут.
Дополнение: с USB на 485 мы ещё проверяли MXB11-485 (это Разумдомовский преобразователь).
С TTL скорее всего заработает MAX485 CSA+1502, но мы не проверяли (не было необходимости).
Сервис поддержки клиентов работает на платформе UserEcho
Неплохая статья по MQTT. В конце есть список литературы, если нужно больше подробностей.
Брокер анализирует, кто из подключившихся клиентов подписан на определенные темы и шлёт сообщения только по их подпискам. Если никто не подключен и/или не подписан - не шлёт ничего. Протокол работает поверх TCP, поэтому подключение/отключение отслеживается.