Дано:
Садововое товарищество с въездными откатными воротами и двигателем,
Wirenboard 8.5,
С прошивкой wb-2602
И релейным модулем: WB-MR6C,
Выход К1 WB-MR6C подключен к мотору откатных ворот ко входу Open, то есть кратковременное замыкание выхода K1 (1-10 секунд) дает команду воротам открыться, (пока вход Open замкнут закрытие не производится), далее автоматика двигателя по фотоэлементам либо по тайм-ауту сама закрывает ворота.
Задача:
Есть облачная система управления поселком, они у себя развернули MQTT брокер, он может выдавать команду на открытие ворот (нам это необходимо для реализации открытия ворот по звонку, звонки будут приходить на их систему, они будут обрабатывать и сбрасывать вызов, соответственно если телефон в белом списке то облачный MQTT брокер может менять топик).
Нам выдали реквизиты MQTT брокера: сервер, порт, логин,пароль.
Вопрос:
Как лучше реализовать связь нашего Wirenboard и облачного MQTT сервера, Wirenboard же сам является Брокером, какими инструментами нам лучше воспользоваться?
Добрый день.
Решение в лоб - выглядит как сервис на python, например, который подключается как клиент к брокеру и подписывается на топики с событиями.
Есть какие то примеры подобного?
Не совсем понимаю откуда начинать.
Мне кажется в прошлых прошивках был еще MQTT Bridge, может быть каким то образом можно было через этот функционал реализовать общение двух MQTT брокеров?
Набросал пример:
import paho.mqtt.client as mqtt
BROKER = "10.0.0.86"
PORT = 1883
TOPIC = "/devices/wb-gpio/controls/A4_OUT"
def on_message(client, userdata, msg):
print(f"Получено сообщение: {msg.topic} -> {msg.payload.decode()}")
client = mqtt.Client()
client.on_message = on_message
client.connect(BROKER, PORT, 60)
client.subscribe(TOPIC)
print(f"Подписка на топик: {TOPIC} на брокере {BROKER}:{PORT}")
client.loop_forever()
То есть достаточно поменять “print(f"Получено сообщение” на публикацию в локальный брокер, например.
В mosquitto он был, и есть. Да, можно настроить и бридж. Но он мне кажется что отдельный скорипт проще в обработке ошибок.