правило в cron:
*/5 * * * * mosquitto_pub -t '/config/serial' -f /etc/wb-mqtt-serial.conf -r
Получение данных:
Key: mqtt.get["{$MQTT_BROKER}","/config/serial"]
Discovery rule “Serial devices” - Dependent item, в Preprocessing добавить JavaScript:
var obj = JSON.parse(value);
var devices = []
for (var p in obj.ports) {
var port = obj.ports[p]
for (var d in port.devices) {
var dev = port.devices[d]
var en = (port.hasOwnProperty('enabled') ? port.enabled : true) && (dev.hasOwnProperty('enabled') ? dev.enabled : true);
if (!en)
continue;
var topic = ('' + dev.device_type).toLowerCase();
topic = topic.replace("wb-msw v.", "wb-msw-v"); // hack
topic = topic.replace("wb-mwwww", "wb-mrgbw"); // hack
topic = topic.replace(/[^a-z0-9-].*/, "");
topic += '_' + dev.slave_id;
var item = {
"port": port.path.replace('/dev/tty', ''),
"type": dev.device_type,
"id": dev.slave_id,
"topic": topic,
}
devices.push(item);
}
}
// console.log(JSON.stringify(devices, null, 2));
return JSON.stringify(devices, null, 2);
LLD macros:
Ну и какой-нибудь item prototype чтобы все заработало, у меня настроено чтение Uptime регистра (по умолчанию выключено, enable: false, надо править шаблоны или через web gui):
Детали - в прикрепленном темплейте, напрямую подходит к Zabbix 5.4 + Agent2 (именно 2), но можно прикрутить получение данных внешней командой если версия агента ниже 5.4.
Template WB-Serial MQTT.yaml (5.3 КБ)