MQTT Bridge, взаимодействие через скрипты


#1

Добрый день.
Настроил бридж на cloudmqtt
в файле /etc/mosquitto/mosquitto.conf
добавил строки
connection cloudmqtt
address m13.cloudmqtt.com:11250
remote_username test
remote_password test
clientid home-assistant
try_private false
start_type automatic
topic # out
перезагрузил WB, подключение есть, в CloudMQTT Console наблюдаю прием сообщений.
Но задача немного другая, все сообщения не нужны, а только некоторые и те либо по событию, либо по действию, поэтому нужно писать скрипты.
Подскажите, или дайте сслыку на примеры, как в скриптах, добавить возможность отправлять сообщения в mqtt и добавлять события на прием определенных топиков.


#2

Так нет же, вам просто в поле topic в настройках надо не wildcard указывать, а конкретные топики.

Полезно читать contactless.ru/wiki/index.php/MQTT про наш формат и мануал по mosquitto.conf


#3

Это понятно, я укажу конкретные топики, вопрос в другом. Как с помощью вашего .js писать в очередь и выполнять какие-то функции при получении топиков. Как добавить Listener на конкретный топик. Не хочется писать скрипты через консоль на pyton или еще чем-то, если есть редактор js через веб интерфейс.


#4

на произвольный топик нельзя, на новое сообщение в топике, соответствующему нашей системе наименований - можно.


#5

Можно подробней, может есть примеры, что можно, что нельзя, не очень понял.


#6

https://github.com/contactless/homeui/blob/contactless/conventions.md

По этой ссылке найдёте подробную информацию о системе наименований wb. Произвольные топики обрабатывать будет сложно.

contactless.ru/wiki/index.php/MQTT


#7

Несколько ограничений:

  1. Топик должен быть по нашим конвенциям, т.е. вида /devices/device_id/controls/control_id

  2. Слать данные вы должны в /devices/device_id/controls/control_id

  3. Должны существовать retained-топики с мета-информацией. Как минимум /devices/device_id/controls/control_id/meta/type

  4. То, что вы отправляете в /on должно соответствовать этому meta/type

  5. Система правил оперирует состояниями, а не сообщениями. Поэтому в общем случае вы не можете сделать правило, которые выполняется при получении сообщения.
    Что можно сделать: можно сдлеать правило, которое выполняется при изменении содержимого, т.е. отправке не такого, как в прошлый раз сообщения.


#8

Несколько ограничений:

  1. Топик должен быть по нашим конвенциям, т.е. вида /devices/device_id/controls/control_id

  2. Слать данные вы должны в /devices/device_id/controls/control_id/on

  3. Должны существовать retained-топики с мета-информацией. Как минимум /devices/device_id/controls/control_id/meta/type

  4. То, что вы отправляете в /on должно соответствовать этому meta/type

  5. Система правил оперирует состояниями, а не сообщениями. Поэтому в общем случае вы не можете сделать правило, которые выполняется при получении сообщения.
    Что можно сделать: можно сдлеать правило, которое выполняется при изменении содержимого, т.е. отправке не такого, как в прошлый раз сообщения.


#9

Возникла проблема.

Добавил в /etc/mosquitto/mosquitto.conf строки подключения как написано здесь:
https://wirenboard.com/wiki/index.php/MQTT#.D0.9D.D0.B0.D1.81.D1.82.D1.80.D0.BE.D0.B9.D0.BA.D0.B0_MQTT_.D0.BC.D0.BE.D1.81.D1.82.D0.B0_.28bridge.29

ПЛК WB6 уходит в циклическую перезагрузку с сообщением:
Failed to start Mosquitto MQTT v3.1/v3.1.1 Broker

Лог прикладываю.puttyWB1.log.txt (24,5 КБ)


#10

А есть какой-то способ во время загрузки ПЛК запретить загружать некоторые драйвера, чтобы ПЛК не уходил в перезагрузку (типа безопасного режима)?


#11

Я еще не понял, откуда брать значение clientid?


#12

подключитесь к отладке и после загрузки отключите watchdog:

service watchdog stop

clientid придумайте сами. Но он должен быть уникальным.

Если вы настраиваете Bridge то лучше настройки делать в фале: /mnt/data/etc/mosquitto/conf.d/bridge.conf


#13

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

Я правильно понимаю, что для того, чтобы можно было визуализировать данные с CloudMQTT, нужно настраивать на нем bridge, настройки bridge только на WB недостаточно?

Этот сервис позволяет вообще просматривать топики?


#14

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


#15

Да мне он, скорее всего, и не нужен.
Я ищу способ, как сделать нормальный UI для WB6.


#16

Здравствуйте, занимаюсь UI для WB уже более года, есть наработки, чтобы Вам не заниматься тем же могу дать доступ к облачному редактору интерфейса, помочь с настройкой, все безвозмездно, взамен только адекватная критика, указание на ошибки, в общем тестирование.


#17

Дайте, пожалуйста. Буду вам признателен.


#18

Напишите пожалуйста на почту
2018-10-16_12-55-34