Включение насоса от разницы температур
Модератор: immortal
-
- Сообщения: 20
- Зарегистрирован: Вс апр 08, 2018 8:57 pm
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Включение насоса от разницы температур
В подвале стоит бойлер с горячей водой, на выходе стоит датчик температуры Т1.
Водяная система закольцована через насос, для прокачки воды, чтобы не сливать холодную воду, пока не пойдет горячая. На трубе после насоса стоит датчик Т2. Управляется Мегой.
Цель
Поддержание температуры воды в системе.
Необходимо при изменении разницы температуры между датчиками Т1 и Т2 на 4 С запускать насос.
После увеличения Т2 на 2 С, (разница между датчиками на 2 С), останавливаем насос.
Работает в интервале времени с 06.00 до 23.00
Возможно просто сделать по таймеру, например: каждые 15 минут включать насос на 1 минуту в интервале с 06.00 до 23.00
$T1 = Temp_Water.value;
$T2 = Temp_Nasos.value;
$TR1 =($T1-4); //разница температур для включения
$TR2 =($T1-2); //разница температур для выключения
if ($T2 < $TR1) {
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
}
if ($T2 < $TR2);
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
}
Водяная система закольцована через насос, для прокачки воды, чтобы не сливать холодную воду, пока не пойдет горячая. На трубе после насоса стоит датчик Т2. Управляется Мегой.
Цель
Поддержание температуры воды в системе.
Необходимо при изменении разницы температуры между датчиками Т1 и Т2 на 4 С запускать насос.
После увеличения Т2 на 2 С, (разница между датчиками на 2 С), останавливаем насос.
Работает в интервале времени с 06.00 до 23.00
Возможно просто сделать по таймеру, например: каждые 15 минут включать насос на 1 минуту в интервале с 06.00 до 23.00
$T1 = Temp_Water.value;
$T2 = Temp_Nasos.value;
$TR1 =($T1-4); //разница температур для включения
$TR2 =($T1-2); //разница температур для выключения
if ($T2 < $TR1) {
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
}
if ($T2 < $TR2);
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
}
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Включение насоса от разницы температур
А вопрос то в чем? Как просто включать насос на 1 минуту каждые 15 минут в интервале с 06.00 до 23.00 (без доп.условий)?
Или ваш скрипт надо запускать раз в 15 минут?
В чем состоит проблема?
Короче говоря, если я правильно понял, надо сделать примерно следующее.
1. Создаем сценарий, например, "PumpControl" с кодом
Код: Выделить всё
$T1 = gg('Temp_Water.value');
$T2 = gg('Temp_Nasos.value');
$TR1 =($T1-4); //разница температур для включения
$TR2 =($T1-2); //разница температур для выключения
if ($T2 < $TR1) {
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
//выключаем насос через минуту после включения
SetTimeOut("PumpOff","file_get_contents('http://192.168.0.3/sec/?cmd=13:1');sg('OUT_13.status',0);",60);
}
if ($T2 < $TR2)
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
}
Проще всего сделать это, записав в конец "OnNewMitute" (Панель управления --> ОБЪЕКТЫ --> Объекты --> [класс] Timer --> ClockChime --> onNewMinute) код:
Код: Выделить всё
if ((timeBetween('06:00','23:30')) && ($m%15 == 0)) {runScript("PumpControl");}
Последний раз редактировалось Chainik Сб сен 26, 2020 10:57 am, всего редактировалось 2 раза.
-
- Сообщения: 20
- Зарегистрирован: Вс апр 08, 2018 8:57 pm
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Включение насоса от разницы температур
проблема!? что надежнее.
Запускать насос по таймеру, надежнее, отработал-отключился. Но если в системе вода горячая, зачем лишний раз запускать насос.
По температуре - не надежнее, но насос включается, когда разница температур превышает разницу в 4-5 градусов.
Вопрос - не что выбрать, а код, наверное лучше опробовать два варианта, просто я в скриптах не силен.
Лето-Зима
Летом такой проблемы нет, а вот когда наступают холода, желательно чтобы вода в системе была теплой.
Запускать насос по таймеру, надежнее, отработал-отключился. Но если в системе вода горячая, зачем лишний раз запускать насос.
По температуре - не надежнее, но насос включается, когда разница температур превышает разницу в 4-5 градусов.
Вопрос - не что выбрать, а код, наверное лучше опробовать два варианта, просто я в скриптах не силен.
Лето-Зима
Летом такой проблемы нет, а вот когда наступают холода, желательно чтобы вода в системе была теплой.
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Включение насоса от разницы температур
Тогда предлагаю написать скрипт в таком виде:
Таким образом, если условие по разнице температур для запуска насоса будет соблюдаться, насос будет работать.
Единственное, если это условие (большая разница температур) к 23:30 будет выполняться и будет продолжать сохраняться в интервале времени 23:30 - 6:00, то насос будет работать все это время. Насколько это критично?
Если критичо, допишите в начало скрипта строчку кода:
Строчка прекратит дальнейшее выполнение скрипта в интервале времени '23:30' - '06:00'.
(Еще в скрипте я 'sg' на 'gg' исправил.)
Код: Выделить всё
$T1 = gg('Temp_Water.value');
$T2 = gg('Temp_Nasos.value');
$TR1 =($T1-4); //разница температур для включения
$TR2 =($T1-2); //разница температур для выключения
if ($T2 < $TR1) {
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
//Перезапускаем скрипт через минуту для проверки условий для работы насоса (значений температуры)
SetTimeOut("RestartPumpControl","runScript('PumpControl');",60);
}
if ($T2 < $TR2)
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
}
Единственное, если это условие (большая разница температур) к 23:30 будет выполняться и будет продолжать сохраняться в интервале времени 23:30 - 6:00, то насос будет работать все это время. Насколько это критично?
Если критичо, допишите в начало скрипта строчку кода:
Код: Выделить всё
if (timeBetween('23:30','06:00')) {return"";}
(Еще в скрипте я 'sg' на 'gg' исправил.)
Последний раз редактировалось Chainik Сб сен 26, 2020 10:58 am, всего редактировалось 1 раз.
-
- Сообщения: 2079
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Включение насоса от разницы температур
я подобное управление насосом решал в методе оного в который передается т2, учитывается время суток, режим кто дома, никого нет, все спят, происходит дезинфекция от легионеллы раз в сутки ночьюIgnatnet писал(а): ↑Пт сен 25, 2020 11:22 pmпроблема!? что надежнее.
Запускать насос по таймеру, надежнее, отработал-отключился. Но если в системе вода горячая, зачем лишний раз запускать насос.
По температуре - не надежнее, но насос включается, когда разница температур превышает разницу в 4-5 градусов.
Вопрос - не что выбрать, а код, наверное лучше опробовать два варианта, просто я в скриптах не силен.
Лето-Зима
Летом такой проблемы нет, а вот когда наступают холода, желательно чтобы вода в системе была теплой.
имхо, вы изначально не верно сформулировали свое тз
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 20
- Зарегистрирован: Вс апр 08, 2018 8:57 pm
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Включение насоса от разницы температур
А если пойти по другому пути, например.
1.Температура снимается с датчика Т1, если она ниже 30 ℃ работа скрипта остановлена, если выше 30℃, то выполняем п.2.
2. Идет запрос к датчику Т2, если она ниже, например 28 ℃, включается насос на 1 мин (таймер) в интервале 20 минут каждого часа (3 раза в час) с 06.00 до 23.30, если ($T2 >= 28) ℃, не включается вообще (заморозка скрипта).
Мне кажется что-то не совсем правильно
1.Температура снимается с датчика Т1, если она ниже 30 ℃ работа скрипта остановлена, если выше 30℃, то выполняем п.2.
2. Идет запрос к датчику Т2, если она ниже, например 28 ℃, включается насос на 1 мин (таймер) в интервале 20 минут каждого часа (3 раза в час) с 06.00 до 23.30, если ($T2 >= 28) ℃, не включается вообще (заморозка скрипта).
Код: Выделить всё
if (timeBetween('23:30','06:00')) {return"";}
$T1 = gg('Temp_Water.value'); //Температура датчика Т1
$T2 = gg('Temp_Nasos.value'); //Температура датчика Т2
if ($T1 < 30)// если Т1 ниже 30℃, то Запрет на включение насоса или на выполнение скрипта
{
// или другой код
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
}
else { //иначе разрешаем работу п.2.
if ($T2 < 28) {
// работа таймера включения насоса на 1 мин через 20 минут
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
SetTimeOut("RestartPumpControl","runScript('PumpControl');",60);
clearTimeOut("RestartPumpControl");
}}
-
- Сообщения: 2079
- Зарегистрирован: Пт апр 07, 2017 12:20 pm
- Благодарил (а): 313 раз
- Поблагодарили: 457 раз
Re: Включение насоса от разницы температур
во втором по таймеру отключение если не нагрело за заданное время
сам метод вызывать по изменению т2 и там много чего, выше не все описал
п.с. использование скриптов сильно усложнит отладку и вообще понимание далее, это все желательно в методе актион об!екта насоса (реле)
далее когда за сотню таких перевалит намного проще будет эксплуатировать
сам метод вызывать по изменению т2 и там много чего, выше не все описал
п.с. использование скриптов сильно усложнит отладку и вообще понимание далее, это все желательно в методе актион об!екта насоса (реле)
далее когда за сотню таких перевалит намного проще будет эксплуатировать
Telegram | Блог
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
Raspberry Pi3, с образа от Сергея 3.31, PHP 7, флешка 16 Гб работает с 10.09.2017
Почти всё время уходит на исправление ошибок, оставшееся - на их повторение. (с) ))) Спасибо
-
- Сообщения: 20
- Зарегистрирован: Вс апр 08, 2018 8:57 pm
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз
Re: Включение насоса от разницы температур
Мне нужно, чтобы вода циркулировала в замкнутой сети в течении дня и поддерживала температуру, иначе я сливаю холодную воду, пока не пойдет горячая. Ночью насос отключается. Как то так, наверное лучше подготовить ТЗ, но мыслей куча, а нужно выбрать правильный алгоритм.Logrus писал(а): ↑Сб сен 26, 2020 9:03 pmво втором по таймеру отключение если не нагрело за заданное время
сам метод вызывать по изменению т2 и там много чего, выше не все описал
п.с. использование скриптов сильно усложнит отладку и вообще понимание далее, это все желательно в методе актион об!екта насоса (реле)
далее когда за сотню таких перевалит намного проще будет эксплуатировать
-
- Сообщения: 1462
- Зарегистрирован: Вс янв 10, 2016 11:05 am
- Благодарил (а): 260 раз
- Поблагодарили: 454 раза
Re: Включение насоса от разницы температур
В принципе, ув.Logrus, конечно, прав. При увеличении количества объектов логику надо простраивать более тщательно с ориентацией на ООП.
Но для начала давайте попробуем реализовать (приблизительно) вашу логику по старинке, "с помощью топора и кувалды" ))
Таким образом, пока условия (температурные и временные) для работы насоса сохраняются, он будет работать. Единственное, надеюсь, периодичность получения показаний с температурных датчиков не превышает минуту.
Только из OnNewMinute запускайте скрипт через каждые 20 минут:
Но для начала давайте попробуем реализовать (приблизительно) вашу логику по старинке, "с помощью топора и кувалды" ))
Код: Выделить всё
if (timeBetween('23:30','06:00')) {return"";}
$T1 = gg('Temp_Water.value'); //Температура датчика Т1
if ($T1 < 30)// если Т1 ниже 30℃, то выключаем насос и прекращаем выполнение скрипта
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
return""; //останавливаем выполнение скрипта
}
$T2 = gg('Temp_Nasos.value'); //Температура датчика Т2
if ($T2 < 28) {
// включаем насос
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
//выключим насос через 70 секунд после включения
SetTimeOut("PumpOff","file_get_contents('http://192.168.0.3/sec/?cmd=13:1');sg('OUT_13.status',0);",70);
//Перезапускаем скрипт через 1 минуту для проверки условий, при которых насос должен работать
SetTimeOut("RestartPumpControl","runScript('PumpControl');",60);
}
Только из OnNewMinute запускайте скрипт через каждые 20 минут:
Код: Выделить всё
if ((timeBetween('06:00','23:30')) && ($m%20 == 0)) {runScript("PumpControl");}
Последний раз редактировалось Chainik Сб сен 26, 2020 10:39 pm, всего редактировалось 1 раз.
-
- Сообщения: 20
- Зарегистрирован: Вс апр 08, 2018 8:57 pm
- Благодарил (а): 2 раза
- Поблагодарили: 1 раз