Отложенная отправка данных MQTT


#1

Здравствуйте. Скажите пожалуйста, возможно сделать отложенную отправку сообщений через mosquitto, чтобы он посылал сообщение раз в 20 секунд допустим? И можно как-то отловить clientid отправителя на сервере?


#2

Боюсь, что нет. Я правильно понимаю, что вы хотите, чтобы бридж слал сообщения пакетами с задержкой в 20 секунд?
А как вы хотите использовать clientid?


#3

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

Мы хотели использовать clientid для идентификации конкретного устройства, чтобы если их будет несколько, не путаться в показаниях. Уже нашли решение для этого, просто дописываем перед топиком имя устройства и шлем все спокойно.


#4

Да, как раз хотел предложить использовать префикс для топиков с определенного устройства.
Вы можете увеличить время опроса для Modbus устройств, как для всех (в настройках порта), так и для каждого. Но остаются другие топики, не те, в которые публикует wb-mqtt-serial, их надо будет фильтровать.
Правда, при опросе устройств с 20-секундной задержкой вы перестанете отлавливать изменения входов Modbus-устройств, устроит ли это вас?


#5
  1. Мы сейчас используем 4 датчика ds18b20 по 1-Wire, возможно ли для них это сделать?
  2. Хотелось бы обойтись без потерь информации, может вы подскажите, возможно ли тогда брать конкретные записи из wb-mqtt-bd? Написать скрипт, который находил бы нужное устройство с временной меткой отличной от прошлой там на 20 секунд и посылал ее?

#6

Также использую эти датчики через WB-M1W2. При этом, так как они отправляют температуру по Modbus, то соответственно делаешь опрос 15000мс. Плюс еще в том, что адаптер отсылает только если температура поменялась.

Тоже достаточное кол-во устройств из разных мест шлют информацию на один сервер для отображения в Grafana и их сортировка осуществляется по префиксу, который добавляет бридж каждого из контроллеров на объектах.


#7

Нам нужны данные каждые х секунд, даже если они не меняются.


#8

Через cron в скрипте и VirtualDevice тогда?


#9

Спасибо за совет, будем пробовать. Напишем, что из этого выйдет.