Здравствуйте.
Работаю с контроллерами Wiren board 7.4. У меня возникли вопросы по поводу учета подключенных датчиков и настройки правил через API.
Учет контроллеров: Как можно реализовать учет датчиков, подключенных к контроллеру Wiren board 7.4? Мне нужно понимать, какой именно датчик подключен к определенному пину и отправляет данные на главный брокер (MQTT bridge).
API для настройки правил: Возможно ли реализовать API, который позволит настраивать правила (rules) по определенному шаблону, а также создавать виртуальные устройства и назначать на них зарегистрированные датчики? Это особенно важно в случае установки большого количества контроллеров на нескольких контроллерах Wiren board.
Заранее спасибо за ответ.
Добрый день.
Для передачи информации о датчике влажности и серийном номере контроллера на внешний брокер, можно создать виртуальное устройство, которое будет объединять эти данные в одном MQTT-топик
Вот небольшой пример:
// Определяем виртуальное устройство для отображения и редактирования информации о топике
defineVirtualDevice("mqtt_topic_info", {
title: "MQTT Topic Information", // Название устройства, которое будет отображаться в интерфейсе
cells: {
topic_name: {
type: "text", // Поле типа 'text' для редактирования названия топика
value: "/external_broker/sensor_data", // Начальное значение топика
readonly: false // Поле редактируемое
},
controller_serial: {
type: "text", // Поле для редактирования серийного номера контроллера
value: "Unknown", // Начальное значение серийного номера
readonly: false // Поле редактируемое
},
combined_info: {
type: "text", // Поле типа 'text' для отображения объединенной информации
value: "Waiting for data...", // Начальное значение, пока нет данных
readonly: true // Поле только для чтения
}
}
});
// Определяем виртуальное устройство для сбора данных из датчиков
defineVirtualDevice("sensor_data", {
title: "Sensor and Controller Info", // Название устройства, собирающего данные датчиков
cells: {
humidity: {
type: "value", // Поле для хранения значения влажности
value: 0 // Начальное значение влажности
},
combined_info: {
type: "text", // Поле для хранения объединенной информации
value: "" // Начальное значение
}
}
});
// Правило для обновления значения влажности и объединенной информации
defineRule("updateSensorAndSerial", {
whenChanged: ["wb-msw-v4_30/Humidity"], // Следим за изменениями влажности
then: function(newValue, devName, cellName) {
// Обновляем значение влажности
dev["sensor_data"]["humidity"] = newValue;
// Получаем вручную введенные значения топика и серийного номера
var topicName = dev["mqtt_topic_info"]["topic_name"];
var serialNumber = dev["mqtt_topic_info"]["controller_serial"] || "Unknown";
// Формируем сообщение для отправки
var humidity = dev["sensor_data"]["humidity"];
var combinedInfo = "Controller: " + serialNumber + ", Humidity: " + humidity + "%";
// Обновляем объединенное значение
dev["sensor_data"]["combined_info"] = combinedInfo;
// Логируем результат
log("Combined Info: " + combinedInfo);
// Отправляем данные на вручную введенный топик
publish(topicName, combinedInfo);
}
});
// Правило для обновления поля с объединенной информацией в виртуальном устройстве mqtt_topic_info
defineRule("updateCombinedInfoInVirtualDevice", {
whenChanged: "sensor_data/combined_info", // Следим за изменением данных в виртуальном устройстве sensor_data
then: function(newValue, devName, cellName) {
// Обновляем значение в виртуальном устройстве mqtt_topic_info
dev["mqtt_topic_info"]["combined_info"] = newValue;
log("Updated MQTT topic info in virtual device: " + newValue);
}
});
На текущий момент, такая реализация передачи данных в брокер уже реализована.
Хотелось бы узнать способы автоматизации этого процесса, то есть обеспечить более удобное управление датчиками на котроллере т.к. будет больше количество датчиков. Чтобы каждый раз не переходить в контроллер и не прописывать правила для каждого датчика.
Автоматизированной системы на данный момент нет, передам разработчикам идею.
Добрый день, удалось ли решить вопрос?