Включение насоса от разницы температур

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Включение насоса от разницы температур

Сообщение Chainik » Сб сен 26, 2020 10:39 pm

Да, пишите, что получилось. Кстати, строчку очистки таймера можно убрать.

Код: Выделить всё

clearTimeOut("PumpOff");
Лишняя она.
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Включение насоса от разницы температур

Сообщение Ignatnet » Пн сен 28, 2020 11:32 pm

Почему-то не считывает датчик Т2, хотя он показывает верно
Данные:
- Вода в бойлере 42.45
- Вода в системе 34.35

Код: Выделить всё

<span style="font-size:22px;">Вода в бойлере&nbsp;%Temp_Water.value%&nbsp;&deg;C</span>
<span style="font-size:22px;">Вода в системе&nbsp;%Temp_Nasos.value%&nbsp;&deg;C</span>
Вот так скрипт отрабатывает включение насоса на 10 сек через 1 мин (специально сократил), если закомментировать

Код: Выделить всё

if (timeBetween('23:30','06:00')) {return"";}
$T1 = gg('Temp_Water.value');
//$T2 = gg('Temp_Nasos.value'); // НЕ РАБОТАЕТ
$T2 = 24; //РАБОТАЕТ
if ($T1 < 26)
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
return"";
//say("Скрипт прокачки воды остановлен.",5);
}
elseif ($T1 >= 34) //Включить скрипт если в бойлере вода выше 34 градусов
{
if ($T2 <= 26) // и запустить скрипт, если вода в трубе меньше 26 
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:1");
setGlobal("OUT_13.status",1);
SetTimeOut("PumpOff","callMethod('OUT_13.turnOff');",10);

//выключим насос через 70 секунд после включения
//SetTimeOut("PumpOff","file_get_contents('http://192.168.0.3/sec/?cmd=13:1');gg('OUT_13.status',0);",70);
//Перезапускаем скрипт через 1 минуту для проверки условий, при которых насос должен работать
//SetTimeOut("RestartPumpControl","runScript('PumpControl');",10);
//say("Скрипт прокачки воды запущен.",5);
//clearTimeOut("PumpOff");
}
}
//else {return"";}
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: Включение насоса от разницы температур

Сообщение ZyaK » Вт сен 29, 2020 8:33 am

я бы делал такие вещи не на сервере умного дома а на железном контроллере, будь то ЕСПи или Ардуино, это будет надежней да и обработка будет проще.
если надо включать в определенный период времени, то по таймеру с умного дома на контроллер слать разрешающий сигнал или 1 или 0.
что там за насос у вас такой, что его приходится отключать и включать? у меня на отоплении стоит Wilo yonos дак он жрет всего 6 ватт я даже летом не парился его выключать.
А вообще для насосов не особо хороши постоянные стартстопы
PI2 + MQTT + 5 ESP8266 + Atmega16
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Включение насоса от разницы температур

Сообщение Chainik » Вт сен 29, 2020 8:47 am

Ignatnet писал(а):
Пн сен 28, 2020 11:32 pm
Почему-то не считывает датчик Т2, хотя он показывает верно
Значит в Temp_Nasos.value по каким-то причинам не попадает значение с датчика.
Я бы в этом случае временно сделал опрос датчика непосредственно в скрипте. Вместо строки

Код: Выделить всё

$T2 = 24; //РАБОТАЕТ
вставил бы фрагмент

Код: Выделить всё

say("Т2=".$T2);
$T2 = file_get_contents("http://192.168.0.14/sec/?pt=31&cmd=get"); //тут ВАША команда для получения значения температуры с датчика
say("Т2(факт)=".$T2);
Тогда сможете хотя бы сравнить фактическое значение с датчика с тем, что у вас записано в Temp_Nasos.value.
Кстати, какой датчик используется и к какому порту он подключен?
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Включение насоса от разницы температур

Сообщение Ignatnet » Вт сен 29, 2020 5:19 pm

ZyaK писал(а):
Вт сен 29, 2020 8:33 am
я бы делал такие вещи не на сервере умного дома а на железном контроллере, будь то ЕСПи или Ардуино, это будет надежней да и обработка будет проще.
если надо включать в определенный период времени, то по таймеру с умного дома на контроллер слать разрешающий сигнал или 1 или 0.
что там за насос у вас такой, что его приходится отключать и включать? у меня на отоплении стоит Wilo yonos дак он жрет всего 6 ватт я даже летом не парился его выключать.
А вообще для насосов не особо хороши постоянные стартстопы
Летом котел (двух-контурный) отдыхает. Я его включаю - осень-зима-весна, на крайний случай летом, когда долго нет солнца, и то на 30 минут для нагрева бойлера с водой. Ставить просто таймер для включения прокачки воды в системе - это убийство для насоса, для этого я и хочу сделать так, чтобы насос включался от температуры, потому-что он может за день включиться 10 раз, а может и не разу. Делать его на постоянку - нет смысла, гонять воду по кругу ночью.
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Включение насоса от разницы температур

Сообщение Ignatnet » Вт сен 29, 2020 5:29 pm

Chainik писал(а):
Вт сен 29, 2020 8:47 am
Ignatnet писал(а):
Пн сен 28, 2020 11:32 pm
Почему-то не считывает датчик Т2, хотя он показывает верно
Значит в Temp_Nasos.value по каким-то причинам не попадает значение с датчика.
Я бы в этом случае временно сделал опрос датчика непосредственно в скрипте. Вместо строки

Код: Выделить всё

$T2 = 24; //РАБОТАЕТ
вставил бы фрагмент

Код: Выделить всё

say("Т2=".$T2);
$T2 = file_get_contents("http://192.168.0.14/sec/?pt=31&cmd=get"); //тут ВАША команда для получения значения температуры с датчика
say("Т2(факт)=".$T2);
Тогда сможете хотя бы сравнить фактическое значение с датчика с тем, что у вас записано в Temp_Nasos.value.
Кстати, какой датчик используется и к какому порту он подключен?

Код: Выделить всё

say("Т2=".$T2);
$T2 = file_get_contents("http://192.168.0.3/sec/?pt=1&cmd=get"); //тут ВАША команда для получения значения температуры с датчика
say("Т2(факт)=".$T2);
17:29 Алиса: Т2(факт)=20.81
17:29 Алиса: Т2=
17:29 Алиса: Т2(факт)=20.81
17:29 Алиса: Т2=
17:28 Алиса: Т2(факт)=20.81
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Включение насоса от разницы температур

Сообщение Chainik » Вт сен 29, 2020 5:50 pm

Значит моя догадка подтвердилась. У вас элементарно в Т2 не сохраняется значение с датчика.
Еще раз повторюсь. Не пользуйтесь вы модулем MegaD для получения значения с датчиков. Опрашивать своими командами будет гибче и надежнее.
Ignatnet
Сообщения: 30
Зарегистрирован: Вс апр 08, 2018 8:57 pm
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Включение насоса от разницы температур

Сообщение Ignatnet » Вт сен 29, 2020 10:39 pm

Пока не могу изменить конструкцию, нужно будет покупать альтернативу Меги.
Заработало, почему-то изменил Т2 на ТN.

Код: Выделить всё

if (timeBetween('23:30','06:00')) {return"";} //с 23.00 до 06.00 не запускаем
$TW = gg('Temp_Water.value');  //Температура воды в бойлере
$TN = gg('Temp_Nasos.value');  //Температура воды в системе
if ($TW < 26) // Если температура в бойлере ниже 26, отключаем насос
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:0");
setGlobal('OUT_13.status', 0);
return"";
//say("Скрипт прокачки воды остановлен.", 5);
}
if ($TW > 34 && $TN < 30) //Если темп. в бойлере выше 34  И в системе ниже 30 выполняем
{
file_get_contents("http://192.168.0.3/sec/?cmd=13:1"); //Запускаем насос
setGlobal("OUT_13.status",1);
say("Насос прокачки воды запущен - ".$TN, 5);
//выключим насос через 60 секунд после включения
SetTimeOut("PumpOff","callMethod('OUT_13.turnOff');",60); //таймер отработал 60 минут и отключил насос
//onNewMinute через минуту опросил датчики и скрипт, если $TW стал ниже или $TN стал выше, то скрипт не запускается
}
Может есть еще какие-нибудь рекомендации?
ZyaK
Сообщения: 407
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 45 раз
Поблагодарили: 69 раз

Re: Включение насоса от разницы температур

Сообщение ZyaK » Ср сен 30, 2020 8:49 am

какое напряжение питания датчиков? датчики я так понимаю ds18B20? были тут случаи кто то мучался тоже с мегой и этими датчиками, питались они от 3.3 вольта, им этого напряжения мало.
питание датчика 5 вольт и конденсатор керамический прям на ноги датчика.
PI2 + MQTT + 5 ESP8266 + Atmega16
Chainik
Сообщения: 1462
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 260 раз
Поблагодарили: 454 раза

Re: Включение насоса от разницы температур

Сообщение Chainik » Ср сен 30, 2020 8:55 am

Ignatnet писал(а):
Вт сен 29, 2020 10:39 pm
Может есть еще какие-нибудь рекомендации?
Главное, чтобы алгоритм в полной мере решал поставленную задачу. Если все работает как надо, то и нечего портить хорошее ненужными улучшениями.
Я бы, единственное, изменил строчку с таймером на такую:

Код: Выделить всё

SetTimeOut("PumpOff","callMethod('OUT_13.turnOff');setGlobal('OUT_13.status',0);",60); //таймер отработал 60 секунд и отключил насос
Ведь вам же надо видеть в интерфейсе, что насос выключился.

А по поводу датчиков DS18B20 надо сказать, что всяких китайских клонов их развелось видимо-невидимо. Лучше всего брать оригинальные. Те вообще на коротких линиях спокойно работают на паразитном питании.
Ответить