Установка на Wi Fi маршрутизатор Keenetic ОС Entware mosquitto

Тут будет некоторая информация по keenetic
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 810
Стаж: 5 лет 2 месяца
Откуда: Вологодская область
Поблагодарили: 34 раза
Контактная информация:

Установка на Wi Fi маршрутизатор Keenetic ОС Entware mosquitto

Сообщение Артём Мамзиков »

MQTT — это протокол обмена данными между издателями и подписчиками, пересылки небольших сообщений, например показаний датчиков, между устройствами.
Упрощённый сетевой протокол, работающий поверх TCP/IP, ориентированный на обмен сообщениями между устройствами по принципу «издатель — подписчик»

Примерная упрощенная схема обмена данными
mqtt-схема.png
mqtt-схема.png


Есть множество внешних платных MQTT, так же и ограниченных бесплатных MQTT, а так же их сравнения все ищется в интернете.

Я решил установить свой MQTT, сперва хотел поставить MajorDoMo - но тут нужна БД ищем вариант попроще.
Нашел под маршрутизатор Mosquitto.

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

Обсуждение темы на MQTT сервер ( mosquitto ) на Keenetic


Установку и настройку ОС мы уже разбирали тут Установка на Wi Fi маршрутизатор Keenetic сразу 2х ОС Entware и Debian поэтому пункт установки и настройки ОС пропустим.

# Обновим список пакетов

Код: Выделить всё

opkg update
# Обновим уже установленные пакеты (не обязательно, но могут не установиться не которые пакеты и так же если были установлены ранее пакеты вручную нужно понимать что они могут сломаться и перестать работать)

Код: Выделить всё

opkg upgrade
Пакеты
ОСНОВНОЙ СПИСОК ПАКЕТОВ ДЛЯ MIPSEL
ДОПОЛНИТЕЛЬНЫЙ СПИСОК ПАКЕТОВ KEENETIC ДЛЯ MIPSEL

# Установка Mosquitto сервер

Код: Выделить всё

opkg install mosquitto-ssl
# Так же сразу установим еще пакетов

Код: Выделить всё

opkg install libmosquitto-ssl mosquitto-client-ssl
Описание пакетов
Показать
libmosquitto-nossl
библиотека libs, необходимая для клиентских инструментов командной строки mosquitto,
а также для использования любым сторонним программным обеспечением, которое хочет взаимодействовать с любым сервером MQTT.
Должен быть пригоден для связи с любым сервером, совместимым с MQTT v3.1/3.1.1/5, в дополнение к Mosquitto. Этот пакет создан без поддержки SSL

libmosquitto-ssl
библиотека libs, необходимая для клиентских инструментов командной строки mosquitto,
а также для использования любым сторонним программным обеспечением, которое хочет взаимодействовать с любым сервером MQTT.
Должен быть пригоден для связи с любым сервером, совместимым с MQTT v3.1/3.1.1/5, в дополнение к Mosquitto. Этот пакет создан с поддержкой SSL

mosquitto-client-nossl
клиентские инструменты командной строки net для работы с mosquitto.
Это включает в себя mosquitto_sub, mosquitto_pub, mosquitto_rr и инструмент mosquitto_ctrl. Этот пакет создан без поддержки SSL

mosquitto-client-ssl
сетевые клиентские инструменты командной строки для работы с mosquitto.
Это включает в себя mosquitto_sub, mosquitto_pub, mosquitto_rr и инструмент mosquitto_ctrl. Этот пакет создан с поддержкой SSL

mosquitto-nossl
Mosquitto - это брокер сообщений с открытым исходным кодом (лицензированный BSD), который реализует протокол MQTT версий 3.1, 3.1.1 и 5.
MQTT предоставляет упрощенный метод обмена сообщениями с использованием модели публикации/подписки.
Этот пакет также включает в себя некоторую базовую поддержку для настройки через UCI. Этот пакет создан БЕЗ поддержки SSL.

mosquitto-ssl
Mosquitto - это брокер сообщений с открытым исходным кодом (лицензированный BSD), который реализует протокол MQTT версий 3.1, 3.1.1 и 5.
MQTT предоставляет упрощенный метод обмена сообщениями с использованием модели публикации/подписки.
Этот пакет также включает в себя некоторую базовую поддержку для настройки через UCI. Этот пакет создан с поддержкой SSL.
TLS-PSK будет включен (как в клиенте, так и в брокере), если OpenSSL построен с поддержкой TLS-PSK.
# Установка OpenSSL для TLS-соединения

Код: Выделить всё

opkg install openssl-util
# Установка Планировщик (для очистки логов)

Код: Выделить всё

opkg install cron

После установки переходим к Настройке Mosquitto
Файл конфигурации mosquitto

Код: Выделить всё

/opt/etc/mosquitto/mosquitto.conf
Сделаем резервную копию оригинального файла конфигурации

Код: Выделить всё

cp /opt/etc/mosquitto/mosquitto.conf /opt/etc/mosquitto/mosquitto.default
Сам файл конфигурации
mosquitto.ru-en.default.conf.zip
mosquitto.ru-en.default.conf.zip
(28.86 КБ) 5 скачиваний

Код: Выделить всё

# Конфигурационный файл для mosquitto
#
# Смотрите mosquitto.conf(5) для получения дополнительной информации.
#
# Показаны значения по умолчанию, раскомментируйте, чтобы изменить.
#
# Используйте символ # для обозначения комментария, но только в том случае, если это
# самый первый символ в строке.

# =================================================================
# Общая конфигурация
# =================================================================

# Используйте настройки безопасности для каждого прослушивателя.
#
# Рекомендуется устанавливать этот параметр перед любыми другими параметрами.
#
# Если для этого параметра установлено значение true, то вся аутентификация и контроль доступа
# параметры управляются индивидуально для каждого слушателя. Доступны следующие варианты
# затронутый:
#
# acl_file
# разрешить_анонимный
# allow_anonymous
# разрешить идентификатор клиента нулевой длины
# allow_zero_length_clientid
# авто_ид_префиксация
# auto_id_prefix
# пароль_файл
# password_file
# плагин
# plugin
# плагин_opt_*
# plugin_opt_*
# psk_file
#
# Обратите внимание, что если установлено значение true, то это надежный клиент (т.е. с установленным чистым сеансом
# к false), который отключился, будет использовать настройки ACL, определенные для
# слушатель, к которому он был подключен совсем недавно.
#
# Поведение по умолчанию заключается в том, что для этого параметра устанавливается значение false, что поддерживает
# настройка поведения из предыдущих версий mosquitto.
#per_listener_settings false


# Этот параметр определяет, разрешено ли клиенту подключаться с нулевым значением
# длина идентификатора клиента или нет. Этот параметр влияет только на клиентов, использующих MQTT версии 3.1.1
# и позже. Если установлено значение false, клиенты подключаются с идентификатором клиента нулевой длины
# разъединены. Если установлено значение true, клиентам будет присвоен идентификатор клиента с помощью
# брокер. Это означает, что он полезен только для клиентов с установленным чистым сеансом
# к истине/true.
#allow_zero_length_clientid true

# Если значение allow_zero_length_clientid равно true, этот параметр позволяет задать префикс
# к автоматически сгенерированным идентификаторам клиентов для улучшения видимости в журналах.
# По умолчанию установлено значение "авто-"/'auto-'
#auto_id_prefix auto-

# Этот параметр влияет на сценарий, когда клиент подписывается на тему, в которой есть
# сохраненные сообщения. Возможно, что клиент, опубликовавший сохраненный
# сообщение в теме имело доступ на момент публикации, но этот доступ
# впоследствии был удален. Если для параметра check_retain_source установлено значение true, то
# по умолчанию источник сохраненного сообщения будет проверен на наличие прав доступа
# до того, как оно будет переиздано. Если установлено значение false, проверка производиться не будет, и
# сохраненное сообщение всегда будет опубликовано. Это касается всех слушателей.
#check_retain_source true

# QoS 1 и 2 сообщения будут разрешены к отправке каждому клиенту до достижения этого предела
# превышено.  Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_inflight_messages
#max_inflight_bytes 0

# Максимальное количество сообщений QoS 1 и 2, поступающих в данный момент на один рейс
# клиент.
# Сюда входят сообщения, которые являются частью процесса рукопожатий и
# те, которые повторяются. Значение по умолчанию равно 20. Установите значение 0 для отсутствия
# максимум. Установка значения 1 гарантирует доставку по заказу QoS 1
# и 2 сообщения.
#max_inflight_messages 20

# Для клиентов MQTT v5 возможно, чтобы сервер отправлял сообщение "сервер
# keepalive" значение, которое переопределит значение keepalive, установленное клиентом.
# Это предназначено для использования в качестве механизма, сообщающего, что сервер будет
# отключите клиент раньше, чем ожидалось, и что клиент должен
# используйте новое значение keepalive. Параметр max_keepalive позволяет вам указать
# что клиенты могут подключаться только к keepalive, значение которого меньше или равно этому
# значение, в противном случае им будет отправлено сообщение сервера keepalive с указанием использовать
# max_keepalive. Это относится только к клиентам MQTT v5. Значение по умолчанию и максимальное
# допустимое значение равно 65535.
#
# Установите значение 0, чтобы позволить клиентам устанавливать keepalive = 0, что означает отсутствие keepalive
# проверки произведены, и брокер никогда не отключит клиента, если нет
# сообщения получены. Вы должны быть абсолютно уверены, что это именно то поведение, которое вам нужно.
# хочу.
#
# Для клиентов MQTT v3.1.1 и v3.1 нет механизма, позволяющего сообщить клиенту
# какое значение keepalive они должны использовать. Если клиент MQTT версии 3.1.1 или v3.1
# указывает время сохранения, большее, чем max_keepalive, им будет отправлено сообщение
# Сообщение CONNACK с кодом причины "идентификатор отклонен"/"identifier rejected" и отключено.
#
#max_keepalive 65535

# Для клиентов MQTT v5 возможно, чтобы сервер отправлял "максимальный пакет
# размер" значение, которое сообщит клиенту, что он не будет принимать пакеты MQTT
# с размером, превышающим байт max_packet_size. Это относится к полному MQTT
# пакет, а не только полезная нагрузка. Установка для этого параметра положительного значения приведет к
# установите максимальный размер пакета равным этому количеству байт. Если клиент отправляет
# пакет, размер которого превышает это значение, будет отключен. Это применимо
# для всех клиентов, независимо от версии протокола, которую они используют, но v3.1.1
# и более ранние клиенты, конечно, не получили максимальный размер пакета
# информация. Значение по умолчанию - без ограничений. Установка значения ниже 20 байт запрещена
# потому что это, вероятно, будет мешать обычной работе клиента, даже при
# очень маленькая полезная нагрузка.
#max_packet_size 0

# QoS 1 и 2 сообщения, превышающие те, которые в данный момент находятся в полете, будут помещены в очередь за
# клиент до тех пор, пока этот лимит не будет превышен.  Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_queued_messages.
# Если указаны как max_queued_messages, так и max_queued_bytes, пакеты будут
# находиться в очереди до тех пор, пока не будет достигнут первый лимит.
#max_queued_bytes 0

# Установите максимальное поддерживаемое качество обслуживания. Клиенты публикуют с качеством обслуживания выше, чем указанный здесь
 # будет отключен.
#max_qos 2

# Максимальное количество сообщений QoS 1 и 2, которые должны храниться в очереди для каждого клиента
# выше тех, которые в данный момент находятся в полете.  Значение по умолчанию равно 1000. Набор
# до 0 без указания максимального значения (не рекомендуется).
# Смотрите также queue_qos0_messages.
# Смотрите также max_queued_bytes.
#max_queued_messages 1000
#
# Этот параметр устанавливает максимальное количество байт памяти кучи, которое брокер будет использовать
# allocate и, следовательно, устанавливает жесткое ограничение на использование памяти брокером.  Память
# запросы, превышающие это значение, будут отклонены. Эффект будет разным
# в зависимости от того, в чем было отказано. Если обрабатывается входящее сообщение,
# тогда сообщение будет удалено, а клиент публикации будет
# отключен. Если отправляется исходящее сообщение, то пользователь
# сообщение будет удалено, а принимающий клиент будет отключен.
# По умолчанию не имеет ограничений.
#memory_limit 0

# Этот параметр устанавливает максимальный размер полезной нагрузки для публикации, который разрешит брокер.
# Полученные сообщения, размер которых превышает этот размер, брокер принимать не будет.
# Значение по умолчанию равно 0, что означает, что все допустимые сообщения MQTT являются
# принято. MQTT устанавливает максимальный размер полезной нагрузки в 268435455 байт.
#message_size_limit 0

# Эта опция разрешает сеанс постоянных клиентов (тех, у кого чистый
# сеанс установлен в значение false), которые в данный момент не подключены, должны быть удалены, если они
# не подключайтесь повторно в течение определенного периода времени. Это нестандартный вариант
# в MQTT версии 3.1. MQTT версии 3.1.1 и v5.0 позволяют брокерам удалять клиентские сессии.
#
# Плохо спроектированные клиенты могут установить значение clean session равным false при использовании случайного
# сгенерированный идентификатор клиента. Это приводит к появлению постоянных клиентов, которые подключаются один раз и
# никогда не подключайтесь повторно. Этот параметр позволяет удалить эти клиенты.  Этот вариант
# позволяет постоянным клиентам (тем, у кого для чистого сеанса установлено значение false) быть
# удаляется, если они не подключаются повторно в течение определенного периода времени.
#
# Период истечения срока действия должен быть целым числом, за которым следует одно из значений h d w m y для
# час, день, неделя, месяц и год соответственно. Например
#
# persistent_client_expiration 2m
# persistent_client_expiration 14d
# persistent_client_expiration 1y
#
# Значение по умолчанию, если оно не задано, - никогда не истекать для постоянных клиентов.
#persistent_client_expiration

# Запишите идентификатор процесса в файл. По умолчанию используется пустая строка, которая означает
# pid-файл не должен быть записан.
# Это должно быть установлено в /var/run/mosquitto/mosquitto.pid, если mosquitto является
# запускается автоматически при загрузке с помощью сценария инициализации и
# start-stop-daemon или что-то подобное.
#pid_file

# Установите значение true для постановки сообщений в очередь с QoS 0, когда постоянный клиент находится

#queue_qos0_messages false

# Установите значение false, чтобы отключить поддержку сохраненных сообщений. Если клиент публикует
# сообщение с установленным битом сохранения, оно будет отключено, если установлено значение
# ложь/false.
#retain_available true

# Отключите алгоритм Нэгла Nagle's для клиентских сокетов. Это приводит к уменьшению
# задержка отдельных сообщений за счет потенциальной стоимости увеличения количества
# количество отправляемых пакетов.
#set_tcp_nodelay false

# Время в секундах между обновлениями дерева $SYS.
# Установите значение 0, чтобы отключить публикацию дерева $SYS.
#sys_interval 10

# Спецификация MQTT требует, чтобы QoS сообщения, доставленного в
# подписчик никогда не обновляется в соответствии с QoS подписки. Позволяющий
# этот параметр изменяет это поведение. Если для upgrade_outgoing_qos установлено значение true,
# сообщения, отправляемые подписчику, всегда будут соответствовать QoS его подписки.
# Это нестандартный параметр, явно запрещенный спецификацией.
#upgrade_outgoing_qos false

# При запуске от имени root сбросьте привилегии этому пользователю и его основному
# группа.
# Установите значение root, чтобы оставаться в качестве root, но это не рекомендуется.
# Если установлено значение "mosquitto" или не установлено, и пользователь "mosquitto" не существует
# тогда вместо этого он сбросит привилегии пользователю "никто"/"nobody".
# Если вы запускаетесь от имени пользователя без прав root, этот параметр не действует.
# Обратите внимание, что в Windows это не имеет никакого эффекта, и поэтому mosquitto следует запускать с помощью
# пользователь, от имени которого вы хотите, чтобы он запускался.
#user mosquitto

# =================================================================
# Слушатели/Listeners
# =================================================================

# Прослушивание комбинации порта и ip-адреса. Используя эту переменную
# несколько раз mosquitto может прослушивать более чем один порт. Если
# используется эта переменная и не заданы ни bind_address, ни порт,
# то прослушиватель по умолчанию запущен не будет.
# Должен быть указан номер порта для прослушивания. Опционально, ip-адрес
# адрес или имя хоста могут быть указаны в качестве второго аргумента. В
# этом случае mosquitto попытается привязать слушателя к этому
# адрес и, таким образом, ограничить доступ к соответствующей сети и
# интерфейс. По умолчанию mosquitto будет прослушивать все интерфейсы.
# Обратите внимание, что для прослушивателя websockets невозможно привязаться к хосту
# имя.
#
# В системах, поддерживающих доменные сокеты Unix, это также возможно
# для создания сокета # Unix вместо открытия сокета TCP. В
# этом случае номер порта должен быть равен 0, а сокет unix
# должен быть указан путь, например
# listener 0 /tmp/mosquitto.sock
#
# номер порта прослушивателя [ip-адрес/имя хоста/путь к сокету unix]
# listener port-number [ip address/host name/unix socket path]
#listener

# По умолчанию прослушиватель попытается прослушать все поддерживаемые IP-протоколы
# версии. Если у вас нет интерфейса IPv4 или IPv6, вы можете захотеть
# отключите поддержку любой из этих версий протокола. В частности, обратите внимание
# что из-за ограничений библиотеки websockets это будет только когда-либо
# попытка открыть сокеты IPv6, если поддержка IPv6 скомпилирована в, и поэтому завершится неудачей
# если IPv6 недоступен.
#
# Установите значение "ipv4", чтобы заставить прослушиватель использовать только IPv4, или установите значение "ipv6", чтобы
# заставьте прослушиватель использовать только IPv6. Если вам нужна поддержка как IPv4, так и
# IPv6, тогда не используйте параметр socket_domain.
#
#socket_domain

# Привязать прослушиватель к определенному интерфейсу. Это похоже на
# часть определения прослушивателя [ip-адрес/имя хоста], но она полезна
# когда интерфейс имеет несколько адресов или адрес может измениться. Если используется
# с частью определения прослушивателя [ip-адрес/имя хоста], затем параметр
# bind_interface будет иметь приоритет.
# Недоступно в Windows.
#
# Пример: bind_interface eth0
#bind_interface

# Когда прослушиватель использует протокол websockets, можно обслуживать
# http-данные также. Установите http_dir в каталог, содержащий файлы, которые вы
# желаю работать. Если этот параметр не указан, то обычного http не будет
# соединения будут возможны.
#http_dir

# Максимальное количество разрешенных клиентских подключений. Это
# настройка для каждого слушателя.
# Значение по умолчанию равно -1, что означает неограниченное количество подключений.
# Обратите внимание, что другие ограничения процесса означают, что неограниченное количество подключений
# на самом деле это невозможно. Обычно максимальное количество по умолчанию
# количество возможных подключений составляет около 1024.
#max_connections -1

# Слушатель может быть ограничен работой в рамках иерархии тем, используя
# параметр mount_point. Это достигается путем добавления префикса к строке mount_point
# ко всем темам для любых клиентов, подключенных к этому прослушивателю. Только этот префикс
# происходит внутри брокера; клиент не увидит префикс.
#mount_point

# Выберите протокол, который будет использоваться при прослушивании.
# Это может быть либо mqtt, либо websockets.
# TLS на основе сертификатов может использоваться с websockets, за исключением того, что только
 поддерживаются параметры # cafile, certfile, keyfile, ciphers и ciphers_tls13.
#protocol mqtt

# Установите use_username_as_clientid в значение true, чтобы заменить clientid, который клиент
# подключен к со своим именем пользователя. Это позволяет привязать аутентификацию к
# идентификатор клиента, который означает, что можно предотвратить доступ одного клиента
# отключение другого пользователя с использованием того же идентификатора клиента.
# Если клиент подключается без имени пользователя, он будет отключен как не
# авторизован, если для этой опции установлено значение true.
# Не использовать в сочетании с clientid_prefixes.
# Смотрите также use_identity_as_username.
# Это применимо не глобально, а для каждого слушателя.
#use_username_as_clientid

# Измените размер заголовков websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Этот параметр устанавливает размер буфера, используемого в
# библиотека libwebsockets при чтении HTTP-заголовков. Если вы проезжаете мимо большого
# данные заголовка, такие как файлы cookie, тогда вам, возможно, потребуется увеличить это значение. Если оставить
# отменено или установлено значение 0, тогда будет использоваться значение по умолчанию 1024 байта.
#websockets_headers_size

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе сертификатов
# для этого слушателя. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883,
# но его необходимо установить вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе предварительного общего ключа раздел "
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя.

# Для включения функции на основе сертификата должны быть определены как файл сертификата, так и файл ключа
# TLS-шифрование.

# Путь к серверному сертификату с кодировкой PEM.
#файл сертификата
#certfile

# Путь к файлу ключа в кодировке PEM.
#keyfile

# Если вы хотите контролировать, какие шифры шифрования используются, используйте следующие шифры
# вариант. Список доступных шифров можно получить с помощью команды "openssl ciphers"
# и должна быть представлена в том же формате, что и выходные данные
# эта команда. Это относится только к TLS 1.2 и более ранним версиям. Воспользуйся
# шифры_tls1.3 / ciphers_tls1.3 для TLS версии 1.3.
#ciphers

# Выберите, какие наборы шифров TLS версии 1.3 используются для этого прослушивателя.
# По умолчанию используется значение "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
#ciphers_tls1.3

# Если для параметра require_certificate установлено значение true, вы можете создать сертификат
# файл списка отзывов для отзыва доступа к определенным клиентским сертификатам. Если
# вы сделали это, используйте crlfile, чтобы указать на файл отзыва в кодировке PEM.
#crlfile

# Разрешить использование эфемерного /ephemeral DH обмена ключами DH, который обеспечивает прямую
# безопасность, прослушиватель должен загрузить параметры DH. Это может быть указано с помощью
# параметр dhparamfile. Файл dhparam может быть сгенерирован с помощью команды
#, например, "openssl dhparam -out dhparam.pem 2048".
#dhparamfile

# По умолчанию прослушиватель с поддержкой TLS будет работать аналогично
# веб-сервер с поддержкой https, поскольку сервер имеет сертификат, подписанный центром сертификации
# и клиент подтвердит, что это доверенный сертификат. Общая цель
# - это шифрование сетевого трафика. Установив значение require_certificate равным true,
# клиент должен предоставить действительный сертификат для подключения к сети
# подключение необходимо продолжить. Это позволяет контролировать доступ к брокеру
# вне механизмов, предоставляемых MQTT.
#require_certificate false

# cafile и capath определяют методы доступа к закодированному PEM
# Сертификаты центра сертификации, которые будут считаться доверенными, когда
# проверка входящих клиентских сертификатов.
# cafile определяет путь к файлу, содержащему сертификаты центра сертификации.
# capath определяет каталог, в котором будет осуществляться поиск файлов
# содержащий сертификаты центра сертификации. Чтобы capath работал корректно, необходимо
# файлы сертификатов должны заканчиваться на ".crt", и вы должны запустить
# "openssl перефразирует <путь к capath>" каждый раз, когда вы добавляете/удаляете сертификат.
#cafile
#capath


# Если require_certificate имеет значение true, вы можете установить значение use_identity_as_username равным true
# использовать значение CN из клиентского сертификата в качестве имени пользователя. Если это
# true, параметр password_file не будет использоваться для этого прослушивателя.
#use_identity_as_username false

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе предварительного общего ключа
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе PSK для
# этот слушатель. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883, но
# это должно быть установлено вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе сертификатов раздел"
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя / enabled for any listener.

# Опция psk_hint включает поддержку предварительного общего ключа для этого прослушивателя, а также
# действует как идентификатор для этого прослушивателя. Подсказка отправляется клиентам и может
# будет использоваться локально для облегчения аутентификации. Подсказка представляет собой строку произвольной формы, которая
# само по себе не имеет большого значения, так что не стесняйтесь проявлять творческий подход.
# Если эта опция предусмотрена, смотрите psk_file, чтобы определить предварительно разделяемые ключи, которые должны быть
# использовал или создал плагин безопасности для их обработки.
#psk_hint

# При использовании PSK используемые шифры шифрования будут выбраны из списка
# доступные PSK-шифры. Если вы хотите контролировать, какие шифры доступны,
# используйте опцию "шифры/ciphers".  Список доступных шифров может быть расширен
# используется команда "openssl ciphers" и должна быть предоставлена в том же формате
# в качестве выходных данных этой команды.
#ciphers

# Установите use_identity_as_username, чтобы использовать psk-идентификатор, отправленный клиентом
# в качестве его имени пользователя. Аутентификация будет осуществляться с использованием PSK, а не
# имя пользователя/пароль MQTT и so password_file не будут использоваться для этого
# слушатель.
#use_identity_as_username false


# =================================================================
# Устойчивость / Persistence
# =================================================================

# Если сохраняемость включена, сохраните базу данных в памяти на диск
# каждые секунды автосохранения_интервала. Если установлено значение 0, то постоянство
# база данных будет записана только при выходе из mosquitto. Смотрите также
# автосохранение_на_изменениях.
# autosave_on_changes
# Обратите внимание, что запись постоянной базы данных может быть принудительной с помощью
# отправка mosquitto сигнала SIGUSR1.
#autosave_interval 1800

# Если значение true, mosquitto подсчитает количество сохраненных изменений в подписке
# полученные сообщения и сообщения в очереди, и если общее количество превышает
# autosave_interval, после чего база данных, хранящаяся в памяти, будет сохранена на диск.
# Если значение равно false, mosquitto сохранит базу данных в памяти на диск, обработав
# автосохранение_интервала в виде времени в секундах.
#autosave_on_changes false

# Сохранить данные постоянного сообщения на диск (true/false).
# При этом сохраняется информация обо всех сообщениях, включая
# подписки, текущие сообщения в полете и сохраненные
# сообщения.
# retained_persistence является синонимом этого параметра.
#persistence false

# Имя файла, которое будет использоваться для постоянной базы данных, не включая
# путь.
#persistence_file mosquitto.db

# Местоположение постоянной базы данных.
# По умолчанию - пустая строка (текущий каталог).
# Установите, например, значение /var/lib/mosquitto, если он запущен как надлежащая служба в Linux или схожий.
#persistence_location


# =================================================================
# Регистрация
# =================================================================

# Места для входа в систему. Используйте несколько строк log_dest для нескольких
# регистрация пунктов назначения.
# Возможные пункты назначения: стандартный вывод stderr файл темы системного журнала dlt
#
# stdout и stderr регистрируются в консоли на именованном выходе.
#
# syslog использует средство системного журнала пользовательского пространства, которое обычно заканчивается
# в /var/log/messages или подобном.
#
# тема регистрируется в теме брокера '$SYS/broker/log/<серьезность>',
# где серьезность - это одно из значений D, E, W, N, I, M, которые являются отладочными, ошибка,
# предупреждение, извещение, информация и сообщение. Серьезность типа сообщения используется
# лог_типы подписки/отказа от подписки и публикует сообщения журнала для
# $SYS/broker/log/M/susbcribe или $SYS/broker/log/M/отказаться от подписки.
# $SYS/broker/log/M/susbcribe or $SYS/broker/log/M/unsubscribe
#
# Для назначения файла требуется дополнительный параметр, который является файлом, подлежащим удалению.
# вошел в систему, например, "log_dest file /var/log/mosquitto.log". Файл будет
# закрывается и вновь открывается, когда брокер получает сигнал HUP. Только один файл
# пункт назначения может быть настроен.
#
# Назначение dlt предназначено для автомобильного инструмента `Журнал диагностики и трассировка`.
# Для этого требуется, чтобы Mosquitto был скомпилирован с поддержкой DLT.
#
# Обратите внимание, что если брокер запущен как служба Windows, то по умолчанию он будет
# "log_dest none" и ведение журнала stdout или stderr недоступно.
# Используйте "log_dest none", если вы хотите отключить ведение журнала.
#log_dest stderr

# Типы сообщений для регистрации. Используйте несколько строк log_type для ведения журнала
# несколько типов сообщений.
# Возможными типами являются: debug, error, warning, notice, information,
# none, subscribe, unsubscribe, websockets, all.
# Обратите внимание, что сообщения типа debug предназначены для декодирования входящих/исходящих incoming/outgoing
# сетевые пакеты. Они не зарегистрированы в разделе "Темы"/topic.
#log_type error
#log_type warning
#log_type notice
#log_type information


# Если установлено значение true, будут включены сообщения о подключении и разъединении клиента
# в журнале логе.
#connection_messages true

# При использовании ведения системного журнала (не в Windows) сообщения будут записываться в
# средство "демон" по умолчанию. Используйте параметр log_facility, чтобы выбрать, какой из
# от local0 до local7 для входа в систему вместо этого. Значение параметра должно быть целым числом
# значение, например "log_facility 5" для использования local 5.
#log_facility

# Если установлено значение true, добавьте значение временной метки к каждому сообщению журнала.
#log_timestamp true

# Установите формат временной метки журнала. Если значение не задано, то это количество
# секунды, прошедшие с эпохи Unix.
# Это произвольная текстовая строка, которая будет передана функции strftime. Чтобы
# получить дату и время ISO 8601, например:
# log_timestamp_format %Y-%m-%dT%H:%M:%S
#log_timestamp_format

# Измените уровень ведения журнала websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Это целое число, которое интерпретируется с помощью
# libwebsockets в качестве битовой маски для своего перечисления lws_log_levels. Увидеть документация
# libwebsockets для получения более подробной информации. "log_type websockets" также должен содержать
# быть включенным.
#websockets_log_level 0


# =================================================================
# Безопасность
# =================================================================

# Если задано, только клиенты, у которых есть соответствующий префикс в их
# clientid будет разрешено подключиться к брокеру. По умолчанию,
# все клиенты могут подключаться.
# Например, установка "secure-" здесь будет означать, что клиент "защищен-
# клиент" / "secure-client"  смог подключиться, но другой с идентификатором клиента "mqtt" не смог.
#clientid_prefixes

# Логическое значение, определяющее, подключаются ли клиенты, которые
# подключение разрешено без указания имени пользователя. Если установлено значение
# false, затем должен быть создан файл паролей (см.
# параметр password_file) для управления аутентифицированным клиентским доступом.
#
# По умолчанию имеет значение false, если только в конфигурации не определены прослушиватели
# файл, в этом случае ему присваивается значение true, но подключения разрешены только из
# локальный компьютер.
#allow_anonymous false

# -----------------------------------------------------------------
# Проверка подлинности по умолчанию и контроль доступа к разделам
# -----------------------------------------------------------------

# Контролируйте доступ к брокеру с помощью файла паролей. Этот файл может быть
# сгенерирован с помощью утилиты mosquitto_passwd. Если поддержка TLS не скомпилирована
# в mosquitto (рекомендуется включить поддержку TLS), затем
# используются обычные текстовые пароли, и в этом случае файл должен быть текстовым
# со строками в формате:
# имя пользователя:пароль
# Пароль (и двоеточие) при желании можно опустить, хотя это
# предлагает очень мало с точки зрения безопасности.
#
# Смотрите параметры TLS-клиента require_certificate и use_identity_as_username
# для альтернативных вариантов аутентификации. Если используется плагин, а также
# password_file, сначала будет произведена проверка плагина.
#password_file

# Доступом также можно управлять с помощью файла предварительного общего ключа. Для этого требуется Поддержка
# TLS-PSK и прослушиватель, настроенный для ее использования. Файл должен быть текстовым
# строки в формате:
# идентификация:ключ
# Ключ должен быть в шестнадцатеричном формате без начального "0x".
# Если также используется плагин, то сначала будет произведена проверка плагина.
#psk_file

# Контролируйте доступ к разделам в брокере, используя список контроля доступа
# файл. Если этот параметр определен, то будут доступны только перечисленные темы
# иметь доступ.
# Если первым символом строки файла ACL является #, он обрабатывается как
# комментарий.
# Доступ к теме добавляется строками формата:
#
# тема [чтение|запись|чтение-запись|запретить] <тема>
# topic [read|write|readwrite|deny] <topic>
#
# Тип доступа контролируется с помощью "чтение", "запись", "чтение-запись" или "запретить" "read", "write", "readwrite" or "deny".
# Этот параметр необязателен (если только <topic> не содержит пробел) -
# если не задан, то доступ осуществляется для чтения/записи read/write.  <topic> может содержать знак + или #
# подстановочные знаки, как в подписках.
#
# Опция "запретить"/"deny" может использоваться для явного запрета доступа к теме, которая могла бы
# в противном случае будет предоставлено более широким оператором чтения/записи/чтение-запись read/write/readwrite. Любое "запретить" "deny"
# темы обрабатываются перед темами, которые предоставляют доступ для чтения/записи.
#
# Первый набор тем применяется к анонимным клиентам, предполагая
# allow_anonymous имеет значение true. Списки управления доступом к конкретным темам пользователя добавляются после
# строка пользователя выглядит следующим образом:
#
# user <username>
#
# Имя пользователя, указанное здесь, такое же, как и в password_file. Это
# не идентификатор клиента.
#
#
# If также возможно определить списки управления доступом на основе подстановки шаблона внутри
# тема. Шаблоны, доступные для замены, следующие:
#
# %c чтобы соответствовать идентификатору клиента клиента
# %c to match the client id of the client
# %u, чтобы совпадать с именем пользователя клиента
# %u to match the username of the client
#
# Шаблон подстановки должен быть единственным текстом для этого уровня иерархии.
#
# Форма такая же, как для ключевого слова topic, но в качестве шаблона используется
# ключевое слово.
# Шаблонные списки контроля доступа применяются ко всем пользователям, даже если ключевое слово "пользователь"/"user" ранее использовалось
# было дано.
#
# При использовании мостов с именами пользователей и списками контроля доступа сообщения о подключении могут быть разрешены
# со следующим шаблоном:
# шаблон записи $SYS/broker/connection/%c/state
# pattern write $SYS/broker/connection/%c/state
#
# шаблон [чтение|запись|чтение-запись] <тема>
# pattern [read|write|readwrite] <topic>
#
# Пример:
#
# датчик записи шаблона/%u/данные
# pattern write sensor/%u/data
#
# Если используется плагин, а также acl_file, проверка плагина будет
# сделано первым.
# If an plugin is used as well as acl_file, the plugin check will be
# made first.
#acl_file

# -----------------------------------------------------------------
# Параметры плагина внешней аутентификации и доступа к теме
# -----------------------------------------------------------------

# Внешняя аутентификация и контроль доступа могут поддерживаться с помощью
# опция плагина. Это путь к загружаемому плагину. Смотрите также
# plugin_opt_* параметры, описанные ниже.
#
# Параметр плагина можно указать несколько раз для загрузки нескольких
# плагины. Плагины будут обработаны в том порядке, в котором они указаны
# здесь. Если параметр плагина указан рядом с любым из
# password_file или acl_file, тогда сначала будет произведена проверка плагина.
#
# Если параметр per_listener_settings имеет значение false, плагин будет применен ко всем
# слушатели. Если per_listener_settings имеет значение true, то плагин будет применяться к
# определяется только текущий прослушиватель.
#
# Эта опция также доступна как `auth_plugin`, но такое использование устарело
# и будет удален в будущем.
#
# Плагин
#plugin

# Если используется опция плагина, указанная выше, определите параметры для передачи в
# подключите здесь, как описано в инструкциях по подключению. Все названные параметры
# с использованием формата plugin_opt_* будет передан плагину, например:
#
# Эта опция также доступна как `auth_opt_*`, но такое использование устарело
# и будет удален в будущем.
#
# plugin_opt_db_host
# plugin_opt_db_port
# plugin_opt_db_username
# plugin_opt_db_password


# =================================================================
# Bridges/Мост
# =================================================================

# Мост - это способ соединить несколько брокеров MQTT вместе.
# Создайте новый мост, используя опцию "подключение", как описано ниже. Набор
# параметры для мостов с использованием остальных параметров. Вы должны указать
# адрес и хотя бы одна тема, на которую нужно подписаться.
#
# Каждое соединение должно иметь уникальное имя.
#
# В адресной строке может быть указано несколько адресов хоста и портов. Видеть
# ниже в описании round_robin приведены более подробные сведения о поведении моста, если
# используется несколько адресов. Обратите внимание, что если вы используете IPv6-адрес, то вы
# требуются для указания порта.
#
# Направление, в котором будет распространяться тема, может быть выбрано
# указание out, in или обоих, где значением по умолчанию является out.
# Уровень QoS мостовой связи может быть задан с помощью следующего
# вариант темы. Уровень QoS по умолчанию равен 0, чтобы изменить QoS в теме
# также должно быть указано направление.
#
# Параметры локального и удаленного префикса позволяют переназначать тему, когда она
# подключен к удаленному брокеру/от него. Это дает возможность разместить тему
# дерево в соответствующем месте.
#
# Для получения более подробной информации смотрите справочную страницу mosquitto.conf.
#
# Для каждого подключения можно указать несколько тем, но будьте осторожны
# не создавать никаких циклов.
#
# Если вы используете bridges с cleansession, установленным в значение false (по умолчанию), то
# вы можете получить неожиданное поведение во входящих темах, если измените то, что
# темы, на которые вы подписаны. Это происходит потому, что удаленный брокер сохраняет
# подписка на старую тему. Если у вас возникла эта проблема, подключите свой мост
# с cleansession, установленным в true, затем повторно подключитесь с cleansession, установленным в false
# как обычно.
#connection <name>
#address <host>[:<port>] [<host>[:<port>]]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

# Если вам нужно, чтобы мост подключался через определенный сетевой интерфейс,
# используйте bridge_bind_address, чтобы указать мосту, какой локальный IP-адрес имеет сокет
# должен быть привязан, например, к `bridge_bind_address 192.168.1.10`
#bridge_bind_address

# Если у моста есть темы, которые имеют направление "наружу", поведение по умолчанию таково:
# отправьте запрос на отмену подписки удаленному брокеру по этой теме. Это означает
# что изменение направления темы с "вход" на "выход" не приведет к продолжению приема
# входящие сообщения. Отправка таких запросов на отмену подписки осуществляется не всегда
# желательно, чтобы установка bridge_attempt_unsubscribe в значение false отключила отправку
# запрос на отмену подписки.
#bridge_attempt_unsubscribe true

# Установите версию протокола MQTT для использования с этим мостом. Может быть одним
# из mqttv50, mqttv311 или mqttv31. По умолчанию используется значение mqttv311.
#bridge_protocol_version mqttv311

# Установите переменную clean session для этого моста.
# Если установлено значение true, когда мост отключается по какой-либо причине, все
# сообщения и подписки будут очищены на удаленном компьютере
# брокер. Обратите внимание, что при установке cleansession в значение true может возникнуть
# значительное количество сохраненных сообщений, отправленных при подключении моста
# повторно подключается после потери соединения.
# Если установлено значение false, подписки и сообщения сохраняются на
# удаленный брокер, и доставляется при повторном подключении моста.
#cleansession false

# Установите количество времени, в течение которого мост, использующий тип отложенного запуска, должен находиться в режиме ожидания, прежде чем
# это будет остановлено. Значение по умолчанию равно 60 секундам.
#idle_timeout 60

# Установите интервал сохранения активности для этого мостового соединения, в
# секундах.
#keepalive_interval 60

# Установите идентификатор клиента для использования у локального брокера. Если не определено, то по умолчанию используется значение
# 'местный.<идентификатор клиента>'/ 'local.<clientid>'. Если вы соединяете брокера с самим собой, это важно
# что local_clientid и client не совпадают.
#local_clientid

# Если установлено значение true, публикуйте уведомления для локальных и удаленных брокеров
# предоставление информации о состоянии мостового соединения. Сохраненный
# сообщения публикуются в теме $SYS/broker/connection/<clientid>/state
# если только не используется параметр notification_topic.
# Если сообщение равно 1, то соединение активно, или 0, если соединение имеет
# не удалось.
# Здесь используется функция последней воли и завещания.
#notifications true

# Выберите тему, по которой будут отправляться уведомления для этого моста.
# опубликовано. Если параметр не задан, сообщения публикуются по теме
# $SYS/broker/connection/<clientid>/state
#notification_topic

# Установите идентификатор клиента для использования на удаленном конце этого мостового соединения. Если нет
# определено, по умолчанию используется значение 'name.hostname', где name - это имя подключения
# и имя хоста - это имя хоста этого компьютера.
# Это заменяет старую опцию "clientid", чтобы избежать путаницы. "идентификатор клиента"
# остается действительным в настоящее время.
#remote_clientid

# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль"/"password", чтобы избежать путаницы. "пароль"/"password"
# остается действительным в настоящее время.
#remote_password

# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль", чтобы избежать путаницы. "пароль"
# остается действительным в настоящее время.
#remote_username

# Установите время ожидания моста, использующего тип автоматического запуска
# до попытки повторного подключения.
# Эта опция может быть настроена на использование постоянного времени задержки в секундах или на
# используйте механизм отката, основанный на "декоррелированном дрожании"/"Decorrelated Jitter", который добавляет степень
# случайности до момента, когда произойдет перезапуск.
#
# Установите постоянный тайм-аут в 20 секунд:
# restart_timeout 20
#
# Установите отсрочку с базовым (начальным значением) в 10 секунд и предельным (верхним пределом) в
# 60 секунд:
# restart_timeout 10 30
#
# По умолчанию используется значение дрожания с основанием 5 и пределом 30
#restart_timeout 5 30

# Если мост имеет более одного адреса, указанного в поле address/адреса
# конфигурация, параметр round_robin определяет поведение моста на
# сбой мостового соединения. Если round_robin имеет значение false, то значение по умолчанию
# значение, тогда первый адрес обрабатывается как основное мостовое соединение. Если
# соединение завершится неудачей, будут предприняты попытки подключения к другим дополнительным адресам в
# повернись. Будучи подключенным к дополнительному мосту, мост периодически будет
# пытайтесь повторно подключиться к главному мосту до тех пор, пока не добьетесь успеха.
# Если round_robin имеет значение true, то все адреса рассматриваются как равные. Если бы
# сбой подключения, будет опробован следующий адрес, и в случае успеха будет
# оставайтесь подключенными до тех пор, пока не произойдет сбой
#round_robin false

# Установите начальный тип моста. Это управляет запуском моста и
# может быть одного из трех типов: автоматический, ленивый и однократный automatic, lazy и once. Обратите внимание, что RSMB предоставляет
# четвертый тип запуска "ручной"/"manual", который в настоящее время не поддерживается mosquitto.
#
# "автоматический" "automatic" является типом запуска по умолчанию и означает, что мостовое соединение
# будет запущен автоматически при запуске брокера, а также перезапущен
# после небольшой задержки (30 секунд) в случае сбоя соединения.
#
# Мосты, использующие "ленивый"/"lazy" тип запуска, будут запущены автоматически, когда
# количество сообщений в очереди превышает количество, установленное с помощью "порога"/"threshold"
# параметр. Он будет автоматически остановлен по истечении времени, установленного
# параметр "idle_timeout". Используйте этот тип запуска, если вы хотите, чтобы подключение к
# будьте активны только тогда, когда это необходимо.
#
# Мост, использующий тип запуска "один раз"/"once", будет запущен автоматически, когда
# брокер запускается, но не будет перезапущен в случае сбоя соединения.
#start_type automatic

# Установите количество сообщений, которые должны быть поставлены в очередь для моста с lazy
# тип запуска для перезапуска. Значение по умолчанию - 10 сообщений.
# Должно быть меньше, чем max_queued_messages.
#threshold 10

# Если try_private имеет значение true, мост попытается указать на
# удаленный брокер, что это мост, а не обычный клиент. В случае успеха это
# означает, что обнаружение цикла будет более эффективным и что сохраненные сообщения
# будет передан правильно. Не все брокеры поддерживают эту функцию, поэтому она может
# необходимо установить try_private в значение false, если ваш мост не подключается
# должным образом.
#try_private true

# Некоторые брокеры MQTT не разрешают сохранение сообщений. MQTT v5 предоставляет механизм
# чтобы брокеры сообщали клиентам, что они не поддерживают сохраняемые сообщения, но
# это невозможно для MQTT v3.1.1 или v3.1.1. Если вам нужно подключиться к
# v3.1.1 или v3.1 брокер, который не поддерживает сохраненные сообщения, установите параметр
# bridge_outgoing_retain имеет значение false. Это удалит фиксирующий бит на
# все исходящие сообщения на этот мост, независимо от любых других настроек.
#bridge_outgoing_retain true

# Если вы хотите ограничить размер сообщений, отправляемых на удаленный мост, используйте параметр
# bridge_max_packet_size. Это устанавливает максимальное количество байт для
# общее сообщение, включая заголовки и полезную нагрузку.
# Обратите внимание, что брокеры MQTT v5 могут предоставлять свое собственное свойство максимального размера пакета.
# В этом случае будет использоваться меньшее из двух ограничений.
# Установите значение 0 для параметра "неограниченно".
#bridge_max_packet_size 0


# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Для включения поддержки TLS необходимо определить либо bridge_cafile, либо bridge_capath
# для этого моста.
# bridge_cafile определяет путь к файлу, содержащему
# Сертификаты центра сертификации, подписавшие удаленного брокера
# сертификат.
# bridge_capath определяет каталог, в котором будет выполняться поиск файлов, содержащих
# сертификаты центра сертификации. Чтобы bridge_capath работал корректно, сертификат
# файлы должны иметь ".crt" в качестве окончания файла, и вы должны запустить "openssl rehash
# <путь к capath>" каждый раз, когда вы добавляете/удаляете add/remove сертификат.
#bridge_cafile
#bridge_capath


# Если удаленный брокер имеет более одного протокола, доступного на его порту, например
# MQTT и WebSockets, затем используйте bridge_alpn для настройки того, какой протокол является
# запрошено. Обратите внимание, что поддержка WebSockets для мостов пока недоступна.
#bridge_alpn

# При использовании шифрования на основе сертификата bridge_insecure отключает
# проверка имени хоста сервера в сертификате сервера. Это может быть
# полезно при тестировании первоначальных конфигураций сервера, но позволяет
# злонамеренная третья сторона, выдающая себя за ваш сервер посредством подмены DNS, для
# пример. Используйте этот параметр только при тестировании. Если вам нужно прибегнуть к использованию этого
# опция в производственной среде ваша настройка неисправна, и нет
# укажите, используя шифрование.
#bridge_insecure false

# Путь к клиентскому сертификату в кодировке PEM, если это требуется удаленному брокеру.
#bridge_certfile

# Путь к закрытому ключу клиента в кодировке PEM, если это требуется удаленному брокеру.
#bridge_keyfile

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе PSK
# -----------------------------------------------------------------
# Шифрование с предварительным общим ключом обеспечивает альтернативу шифрованию на основе сертификатов
# шифрование. Мост может быть сконфигурирован для использования PSK с параметром bridge_identity параметры
# и bridge_psk. Это идентификатор PSK клиента и предварительный общий ключ
# в шестнадцатеричном формате без "0x". Только один из сертификатов и на основе PSK
# шифрование может быть использовано на одном
# мост сразу.
#bridge_identity
#bridge_psk


# =================================================================
# Внешние конфигурационные файлы
# =================================================================

# Внешние конфигурационные файлы могут быть включены с помощью
# параметр include_dir. Это определяет каталог, в котором будет выполняться поиск
# для конфигурационных файлов. Все файлы, которые заканчиваются на '.conf', будут загружены как
# файл конфигурации. Лучше всего использовать это в качестве последнего варианта
# в основном файле. Этот параметр будет обрабатываться только из основного
# конфигурационный файл. Указанный каталог не должен содержать
# основной конфигурационный файл.
# Файлы внутри include_dir будут загружены отсортированными с учетом регистра
# в алфавитном порядке, с заглавными буквами, расположенными первыми. Если этот параметр выбран
# заданный несколько раз, все файлы из первого экземпляра будут
# обрабатывается перед следующим экземпляром. Примеры приведены на странице руководства.
#include_dir

Добавим пользователя, от имени которого будет запускаться mosquitto

Код: Выделить всё

adduser mosquitto
И два раза вводим пароль New password и повторите пароль Retype password

В файле конфигурации mosquitto.conf раскоментируем строку user mosquitto с пользователем от имени которого будет запускаться mosquitto.

Добавляем mosquitto в автозагрузку при включении или перезапуске роутера
Старый способ
Показать
Для этого необходимо создать скрипт в каталоге /opt/etc/init.d с названием Smosquitto. Префикс “S” означает,
то данный скрипт будет включён в автозапуск (префикс “K” означает, то данный скрипт будет исключён из автозапуска)

Код: Выделить всё

nano /opt/etc/init.d/Smosquitto

Код: Выделить всё

#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin 
mosquitto -d -c /opt/etc/mosquitto/mosquitto.conf
Даем права

Код: Выделить всё

chmod +x /opt/etc/init.d/Smosquitto
Запустить mosquitto командой

Код: Выделить всё

mosquitto -c /opt/etc/mosquitto/mosquitto.conf -d
Скрипт Перезапуска

Код: Выделить всё

#!/bin/sh
PATH=/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin 
killall mosquitto
mosquitto -d -c /opt/etc/mosquitto/mosquitto.conf
В файле s80mosquitto автозапуска указываем параметр yes вместо no автозагрузка настроена.

Код: Выделить всё

nano /opt/etc/init.d/s80mosquitto
ENABLED=yes

Добавим доступ к каталогам от пользователя mosquitto
Переходим в каталог

Код: Выделить всё

cd /opt/etc/mosquitto
Создаем каталог persistence и certs

Код: Выделить всё

mkdir persistence

Код: Выделить всё

mkdir certs
Даем права на этот каталог

Код: Выделить всё

chown -R :mosquitto persistence

Код: Выделить всё

chown -R mosquitto persistence
Создаем файл в котором будут права доступа на топики

Код: Выделить всё

touch mosquitto.acl
Даем права на mosquitto.acl

Код: Выделить всё

chown mosquitto:mosquitto mosquitto.acl
Конфигурация mosquitto
Конфигурация mosquitto
Даем права и создаем файлы лога и процесса

Код: Выделить всё

chmod 777 /opt/var/log
touch /opt/var/run/mosquitto.pid
touch /opt/var/log/mosquitto.log
chown mosquitto:mosquitto /opt/var/run/mosquitto.pid
chown mosquitto:mosquitto /opt/var/log/mosquitto.log
Описание Пользователи Пароли
Показать
Потребуется добавить как минимум одного пользователя в список пользователей брокера. С помощью этого аккаунта Вы будете подключаться к брокеру со смартфона и с Ваших устройств. Однако я настоятельно рекомендую Вам не ограничиваться одной учетной записью, а создать несколько разных учетных записей – отдельные учётки для смартфонов управления, и отдельные учётки для каждого из умных устройств. Во-первых при необходимости изменения единственного пароля (при утере смартфона, например), Вам придется поменять все пароли на всех устройствах сразу. А в случае разных учёток можно ограничится только удалением из списка скомпрометированной записи. Во-вторых, при разных учетных записях возможно настроить разные уровни доступа к топикам, что может быть полезно.

mosquitto_passwd - это инструмент для управления файлами паролей для mosquitto.

Использование: mosquitto_passwd [-H sha512 | -H sha512-pbkdf2] [-c | -D] имя пользователя файла с паролем
mosquitto_passwd [-H sha512 | -H sha512-pbkdf2] [-c] -b файл пароля имя пользователя пароль
mosquitto_passwd -U файл пароля
-b : запустите в пакетном режиме, чтобы разрешить передачу паролей в командной строке.
-c : создайте новый файл паролей. Это приведет к перезаписи существующих файлов.
-D : удалите имя пользователя, а не добавляйте/обновляйте его пароль.
-H : укажите алгоритм хэширования. По умолчанию используется sha512-pbkdf2, что рекомендуется.
В Mosquitto 1.6 и более ранних версиях по умолчанию установлен sha512.
-U : обновите обычный текстовый файл паролей, чтобы использовать хэшированные пароли.

Смотрите Для получения дополнительной информации
Первого пользователя добавляем с опцией создания нового файла ( -с ):

Код: Выделить всё

mosquitto_passwd -c -b /opt/etc/mosquitto/mosquitto.users логин пароль
Например для чайника

Код: Выделить всё

mosquitto_passwd -c -b /opt/etc/mosquitto/mosquitto.users teapot пароль
Второго и последующего пользователя добавляем уже без этого флага:

Код: Выделить всё

mosquitto_passwd -b /opt/etc/mosquitto/mosquitto.users логин пароль
В файле /opt/etc/mosquitto/mosquitto.users будет содержание вида:
admin:$7$101$NUE9kyIRB4Ght9ub$qOzyqRAf5rRcVVddLoQbgplfRhbZFc8NLsrTy3jDsHli9Gq52cK6uSnRkQE0xHWKqNgYZV+sE27lv/Mzsm2phw==
teapot:$7$101$KrJjxaCUf2QeC9xt$wb2TMbbfb3ZUGqELgYFFPePQfSO63ARbrhBH5+cHZjHAtKAnObBsnqDvvWCcbMZ0coxMkGvcjYScLv00Gl/6GA==


Даем права доступа к топикам данных пользователей

Код: Выделить всё

nano/opt/etc/mosquitto/mosquitto.acl
user <имя-пользователя>
topic [read|write|readwrite|deny] <topic>
topic [чтение|запись|чтение-запись|отклонить] <топик>

пользователей должны соответствовать Вашим, дали полные права на все топики

Код: Выделить всё

user admin
topic readwrite #

user teapot
topic readwrite #
В дальнейшем на устройстве будем указывать наш сервер и логин пароль данных пользователей и на клиенте (телефон, пк и тд этот же логин пароль) внутри них будет обмен данными и командами управления.
количество слов: 1644
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 810
Стаж: 5 лет 2 месяца
Откуда: Вологодская область
Поблагодарили: 34 раза
Контактная информация:

Установка на Wi Fi маршрутизатор Keenetic ОС Entware mosquitto

Сообщение Артём Мамзиков »

Добавляем Настраиваем TLS/SSL соединение (не обязательно если используется только внутри локальной сети)

Переходим в ранее созданный каталог

Код: Выделить всё

cd /opt/etc/mosquitto/certs
Генерируем личный RSA ключ длиной 2048 бит с именем mosq-ca.key для личного “центра сертификации” (СА KEY)

Код: Выделить всё

openssl genrsa -out mosq-ca.key 2048
Генерируем CA сертификат X509 (CA CERT) используя созданный mosq-ca.key ключ.
Будут запрошены данные страны, региона, организации и другие данные в процессе генерации сертификата.

Код: Выделить всё

openssl req -new -x509 -days 999 -key mosq-ca.key -out mosq-ca.crt
Генерируем личный RSA ключ для сервера (SERVER KEY)

Код: Выделить всё

openssl genrsa -out mosq-serv.key 2048
Создаем запрос на подпись сертификата сервера (SERVER CSR)
сертификат, подписанный “своим” центром сертификации

Код: Выделить всё

openssl req -new -key mosq-serv.key -out mosq-serv.csr
Создаем сертификат сервера (SERVER CERT)

Код: Выделить всё

openssl x509 -req -in mosq-serv.csr -CA mosq-ca.crt -CAkey mosq-ca.key -CAcreateserial -out mosq-serv.crt -days 999 -sha256
Даем права на сертификаты

Код: Выделить всё

chmod 777 /opt/etc/mosquitto/certs -R
Сертификаты созданы.
Этот сертификат не примет обычный браузер, но в некоторых mqtt-клиентах для android есть возможность использования самоподписанного сертификата (хотя в этом есть потенциальный риск, что сертификат может быть подменен).
А для ESP это вообще не важно, так как в любом случае требуется указание корневого сертификата.

Проверка

Код: Выделить всё

openssl x509 -in mosq-serv.crt -noout -text

Настраиваем mosquitto.conf

Оф. документация

Укажем на каком порту сервер будет “слушать” входящие подключения
# Порт без SSL
listener 1883
# Порт с SSL
listener 8883
protocol mqtt

Общие настройки
# Пользователь, от имени которого будет запущен mosquitto
user mosquitto

# Файл идентификатор запущенного сервиса
pid_file /opt/var/run/mosquitto.pid

# Разрешить сохраняемые сообщения
retain_available true

# Лимит кучи, если в будущем окажется, что брокер выжирает всю доступную память на роутере, то придется умерить его аппетиты
memory_limit 0

# Разрешить подключение без указания идентификатора клиента
allow_zero_length_clientid true
auto_id_prefix auto-

# Удалять подключения старше 1 месяца
persistent_client_expiration 1m

# Помещать сообщения QoS0 в очередь
queue_qos0_messages false

# Интервал публикации системной информации, сильно не грузить роутер почти бесполезными данными (по умолчанию 10 секунд)
sys_interval 60

Указываем, где брокер будет хранить базу данных, указываем путь
# Разрешить сохранение базы данных на диске
persistence true

# Каталог для хранения локальной базы данных
persistence_location /opt/etc/mosquitto/persistence
# Имя файла локальной базы данных
persistence_file mosquitto.db

# Интервал записи данных на диск в секундах
autosave_interval 1800
# Сохранять по интервалу времени (true - по количеству изменений)
autosave_on_changes false

Журналированию Логирование
Начальном этапе я включил несколько журналов: в консоль, в системный журнал роутера, в файл и в системные топики.
После того, как настройка брокера будет завершена, вывод журналов в консоль и в файл имеет смысл отключить. Ибо консоль всё равно никто видеть не будет, а файл может неограниченно расти и количество типов событий можно существенно подсократить (в будущем).

# Вывод в консоль
log_dest stdout
# Вывод в системный лог роутера
log_dest syslog
# Вывод в файл
log_dest file /opt/var/log/mosquitto.log
# Вывод в системный топик
log_dest topic

# Какие типы сообщений следует писать в лог
log_type error
log_type warning
log_type notice
log_type information
log_type subscribe
log_type unsubscribe

# Выводить в лог события подключения клиентов
connection_messages true

# Выводить в лог метку времени
log_timestamp true
log_timestamp_format %Y-%m-%d %H:%M:%S


cron - Планировщик (для очистки логов раз в сутки и при включении)

Код: Выделить всё

nano /opt/etc/init.d/S10cron
авто загрузка ENABLED=yes

Код: Выделить всё

nano /opt/etc/crontab
1 1 * * * root `cat "0" > /opt/var/log/mosquitto.log` > /dev/null 2>&1
#*/1 * * * * root `cat "0" > /opt/var/log/mosquitto.log` > /dev/null 2>&1
@reboot root `cat "0" > /opt/var/log/mosquitto.log` > /dev/null 2>&1

Рестартуем для применения настроек

Код: Выделить всё

/opt/etc/init.d/S10cron restart
Авторизация клиентов на сервере.
Самый простой вариант – по логину и паролю, без плагинов и сертификатов.

#clientid_prefixes
# Запретить анонимные подключения
allow_anonymous false
# Имя файла с данными пользователей и паролями
password_file /opt/etc/mosquitto/mosquitto.users
# Имя файла с правами доступа к топикам
acl_file /opt/etc/mosquitto/mosquitto.acl

# Ключи для TSL/SSL
cafile /opt/etc/mosquitto/certs/mosq-ca.crt
certfile /opt/etc/mosquitto/certs/mosq-serv.crt
keyfile /opt/etc/mosquitto/certs/mosq-serv.key

После настройки файла конфигурации рестартуем сервер

Код: Выделить всё

/opt/etc/init.d/S80mosquitto restart
Порты:
1883 - Без сертификатов
Если сертификаты были настроены
8883 - С сертификатами SSL

пробросить порты 1883 и 8883 на роутере наружу и попытаться подключиться к нашему серверу извне. Если Вы имеете белый IP-адрес… Или попробовать подключиться через Keenetic DNS.
“Сетевые правила” – “Переадресация” и добавляем правило
Сетевые правила Переадресация
Сетевые правила Переадресация
Можно пробовать подключиться к нашему MQTT серверу
Примеры MQTT клиентов:

Мобильное приложение MQTT Dash
MQTT Dash
MQTT Dash
Расширение для браузера MQTTlens
MQTTlens
MQTTlens
Я использую приложение IoT MQTT Panel
IoT MQTT Panel.PNG
IoT MQTT Panel.PNG
Локальное подключение 1883 без сертификатов
Локальное подключение 1883 без сертификатов
Локальное подключение 1883 без сертификатов
Локальное подключение 8883 с сертификатами SSL
Локальное подключение 8883 с сертификатами SSL
Локальное подключение 8883 с сертификатами SSL
Подключение внутри локальной сети Wi-Fi
Подключение внутри локальной сети Wi-Fi
Подключение внутри локальной сети Wi-Fi
Подключение через Интернет (мобильную сеть LTE)
Подключение через Интернет (мобильную сеть LTE)
Подключение через Интернет (мобильную сеть LTE)
Пример получения данных в командной строке
Слушаем данные, Подписываемся на топики:
r4s0 - Это шлюз уже подключенный к нашему MQTT серверу, о нём ниже.
Можно слушать все данные ветки "r4s0/" при помощи служебного символа #:
Без авторизации если доступно всем

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -v
С авторизацией

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
! Данные в MQTT открыты, использование публичного брокера рекомендуется только в тестовых целях.


Настраиваем мост к внешнему MQTT серверу
создать отдельного локального пользователя

Код: Выделить всё

mosquitto_passwd -b /opt/etc/mosquitto/mosquitto.users mosquittobridge пароль
добавить права доступа на топики в

Код: Выделить всё

nano /opt/etc/mosquitto/mosquitto.acl
user bridge
topic readwrite #

Код: Выделить всё

nano /opt/etc/mosquitto/mosquitto.conf
# Имя мостового соединения
connection wqtt_ru
# Имя сервера и порт для внешнего брокера
address x65535.wqtt.ru:1003
# Какие топики и в каком направлении следует пересылать: в данном случае всё (только для примера, в раельном соединении не рекомендуется: может вызвать зацикливание)
topic # both
# Отписываться на внешнем брокере от тем "наружу"
bridge_attempt_unsubscribe true
# Версия протокола (мой удаленный брокер требует этот протокол)
bridge_protocol_version mqttv311
# Чистая сессия отключена
cleansession false
# Интервал, после которого неактивный мост будет остановлен
idle_timeout 600
# Интервал поддержания соединения в секундах
keepalive_interval 60
# Параметры локального подключения
local_clientid bridge_local
local_username bridge
local_password 11111111
# Если установлено true, публиковать уведомления для локальных и удаленных брокеров с информацией о состоянии мостового соединения
notifications true
# Параметры удаленного подключения
remote_clientid bridge_remote
remote_password 22222222
remote_username U_WQTT_RU
# Тип запуска: автоматический
start_type automatic

Настройка моста на работу через SSL
Для работы SSL необходим сертификат удаленного сервера, точнее корневой сертификат удостоверяющего центра,
с которого по цепочке будут проверены все остальные сертификаты. На роутере сертификат удостоверяющего центра для wqtt.ru
уже имеется в каталоге /etc/ssl/certs под именем ISRG_Root_X1.crt, так что ничего скачивать и генерировать не потребуется.
Мало того, роутер сам позаботится об его обновлении, когда необходимо.
Осталось немного подкорректировать файл конфигурации:
# Имя сервера и порт для внешнего брокера: здесь меняем порт на SSL
address x65535.wqtt.ru:1004
# Сертификат CA (корневой в цепочке сертификатов) внешнего брокера
bridge_cafile /etc/ssl/certs/ISRG_Root_X1.crt

После настройки файла конфигурации рестартуем сервер

Код: Выделить всё

/opt/etc/init.d/S80mosquitto restart
Ну и напоследок могу порекомендовать выделить для IoT устройств отдельную сеть с отдельным диапазоном адресов,
так как медленные ESP8266 в общей сети как-то умудрялись тормозить всю wifi сеть.
После выделения и переподключения их в отдельный сегмент, проблема ушла.
количество слов: 514
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 810
Стаж: 5 лет 2 месяца
Откуда: Вологодская область
Поблагодарили: 34 раза
Контактная информация:

Установка на Wi Fi маршрутизатор Keenetic ОС Entware mosquitto

Сообщение Артём Мамзиков »

У меня получился такой конфигурационный файл mosquitto.conf
mosquitto.7z
mosquitto.7z
(16.38 КБ) 5 скачиваний

Код: Выделить всё

# Конфигурационный файл для mosquitto
#
# Смотрите mosquitto.conf(5) для получения дополнительной информации.
#
# Показаны значения по умолчанию, раскомментируйте, чтобы изменить.
#
# Используйте символ # для обозначения комментария, но только в том случае, если это
# самый первый символ в строке.

# =================================================================
# Общая конфигурация
# =================================================================

# Используйте настройки безопасности для каждого прослушивателя.
#
# Рекомендуется устанавливать этот параметр перед любыми другими параметрами.
#
# Если для этого параметра установлено значение true, то вся аутентификация и контроль доступа
# параметры управляются индивидуально для каждого слушателя. Доступны следующие варианты
# затронутый:
#
# acl_file
# разрешить_анонимный
# allow_anonymous
# разрешить идентификатор клиента нулевой длины
# allow_zero_length_clientid
# авто_ид_префиксация
# auto_id_prefix
# пароль_файл
# password_file
# плагин
# plugin
# плагин_opt_*
# plugin_opt_*
# psk_file
#
# Обратите внимание, что если установлено значение true, то это надежный клиент (т.е. с установленным чистым сеансом
# к false), который отключился, будет использовать настройки ACL, определенные для
# слушатель, к которому он был подключен совсем недавно.
#
# Поведение по умолчанию заключается в том, что для этого параметра устанавливается значение false, что поддерживает
# настройка поведения из предыдущих версий mosquitto.
#per_listener_settings false


# Этот параметр определяет, разрешено ли клиенту подключаться с нулевым значением
# длина идентификатора клиента или нет. Этот параметр влияет только на клиентов, использующих MQTT версии 3.1.1
# и позже. Если установлено значение false, клиенты подключаются с идентификатором клиента нулевой длины
# разъединены. Если установлено значение true, клиентам будет присвоен идентификатор клиента с помощью
# брокер. Это означает, что он полезен только для клиентов с установленным чистым сеансом
# к истине/true.
allow_zero_length_clientid true

# Если значение allow_zero_length_clientid равно true, этот параметр позволяет задать префикс
# к автоматически сгенерированным идентификаторам клиентов для улучшения видимости в журналах.
# По умолчанию установлено значение "авто-"/'auto-'
auto_id_prefix auto-

# Этот параметр влияет на сценарий, когда клиент подписывается на тему, в которой есть
# сохраненные сообщения. Возможно, что клиент, опубликовавший сохраненный
# сообщение в теме имело доступ на момент публикации, но этот доступ
# впоследствии был удален. Если для параметра check_retain_source установлено значение true, то
# по умолчанию источник сохраненного сообщения будет проверен на наличие прав доступа
# до того, как оно будет переиздано. Если установлено значение false, проверка производиться не будет, и
# сохраненное сообщение всегда будет опубликовано. Это касается всех слушателей.
#check_retain_source true

# QoS 1 и 2 сообщения будут разрешены к отправке каждому клиенту до достижения этого предела
# превышено.  Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_inflight_messages
#max_inflight_bytes 0

# Максимальное количество сообщений QoS 1 и 2, поступающих в данный момент на один рейс
# клиент.
# Сюда входят сообщения, которые являются частью процесса рукопожатий и
# те, которые повторяются. Значение по умолчанию равно 20. Установите значение 0 для отсутствия
# максимум. Установка значения 1 гарантирует доставку по заказу QoS 1
# и 2 сообщения.
#max_inflight_messages 20

# Для клиентов MQTT v5 возможно, чтобы сервер отправлял сообщение "сервер
# keepalive" значение, которое переопределит значение keepalive, установленное клиентом.
# Это предназначено для использования в качестве механизма, сообщающего, что сервер будет
# отключите клиент раньше, чем ожидалось, и что клиент должен
# используйте новое значение keepalive. Параметр max_keepalive позволяет вам указать
# что клиенты могут подключаться только к keepalive, значение которого меньше или равно этому
# значение, в противном случае им будет отправлено сообщение сервера keepalive с указанием использовать
# max_keepalive. Это относится только к клиентам MQTT v5. Значение по умолчанию и максимальное
# допустимое значение равно 65535.
#
# Установите значение 0, чтобы позволить клиентам устанавливать keepalive = 0, что означает отсутствие keepalive
# проверки произведены, и брокер никогда не отключит клиента, если нет
# сообщения получены. Вы должны быть абсолютно уверены, что это именно то поведение, которое вам нужно.
# хочу.
#
# Для клиентов MQTT v3.1.1 и v3.1 нет механизма, позволяющего сообщить клиенту
# какое значение keepalive они должны использовать. Если клиент MQTT версии 3.1.1 или v3.1
# указывает время сохранения, большее, чем max_keepalive, им будет отправлено сообщение
# Сообщение CONNACK с кодом причины "идентификатор отклонен"/"identifier rejected" и отключено.
#
#max_keepalive 65535

# Для клиентов MQTT v5 возможно, чтобы сервер отправлял "максимальный пакет
# размер" значение, которое сообщит клиенту, что он не будет принимать пакеты MQTT
# с размером, превышающим байт max_packet_size. Это относится к полному MQTT
# пакет, а не только полезная нагрузка. Установка для этого параметра положительного значения приведет к
# установите максимальный размер пакета равным этому количеству байт. Если клиент отправляет
# пакет, размер которого превышает это значение, будет отключен. Это применимо
# для всех клиентов, независимо от версии протокола, которую они используют, но v3.1.1
# и более ранние клиенты, конечно, не получили максимальный размер пакета
# информация. Значение по умолчанию - без ограничений. Установка значения ниже 20 байт запрещена
# потому что это, вероятно, будет мешать обычной работе клиента, даже при
# очень маленькая полезная нагрузка.
#max_packet_size 0

# QoS 1 и 2 сообщения, превышающие те, которые в данный момент находятся в полете, будут помещены в очередь за
# клиент до тех пор, пока этот лимит не будет превышен.  Значение по умолчанию равно 0. (Без максимума)
# Смотрите также max_queued_messages.
# Если указаны как max_queued_messages, так и max_queued_bytes, пакеты будут
# находиться в очереди до тех пор, пока не будет достигнут первый лимит.
#max_queued_bytes 0

# Установите максимальное поддерживаемое качество обслуживания. Клиенты публикуют с качеством обслуживания выше, чем указанный здесь
# будет отключен.
#max_qos 2

# Максимальное количество сообщений QoS 1 и 2, которые должны храниться в очереди для каждого клиента
# выше тех, которые в данный момент находятся в полете.  Значение по умолчанию равно 1000. Набор
# до 0 без указания максимального значения (не рекомендуется).
# Смотрите также queue_qos0_messages.
# Смотрите также max_queued_bytes.
#max_queued_messages 1000
#
# Этот параметр устанавливает максимальное количество байт памяти кучи, которое брокер будет использовать
# allocate и, следовательно, устанавливает жесткое ограничение на использование памяти брокером.  Память
# запросы, превышающие это значение, будут отклонены. Эффект будет разным
# в зависимости от того, в чем было отказано. Если обрабатывается входящее сообщение,
# тогда сообщение будет удалено, а клиент публикации будет
# отключен. Если отправляется исходящее сообщение, то пользователь
# сообщение будет удалено, а принимающий клиент будет отключен.
# По умолчанию не имеет ограничений.
memory_limit 0

# Этот параметр устанавливает максимальный размер полезной нагрузки для публикации, который разрешит брокер.
# Полученные сообщения, размер которых превышает этот размер, брокер принимать не будет.
# Значение по умолчанию равно 0, что означает, что все допустимые сообщения MQTT являются
# принято. MQTT устанавливает максимальный размер полезной нагрузки в 268435455 байт.
#message_size_limit 0

# Эта опция разрешает сеанс постоянных клиентов (тех, у кого чистый
# сеанс установлен в значение false), которые в данный момент не подключены, должны быть удалены, если они
# не подключайтесь повторно в течение определенного периода времени. Это нестандартный вариант
# в MQTT версии 3.1. MQTT версии 3.1.1 и v5.0 позволяют брокерам удалять клиентские сессии.
#
# Плохо спроектированные клиенты могут установить значение clean session равным false при использовании случайного
# сгенерированный идентификатор клиента. Это приводит к появлению постоянных клиентов, которые подключаются один раз и
# никогда не подключайтесь повторно. Этот параметр позволяет удалить эти клиенты.  Этот вариант
# позволяет постоянным клиентам (тем, у кого для чистого сеанса установлено значение false) быть
# удаляется, если они не подключаются повторно в течение определенного периода времени.
#
# Период истечения срока действия должен быть целым числом, за которым следует одно из значений h d w m y для
# час, день, неделя, месяц и год соответственно. Например
#
# persistent_client_expiration 2m
# persistent_client_expiration 14d
# persistent_client_expiration 1y
#
# Значение по умолчанию, если оно не задано, - никогда не истекать для постоянных клиентов.
#persistent_client_expiration
# Удалять подключения старше 1 месяца
persistent_client_expiration 1m

# Запишите идентификатор процесса в файл. По умолчанию используется пустая строка, которая означает
# pid-файл не должен быть записан.
# Это должно быть установлено в /var/run/mosquitto/mosquitto.pid, если mosquitto является
# запускается автоматически при загрузке с помощью сценария инициализации и
# start-stop-daemon или что-то подобное.
pid_file /opt/var/run/mosquitto.pid

# Установите значение true для постановки сообщений в очередь с QoS 0, когда постоянный клиент находится

queue_qos0_messages false

# Установите значение false, чтобы отключить поддержку сохраненных сообщений. Если клиент публикует
# сообщение с установленным битом сохранения, оно будет отключено, если установлено значение
# ложь/false.
retain_available true

# Отключите алгоритм Нэгла Nagle's для клиентских сокетов. Это приводит к уменьшению
# задержка отдельных сообщений за счет потенциальной стоимости увеличения количества
# количество отправляемых пакетов.
#set_tcp_nodelay false

# Время в секундах между обновлениями дерева $SYS.
# Установите значение 0, чтобы отключить публикацию дерева $SYS.
sys_interval 60

# Спецификация MQTT требует, чтобы QoS сообщения, доставленного в
# подписчик никогда не обновляется в соответствии с QoS подписки. Позволяющий
# этот параметр изменяет это поведение. Если для upgrade_outgoing_qos установлено значение true,
# сообщения, отправляемые подписчику, всегда будут соответствовать QoS его подписки.
# Это нестандартный параметр, явно запрещенный спецификацией.
#upgrade_outgoing_qos false

# При запуске от имени root сбросьте привилегии этому пользователю и его основному
# группа.
# Установите значение root, чтобы оставаться в качестве root, но это не рекомендуется.
# Если установлено значение "mosquitto" или не установлено, и пользователь "mosquitto" не существует
# тогда вместо этого он сбросит привилегии пользователю "никто"/"nobody".
# Если вы запускаетесь от имени пользователя без прав root, этот параметр не действует.
# Обратите внимание, что в Windows это не имеет никакого эффекта, и поэтому mosquitto следует запускать с помощью
# пользователь, от имени которого вы хотите, чтобы он запускался.
user mosquitto

# =================================================================
# Слушатели/Listeners
# =================================================================

# Прослушивание комбинации порта и ip-адреса. Используя эту переменную
# несколько раз mosquitto может прослушивать более чем один порт. Если
# используется эта переменная и не заданы ни bind_address, ни порт,
# то прослушиватель по умолчанию запущен не будет.
# Должен быть указан номер порта для прослушивания. Опционально, ip-адрес
# адрес или имя хоста могут быть указаны в качестве второго аргумента. В
# этом случае mosquitto попытается привязать слушателя к этому
# адрес и, таким образом, ограничить доступ к соответствующей сети и
# интерфейс. По умолчанию mosquitto будет прослушивать все интерфейсы.
# Обратите внимание, что для прослушивателя websockets невозможно привязаться к хосту
# имя.
#
# В системах, поддерживающих доменные сокеты Unix, это также возможно
# для создания сокета # Unix вместо открытия сокета TCP. В
# этом случае номер порта должен быть равен 0, а сокет unix
# должен быть указан путь, например
# listener 0 /tmp/mosquitto.sock
#
# номер порта прослушивателя [ip-адрес/имя хоста/путь к сокету unix]
# listener port-number [ip address/host name/unix socket path]
listener 1883
listener 8883

# По умолчанию прослушиватель попытается прослушать все поддерживаемые IP-протоколы
# версии. Если у вас нет интерфейса IPv4 или IPv6, вы можете захотеть
# отключите поддержку любой из этих версий протокола. В частности, обратите внимание
# что из-за ограничений библиотеки websockets это будет только когда-либо
# попытка открыть сокеты IPv6, если поддержка IPv6 скомпилирована в, и поэтому завершится неудачей
# если IPv6 недоступен.
#
# Установите значение "ipv4", чтобы заставить прослушиватель использовать только IPv4, или установите значение "ipv6", чтобы
# заставьте прослушиватель использовать только IPv6. Если вам нужна поддержка как IPv4, так и
# IPv6, тогда не используйте параметр socket_domain.
#
#socket_domain

# Привязать прослушиватель к определенному интерфейсу. Это похоже на
# часть определения прослушивателя [ip-адрес/имя хоста], но она полезна
# когда интерфейс имеет несколько адресов или адрес может измениться. Если используется
# с частью определения прослушивателя [ip-адрес/имя хоста], затем параметр
# bind_interface будет иметь приоритет.
# Недоступно в Windows.
#
# Пример: bind_interface eth0
#bind_interface

# Когда прослушиватель использует протокол websockets, можно обслуживать
# http-данные также. Установите http_dir в каталог, содержащий файлы, которые вы
# желаю работать. Если этот параметр не указан, то обычного http не будет
# соединения будут возможны.
#http_dir

# Максимальное количество разрешенных клиентских подключений. Это
# настройка для каждого слушателя.
# Значение по умолчанию равно -1, что означает неограниченное количество подключений.
# Обратите внимание, что другие ограничения процесса означают, что неограниченное количество подключений
# на самом деле это невозможно. Обычно максимальное количество по умолчанию
# количество возможных подключений составляет около 1024.
#max_connections -1

# Слушатель может быть ограничен работой в рамках иерархии тем, используя
# параметр mount_point. Это достигается путем добавления префикса к строке mount_point
# ко всем темам для любых клиентов, подключенных к этому прослушивателю. Только этот префикс
# происходит внутри брокера; клиент не увидит префикс.
#mount_point

# Выберите протокол, который будет использоваться при прослушивании.
# Это может быть либо mqtt, либо websockets.
# TLS на основе сертификатов может использоваться с websockets, за исключением того, что только
# поддерживаются параметры # cafile, certfile, keyfile, ciphers и ciphers_tls13.
protocol mqtt

# Установите use_username_as_clientid в значение true, чтобы заменить clientid, который клиент
# подключен к со своим именем пользователя. Это позволяет привязать аутентификацию к
# идентификатор клиента, который означает, что можно предотвратить доступ одного клиента
# отключение другого пользователя с использованием того же идентификатора клиента.
# Если клиент подключается без имени пользователя, он будет отключен как не
# авторизован, если для этой опции установлено значение true.
# Не использовать в сочетании с clientid_prefixes.
# Смотрите также use_identity_as_username.
# Это применимо не глобально, а для каждого слушателя.
#use_username_as_clientid

# Измените размер заголовков websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Этот параметр устанавливает размер буфера, используемого в
# библиотека libwebsockets при чтении HTTP-заголовков. Если вы проезжаете мимо большого
# данные заголовка, такие как файлы cookie, тогда вам, возможно, потребуется увеличить это значение. Если оставить
# отменено или установлено значение 0, тогда будет использоваться значение по умолчанию 1024 байта.
#websockets_headers_size

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе сертификатов
# для этого слушателя. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883,
# но его необходимо установить вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе предварительного общего ключа раздел "
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя.

# Для включения функции на основе сертификата должны быть определены как файл сертификата, так и файл ключа
# TLS-шифрование.

# Путь к серверному сертификату с кодировкой PEM.
#файл сертификата
#certfile
certfile /opt/etc/mosquitto/certs/mosq-serv.crt

# Путь к файлу ключа в кодировке PEM.
#keyfile
keyfile /opt/etc/mosquitto/certs/mosq-serv.key

# Если вы хотите контролировать, какие шифры шифрования используются, используйте следующие шифры
# вариант. Список доступных шифров можно получить с помощью команды "openssl ciphers"
# и должна быть представлена в том же формате, что и выходные данные
# эта команда. Это относится только к TLS 1.2 и более ранним версиям. Воспользуйся
# шифры_tls1.3 / ciphers_tls1.3 для TLS версии 1.3.
#ciphers

# Выберите, какие наборы шифров TLS версии 1.3 используются для этого прослушивателя.
# По умолчанию используется значение "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
#ciphers_tls1.3

# Если для параметра require_certificate установлено значение true, вы можете создать сертификат
# файл списка отзывов для отзыва доступа к определенным клиентским сертификатам. Если
# вы сделали это, используйте crlfile, чтобы указать на файл отзыва в кодировке PEM.
#crlfile

# Разрешить использование эфемерного /ephemeral DH обмена ключами DH, который обеспечивает прямую
# безопасность, прослушиватель должен загрузить параметры DH. Это может быть указано с помощью
# параметр dhparamfile. Файл dhparam может быть сгенерирован с помощью команды
#, например, "openssl dhparam -out dhparam.pem 2048".
#dhparamfile

# По умолчанию прослушиватель с поддержкой TLS будет работать аналогично
# веб-сервер с поддержкой https, поскольку сервер имеет сертификат, подписанный центром сертификации
# и клиент подтвердит, что это доверенный сертификат. Общая цель
# - это шифрование сетевого трафика. Установив значение require_certificate равным true,
# клиент должен предоставить действительный сертификат для подключения к сети
# подключение необходимо продолжить. Это позволяет контролировать доступ к брокеру
# вне механизмов, предоставляемых MQTT.
#require_certificate false

# cafile и capath определяют методы доступа к закодированному PEM
# Сертификаты центра сертификации, которые будут считаться доверенными, когда
# проверка входящих клиентских сертификатов.
# cafile определяет путь к файлу, содержащему сертификаты центра сертификации.
# capath определяет каталог, в котором будет осуществляться поиск файлов
# содержащий сертификаты центра сертификации. Чтобы capath работал корректно, необходимо
# файлы сертификатов должны заканчиваться на ".crt", и вы должны запустить
# "openssl перефразирует <путь к capath>" каждый раз, когда вы добавляете/удаляете сертификат.
#cafile
#capath
cafile /opt/etc/mosquitto/certs/mosq-ca.crt

# Если require_certificate имеет значение true, вы можете установить значение use_identity_as_username равным true
# использовать значение CN из клиентского сертификата в качестве имени пользователя. Если это
# true, параметр password_file не будет использоваться для этого прослушивателя.
#use_identity_as_username false

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе предварительного общего ключа
# -----------------------------------------------------------------
# Следующие параметры можно использовать для включения поддержки SSL/TLS на основе PSK для
# этот слушатель. Обратите внимание, что рекомендуемый порт для MQTT через TLS - 8883, но
# это должно быть установлено вручную.
#
# Смотрите также справочную страницу mosquitto-tls и "SSL/TLS на основе сертификатов раздел"
# поддержка". Может использоваться только один из сертификатов или поддержка шифрования PSK
# включено для любого прослушивателя / enabled for any listener.

# Опция psk_hint включает поддержку предварительного общего ключа для этого прослушивателя, а также
# действует как идентификатор для этого прослушивателя. Подсказка отправляется клиентам и может
# будет использоваться локально для облегчения аутентификации. Подсказка представляет собой строку произвольной формы, которая
# само по себе не имеет большого значения, так что не стесняйтесь проявлять творческий подход.
# Если эта опция предусмотрена, смотрите psk_file, чтобы определить предварительно разделяемые ключи, которые должны быть
# использовал или создал плагин безопасности для их обработки.
#psk_hint

# При использовании PSK используемые шифры шифрования будут выбраны из списка
# доступные PSK-шифры. Если вы хотите контролировать, какие шифры доступны,
# используйте опцию "шифры/ciphers".  Список доступных шифров может быть расширен
# используется команда "openssl ciphers" и должна быть предоставлена в том же формате
# в качестве выходных данных этой команды.
#ciphers

# Установите use_identity_as_username, чтобы использовать psk-идентификатор, отправленный клиентом
# в качестве его имени пользователя. Аутентификация будет осуществляться с использованием PSK, а не
# имя пользователя/пароль MQTT и so password_file не будут использоваться для этого
# слушатель.
#use_identity_as_username false


# =================================================================
# Устойчивость / Persistence
# =================================================================

# Если сохраняемость включена, сохраните базу данных в памяти на диск
# каждые секунды автосохранения_интервала. Если установлено значение 0, то постоянство
# база данных будет записана только при выходе из mosquitto. Смотрите также
# автосохранение_на_изменениях.
# autosave_on_changes
# Обратите внимание, что запись постоянной базы данных может быть принудительной с помощью
# отправка mosquitto сигнала SIGUSR1.
autosave_interval 1800

# Если значение true, mosquitto подсчитает количество сохраненных изменений в подписке
# полученные сообщения и сообщения в очереди, и если общее количество превышает
# autosave_interval, после чего база данных, хранящаяся в памяти, будет сохранена на диск.
# Если значение равно false, mosquitto сохранит базу данных в памяти на диск, обработав
# автосохранение_интервала в виде времени в секундах.
autosave_on_changes false

# Сохранить данные постоянного сообщения на диск (true/false).
# При этом сохраняется информация обо всех сообщениях, включая
# подписки, текущие сообщения в полете и сохраненные
# сообщения.
# retained_persistence является синонимом этого параметра.
#persistence false
persistence true

# Имя файла, которое будет использоваться для постоянной базы данных, не включая
# путь.
persistence_file mosquitto.db

# Местоположение постоянной базы данных.
# По умолчанию - пустая строка (текущий каталог).
# Установите, например, значение /var/lib/mosquitto, если он запущен как надлежащая служба в Linux или схожий.
#persistence_location
persistence_location /opt/etc/mosquitto/persistence


# =================================================================
# Регистрация
# =================================================================

# Места для входа в систему. Используйте несколько строк log_dest для нескольких
# регистрация пунктов назначения.
# Возможные пункты назначения: стандартный вывод stderr файл темы системного журнала dlt
#
# stdout и stderr регистрируются в консоли на именованном выходе.
#
# Вывод в консоль
log_dest stdout
#
# syslog использует средство системного журнала пользовательского пространства, которое обычно заканчивается
# в /var/log/messages или подобном.
#
# тема регистрируется в теме брокера '$SYS/broker/log/<серьезность>',
# где серьезность - это одно из значений D, E, W, N, I, M, которые являются отладочными, ошибка,
# предупреждение, извещение, информация и сообщение. Серьезность типа сообщения используется
# лог_типы подписки/отказа от подписки и публикует сообщения журнала для
# $SYS/broker/log/M/susbcribe или $SYS/broker/log/M/отказаться от подписки.
# $SYS/broker/log/M/susbcribe or $SYS/broker/log/M/unsubscribe
#
# Для назначения файла требуется дополнительный параметр, который является файлом, подлежащим удалению.
# вошел в систему, например, "log_dest file /var/log/mosquitto.log". Файл будет
# закрывается и вновь открывается, когда брокер получает сигнал HUP. Только один файл
# пункт назначения может быть настроен.
#
# Вывод в системный лог роутера
#log_dest syslog
# Вывод в файл
log_dest file /opt/var/log/mosquitto.log
#
# Назначение dlt предназначено для автомобильного инструмента `Журнал диагностики и трассировка`.
# Для этого требуется, чтобы Mosquitto был скомпилирован с поддержкой DLT.
#
# Обратите внимание, что если брокер запущен как служба Windows, то по умолчанию он будет
# "log_dest none" и ведение журнала stdout или stderr недоступно.
# Используйте "log_dest none", если вы хотите отключить ведение журнала.
#log_dest stderr
#
# Вывод в системный топик
log_dest topic
#
# Типы сообщений для регистрации. Используйте несколько строк log_type для ведения журнала
# несколько типов сообщений.
# Возможными типами являются: debug, error, warning, notice, information,
# none, subscribe, unsubscribe, websockets, all.
# Обратите внимание, что сообщения типа debug предназначены для декодирования входящих/исходящих incoming/outgoing
# сетевые пакеты. Они не зарегистрированы в разделе "Темы"/topic.
log_type error
log_type warning
log_type notice
log_type information
log_type subscribe
log_type unsubscribe


# Если установлено значение true, будут включены сообщения о подключении и разъединении клиента
# в журнале логе.
#connection_messages true

# При использовании ведения системного журнала (не в Windows) сообщения будут записываться в
# средство "демон" по умолчанию. Используйте параметр log_facility, чтобы выбрать, какой из
# от local0 до local7 для входа в систему вместо этого. Значение параметра должно быть целым числом
# значение, например "log_facility 5" для использования local 5.
#log_facility

# Если установлено значение true, добавьте значение временной метки к каждому сообщению журнала.
log_timestamp true

# Установите формат временной метки журнала. Если значение не задано, то это количество
# секунды, прошедшие с эпохи Unix.
# Это произвольная текстовая строка, которая будет передана функции strftime. Чтобы
# получить дату и время ISO 8601, например:
log_timestamp_format %Y-%m-%dT%H:%M:%S
#log_timestamp_format

# Измените уровень ведения журнала websockets. Это глобальный вариант, он не является
# возможно установить для каждого слушателя. Это целое число, которое интерпретируется с помощью
# libwebsockets в качестве битовой маски для своего перечисления lws_log_levels. Увидеть документация
# libwebsockets для получения более подробной информации. "log_type websockets" также должен содержать
# быть включенным.
#websockets_log_level 0


# =================================================================
# Безопасность
# =================================================================

# Если задано, только клиенты, у которых есть соответствующий префикс в их
# clientid будет разрешено подключиться к брокеру. По умолчанию,
# все клиенты могут подключаться.
# Например, установка "secure-" здесь будет означать, что клиент "защищен-
# клиент" / "secure-client"  смог подключиться, но другой с идентификатором клиента "mqtt" не смог.
#clientid_prefixes

# Логическое значение, определяющее, подключаются ли клиенты, которые
# подключение разрешено без указания имени пользователя. Если установлено значение
# false, затем должен быть создан файл паролей (см.
# параметр password_file) для управления аутентифицированным клиентским доступом.
#
# По умолчанию имеет значение false, если только в конфигурации не определены прослушиватели
# файл, в этом случае ему присваивается значение true, но подключения разрешены только из
# локальный компьютер.
allow_anonymous false

# -----------------------------------------------------------------
# Проверка подлинности по умолчанию и контроль доступа к разделам
# -----------------------------------------------------------------

# Контролируйте доступ к брокеру с помощью файла паролей. Этот файл может быть
# сгенерирован с помощью утилиты mosquitto_passwd. Если поддержка TLS не скомпилирована
# в mosquitto (рекомендуется включить поддержку TLS), затем
# используются обычные текстовые пароли, и в этом случае файл должен быть текстовым
# со строками в формате:
# имя пользователя:пароль
# Пароль (и двоеточие) при желании можно опустить, хотя это
# предлагает очень мало с точки зрения безопасности.
#
# Смотрите параметры TLS-клиента require_certificate и use_identity_as_username
# для альтернативных вариантов аутентификации. Если используется плагин, а также
# password_file, сначала будет произведена проверка плагина.
password_file /opt/etc/mosquitto/mosquitto.users

# Доступом также можно управлять с помощью файла предварительного общего ключа. Для этого требуется Поддержка
# TLS-PSK и прослушиватель, настроенный для ее использования. Файл должен быть текстовым
# строки в формате:
# идентификация:ключ
# Ключ должен быть в шестнадцатеричном формате без начального "0x".
# Если также используется плагин, то сначала будет произведена проверка плагина.
#psk_file

# Контролируйте доступ к разделам в брокере, используя список контроля доступа
# файл. Если этот параметр определен, то будут доступны только перечисленные темы
# иметь доступ.
# Если первым символом строки файла ACL является #, он обрабатывается как
# комментарий.
# Доступ к теме добавляется строками формата:
#
# тема [чтение|запись|чтение-запись|запретить] <тема>
# topic [read|write|readwrite|deny] <topic>
#
# Тип доступа контролируется с помощью "чтение", "запись", "чтение-запись" или "запретить" "read", "write", "readwrite" or "deny".
# Этот параметр необязателен (если только <topic> не содержит пробел) -
# если не задан, то доступ осуществляется для чтения/записи read/write.  <topic> может содержать знак + или #
# подстановочные знаки, как в подписках.
#
# Опция "запретить"/"deny" может использоваться для явного запрета доступа к теме, которая могла бы
# в противном случае будет предоставлено более широким оператором чтения/записи/чтение-запись read/write/readwrite. Любое "запретить" "deny"
# темы обрабатываются перед темами, которые предоставляют доступ для чтения/записи.
#
# Первый набор тем применяется к анонимным клиентам, предполагая
# allow_anonymous имеет значение true. Списки управления доступом к конкретным темам пользователя добавляются после
# строка пользователя выглядит следующим образом:
#
# user <username>
#
# Имя пользователя, указанное здесь, такое же, как и в password_file. Это
# не идентификатор клиента.
#
#
# If также возможно определить списки управления доступом на основе подстановки шаблона внутри
# тема. Шаблоны, доступные для замены, следующие:
#
# %c чтобы соответствовать идентификатору клиента клиента
# %c to match the client id of the client
# %u, чтобы совпадать с именем пользователя клиента
# %u to match the username of the client
#
# Шаблон подстановки должен быть единственным текстом для этого уровня иерархии.
#
# Форма такая же, как для ключевого слова topic, но в качестве шаблона используется
# ключевое слово.
# Шаблонные списки контроля доступа применяются ко всем пользователям, даже если ключевое слово "пользователь"/"user" ранее использовалось
# было дано.
#
# При использовании мостов с именами пользователей и списками контроля доступа сообщения о подключении могут быть разрешены
# со следующим шаблоном:
# шаблон записи $SYS/broker/connection/%c/state
# pattern write $SYS/broker/connection/%c/state
#
# шаблон [чтение|запись|чтение-запись] <тема>
# pattern [read|write|readwrite] <topic>
#
# Пример:
#
# датчик записи шаблона/%u/данные
# pattern write sensor/%u/data
#
# Если используется плагин, а также acl_file, проверка плагина будет
# сделано первым.
# If an plugin is used as well as acl_file, the plugin check will be
# made first.
acl_file /opt/etc/mosquitto/mosquitto.acl

# -----------------------------------------------------------------
# Параметры плагина внешней аутентификации и доступа к теме
# -----------------------------------------------------------------

# Внешняя аутентификация и контроль доступа могут поддерживаться с помощью
# опция плагина. Это путь к загружаемому плагину. Смотрите также
# plugin_opt_* параметры, описанные ниже.
#
# Параметр плагина можно указать несколько раз для загрузки нескольких
# плагины. Плагины будут обработаны в том порядке, в котором они указаны
# здесь. Если параметр плагина указан рядом с любым из
# password_file или acl_file, тогда сначала будет произведена проверка плагина.
#
# Если параметр per_listener_settings имеет значение false, плагин будет применен ко всем
# слушатели. Если per_listener_settings имеет значение true, то плагин будет применяться к
# определяется только текущий прослушиватель.
#
# Эта опция также доступна как `auth_plugin`, но такое использование устарело
# и будет удален в будущем.
#
# Плагин
#plugin

# Если используется опция плагина, указанная выше, определите параметры для передачи в
# подключите здесь, как описано в инструкциях по подключению. Все названные параметры
# с использованием формата plugin_opt_* будет передан плагину, например:
#
# Эта опция также доступна как `auth_opt_*`, но такое использование устарело
# и будет удален в будущем.
#
# plugin_opt_db_host
# plugin_opt_db_port
# plugin_opt_db_username
# plugin_opt_db_password


# =================================================================
# Bridges/Мост
# =================================================================

# Мост - это способ соединить несколько брокеров MQTT вместе.
# Создайте новый мост, используя опцию "подключение", как описано ниже. Набор
# параметры для мостов с использованием остальных параметров. Вы должны указать
# адрес и хотя бы одна тема, на которую нужно подписаться.
#
# Каждое соединение должно иметь уникальное имя.
#
# В адресной строке может быть указано несколько адресов хоста и портов. Видеть
# ниже в описании round_robin приведены более подробные сведения о поведении моста, если
# используется несколько адресов. Обратите внимание, что если вы используете IPv6-адрес, то вы
# требуются для указания порта.
#
# Направление, в котором будет распространяться тема, может быть выбрано
# указание out, in или обоих, где значением по умолчанию является out.
# Уровень QoS мостовой связи может быть задан с помощью следующего
# вариант темы. Уровень QoS по умолчанию равен 0, чтобы изменить QoS в теме
# также должно быть указано направление.
#
# Параметры локального и удаленного префикса позволяют переназначать тему, когда она
# подключен к удаленному брокеру/от него. Это дает возможность разместить тему
# дерево в соответствующем месте.
#
# Для получения более подробной информации смотрите справочную страницу mosquitto.conf.
#
# Для каждого подключения можно указать несколько тем, но будьте осторожны
# не создавать никаких циклов.
#
# Если вы используете bridges с cleansession, установленным в значение false (по умолчанию), то
# вы можете получить неожиданное поведение во входящих темах, если измените то, что
# темы, на которые вы подписаны. Это происходит потому, что удаленный брокер сохраняет
# подписка на старую тему. Если у вас возникла эта проблема, подключите свой мост
# с cleansession, установленным в true, затем повторно подключитесь с cleansession, установленным в false
# как обычно.
#connection <name>
#address <host>[:<port>] [<host>[:<port>]]
#topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

# Имя мостового соединения
#connection wqtt_ru
# Имя сервера и порт для внешнего брокера
#address x65535.wqtt.ru:1003
# Имя сервера и порт для внешнего брокера: здесь меняем порт на SSL
#address x65535.wqtt.ru:1004
# Какие топики и в каком направлении следует пересылать: в данном случае всё (только для примера, в раельном соединении не рекомендуется: может вызвать зацикливание)
#topic # both

# Если вам нужно, чтобы мост подключался через определенный сетевой интерфейс,
# используйте bridge_bind_address, чтобы указать мосту, какой локальный IP-адрес имеет сокет
# должен быть привязан, например, к `bridge_bind_address 192.168.1.10`
#bridge_bind_address

# Если у моста есть темы, которые имеют направление "наружу", поведение по умолчанию таково:
# отправьте запрос на отмену подписки удаленному брокеру по этой теме. Это означает
# что изменение направления темы с "вход" на "выход" не приведет к продолжению приема
# входящие сообщения. Отправка таких запросов на отмену подписки осуществляется не всегда
# желательно, чтобы установка bridge_attempt_unsubscribe в значение false отключила отправку
# запрос на отмену подписки.
#bridge_attempt_unsubscribe true

# Отписываться на внешнем брокере от тем "наружу"
#bridge_attempt_unsubscribe true

# Установите версию протокола MQTT для использования с этим мостом. Может быть одним
# из mqttv50, mqttv311 или mqttv31. По умолчанию используется значение mqttv311.
#bridge_protocol_version mqttv311

# Версия протокола (мой удаленный брокер требует этот протокол)
#bridge_protocol_version mqttv311

# Установите переменную clean session для этого моста.
# Если установлено значение true, когда мост отключается по какой-либо причине, все
# сообщения и подписки будут очищены на удаленном компьютере
# брокер. Обратите внимание, что при установке cleansession в значение true может возникнуть
# значительное количество сохраненных сообщений, отправленных при подключении моста
# повторно подключается после потери соединения.
# Если установлено значение false, подписки и сообщения сохраняются на
# удаленный брокер, и доставляется при повторном подключении моста.
#cleansession false

# Чистая сессия отключена
#cleansession false

# Установите количество времени, в течение которого мост, использующий тип отложенного запуска, должен находиться в режиме ожидания, прежде чем
# это будет остановлено. Значение по умолчанию равно 60 секундам.
#idle_timeout 60

# Интервал, после которого неактивный мост будет остановлен
#idle_timeout 600

# Установите интервал сохранения активности для этого мостового соединения, в
# секундах.
#keepalive_interval 60

# Интервал поддержания соединения в секундах
#keepalive_interval 60

# Установите идентификатор клиента для использования у локального брокера. Если не определено, то по умолчанию используется значение
# 'местный.<идентификатор клиента>'/ 'local.<clientid>'. Если вы соединяете брокера с самим собой, это важно
# что local_clientid и client не совпадают.
#local_clientid

# Параметры локального подключения
#local_clientid bridge_local
#local_username mosquittobridge
#local_password ubndscvfn75

# Если установлено значение true, публикуйте уведомления для локальных и удаленных брокеров
# предоставление информации о состоянии мостового соединения. Сохраненный
# сообщения публикуются в теме $SYS/broker/connection/<clientid>/state
# если только не используется параметр notification_topic.
# Если сообщение равно 1, то соединение активно, или 0, если соединение имеет
# не удалось.
# Здесь используется функция последней воли и завещания.
#notifications true

# Если установлено true, публиковать уведомления для локальных и удаленных брокеров с информацией о состоянии мостового соединения
#notifications true

# Выберите тему, по которой будут отправляться уведомления для этого моста.
# опубликовано. Если параметр не задан, сообщения публикуются по теме
# $SYS/broker/connection/<clientid>/state
#notification_topic

# Установите идентификатор клиента для использования на удаленном конце этого мостового соединения. Если нет
# определено, по умолчанию используется значение 'name.hostname', где name - это имя подключения
# и имя хоста - это имя хоста этого компьютера.
# Это заменяет старую опцию "clientid", чтобы избежать путаницы. "идентификатор клиента"
# остается действительным в настоящее время.
#remote_clientid
#remote_clientid bridge_remote

# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль"/"password", чтобы избежать путаницы. "пароль"/"password"
# остается действительным в настоящее время.
#remote_password
#remote_password 22222222

# Установите пароль, который будет использоваться при подключении к брокеру, требующему
# аутентификация. Этот параметр используется только в том случае, если также задано remote_username.
# Это заменяет старую опцию "пароль", чтобы избежать путаницы. "пароль"
# остается действительным в настоящее время.
#remote_username
#remote_username U_WQTT_RU

# Установите время ожидания моста, использующего тип автоматического запуска
# до попытки повторного подключения.
# Эта опция может быть настроена на использование постоянного времени задержки в секундах или на
# используйте механизм отката, основанный на "декоррелированном дрожании"/"Decorrelated Jitter", который добавляет степень
# случайности до момента, когда произойдет перезапуск.
#
# Установите постоянный тайм-аут в 20 секунд:
# restart_timeout 20
#
# Установите отсрочку с базовым (начальным значением) в 10 секунд и предельным (верхним пределом) в
# 60 секунд:
# restart_timeout 10 30
#
# По умолчанию используется значение дрожания с основанием 5 и пределом 30
#restart_timeout 5 30

# Если мост имеет более одного адреса, указанного в поле address/адреса
# конфигурация, параметр round_robin определяет поведение моста на
# сбой мостового соединения. Если round_robin имеет значение false, то значение по умолчанию
# значение, тогда первый адрес обрабатывается как основное мостовое соединение. Если
# соединение завершится неудачей, будут предприняты попытки подключения к другим дополнительным адресам в
# повернись. Будучи подключенным к дополнительному мосту, мост периодически будет
# пытайтесь повторно подключиться к главному мосту до тех пор, пока не добьетесь успеха.
# Если round_robin имеет значение true, то все адреса рассматриваются как равные. Если бы
# сбой подключения, будет опробован следующий адрес, и в случае успеха будет
# оставайтесь подключенными до тех пор, пока не произойдет сбой
#round_robin false

# Установите начальный тип моста. Это управляет запуском моста и
# может быть одного из трех типов: автоматический, ленивый и однократный automatic, lazy и once. Обратите внимание, что RSMB предоставляет
# четвертый тип запуска "ручной"/"manual", который в настоящее время не поддерживается mosquitto.
#
# "автоматический" "automatic" является типом запуска по умолчанию и означает, что мостовое соединение
# будет запущен автоматически при запуске брокера, а также перезапущен
# после небольшой задержки (30 секунд) в случае сбоя соединения.
#
# Мосты, использующие "ленивый"/"lazy" тип запуска, будут запущены автоматически, когда
# количество сообщений в очереди превышает количество, установленное с помощью "порога"/"threshold"
# параметр. Он будет автоматически остановлен по истечении времени, установленного
# параметр "idle_timeout". Используйте этот тип запуска, если вы хотите, чтобы подключение к
# будьте активны только тогда, когда это необходимо.
#
# Мост, использующий тип запуска "один раз"/"once", будет запущен автоматически, когда
# брокер запускается, но не будет перезапущен в случае сбоя соединения.
#start_type automatic

# Тип запуска: автоматический
#start_type automatic

# Установите количество сообщений, которые должны быть поставлены в очередь для моста с lazy
# тип запуска для перезапуска. Значение по умолчанию - 10 сообщений.
# Должно быть меньше, чем max_queued_messages.
#threshold 10

# Если try_private имеет значение true, мост попытается указать на
# удаленный брокер, что это мост, а не обычный клиент. В случае успеха это
# означает, что обнаружение цикла будет более эффективным и что сохраненные сообщения
# будет передан правильно. Не все брокеры поддерживают эту функцию, поэтому она может
# необходимо установить try_private в значение false, если ваш мост не подключается
# должным образом.
#try_private true

# Некоторые брокеры MQTT не разрешают сохранение сообщений. MQTT v5 предоставляет механизм
# чтобы брокеры сообщали клиентам, что они не поддерживают сохраняемые сообщения, но
# это невозможно для MQTT v3.1.1 или v3.1.1. Если вам нужно подключиться к
# v3.1.1 или v3.1 брокер, который не поддерживает сохраненные сообщения, установите параметр
# bridge_outgoing_retain имеет значение false. Это удалит фиксирующий бит на
# все исходящие сообщения на этот мост, независимо от любых других настроек.
#bridge_outgoing_retain true

# Если вы хотите ограничить размер сообщений, отправляемых на удаленный мост, используйте параметр
# bridge_max_packet_size. Это устанавливает максимальное количество байт для
# общее сообщение, включая заголовки и полезную нагрузку.
# Обратите внимание, что брокеры MQTT v5 могут предоставлять свое собственное свойство максимального размера пакета.
# В этом случае будет использоваться меньшее из двух ограничений.
# Установите значение 0 для параметра "неограниченно".
#bridge_max_packet_size 0


# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе сертификатов
# -----------------------------------------------------------------
# Для включения поддержки TLS необходимо определить либо bridge_cafile, либо bridge_capath
# для этого моста.
# bridge_cafile определяет путь к файлу, содержащему
# Сертификаты центра сертификации, подписавшие удаленного брокера
# сертификат.
# bridge_capath определяет каталог, в котором будет выполняться поиск файлов, содержащих
# сертификаты центра сертификации. Чтобы bridge_capath работал корректно, сертификат
# файлы должны иметь ".crt" в качестве окончания файла, и вы должны запустить "openssl rehash
# <путь к capath>" каждый раз, когда вы добавляете/удаляете add/remove сертификат.
#bridge_cafile
#bridge_capath

# Сертификат CA (корневой в цепочке сертификатов) внешнего брокера
#bridge_cafile /etc/ssl/certs/ISRG_Root_X1.crt

# Если удаленный брокер имеет более одного протокола, доступного на его порту, например
# MQTT и WebSockets, затем используйте bridge_alpn для настройки того, какой протокол является
# запрошено. Обратите внимание, что поддержка WebSockets для мостов пока недоступна.
#bridge_alpn

# При использовании шифрования на основе сертификата bridge_insecure отключает
# проверка имени хоста сервера в сертификате сервера. Это может быть
# полезно при тестировании первоначальных конфигураций сервера, но позволяет
# злонамеренная третья сторона, выдающая себя за ваш сервер посредством подмены DNS, для
# пример. Используйте этот параметр только при тестировании. Если вам нужно прибегнуть к использованию этого
# опция в производственной среде ваша настройка неисправна, и нет
# укажите, используя шифрование.
#bridge_insecure false

# Путь к клиентскому сертификату в кодировке PEM, если это требуется удаленному брокеру.
#bridge_certfile

# Путь к закрытому ключу клиента в кодировке PEM, если это требуется удаленному брокеру.
#bridge_keyfile

# -----------------------------------------------------------------
# Поддержка SSL/TLS на основе PSK
# -----------------------------------------------------------------
# Шифрование с предварительным общим ключом обеспечивает альтернативу шифрованию на основе сертификатов
# шифрование. Мост может быть сконфигурирован для использования PSK с параметром bridge_identity параметры
# и bridge_psk. Это идентификатор PSK клиента и предварительный общий ключ
# в шестнадцатеричном формате без "0x". Только один из сертификатов и на основе PSK
# шифрование может быть использовано на одном
# мост сразу.
#bridge_identity
#bridge_psk


# =================================================================
# Внешние конфигурационные файлы
# =================================================================

# Внешние конфигурационные файлы могут быть включены с помощью
# параметр include_dir. Это определяет каталог, в котором будет выполняться поиск
# для конфигурационных файлов. Все файлы, которые заканчиваются на '.conf', будут загружены как
# файл конфигурации. Лучше всего использовать это в качестве последнего варианта
# в основном файле. Этот параметр будет обрабатываться только из основного
# конфигурационный файл. Указанный каталог не должен содержать
# основной конфигурационный файл.
# Файлы внутри include_dir будут загружены отсортированными с учетом регистра
# в алфавитном порядке, с заглавными буквами, расположенными первыми. Если этот параметр выбран
# заданный несколько раз, все файлы из первого экземпляра будут
# обрабатывается перед следующим экземпляром. Примеры приведены на странице руководства.
#include_dir

количество слов: 1336
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 810
Стаж: 5 лет 2 месяца
Откуда: Вологодская область
Поблагодарили: 34 раза
Контактная информация:

Установка на Wi Fi маршрутизатор Keenetic ОС Entware mosquitto

Сообщение Артём Мамзиков »

Пример подключения и управления чайником REDMOND SkyKettle RK-G240S
Электрочайник Redmond RK-G240S черный
Электрочайник Redmond RK-G240S черный
Как происходит управление, в чайнике есть датчик температуры воды, светодиод (отображает температуру или как ночник), динамик пищалка.
Плата управления принимает данные с датчика температуры и при заданной программе включает реле на диск подогрева/кипячения воды.
Управление кипячение вкл/выкл есть кнопка и так же кнопка выбора режима подогрева, на плате управления есть bluetooth при подключении через приложение "SKY умный дом" можно управлять чайником, но радиус действия ограничен поэтому делаем шлюз bluetooth - Wi-Fi.
Плата управления чайника REDMOND SkyKettle RK-G240S
Плата управления чайника REDMOND SkyKettle RK-G240S
REDMOND SkyKettle RK-G240S плата управления под ручкой
REDMOND SkyKettle RK-G240S плата управления под ручкой
REDMOND SkyKettle RK-G240S подключение платы
REDMOND SkyKettle RK-G240S подключение платы
REDMOND SkyKettle RK-G240S кнопки ручного упарвления
REDMOND SkyKettle RK-G240S кнопки ручного упарвления
REDMOND SkyKettle RK-G240S Динамик
REDMOND SkyKettle RK-G240S Динамик
REDMOND SkyKettle RK-G240S (1)
REDMOND SkyKettle RK-G240S (1)
REDMOND SkyKettle RK-G240S (2)
REDMOND SkyKettle RK-G240S (2)
Приложение SKY умный дом
Главная управлением чайником
Главная управлением чайником
Настройки управления чайником
Настройки управления чайником
управлением чайником
управлением чайником
Еще функционал
Показать
Световая индикация (при синхронизации) вкл/выкл если выкл то звуковая так же выкл
Переименовать устройство
Свежая вода ?

Подсветка:
Яркость подсветки поумолчанию 100%
цвет 35 синий 100 красный
подсветка при кипячение\подогрев вкл\выкл

Ночник вкл выкл
во ремя работы ночника 8ч от 1 до 24ч
скорость перехода цветов 30с, 1м, 1,30м, 2м, 2,30м, 3м.
яркость от 0 до 100

Диско чайник вкл микрофон

Игры
Тренируй внимание (проверь скорость реакции),
Тренируй память (запомни порядок цветов)
Угадай цвет (Игра для малышей)

Расписание:
Действия Кипячение, Нагрев (температура), Кипячение с подогревом, Выключить
Старт: День,часы минуты
Повтор: Не повторять, Каждый день, Каждую неделю, Каждый месяц
Так как управление происходить через bluetooth дальность управления в диапазоне одной комнаты 15 метров.

Еще один официальный, но не совсем стабильный способ
Удаленное управление приборами через приложение R4S Gateway
Настройте дистанционное управление прибором через основное управляющее приложение (Ready for Sky) согласно разделу «Дистанционное управление прибором через приложение Ready for Sky»
центр умного дома REDMOND SkyCenter 11S (аппаратный вариант),
или
приложение R4S Gateway (программный вариант) рассмотрим 2 вариант
Скачайте и установите приложение R4S Gateway на смарт-фон или планшет, который вы собираетесь оставлять дома в качестве гейтвэя.
На нем должна быть установлена операционная система Android, минимальные требования для которой указаны на официальном сайте компании www.redmond.company или в описании к приложению в магазине Google Play
Удостоверьтесь, что устройство подключено к сети Интернет (GSM, Wi-Fi и т. д.), Bluetooth включен.
Войдите в приложение R4S Gateway под тем же аккаунтом, которым вы пользуетесь при работе с основным управляющим приложением (Ready for Sky).
В приложении R4S Gateway проведите пальцем по экрану сверху вниз (свайп): SkyKettle RK-G240S появится в списке доступных приборов. ВНИМАНИЕ: Для обеспечения стабильного соединения ваш домашний смартфон или планшет с приложением R4S Gateway должен находиться не более чем в 15 метрах от используемых бытовых приборов.
Не устанавливайте приложения Ready for Sky и R4S Gateway на одно мобильное устройство. Это может привести к сбоям в работе приложений.
Приложение R4S Gateway работает только с основным управляющим приложением Ready for Sky.
К устройству гейтвэю могут подключаться несколько мобильных устройств, то есть одним и тем же прибором могут управлять несколько пользователей. При этом прибор будет выполнять последнюю полученную команду (одномоментно приложение R4S Gateway может работать только с одним аккаунтом). В связи с этим также невозможно одновременное управление при-бором через основное приложение и через приложение R4S Gateway (нельзя управлять прибором из ближней и дальней зоны одновременно).


Делаем шлюз bluetooth - Wi-Fi на базе ESP32
Цена в районе 200р
ESP32 WROOM
ESP32 WROOM
Все собираем и прошиваем
Схема подключения Шлюз на esp32 r4s0
Схема подключения Шлюз на esp32 r4s0
Шлюз на esp32 r4s0
Шлюз на esp32 r4s0
Шлюз на esp32 r4s0 (1)
Шлюз на esp32 r4s0 (1)
Шлюз на esp32 r4s0 (2)
Шлюз на esp32 r4s0 (2)
Прошивка и Инструкция тут

Видео инструкция и работа


После прошивки переходим в веб интерфейс и подключаем чайник к нашему шлюзу, сам шлюз к WI-FI и MQTT брокеру mosquitto.
Веб интерфейс
Веб интерфейс
Веб интерфейс Главная
Веб интерфейс Главная
Веб интерфейс 1 подключение чайник управление
Веб интерфейс 1 подключение чайник управление
Управление чайником через WEB
SwitchOff выключает подогрев\кипячение\кипячение и подогрев\ночник
SwitchOn включает только кипячение
В Boil&HeatOn если указать 0, то включится кипячение, если указать от 40 до 90, то включается кипячение и подогрев, для выключения нажимаем на SwitchOff
В HeatOn если указать от 40 до 90, то включится подогрев, если указать 0, то подогрев выключится
Для включения ночника нажимаем на NightLightOn, для выключения ночника нажимаем на SwitchOff
Веб интерфейс Настройки
Веб интерфейс Настройки
Веб интерфейс BLE Монитор
Веб интерфейс BLE Монитор

В приложении IoT MQTT Panel в панели добавляем кнопки переключатели и отображение информации
Добавление в панель управления или отображения
Добавление в панель управления или отображения
Начало добавления
Начало добавления
Пример настройки в приложении  IoT MQTT Panel
Пример настройки в приложении IoT MQTT Panel
Переключатели
Переключатели
Как настроено
Температура воды инфа
Температура воды инфа
Индикация включенного динамика
Индикация включенного динамика
Переключатель Кипячения
Переключатель Кипячения
Ползунок Подогрева кипячения
Ползунок Подогрева кипячения
Экспорт настроек пример
IotMQTTPanel-231112_211236.zip
IotMQTTPanel-231112_211236.zip
(3.5 КБ) 5 скачиваний
В командной строке какие данные приходят
Слушаем данные
Подписываемся на топики:
Можно слушать все данные ветки "r4s0/" при помощи служебного символа #:
Без авторизации если доcтупно всем

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -v
С авторизацией

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
! Данные в MQTT открыты, использование публичного брокера рекомендуется только в тестовых целях.

Получаем данные
r4s0/status online - статус шлюза
r4s0/ip 192.168.175.49 - ip шлюза
r4s0/rssi -64 - качество сигнала dBm шлюза (-30 Отлично -90 связи нет)
r4s0/screen 0 - Экран Шлюза

JSON Чайника
r4s0/ce709321702f/rsp/json {
"temp":48, ---------- Текущая температура воды в чайнике
"target":0, --------- Заданная/Установленная температура режим (0 - не задано, от 35 до 90 подогрев, 100 - кипячение)
"state":0, ---------- Состояние Чайника (0 - Нагрев/кипячение отключено, 2 - кипячение и подогрев, 3 - ночник)
"prog":0, ----------- Отображение выбранной программы (0 - кипячение, 1 - выключено или подогрев, 2 - кипячение и подогрев, 3 - ночник)
"beep":0, ----------- Сигнал звуковой (0- Выключен, 1- включен)
"boil":0, ----------- Длительность кипячения (длительность кипячения -5 до +5 секунд по умолчанию 0)
"volume":["?",0.0], - Количество
"rgb":[0,0,255] ----- Цвет
}
r4s0/ce709321702f/rsp/temp 48 ----------------- Текущая температура воды в чайнике
r4s0/ce709321702f/rsp/hstate off -------------- Статус чайника (auto - кипячение
r4s0/ce709321702f/rsp/heat_temp 0 ------------- Температура установлена нагрева/кипячение (100 - кипячение, 35-90 подогрев, 0 - не задано)
r4s0/ce709321702f/rsp/boil OFF ---------------- Кипячение (ON-кипячение включено, OFF-кипячение выключено)
r4s0/ce709321702f/rsp/heat OFF ---------------- Подогрев (ON-подогрев включено, OFF-подогрев выключено)
r4s0/ce709321702f/rsp/nightlight OFF ---------- Ночник (ON-ночник включено, OFF-ночник выключено)
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255 -- Цвет Ночника
r4s0/ce709321702f/rsp/nightlight_red 0 -------- Красный цвет Ночника
r4s0/ce709321702f/rsp/nightlight_green 0 ------ Зленый цвет Ночника
r4s0/ce709321702f/rsp/nightlight_blue 255 ----- Синий цвет Ночника
r4s0/ce709321702f/rsp/backlight OFF ----------- Подсветка (ON-включена, OFF-выключена)
r4s0/ce709321702f/rsp/beep OFF ---------------- Сигнал звуковой (ON-включен, OFF-выключен)
r4s0/ce709321702f/rsp/total_energy 361.958 ---- Расход энергии за все время
r4s0/ce709321702f/rsp/working_time 592295 ----- Время работы
r4s0/ce709321702f/rsp/working_count 2217 ------ Количество Включений
r4s0/ce709321702f/rsp/volume -0.0 ------------- Количество
r4s0/ce709321702f/rsp/volume_last 0.0 --------- Последнее Количество
r4s0/ce709321702f/rsp/boil_time 0 ------------- Время закипания (длительность кипячения -5 до +5 секунд по умолчанию 0)
r4s0/ce709321702f/rssi -115 ------------------- Уровень сигнала dBm шлюза с чайником (Bluetooth -50 отлично -110 нет связи)
r4s0/ce709321702f/status offline -------------- Состояние связи с чайником (вкл/выкл)
r4s0/ce709321702f/name RK-G240S --------------- Имя Чайника

Каждые 3-15секунд
r4s0/rssi -65
r4s0/rssi -64
r4s0/rssi -63

Слушаем данные конкретно для чайника ce709321702f

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/ce709321702f/#" -v

Данные
С версии 0.11.0: По умолчанию данные прилетят в виде JSON (при включенном параметре discovery) в топик. (Например: "waterius/12380568/")
Пример Отправить свои данные в топик
mosquitto_pub -h 192.168.175.1 -t test -m "Hello, world!" -u "ruisantos" -P "YOUR_PASSWORD"
Получить
mosquitto_sub -h 192.168.175.1 -t test -u "ruisantos" -P "YOUR_PASSWORD"


Команды для управления через MQTT

Краткое содержание
mosquitto_pub { [ -h hostname] [ --unix socket path] [ -p port-number] [ -u username] [ -P password] -t message-topic... | -L URL} [ -A bind-address] [ -c] [ -d] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] { | | | | } [ [ ] [ ] [ ] ] [[ { | } [ ] [ ] [ ] [ ] [ ] [ ] [ { | }] [ ] [ ] [ ] ] | [ [ ] [ ] ]] [ ]-D command identifier value-i client-id-I client-id-prefix-k keepalive-time--nodelay-q message-QoS--quiet-r--repeat count--repeat-delay seconds-S-V protocol-version-x session-expiry-interval-f file-l-m message-n-s--will-topic topic--will-payload payload--will-qos qos--will-retain--cafile file--capath dir--cert file--key file--ciphers ciphers--tls-version version--tls-alpn protocol--tls-engine engine--keyformpemengine--tls-engine-kpass-sha1 kpass-sha1--tls-use-os-certs--insecure--psk hex-key --psk-identity identity--ciphers ciphers--tls-version version--proxy socks-url

mosquitto_pub [ --help]

Документация

Пример: Включение отключение ночника
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight" -v
Ответ: r4s0/ce709321702f/rsp/nightlight OFF

Включение: 1\on\true

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "ON" -q 1 -d
или

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "1" -q 1 -d
или

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "true" -q 1 -d
Отключение: 0\off\false

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "OFF" -q 1 -d
или

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "0" -q 1 -d
или

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "false" -q 1 -d
Ответ:
Client null sending CONNECT
Client null received CONNACK (0)
Client null sending PUBLISH (d0, q1, r0, m1, 'r4s0/ce709321702f/cmd/nightlight', ... (1 bytes))
Client null received PUBACK (Mid: 1, RC:0)
Client null sending DISCONNECT

-h – хост IP/DNS, к которому нужно подключиться; -p - Порт; -u - Логин; -p - Пароль; -t – тема сообщения; -m – сообщение; -q – качество обслуживания; -d - Дебаг информация отладки

Задать температуру воды в чайнике, не управляется просто инфа
Проверка текущего значения

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/temp" -v
100 - кипячение, 35-90 подогрев
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/temp" -m "55" -q 1 -d
Выключить
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/temp" -m "0" -q 1 -d

Включить/Выключить чайник обычное кипячение (Статус чайника: auto - кипячение, off - выключено), не управляется просто инфа
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/hstate" -v
auto - кипячение
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/hstate" -m "auto" -q 1 -d
off Отключить кипячение
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/hstate" -m "off" -q 1 -d

У меня такого нет, но у кого то возможно есть Кипячение или кипячение\подогрев
r4s0/ce709321702f/cmd/state
если указать 1\on\true, то включится только кипячение
если указать от 40 до 90, то включится кипячение и подогрев (число в градусах Цельсия)
если указать 0\off\false, то чайник выключится

Кипячение (ON-кипячение включено, OFF-кипячение выключено)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/boil" -v
1/on/true - включение кипячения

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/boil" -m "ON" -q 1 -d
Отключить 0/off/false - выключение кипячения

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/boil" -m "OFF" -q 1 -d
Если перед этим был включен подогрев, включается кипячение с последующим подогревом

Время кипения чайника (длительность кипячения -5 до +5 секунд по умолчанию 0)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/boil_time" -v
Время кипячения 5 секунд

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/boil_time" -m "5" -q 1 -d
По умолчанию 0 секунд

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/boil_time" -m "0" -q 1 -d
Температура установлена нагрева/кипячение (100 - кипячение, 35-90 подогрев, 0 - не задано)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/heat_temp" -v
задаем температуру 40 (число в градусах Цельсия)

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/heat_temp" -m "40" -q 1 -d
Отключить 0 или меньше 35\off\false, то чайник выключится

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/heat_temp" -m "0" -q 1 -d
Подогрев предыдущий режим (ON-подогрев включено, OFF-подогрев выключено)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/heat" -v
1/on/true - включение подогрева с последней запомненной шлюзом температурой.
При старте шлюза температура берется из поля Heat в настройках

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/heat" -m "ON" -q 1 -d
Отключить 0/off/false - выключение подогрева

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/heat" -m "OFF" -q 1 -d
Подсветка при нагреве / кипячении (ON-включена, OFF-выключена)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/backlight" -v
Включение: 1\on\true

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/backlight" -m "ON" -q 1 -d
Отключение: 0\off\false

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/backlight" -m "OFF" -q 1 -d
Сигнал звуковой (ON-включен, OFF-выключен)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/beep" -v
Включение: 1\on\true

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/beep" -m "ON" -q 1 -d
Отключение: 0\off\false

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/beep" -m "OFF" -q 1 -d
Имя Чайника
Проверка текущего имени

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/name" -v
Тест Имени
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/name" -m "Name" -q 1 -d
Имя по умолчанию RK-G240S
mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/name" -m "RK-G240S" -q 1 -d

Ночник (ON-ночник включено, OFF-ночник выключено)
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight" -v
Включение: 1\on\true

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "ON" -q 1 -d
Отключение: 0\off\false

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "OFF" -q 1 -d
Цвет Ночника управление сразу всеми цветами (Красный, Зеленый, Синий) уровни от 0 до 255
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight_rgb" -v
Включим все 3 цвета на полную яркость

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_rgb" -m "255,255,255" -q 1 -d
По умолчанию только синий

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight" -m "0,0,255" -q 1 -d
Уровень Красного цвет Ночника 0 - 255
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight_red" -v
Максимальная Яркость Красного 255

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_red" -m "255" -q 1 -d
Красный отключен 0

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_red" -m "0" -q 1 -d
Уровень Зеленого цвет Ночника 0 - 255
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight_green" -v
Максимальная Яркость Красного 255

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_green" -m "255" -q 1 -d
Красный отключен 0

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_green" -m "0" -q 1 -d
Уровень Синего цвет Ночника 0 - 255
Проверка текущего состояния

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/rsp/nightlight_blue" -v
Максимальная Яркость Красного 255

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_blue" -m "255" -q 1 -d
Красный отключен 0

Код: Выделить всё

mosquitto_pub -h 192.168.175.1 -p 1883 -u "teapot" -P "Пароль" -t "r4s0/ce709321702f/cmd/nightlight_blue" -m "0" -q 1 -d


Пример данных в разных режимах чайника
Данные
Показать
Выключен Шлюз

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status offline
r4s0/ip 192.168.175.49
r4s0/rssi -62
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":37,"target":0,"state":0,"prog":0,"beep":0,"boil":0,"volume":["?",1.5],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 37
r4s0/ce709321702f/rsp/hstate off
r4s0/ce709321702f/rsp/heat_temp 0
r4s0/ce709321702f/rsp/boil OFF
r4s0/ce709321702f/rsp/heat OFF
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.134
r4s0/ce709321702f/rsp/working_time 592583
r4s0/ce709321702f/rsp/working_count 2218
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 1.5
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -91
r4s0/ce709321702f/status online
r4s0/ce709321702f/name RK-G240S

Шлюз Включен Чайник выключен

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status online
r4s0/ip 192.168.175.49
r4s0/rssi -40
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":37,"target":0,"state":0,"prog":0,"beep":0,"boil":0,"volume":["?",1.5],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 37
r4s0/ce709321702f/rsp/hstate off
r4s0/ce709321702f/rsp/heat_temp 0
r4s0/ce709321702f/rsp/boil OFF
r4s0/ce709321702f/rsp/heat OFF
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.134
r4s0/ce709321702f/rsp/working_time 592583
r4s0/ce709321702f/rsp/working_count 2218
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 1.5
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -91
r4s0/ce709321702f/status offline
r4s0/ce709321702f/name RK-G240S

Шлюз включен, чайник включен

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status online
r4s0/ip 192.168.175.49
r4s0/rssi -55
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":54,"target":0,"state":0,"prog":0,"beep":0,"boil":0,"volume":["?",0.0],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 54
r4s0/ce709321702f/rsp/hstate off
r4s0/ce709321702f/rsp/heat_temp 0
r4s0/ce709321702f/rsp/boil OFF
r4s0/ce709321702f/rsp/heat OFF
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.147
r4s0/ce709321702f/rsp/working_time 592605
r4s0/ce709321702f/rsp/working_count 2220
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 0.0
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -57
r4s0/ce709321702f/status online
r4s0/ce709321702f/name RK-G240S

Кипячение

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status online
r4s0/ip 192.168.175.49
r4s0/rssi -49
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":34,"target":100,"state":2,"prog":0,"beep":0,"boil":0,"volume":["?",0.0],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 34
r4s0/ce709321702f/rsp/hstate auto
r4s0/ce709321702f/rsp/heat_temp 100
r4s0/ce709321702f/rsp/boil ON
r4s0/ce709321702f/rsp/heat OFF
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.142
r4s0/ce709321702f/rsp/working_time 592596
r4s0/ce709321702f/rsp/working_count 2219
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 0.0
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -55
r4s0/ce709321702f/status online
r4s0/ce709321702f/name RK-G240S
r4s0/ce709321702f/rsp/json {"temp":35,"target":100,"state":2,"prog":0,"beep":0,"boil":0,"volume":["?",0.0],"rgb":[0,0,255]}
r4s0/ce709321702f/rssi -59
r4s0/ce709321702f/rsp/temp 35
r4s0/ce709321702f/rsp/total_energy 362.144
r4s0/ce709321702f/rsp/working_time 592600

Подогрев выбран 40 но не включен

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status online
r4s0/ip 192.168.175.49
r4s0/rssi -61
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":54,"target":40,"state":0,"prog":1,"beep":0,"boil":0,"volume":["?",0.0],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 54
r4s0/ce709321702f/rsp/hstate off
r4s0/ce709321702f/rsp/heat_temp 40
r4s0/ce709321702f/rsp/boil OFF
r4s0/ce709321702f/rsp/heat OFF
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.147
r4s0/ce709321702f/rsp/working_time 592605
r4s0/ce709321702f/rsp/working_count 2220
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 0.0
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -57
r4s0/ce709321702f/status online
r4s0/ce709321702f/name RK-G240S

Подогрев выбран 40 и включен

Код: Выделить всё

mosquitto_sub -h 192.168.175.1 -t "r4s0/#" -u "teapot" -P "Пароль" -v
r4s0/status online
r4s0/ip 192.168.175.49
r4s0/rssi -51
r4s0/screen 0
r4s0/ce709321702f/rsp/json {"temp":53,"target":40,"state":2,"prog":1,"beep":0,"boil":0,"volume":["?",0.0],"rgb":[0,0,255]}
r4s0/ce709321702f/rsp/temp 53
r4s0/ce709321702f/rsp/hstate heat
r4s0/ce709321702f/rsp/heat_temp 40
r4s0/ce709321702f/rsp/boil OFF
r4s0/ce709321702f/rsp/heat ON
r4s0/ce709321702f/rsp/nightlight OFF
r4s0/ce709321702f/rsp/nightlight_rgb 0,0,255
r4s0/ce709321702f/rsp/nightlight_red 0
r4s0/ce709321702f/rsp/nightlight_green 0
r4s0/ce709321702f/rsp/nightlight_blue 255
r4s0/ce709321702f/rsp/backlight ON
r4s0/ce709321702f/rsp/beep OFF
r4s0/ce709321702f/rsp/total_energy 362.147
r4s0/ce709321702f/rsp/working_time 592605
r4s0/ce709321702f/rsp/working_count 2221
r4s0/ce709321702f/rsp/volume -0.0
r4s0/ce709321702f/rsp/volume_last 0.0
r4s0/ce709321702f/rsp/boil_time 0
r4s0/ce709321702f/rssi -54
r4s0/ce709321702f/status online
r4s0/ce709321702f/name RK-G240S
r4s0/ce709321702f/rssi -50
количество слов: 2861
Ответить Вложения 42 Пред. темаСлед. тема

Вернуться в «Keenetic»