miwany
06.Ноябрь.2024 13:11:16
1
Написать правило за вознаграждение:
T2 < 60 и T1 <= 60 - включить реле К1
T2 < 60 и T1 >= 70 - выключить реле К1
T2 >= 60 и T1 <= 60 - включить реле К1
T2 >= 60 и T1 >= 70 - выключить реле К1
Контроллер Wiren Board 8.4, Модуль реле 6-канальный WB-MR6C v.2, Датчики температуры 1-wire DS18B20
Добрый день,
Обычно в этом сообществе принято помогать друг другу, и вы можете рассчитывать на отзывчивость и поддержку.Т ак же можно обратиться в Telegram-чат Wiren Board , где вы, скорее всего, получите опыт других пользователей в кратчайшие сроки.
Также можно ознакомиться с основами создания правил для движка wb-rules:
Пример простого правила для вашей задачи:
defineRule("temperature_control_K1", {
whenChanged: [
"/devices/wb-msw-v4_1_2/controls/Temperature", // Топик датчика температуры T1
"/devices/wb-msw-v4_1_2/controls/Humidity" // Топик датчика влажности T2 для примера второй метрики
],
then: function () {
var T1 = dev["wb-msw-v4_1_2"]["Temperature"]; // Значение температуры
var T2 = dev["wb-msw-v4_1_2"]["Humidity"]; // Значение влажности
if (T1 <= 60) {
dev["wb-mdm3_27"]["K1"] = true; // Включаем реле К1
} else if (T1 >= 70) {
dev["wb-mdm3_27"]["K1"] = false; // Выключаем реле К1
}
}
});
Пояснения:
Топики температуры и влажности:
/devices/wb-msw-v4_1_2/controls/Temperature
— значение температуры T1.
/devices/wb-msw-v4_1_2/controls/Humidity
— значение T2 (влажность). Замените на свой реальный топик для T2.
Реле:
/devices/wb-mdm3_27/controls/K1
— реле, которое будет управляться. Замените на ваш реальный топик реле, если отличается.
Если у вас возникнут трудности, задавайте вопросы и я постараюсь вам помочь.
Если же требуется профессиональная помощь, рекомендую обратиться к интеграторам , которые смогут оперативно настроить и оптимизировать вашу систему.
1 лайк
Добрый день.
Вижу пример так:
//11_06_test_01.js
var tSensor1="hwmon/CPU Temperature";
var tSensor2="hwmon/CPU Temperature";
var oRelay1="wb-gpio/A1_OUT";
var oRelay2="wb-gpio/A2_OUT";
var oRelay3="wb-gpio/A3_OUT";
defineRule("whenChanged tSensor", {
whenChanged: [tSensor1, tSensor2], // топик, при изменении которого сработает правило
then: function (newValue, devName, cellName) {
log.info(newValue, cellname);
T1 = dev[tSensor1];
T2 = dev[tSensor2];
if(T1<=60 && T2<60){
dev[oRelay1] = true;
}
if(T1>=70 && T2<60){
dev[oRelay1] = false;
}
if(T1<=60 && T2>=60){
dev[oRelay1] = true;
}
if(T1>=70 && T2>=60){
dev[oRelay1] = false;
}
}
});
Не тестировал.
miwany
22.Ноябрь.2024 04:30:52
10
Написал правило, но почему то не работает (реле не вкл / выкл)…
где что надо подправить ?
defineRule("termostat", {
whenChanged: [
"/devices/wb-w1/controls/28-011449b828aa", // Топик датчика температуры котла T1
"/devices/wb-w1/controls/28-01204dc4005c", // Топик датчика температуры бойлера T2
"/devices/wb-mr6c_219_2/controls/K1" // Топик реле К1
],
then: function () {
var T1 = dev["28-011449b828aa"]["Temperature"]; // Значение температуры котла Т1
var T2 = dev["28-01204dc4005c"]["Temperature"]; // Значение температуры бойлера Т2
if (T1 <= 38) {
dev["wb-mr6c_219_2"]["K1"] = true; // Включаем реле К1
} else if (T1 >= 40) {
dev["wb-mr6c_219_2"]["K1"] = false; // Выключаем реле К1
}
}
});
Добрый день,
Добавил в скрипт немного вам отладочной информации.
defineRule("termostat", {
whenChanged: [
"/devices/wb-w1/controls/28-011449b828aa", // Топик датчика температуры котла T1
"/devices/wb-w1/controls/28-01204dc4005c", // Топик датчика температуры бойлера T2
"/devices/wb-mr6c_219_2/controls/K1" // Топик реле К1
],
then: function () {
log("Rule triggered");
var T1 = dev["wb-w1"]["28-011449b828aa"]; // Значение температуры котла Т1
var T2 = dev["wb-w1"]["28-01204dc4005c"]; // Значение температуры бойлера Т2
log("T1 (котел): " + T1 + "°C");
log("T2 (бойлер): " + T2 + "°C");
if (T1 <= 38) {
dev["wb-mr6c_219_2"]["K1"] = 1; // Включаем реле К1
log("Реле К1: включено");
} else if (T1 >= 40) {
dev["wb-mr6c_219_2"]["K1"] = 0; // Выключаем реле К1
log("Реле К1: выключено");
}
}
});
Рекомендую ссылки на основные статьи по написанию правил:
ссылка на гит и на википедию