Здравствуйте! Хочу добавить датчик температуры и влажности Aquara из SprutHub в WirenBoard. Написал правило, устройство добавилось на дашборд, но не получает данные. Вот код, где я ошибся?
var SensorTemperatura = “03_virtual_sensor/Temperatura”;
var MQTT_SensorTemperatura = “Sprut.hub-6535EB0F093C07B5_1/accessories/44/13”;
var SensorVlag = “03_virtual_sensor/Vlag”;
var MQTT_SensorVlag = “Sprut.hub-6535EB0F093C07B5_1/accessories/44/16”;
var SensorDavlenie = “03_virtual_sensor/Davlenie”;
var MQTT_SensorDavlenie = “Sprut.hub-6535EB0F093C07B5_1/accessories/44/19”;
var SensorData = {
Temperatura: {
title: “Температура”,
type: “value”,
order: 0,
value: 25,
unit: “°C”
},
Vlag: {
title: “Влажность”,
type: “value”,
order: 1,
value: 45,
unit: “%”
},
Davlenie: {
title: “Давление”,
type: “value”,
order: 2,
value: 750,
unit: “мм рт.ст.”
}
};
// Создаем виртуальное устройство
defineVirtualDevice(‘03_VirtualSensor’, {
title: ‘Датчик микроклимата кухня’,
cells: SensorData
});
// Функция для обновления значения в виртуальном устройстве
function updateValue(sensor, value) {
setCellValue(sensor, value.toFixed(1)); // округляем до 1 знака после запятой
}
// Функция для получения новых данных с датчика
function getNewData() {
// Получаем новые значения с датчиков
var newTemperatura = getValue(MQTT_SensorTemperatura);
var newVlag = getValue(MQTT_SensorVlag);
var newDavlenie = getValue(MQTT_SensorDavlenie);
// Обновляем значения в виртуальном устройстве
updateValue(SensorTemperatura, newTemperatura);
updateValue(SensorVlag, newVlag);
updateValue(SensorDavlenie, newDavlenie);
}
// Запускаем обновление каждые 60 секунд
setInterval(getNewData, 60000); // 60000 миллисекунд = 60 секунд
// Отслеживаем MQTT сообщения и обновляем значения
trackMqtt(MQTT_SensorTemperatura, function(message) {
var value = parseFloat(message.value);
updateValue(SensorTemperatura, value);
});
trackMqtt(MQTT_SensorVlag, function(message) {
var value = parseFloat(message.value);
updateValue(SensorVlag, value);
});
trackMqtt(MQTT_SensorDavlenie, function(message) {
var value = parseFloat(message.value);
updateValue(SensorDavlenie, value);
});