Регистрация датчиков. API для работы с правилами

Здравствуйте.
Работаю с контроллерами 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);
    }
});

На текущий момент, такая реализация передачи данных в брокер уже реализована.
Хотелось бы узнать способы автоматизации этого процесса, то есть обеспечить более удобное управление датчиками на котроллере т.к. будет больше количество датчиков. Чтобы каждый раз не переходить в контроллер и не прописывать правила для каждого датчика.

Автоматизированной системы на данный момент нет, передам разработчикам идею.

Добрый день, удалось ли решить вопрос?