wb_editors
902
правки
Matveevrj (обсуждение | вклад) |
Brainroot (обсуждение | вклад) |
||
(не показано 14 промежуточных версий 2 участников) | |||
Строка 10: | Строка 10: | ||
Структура топиков описана в [https://github.com/wirenboard/conventions/blob/main/README.md Wiren Board MQTT Conventions]. | Структура топиков описана в [https://github.com/wirenboard/conventions/blob/main/README.md Wiren Board MQTT Conventions]. | ||
В контроллере используется MQTT брокер mosquitto, который по умолчанию разрешает соединения без пароля с любых хостов. Если вы хотите настроить авторизацию, [https://mosquitto.org/man/mosquitto-conf-5.html обратитесь к официальной документации]. | |||
== Примеры работы через MQTT == | == Примеры работы через MQTT == | ||
Строка 203: | Строка 205: | ||
Альтернативный вариант — использовать [[MQTT Explorer]]. | Альтернативный вариант — использовать [[MQTT Explorer]]. | ||
=== Установка пароля на MQTT брокер === | |||
Установить пароль на MQTT-брокер можно следующим образом. | |||
#Добавьте нового пользователя в файл конфигурации, выполнив команду: | |||
#:<syntaxhighlight lang="bash"> | |||
mosquitto_passwd -c /etc/mosquitto/passwd/default.conf username | |||
</syntaxhighlight> | |||
#:Вместо username можно указать произвольное имя пользователя. | |||
#:После ввода команды появится запрос на ввод пароля, который нужно будет ввести два раза. | |||
#Далее в файле <code>/etc/mosquitto/conf.d/10listeners.conf</code> установите параметр <code>allow_anonymous false</code> (по умолчанию true). | |||
#:Изменить файл можно открыв его в текстовом редакторе, например, nano: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/mosquitto/conf.d/10listeners.conf | |||
</syntaxhighlight> | |||
#В файле <code>/etc/mosquitto/acl/default.conf</code> добавьте следующую запись: | |||
#:<syntaxhighlight lang="bash"> | |||
user username | |||
topic readwrite # | |||
topic readwrite $SYS/# | |||
</syntaxhighlight> | |||
#:где, username — имя пользователя, заданное на первом шаге. | |||
#:Открыть файл для редактирования: | |||
#:<syntaxhighlight lang="bash"> | |||
nano /etc/mosquitto/acl/default.conf | |||
</syntaxhighlight> | |||
#Перезапустите mosquitto командой: | |||
#:<syntaxhighlight lang="bash"> | |||
systemctl restart mosquitto | |||
</syntaxhighlight> | |||
После выполнения этой инструкции анонимные подключения к брокеру станут недоступны. Поэтому нужно будет использовать установленный пароль в веб-интерфейсе контроллера, который по умолчанию использует анонимное подключение. | |||
Для чтения топиков с компьютера на Linux в той же сети теперь нужно использовать команду: | |||
<syntaxhighlight lang="bash"> | |||
mosquitto_sub -h 192.168.0.67 -p 1883 -v -t "/devices/power_status/controls/Vin" -i Test_Client -u username -P password | |||
</syntaxhighlight> | |||
=== Настройка MQTT моста (bridge) === | === Настройка MQTT моста (bridge) === | ||
Строка 218: | Строка 258: | ||
# Зарегистрируйтесь на http://cloudmqtt.com/ | # Зарегистрируйтесь на http://cloudmqtt.com/ | ||
# Зайдите в свой аккаунт на http://cloudmqtt.com/ и посмотрите настройки: сервер, порт, логин, пароль. | # Зайдите в свой аккаунт на http://cloudmqtt.com/ и посмотрите настройки: сервер, порт, логин, пароль. | ||
# Зайдите на контроллер и добавьте в конец файла <code>/etc/mosquitto/ | # Зайдите на контроллер и добавьте в конец файла <code>/etc/mosquitto/conf.d/20bridges.conf</code> следующие строки: | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
connection cloudmqtt | connection cloudmqtt | ||
Строка 233: | Строка 273: | ||
# Перезапустите <code>mosquitto</code>, выполнив в консоли: | # Перезапустите <code>mosquitto</code>, выполнив в консоли: | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
systemctl restart mosquitto | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[File:Clusterfly3.png | thumb | 400px | Настройки брокера CLUSTERFLY]] | [[File:Clusterfly3.png | thumb | 400px | Настройки брокера CLUSTERFLY]] | ||
Строка 243: | Строка 283: | ||
# Зарегистрируйтесь на https://clusterfly.ru/ | # Зарегистрируйтесь на https://clusterfly.ru/ | ||
# Зайдите в свой аккаунт на https://clusterfly.ru/ и выберите | # Зайдите в свой аккаунт на https://clusterfly.ru/ и выберите «Профиль» посмотрите настройки: сервер, порт, логин и сгенерируйте пароль. Для пересылки используйте сервер <code>srv1.clusterfly.ru</code>. | ||
# Зайдите на контроллер и добавьте в конец файла <code>/etc/mosquitto/ | # Зайдите на контроллер и добавьте в конец файла <code>/etc/mosquitto/conf.d/20bridges.conf</code> следующие строки: | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
connection clusterfly | connection clusterfly | ||
Строка 252: | Строка 292: | ||
try_private false | try_private false | ||
notifications true | notifications true | ||
notification_topic /client/ | notification_topic /client/wb_7/bridge_status | ||
start_type automatic | start_type automatic | ||
topic /# both 0 "" user_xxxxxx | topic /# both 0 "" user_xxxxxx | ||
Строка 261: | Строка 301: | ||
# Перезапустите <code>mosquitto</code>, выполнив в консоли: | # Перезапустите <code>mosquitto</code>, выполнив в консоли: | ||
#: <syntaxhighlight lang="bash"> | #: <syntaxhighlight lang="bash"> | ||
systemctl restart mosquitto | |||
</syntaxhighlight> | </syntaxhighlight> | ||
#: Потребуется подождать некоторое время пока брокер <code>mosquitto</code> сможет организовать соединение. Подписавшись на контроллере к топику <code>/client/ | #: Потребуется подождать некоторое время пока брокер <code>mosquitto</code> сможет организовать соединение. Подписавшись на контроллере к топику <code>/client/wb_7/bridge_status</code> можно увидеть статус соединения. | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
mosquitto_sub -v -t "/client/ | mosquitto_sub -v -t "/client/wb_7/bridge_status" | ||
/client/ | /client/wb_7/bridge_status 0 | ||
/client/ | /client/wb_7/bridge_status 1 | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 287: | Строка 327: | ||
'''Решение:''' На контроллере ''DestinationController'' добавьте в конфиг: | '''Решение:''' На контроллере ''DestinationController'' добавьте в конфиг: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
nano /etc/mosquitto/conf.d/ | nano /etc/mosquitto/conf.d/20bridges.conf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строки: | Строки: | ||
Строка 298: | Строка 338: | ||
restart_timeout 20 | restart_timeout 20 | ||
topic /temp1/# in | topic /temp1/# in 1 /devices /client | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Строка 307: | Строка 347: | ||
'''ВАЖНО:''' перед перезапуском желательно [[watchdog |остановить watchdog]]. В случае ошибки в конфигурационных файлах брокер не запустится и watchdog вызовет перезапуск контроллера. | '''ВАЖНО:''' перед перезапуском желательно [[watchdog |остановить watchdog]]. В случае ошибки в конфигурационных файлах брокер не запустится и watchdog вызовет перезапуск контроллера. | ||
Рассмотрим подробнее строчку <code>topic /temp1/# in | Рассмотрим подробнее строчку <code>topic /temp1/# in 1 /devices /client</code> | ||
где: | где: | ||
* <code>/temp1/#</code> это топик от «корня». На брокере-источнике /client/'''temp1'''. | * <code>/temp1/#</code> это топик от «корня». На брокере-источнике /client/'''temp1'''. | ||
Строка 399: | Строка 439: | ||
=== Настройка моста на контроллере === | === Настройка моста на контроллере === | ||
Создайте | Создайте конфигурацию моста, для этого: | ||
# | # Откройте файл <code>/etc/mosquitto/conf.d/20bridges.conf</code> | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
nano /etc/mosquitto/conf.d/ | nano /etc/mosquitto/conf.d/20bridges.conf | ||
</syntaxhighlight> | </syntaxhighlight> | ||
# Вставьте в | # Вставьте в конец файла строки, где <code>10.0.0.105</code> — адрес брокера: | ||
#:<syntaxhighlight lang="bash"> | #:<syntaxhighlight lang="bash"> | ||
connection bridge1 | connection bridge1 |