Помогите правильно написать скрипт

Всем здравствуйте!! Помогите пожалуйста написать правильно скрипт. Логика такая есть теплый пол он включается ы выключается по датчику температуры регулируется через виртуальный ползунок. Так же есть виртуальная кнопка когда на ней единица, все должно работать от датчика температуры, когда ноль все должно быть выключено и на датчик температуры реакции не должно быть. Вообщем кнопка должна разрешать работать ТП от датчика температуры или нет.

  defineVirtualDevice("Tp1", {
  title:"Регулятор температуры Пола в прихожей",
  cells: {
  "temperature": {
  type:"range",
  value: 25,
  max: 55
 },"Zima1": {
  type:"switch",
  value: 0,
 }
                }
                });
defineRule("Tpf1", {
whenChanged: "wb-w1/28-00000b785146",
then: function (newValue, devName, cellName) {
if (newValue>dev["Tp1/temperature"]) {
dev["wb-gpio/EXT1_HS5"] = 0;log("Выключение обогревателя 
 ТП1");
} else  
  dev["wb-gpio"]["EXT1_HS5"] = 1;log("Включение 
обогревателя ТП1");    
}
 });

Zima1 (разрешение работы пола) и проверяем его в этом условии или до него.

Можно пояснит как это сделать не очень понял

Если несложно напишите пожалуйста как в скрипте подправить.Спасибо

Ок, сейчас.

defineRule(“Tpf1”, {
whenChanged: “wb-w1/28-00000b785146”,
then: function (newValue, devName, cellName) {
if ((newValue>dev[“Tp1/temperature”])&&(dev[“Tp1”][“Zima1”]>0)) {
dev[“wb-gpio/EXT1_HS5”] = 0;log(“Выключение обогревателя
ТП1”);
} else
dev[“wb-gpio”][“EXT1_HS5”] = 1;log(“Включение
обогревателя ТП1”);
}
});

И да, я наверно ошибся - предположил что если [“Tp1”][“Zima1”]=1 то пол надо отключать.
Оно не прокомментировано. Надеюсь, сам принцип понятен?
Условие будет выполняться только если ОБЕ его части истина (&& - логическое И)
Если dev[“Tp1”][“Zima1”] установлено - будет срабатывать. Нет - не будет. Но! Надо написать еще одно правило, по которому пол будет отключаться при установке [“Tp1”][“Zima1”]
Потому что если пол включен и в этот момент в установится dev[“Tp1”][“Zima1”] - он не отключится никогда.

Вот так например:
defineRule(“ZimaON”, {
whenChanged: “Tp1/Zima1”,
then: function (newValue, devName, cellName) {
if (newValue>0){ //Если оно, значение СТАЛО “1”
dev[“wb-gpio/EXT1_HS5”] = 0; //Отключим теплый пол
// Ну и остальное что по “Зима” должно отключаться.
}
});

Спасибо подправил как вы написали.Только работает не совсем так как хотелось бы. Отключение теплого пола происходит от датчика и кнопки. А мне бы хотелось чтобы по датчику температуры включалось и выключалось А если нажата кнопка то теплый пол постоянно находится в выключенном состоянии.
defineVirtualDevice(“Tp1”, {
title:“Регулятор температуры Пола в прихожей”,
cells: {
“temperature”: {
type:“range”,
value: 25,
max: 55
},“Zima1”: {
type:“switch”,
value: 0,
}
}
});
defineRule(“Tpf1”, {
whenChanged: “wb-w1/28-00000b785146”,
then: function (newValue, devName, cellName) {
if ((newValue>dev[“Tp1/temperature”])&&(dev[“Tp1”][“Zima1”]>0)) {
dev[“wb-gpio/EXT1_HS5”] = 0;log(“Выключение обогревателя
ТП1”);
} else
dev[“wb-gpio”][“EXT1_HS5”] = 1;log(“Включение обогревателя ТП1”);
}
});
defineRule(“ZimaON”, {
whenChanged: “Tp1/Zima1”,
then: function (newValue, devName, cellName) {
if (newValue>0) {
dev[“wb-gpio/EXT1_HS5”] = 0;
}
}
});

И есть еще один скрипт прошу помощи не могу понять как это сделать. Вообщем ситуация такая,есть кнопка для управления вентилятором (вентилятор с регулировкой оборотов-работает через аналоговый выход 0-10v) она его включает при первом нажатии на 100% при втором на 50% и при третьем выключает это реализовать удалось. Также вентилятор должен работать от датчика влажности при превышении порога включается на 50% и по истечении какого то времени включается на 100% .Выключается при снижении порога и сбрасывает таймер .Если произошло включение по кнопке сценарий с датчиком работать не должен.Сейчас работает по другому(от датчика влажности вкл на 50% потом по времени на 100% сбрасывает сброс таймера и все по новой) помогите подкорректировать.

(function() {
var button_counter = 0;

defineRule( “on_fan_button”, {
whenChanged: “wb-gpio/A1_IN”,
then: function (newValue, devName, cellName) {

  // если поймали нажатие, увеличиваем счётчик
  if (newValue) {
    button_counter += 1;
  }
   // счётчик равен одному, значит было одинарное нажатие
  if (button_counter == 1) {
    log("fan 100%");dev["wb-dac/EXT2_O1"] = 10000;
  }
  
  // счётчик равен двум, значит было двойное нажатие
  if (button_counter == 2) {
    log("fan 50%");dev["wb-dac/EXT2_O1"] = 5000;
  }
   if (button_counter == 3) {
    log("fan off");dev["wb-dac/EXT2_O1"] = 0;
  }
  // сброс счетчика
 if (button_counter == 3) {
    log("clear counter!",button_counter);button_counter = 0;
  }
}
  });

})();
var Hum = 10;
var motion_timer_1_timeout_ms = 10 * 1000;
var motion_timer_1_id = null;

defineRule(“Hum_fan_on”, {
whenChanged: “T2 Bathroom/Humidity”,

then: function (newValue, devName, cellName) {
if ( newValue > Hum) {
dev[“wb-dac/EXT2_O1”] = 5000;

if (motion_timer_1_id) {
clearTimeout(motion_timer_1_id);
}

motion_timer_1_id = setTimeout(function () {
   dev["wb-dac"]["EXT2_O1"] = 10000;         
           motion_timer_1_id = null;   
}, motion_timer_1_timeout_ms);           	

}
}
});

Так. Определимся с условиями. Теплый пол должен включаться:
Если температура датчика меньше уставки И кнопка “Зима” нажата? Верно?
То есть если выполняется условие.

defineRule(“Tpf1”, {
whenChanged: “wb-w1/28-00000b785146”, //Когда изменились показания датчика
then: function (newValue, devName, cellName) {
if ((newValue<dev[“Tp1/temperature”])&&(dev[“Tp1”][“Zima1”]>0)) { // Если значение датчика МЕНЬШЕ уставки И "Зима" установлено
dev[“wb-gpio/EXT1_HS5”] = 1;log(“Включение обогревателя
ТП1”);
} else
dev[“wb-gpio”][“EXT1_HS5”] = 0;log(“Выключение обогревателя ТП1”);
}
});
defineRule(“ZimaON”, { //Сразу же выключает теплый пол при сбросе кнопки "Зима"
whenChanged: “Tp1/Zima1”,
then: function (newValue, devName, cellName) {
if (newValue==0) {
dev[“wb-gpio/EXT1_HS5”] = 0;
}
}
});

Поменял на МЕНЬШЕ тут
if ((newValue<dev[“Tp1/temperature”])&&(dev[“Tp1”][“Zima1”]>0))
И на “==” тут
if (newValue==0) {

Спасибо. Разобрался. Можете помочь со вторым скриптом. Как его лучше написать.

Сейчс контроллер перегружаю, посмотрю ваш скрипт. Но, тут думаю надо вентилятор сделать виртуальным устройством.

Добрый день. А как его сделать виртуальным устройством. Помогите очень надо завтра щит на объект везти.