Не могу победить казалось бы простую логику в методе, помогите пожалуйста.
Необходимо в выставленное время включать полив на определенное время, включать полив получается хорошо, но вот отключать и блокировать от включения не получается.
Вроде все просто, но не получается, еще я заметил, что ESP32 по каким то причинам сама включает реле и я решил обезопасится и в методе logicAction запретить включение реле в отличное от установленного времени.
Вообщем не могу реализовать все задуманное, помогите пожалуйста.
Скрин кнопок https://ibb.co/z63RLsp
Код: Выделить всё
// Начало - Если статус 2 крана выключен отключаем полив
if (getGlobal('Kr_2_Off'.'.'.'status') == 1)
{
setGlobal('Rele_2_K'.'.'.'status', '0'); // ... то включаем реле на полив
}
// Конец
// Начало - Если время не соответствует установленному утром или чечером отключаем полив
if (timeIs(getGlobal('Tame_2_Kr_Utro'.'.'.'Tame_On_Kr_2_Utro'))<>1 && (timeIs(getGlobal('Tame_2_Kr_Vecher'.'.'.'Tame_On_Kr_2_Vecher')<>1)))
{
setGlobal('Rele_2_K'.'.'.'status', '0'); // ... то включаем реле на полив
if (timeIs(getGlobal('Tame_2_Kr_Utro'.'.'.'Tame_On_Kr_2_Utro'))==1 && getGlobal('Kr_2_Utro'.'.'.'status') == 1)
{
setGlobal('Rele_2_K'.'.'.'status', '1'); // ... то включаем реле на полив
if (getGlobal('Kr_2_2min'.'.'.'status') == 1)
{
say(time_poliva_Kr_0_30с,2);
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 30); //время полива при нажатой 1 кнопки
}
if (getGlobal('Kr_2_4min'.'.'.'status') == 1)
{
say(time_poliva_Kr_1м,2);
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 60); //время полива при нажатой 2 кнопки
}
if (getGlobal('Kr_2_6min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 90); //время полива при нажатой 3 кнопки
say(time_poliva_Kr_1_5м,2);
}
if (getGlobal('Kr_2_8min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 120); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_2м,2);
}
if (getGlobal('Kr_2_5min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 150); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_2_5м,2);
}
if (getGlobal('Kr_2_10min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 180); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_3м,2);
}
// тут по идее нужно скобку ставить, но тогда не отключается по времени реле
// Эта часть работать не хочет, реле начинает включаться и отключаться (идет борьба)
if (timeIs(getGlobal('Tame_2_Kr_Vecher'.'.'.'Tame_On_Kr_2_Vecher'))==1 && getGlobal('Kr_2_Vecher'.'.'.'status') == 1)
{
setGlobal('Rele_2_K'.'.'.'status', '1'); // ... то включаем реле на полив
if (getGlobal('Kr_2_2min'.'.'.'status') == 1)
{
say(time_poliva_Kr_0_30с,2);
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 30); //время полива при нажатой 1 кнопки (1мин - 60)
}
if (getGlobal('Kr_2_4min'.'.'.'status') == 1)
{
say(time_poliva_Kr_1м,2);
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 60); //время полива при нажатой 2 кнопки
}
if (getGlobal('Kr_2_6min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 90); //время полива при нажатой 3 кнопки
say(time_poliva_Kr_1_5м,2);
}
if (getGlobal('Kr_2_8min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 120); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_2м,2);
}
if (getGlobal('Kr_2_5min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 150); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_2_5м,2);
}
if (getGlobal('Kr_2_10min'.'.'.'status') == 1)
{
setTimeOut('Выключить Rele_2_K через', "setGlobal('Rele_2_K.status', 0);", 180); //время полива при нажатой 4 кнопки
say(time_poliva_Kr_3м,2);
}
}
}
}