Меню Рубрики

Под windows клиент программа mqtt

Home Assistant, статья 8 (MQTT)

Оглавление

Предисловие

Про теорию MQTT брокера можно прочитать в отличной статье нашего коллеги тут. Home Assistant (далее HA) имеет встроенный MQTT брокер, но многие жалуются на его нестабильность и обрезанность, поэтому будем ставить и настраивать альтернативный MQTT брокер Mosquitto.

Установка альтернативного брокера

Для начала необходимо обновить состояние системы до актуальной. Подключаемся к малине по ssh и выполняем следующие команды:

Далее ставим брокер:

После установки брокера, необходимо защитить его от подписки кого бы то ни было при помощи связки логина пароля, для этого воспользуемся следующей командой:

Далее надо будет ввести два раза пароль по запросу. Эта команда создаст связку логина homeassistant и пароля который вы задали в файле /etc/mosquitto/passwd и теперь нам надо натравить брокер на этот файл и запретить анонимные подключения к нему. Сделаем это так, откроем файл конфига брокера:

И запишем туда следующие строки:

сохраняем файл и перезагружаем брокер командой:

Далее можем проверить, что все настроено правильно. Откроем параллельно два окна терминала и подключимся в обоих к нашей малине по ssh. Далее в одном из них напишем:

после этого в первом терминале мы увидим появившееся сообщение Test message. Если все так — вы все настроили верно! Можно приступать к настройке HA

Настройка стороннего брокера в HA

Открываем основной конфигурированиям HA любым удобным способом и дописываем в конец файла:

Разберем по порядку:

  • broker ip адрес брокера в вашем случае IP адрес малины
  • client_id уникальное имя подключающегося клиента
  • keepalive промежуток времени, в через которое клиент будет слать брокеру сообщение «я живой»
  • username имя пользователя для подключения, задавали выше
  • password пароль для подключения к брокеру, так же задали выше
  • protocol версия протокола
  • birth_message/will_message сообщения о доступности/недоступности клиента
  • topic топик в котором размещается сообщение
  • payload текст сообщения
  • qos грубо говоря приоритет сообщения
  • retain будет ли сообщение передано другим клиентам

Добавляем устройство с MQTT

HA поддерживает довольно обширный список устройств, которые можно подключить таким способом. Покажу на примере реле с esp8266 на прошивке Tasmota, которая у меня управляет котлом отопления через сухие контакты. На ней у меня такие настройки:

при этом имеем такие топики:

  • tele/sonoff/STATE сюда пишется состояние реле
  • tele/sonoff/LWT, а сюда пишется сообщения «Я живой»

Теперь добавим свитч в HA, для этого в конфиг внесем несколько строчек:

так же давайте разберем поподробнее что мы там понаписали:

  • platform ну тут понятно указываем что используем MQTT платформу
  • name название свитча, которое будет отображаться в HA, оно же идет в entity
  • state_topic топик откуда читаем состояние
  • command_topic топик в который будем передавать команды
  • availability_topic топик в котором пишется доступность устройства
  • qos рассматривали выше
  • payload_on сообщение о включении
  • payload_off сообщение о выключение
  • payload_available сообщение о доступности
  • payload_not_available сообщение о недоступности
  • state_on статус который будет считаться включенным
  • state_off статус который будет считаться выключенным
  • retain рассматривали выше

Все новости мира умных домов — t.me/SprutAI_News или Instagram
Остались вопросы? Мы в Telegram — @SprutAI

Отличная статья, все настроил. Вот бы еще пару примеров настройки датчика темпиратуры и влажности.

У меня на данный момент нет таких датчиков, вскоре постараюсь по возможности дополнить

сам спросил сам и отвечу. У меня sonoff th10 с датчиком температуры и влажности AM2301 на прошивке tasmota, ниже рабочий конфиг. Соответственно то, что желтым (topic) у вас может отличаться.

Как выдать кнопку xiaomi датчиком движения? Вроде как выдал, отображается как датчик движения но не срабатывает на нажатие. Для этого нужна автоматизация?

Смотря что вы хотите сделать.

Хочу чтоб кнопка имитировала датчик движения при ее нажатии, и потом перебросит в homekit.

Ты очень доступно пишешь, хороший слог

Вопрос по во этому месту

client_id: home-assistant-1 Это кто? Сам HomeAssistant? Если так, то как сам HomeAssistant узнает что он home-assistant-1? Прошу прощения если вопрос глупый но только начал в этом копаться и ничего не ясно пока что)

Если хоум ассистант установлен из докер контейнеров, для того чтоб мкутт мог подключитсья к стороннему серверу нужно ставить мкутт клиент?

Помогите пожалуйста. Я подумываю мигрировать на HA с Majordomo.

Я установил на RPi3 Home Assistant 0.93.1. dev-False; docker-false; hassio-false.

Я установил MQTT. и далее начались вопросы 🙂

1.Могу ли я установит Hassio (в качестве расширения/дополнения. или мне необходимо устанавливать специализированный образ. Я читал, что с установкой Hassio появляется много удобных сервисов в системе. Можно ли до установить в моём случае? Стоит ли оно переустановки?)

У меня есть настроенная система. которую я начал пробывать переносить на HA. Я использовал датчики на ESP подключённые через пошивку wifi-iot непосредственно к Majordomo.

2.Подскажите, пожалуйста, какой метод мне теперь лучше использовать для подключения?

Я стал использовать MQTT. Мне не доводилось вплотную сталкиваться с работой с MQTT. Отчего возникли сложности. Я не могу связать информер с датчиками.

Есть Mosquitto. Через mqtt-spy наблюдаю приход данных в топик: ESP/ESP0003/json.

В configuration.yaml прописаны следующие секции:

Так выглядит лог MQTT:

Результат в HAS выглядит так. (вероятно где-то можно увидеть более информативное представление. пока не разобрался. )

3. Скажите, пожалуйста, что я делаю неправильно. Я понимаю, что ошибка детская. но всё же.

Источник

Под windows клиент программа mqtt

Клиент протокола MQTT. Двухсторонний обмен данными. Управление модулем. Не требуется «белый» IP адрес для управления. Для ESP8266 рекомендуемый SDK 1.5.1 и выше, если имеются проблемы со связью.

Тестируется новая версия MQTT клиента на RTOS прошивках . Включается в дополнительных настройках

6.01.20 — произведена оптимизация кода приема команд модулем.

MQTT (Message Queue Telemetry Transport) — упрощённый сетевой протокол, работающий поверх TCP/IP. Используется для обмена сообщениями между устройствами по принципу издатель-подписчик.

Информация на брокере MQTT публикуется в элементах-топиках, которые в простейшем виде имеют вид login/hostname/метрика,
где:

loginлогин или emal, который используется для доступа к MQTT брокеру(серверу). Указывается на вкладке настроек Servers. Там же указывается пароль, если он требуется

hostname — имя модуля, настраивается на вкладке настроек Main.

метрика — имя датчика или устройства, а так же номер GPIO.

Пример: mylogin/dacha/dsw3 — в этом топике публикуются показания третьего датчика DS18b20 с модуля с именем dacha, который использует логин mylogin для публикации на брокере.

Важно: В адресе топика в MQTT нет корневого слэша, то есть всегда пишется login/hostname/sensor, а не /login/hostname/sensor

Нельзя называть модуль (hostname) русскими буквами — иначе возможны проблемы в работе MQTT.

Дополнительные опции:

MQTT Lite Mode — короткие топики, без включенной настройки топики будут иметь более длинный вид с текстом login/hostname/sensors/xxx и login/hostname/gpio/xxx

fix 2.05.16 — исправление для стабильности работы MQTT (для ESP8266).

Дополнительный буфер MQTT — необходимо установить объем памяти зарезервированный под MQTT в случае, если не все метрики видно на брокере. Расчет примерно 50 байт на каждую метрику. Опция уменьшает размер свободного ОЗУ модуля. Конструктор прошивки автоматически рассчитывает размер буфера, но иногда его может не хватать (для ESP8266).

Отдельный топик на запись — login/hostname/set/output5 — для записи, login/hostname/output5 — для чтения. Рекомендуемая опция

Свой корневой топик — вместо login/hostname/sensor (описанного в данной документации) будет использоваться путь свой_текст/sensor, который установлен в настройках модуля. Можно делать вложенные топики. Длина до 63 символов.

Новый MQTT (для RTOS прошивок ESP8266/ESP32)

Данная опция использует mqtt из SDK. Опция поддерживает несколько вариантов подключения. Требуется указывать префикс перед адресом:

mqtt:// — стандартное подключение

ws:// — websocket режим.

mqtts:// — стандартное подключение, но с ssl (не протестировано)

wss:// -websocket режим, но с ssl (не протестировано)

Пример mqtt://mqtt.wifi-iot.com или ws://mqtt.wifi-iot.com для websocket режима

SSL должен поддерживается сервером. Обычно для него используется отдельный порт.

Возможна работа через сертификаты TLS, загружаемые из SPIFFS, но функция не активирована.

Статус подключения MQTT

На сервисной вкладке http://[ip_adr]/debug можно узнать статус подключения к серверу MQTT.

Для ESP8266:

Пример: MQTT IP: 192.81.221.198 State: 15 / Errors: 1

Что значит модуль подключен к серверу IP адресом 192.81.221.198. Статус подключения 15, количество переподключений — 1.

Статус может принимать несколько вариантов:

15 — подключение успешно. Данные должны передаваться.

6 — ошибка, возможно не верный логин/пароль.

7,8 — ошибка подключения, сбой, исправляется обычно перезагрузкой модуля. Редкая проблема, но бывает, например, если сервер отключался.

Для RTOS прошивок:

Отображает счетчик переподключений и текущее состояние подключения.

Ограничения в MQTT

В Free варианте нельзя управлять устройством, интервал отправки фиксирован на 600 секундах.

Ограничение длины поля логина у ESP8266- 20 символов, пароля — 10 символов. В данный момент увеличить длину пароля можно через дополнительную настройку в шестеренке опции, но это испортит настройки модуля из-за смещения структуры параметров если не используется опция NVS2.

При изменении настроек MQTT сервера, логина, пароля или имени устройства рекомендуется перезагрузка устройства.

VDD у ESP8266 не передается.

В safe mode у ESP8266 MQTT не работает.

Сервисные MQTT команды:

login/hostname/system/restart — перезапуск модуля.

login/hostname/system/upd — обновление по OTA.

login/hostname/system/aupd — обновление по Auto OTA.

В данные топики нужно отправить цифру 1.

MQTT серверы (брокеры):

mqtt.wifi-iot.com, порт: 1883

mqtt.flymon.net, порт: 1883

Android приложения, совместимые с проектом:

Источник

IoTmanager — мобильный MQTT-клиент с необычной концепцией

Снял пост с голосования, т.к модератор безосновательно перенес его в «Я пиарюсь».

В своей недавней статье на GeekTimes про доработку домофона протоколом MQTT я проводил опрос на тему того, какую статью написать следующей, и примерно 50% читателей проголосовало за статью про работу с мобильным приложением MQTT-клиента IoTmanager.

Данное приложение немного отличается концепцией от всех представленных мобильных MQTT-клиентов: внешний вид виджетов задается непосредственно в топиках. Таким образом, все настройки хранятся в одном месте — конечном физическом устройстве, а IoTmanager просто служит для отображения и управления виджетами. Такой подход может оказаться полезным для определенного круга задач.

На Хабре и GeekTimes IoTmanager практически не упоминается, что я считаю незаслуженным и хочу немного рассказать про особенности работы с приложением на примере связки с ESP8266. Приглашаю в комментарии к обсуждению аналогов.
Дисклеймер: Я не имею никакого отношения к автору или приложению, оно полностью бесплатное, не требует регистрации и не имеет встроенной рекламы, пишу статью с целью обучения постигающих азы интернета вещей.

Описание

IoTmanager построен на фреймворке Ionic (HTML5+AngularJS) и доступен под операционные системы Android и iOS. У каждого виджета имеется своя html-разметка, узнать которую можно из документации на официальном сайте приложения, и параметры которой задаются в топиках JSON-формата. MQTT реализован поверх WebSockets на библиотеках Paho.js и MQTT.js (можно выбрать в настройках).

Пример HTML разметки виджета-переключателя Toggle:


Все классы, стили и иконки можно задавать в MQTT топиках. Да, есть мнение, что такая реализация противоречит самой идее MQTT — легковесности протокола с минимумом передаваемых данных, но мне такой подход оказался интересен: все настройки хранятся на физическом устройстве и не надо настраивать каждый клиент отдельно, а, при необходимости, можно менять внешний вид управляющих виджетов прямо на лету. Такой подход имеет место быть.

Мне, например, это оказалось удобно в работе с домофоном, ссылку на статью о котором я давал в самом начале статьи. Я установил приложение нескольким людям, выбрал в настройках «Режим конечного пользователя» (скрывает все настройки, логи, статистику), и все они имеют доступ к моему домофону, не задумываясь о том, как работает приложение, а я могу изменять функционал устройства по мере необходимости.

Приложение имеет большое разнообразие виджетов и более 500 различных иконок для использования. Вот примеры (кликабельно):

Настройка брокера

Для примера я заведу брокер на cloudmqtt.com, но, конечно, это может быть и ваш локальный брокер. Я создал брокер на бесплатном тарифном плане Cute Cat, в итоге получил адрес сервера+порты:

Тут же добавляю пользователя test с паролем и даю этому пользователю права на чтение и запись всех топиков (ставим просто #):

На этом настройка брокера заканчивается, для наших нужд хватит.

Настройка приложения

В настройках приложения вводим данные брокера: сервер, порт (тот, что WebSockets TLS only), пользователя c паролем, включаем тумблер использовать SSL/TLS, в качестве префикса для имен топиков оставляем стандартное /IoTmanager. Жмем подключиться (иконка спидометра в правом верхнем углу) и видим зеленую иконку Брокер, что означает успешное подключение.

В брокере мы должны увидеть приветственные топики приложения со служебной информацией:

Все, теперь у нас есть полностью функциональное мобильное приложение для управления чем-либо через интернет. Не пугайтесь, что рабочая область полностью пустая, вся дальнейшая настройка внешнего вида приложения будет производиться на физическом девайсе, на самом телефоне ничего не настраивается.

Заготовка прошивки для ESP8266

Попробуем поморгать светодиодом на NodeMCU с помощью нашего приложения на телефоне. Классика, не правда ли? В качестве IDE я буду использовать редактор Atom с расширением PlatformIO и ардуиновскими библиотеками.

Далее все пояснения я привожу относительно виджета-переключателя Toggle, т.к его html-код я уже приводил выше. Все виджеты подробно описаны на официальном сайте приложения со всевозможными плюшками и конкретными примерами.

При написании прошивки под NodeMCU я использовал библиотеки ESP8266WiFi для подключения к WiFi, MQTT-клиент PubSubClient (by Imroy) и ArduinoJson для удобного формирования строки JSON. Ссылка на репозиторий прошивки есть в конце статьи. Немного поясню принцип работы.

Таким образом формируется JSON строка, содержащая необходимые параметры для настройки виджета, и которая позже будет отправлена в топик /IoTmanager/deviceID/config для отображения виджета в IoTmanager’е.

Для выставления статуса виджету (положения вкл/выкл), необходимо отправить JSON строку вида в топик /IoTmanager/deviceID/led1/status.

В свою очередь приложение, когда нажимается переключатель, отправляет в топик /IoTmanager/deviceID/led1/control сообщение 0 или 1 (для удобства парсинга на микроконтроллерах). Соответственно на ESP это можно отловить в функции коллбэка так:

Сейчас в прошивке сделано так, что при получении в главный топик /IoTmanager (тот самый префикс) сообщения HELLO (так делает программа), ESP отдает все конфиги для виджетов. Таким образом они сразу же появляются в приложении и это автоматически означает, что устройство на связи:


Но можно использовать для конфиг-сообщений флаг retained. Тогда брокер, при подключении к нему приложения, будет отдавать все топики с этим флагом. Т.е независимо от того, на связи устройство или нет, в приложении будут отображаться виджеты. Я использую такой подход в домофоне. А чтобы знать, на связи устройство или нет, при получении сообщения HELLO, домофон отдает конфиг виджета с текстом Есть контакт (слабо заметно внизу скриншота).

Видео работы

Полезные ссылки

Всем спасибо за внимание, надеюсь обзор будет полезен.
Приглашаю в комментарии — пишите какими программами пользовались вы и в чем их преимущества.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Погодные информеры для windows 7
  • Погодные виджеты для windows 7
  • Погода на экране монитора windows 7
  • Погода на панели задач windows
  • Погода на весь экран windows 10