Добрый день!
Вопрос по настройкам конфигурации bridge.
Если отправлять к примеру из коммандной строки то сервер принимает сообщения
mosquitto_pub -u USER -P PASSWORD -t channels/CHANNEL_ID/messages -h HOST -m ‘23’
если использовать такую конфигурацию bridge, то ничего не получается
address HOST
remote_username USER
remote_password PASSWORD
на примере датчика температуры
topic # out 0 /devices/wb-w1/controls/28-00000a1d48e1 channels/CHANNEL_ID/messages
Где ошибка?
Двойные кавычки в конце добавьте через пробел
кавычки ничего не меняют, wirenboard усердно паблишит в стандартный топик
хотя отписывается от нужно топика
если делать с командной строки, то все нормально
Добрый день!
Напишите, пожалуйста, словами, какую именно задачу вы пытаетесь решить. То есть из какого именно локального топика/группы топиков в какие удалённые топики вы хотите передавать данные.
Добрый день!
Есть сервер с MQTT адаптером который принимает сообщения в JSON формате
при выполнении команды на контроллере сообщения принимаются т.к. все условия соблюдены
mosquitto_pub -u 4a27b1b5-1d2e-425b-999a-7830ef4bc08e -P 72cbc131-8b23-4b05-9b9d-493fbfcb6eb5 -t channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages -h 172.28.3.238 -m ‘[{“n”:“temp”,“v”:24.687}, {“n”:“cpu_temp”,“v”:61.417}, {“n”:“board_temp”,“v”:36.375}]’
Теперь делаем тоже через bridge.
Есть к примеру топик с температурой
при помощи скриптов делаем из него JSON формат
настройки бриджа:
address 172.28.3.238:1883
remote_username 4a27b1b5-1d2e-425b-999a-7830ef4bc08e
remote_password 72cbc131-8b23-4b05-9b9d-493fbfcb6eb5
try_private false
start_type automatic
topic # out 0 /devices/power_status/controls/28-00000a1d48e2 channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages “”
получаем совсем другую картину
так а что вас беспокоит? В этот топик бридж просто пишет единичку, когда подключается, про это есть отдельная настройка.
Покажите пожалуйста полностью конфиг бриджа, попробуйте не с таким сложными правилами преобразования топиков (например вообще без них для начала), покажите вывод mosquitto_sub на брокере, куда бридж подключается.
Сервер не принимает никакие сообщения в свой канал кроме как channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages, поэтому если бридж пытается куда-то записать единицу у него это не получится.
Если есть отдельная настройка, это даже радует, возможно бриджу нужно сразу высылать сообщение в нужный топик. Хотелось бы узнать, где эти настройки.
Это полный конфиг бриджа.
Вывод mosquitto_sub
mosquitto_sub -u 4a27b1b5-1d2e-425b-999a-7830ef4bc08e -P 72cbc131-8b23-4b05-9b9d-493fbfcb6eb5 -t channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages -h 172.28.3.238
0
[{“n”:“temp”,“v”:25}, {“n”:“cpu_temp”,“v”:61.417}, {“n”:“board_temp”,“v”:36.125}]
[{“n”:“temp”,“v”:25}, {“n”:“cpu_temp”,“v”:62.014}, {“n”:“board_temp”,“v”:36.125}]
[{“n”:“temp”,“v”:25}, {“n”:“cpu_temp”,“v”:61.417}, {“n”:“board_temp”,“v”:36.125}]
[{“n”:“temp”,“v”:25}, {“n”:“cpu_temp”,“v”:60.820}, {“n”:“board_temp”,“v”:36.125}]
[{“n”:“temp”,“v”:25}, {“n”:“cpu_temp”,“v”:61.417}, {“n”:“board_temp”,“v”:36.125}]
Ну так а эти сообщения - это не то, что вы пытаетесь отправить?
Эти сообщения я отправляю через скрипт который вычитывает данные на контроллере и посылает их через mosquitto_pub. Но это костыль.
Если пересылать данные через бридж на удаленном топике ничего
7test, хотел уточнить: какой именно компонент формирует у вас на контрроллере JSON-структуру и отправляет ее в топик /devices/power_status/controls/28-00000a1d48e2? Движок правил?
Если вы подписываетесь на этот топик на mosquitto контроллера, данные в виде JSON-структуры приходят? Скриншот хотелось бы посмотреть, пожалуйста.
Я так понимаю, что вы хотите, чтобы сообщения, публикуемые локально на контроллере в топик /devices/power_status/controls/28-00000a1d48e2 отправлялись бы бриджем на удаленный сервер в топик /devices/power_status/controls/28-00000a1d48e2 , верно?
Да, движок правил.
хочу из /devices/power_status/controls/28-00000a1d48e2 пересылать на channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages
Смотрите, в брокере не получится транслировать один топик в другой целиком, только все (префикс) до последней части.
Чтобы пересылать через брокер с подменой вам надо
/devices/power_status/controls/28-00000a1d48e2
назвать
/devices/power_status/controls/messages
а в брокере прописать:
topic # both 0 /devices/power_status/controls/ channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/
тогда отправленное контроллером что-то типа
mosquitto_pub -t "/devices/power_status/controls/messages" -m [{\"a\":\"a\"},{\"c\":\"f\"}]
(ну, или из движка правил)
будет приходить через брокер на ваш сервер в виде
channels/0ff09433-a9eb-4ff2-85a9-f9cc1c0abce3/messages [{"a":"a"},{"c":"f"}]
А если вы в точности скопируете мою строчку в конфигурацию бриджа, без изменений, тоже не будет работать?