Здравствуйте, вопрос как работать с mqtt топиками приходящими на брокер с других устройств.
В частности есть NVR frigate, он шлёт сообщения на брокер, через MQTT explorer их видно, но в веб интерфейсе wirenboard их нет.
Собственно вопрос, как с такими топиками работать в wb rules?
Схема топиков ниже:
Отвечу для себя:
нужны виртуальные девайсы и функции publish(topic, payload, [QoS [, retain]]) и trackMqtt(topic, callback())
Пример скрипта
// Создание виртуального переключателя отвечающего за наличие движения на кухне
defineVirtualDevice("frigate_motion", {
cells: {
kitchen: {
title: "Наличие движения на кухне",
type: "switch",
value: false,
readonly: true
},
bell: {
title: "Наличие движения во дворе",
type: "switch",
value: false,
readonly: true
},
koridor: {
title: "Наличие движения в коридоре",
type: "switch",
value: false,
readonly: true
},
}
});
trackMqtt("frigate/Kitchen/motion", function(message) {
log.info("name: {}, value: {}".format(message.topic, message.value));
if(message.value == "ON"){
dev["frigate_motion/kitchen"] = true
}
if(message.value == "OFF") {
dev["frigate_motion/kitchen"] = false
}
});
trackMqtt("frigate/bell/motion", function(message) {
log.info("name: {}, value: {}".format(message.topic, message.value));
if(message.value == "ON"){
dev["frigate_motion/bell"] = true
}
if(message.value == "OFF") {
dev["frigate_motion/bell"] = false
}
});
trackMqtt("frigate/Koridor/motion", function(message) {
log.info("name: {}, value: {}".format(message.topic, message.value));
if(message.value == "ON"){
dev["frigate_motion/koridor"] = true
}
if(message.value == "OFF") {
dev["frigate_motion/koridor"] = false
}
});
1 Like
Добрый день, прошу уточнить, удалось ли решить вопрос?
Спасибо, да
1 Like