Помогите с кодом (с логикой) пожалуйста

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор: immortal

John
Сообщения: 36
Зарегистрирован: Пн ноя 10, 2014 1:52 pm
Благодарил (а): 10 раз
Поблагодарили: 0

Помогите с кодом (с логикой) пожалуйста

Сообщение John » Пн май 03, 2021 11:43 pm

Все привет!

Есть три циркуляционных насоса отопления и есть три датчика температуры на обратке (все подключено к MegaD).
При падении температуры обратки меньше N градусов, насос включается, при возрастании температуы выше N градусов выключается, все это работает и за счет такого алгоритма удалось сократить время работы насосов вдвое без потери эффективности отопления.
Все прекрасно, но..... есть летний период, когда насосы работать не должны. Вроде все просто, замеряем температуру на улице, делаем в MDM два режима ЗИМА/ЛЕТО и при изменении температуры обратки, сначала проверяем какой режим, а потом запускаем или не запускаем насос, но получается, что не только зимой, но и все лето три моих насоса будут регулярно долбиться в базу при каждом изменении температуры (а она будет немного колебаться даже при выключенных насосах).
Насколько все это правильно с точки зрения количества запросов к БД?
Может есть другой способ решения такой задачи?
Аватара пользователя
Vitich
Сообщения: 9
Зарегистрирован: Вс мар 14, 2021 6:05 am
Откуда: Донбасс
Благодарил (а): 0
Поблагодарили: 0
Контактная информация:

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение Vitich » Вт май 04, 2021 7:11 am

Нужно опрашивать сначала не температуру на улице, а время года. Допустим: создаёшь объект "отопительный сезон" , с мая по сентябрь в его свойствах 0 в другие месяци 1. Дальше правило где сначала идёт опрос сезона раз в сутки. Если ноль - все остальные запросы даже не проходят. У меня по этому алгоритму работает, только разбивка идет поквартально, но там другие цели.
Всякая работа требует больше времени, чем было запланировано.
Chainik
Сообщения: 1361
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 224 раза
Поблагодарили: 427 раз

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение Chainik » Вт май 04, 2021 9:16 am

Ваша задача очень простая, но вы не рассказали важные подробности. А именно, каким образом у вас опрашиваются датчики температуры, и как организовано управление насосами? Например, по описанному вами алгоритму насосы могут включаться/выключаться Мегой в автономном режиме при помощи функции "удаленный термостат".
Забегая вперед, скажу, что датчики можно опрашивать, минуя модуль "MegaD" (https://mjdm.ru/forum/viewtopic.php?f=24&t=6187&start=6).
А в случае автономного управления насосами, на контроллер надо летом посылать команду вида:

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

file_get_contents("http://192.168.0.4/sec/?pt=30&misc=5");
Таким образом на термостате у порта, где расположен температурный датчик, устанавливается нереальная заведомо низкая целевая температура и контроллер насосы не включает.
Эта команда по установке целевой температуры должна отработать, когда вы нажмете в интерфейсе выключатель "ЛЕТО".
Ну а если насосами управляет сервер, то пишется простейший код, который можно включить в код опроса датчиков:

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

if (gg('Объект.свойство') == 'лето') {
//логика для лета
return;
} else {
//логика для зимы
}
И еще такой вопрос. У вас рядом с насосами нет смесительных узлов? Это я про то, что не вредно ли для насосов постоянное включение/выключение? Как долго они у вас в таком режиме уже функционируют?
John
Сообщения: 36
Зарегистрирован: Пн ноя 10, 2014 1:52 pm
Благодарил (а): 10 раз
Поблагодарили: 0

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение John » Вт май 04, 2021 12:17 pm

Всем большое спасибо за ответы.

Расскажу несколько подробнее про управление насосами.

Слева на фото в обратку впаян сальниковый узел для теплого кабеля, в него вставлен DS18B20, он подключен к порту Меги, к другому порту подключен насос, у Меги стоит период обновления 30 сек.
На данный момент вопрос включения/отключения насосов решается через Простые устройства, но буду уходить от этого и пробовать писать алгоритм.
Что касается включения режима зима/лето по календарю, думаю не очень правильно, сейчас уже май, а отопление еще работает, холодно на улице. Потом днем может быть тепло, а ночью заморозки и лучше замерять температуру на улице и при ее уменьшении ниже заданной, включать систему, либо вывести кнопку включения режима на панель и делать это вручную.
Сама система работает уже месяца три и пока все хорошо. По срокам службы насосов в таком режиме мнения специалистов кардинально разнятся, часть говорит, что это убивает насос, часть говорит, что ему абсолютно все равно, я решил попробовать. Несколько месяцев назад я поставил китайский однофазный счетчик на насосы и прикрутил его по Modbus к MDM, выяснилось, что при включенных насосах постоянное потребление примерно 400 Вт в круглосуточном режиме весь отопительный сезон и это немного расстроило )))
Вложения
IMG_6747.JPG
IMG_6747.JPG (1.37 МБ) 282 просмотра
Chainik
Сообщения: 1361
Зарегистрирован: Вс янв 10, 2016 11:05 am
Благодарил (а): 224 раза
Поблагодарили: 427 раз

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение Chainik » Вт май 04, 2021 12:54 pm

Теперь картина прояснилась. Ключевое слово вы упомянули --ПУ.

У вас каждая пара "насос + темп.датчик" находятся на одном контроллере? В этом случае надежность системы отопления можно было бы повысить, поручив функцию термостата контроллеру. А целевую температуру в обратке будет устанавливать сервер (автоматически или "вручную").
Думаю, по интерфейсу у вас должно быть примерно следующее:
https://ab-log.ru/forum/viewtopic.php?f ... &start=422
https://ab-log.ru/forum/viewtopic.php?f ... start=1432

По алгоритму, примерно, следующее:
https://ab-log.ru/forum/viewtopic.php?f ... start=1398

Могу помочь написать вам алгоритм и даже несложный интерфейс. Главное, вы скажите, как вы сами видите предполагаемую логику и интерфейс (хотя бы примерно)?
John
Сообщения: 36
Зарегистрирован: Пн ноя 10, 2014 1:52 pm
Благодарил (а): 10 раз
Поблагодарили: 0

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение John » Вт май 04, 2021 2:51 pm

Спасибо! Буду крайне признателен за помощь.

Алгоритм примерно следующий, я выбрасываю на улицу очередной DS18B20, подключаю к той же Меге и при падении температуры ниже заданной (скажем 8 гр.) включается система отопления. В самой системе отопления есть три насоса, контур первого этажа, второго и теплого пола. Контуры первого и второго этажей зависят от уличной температуры, а теплый пол включается-выключается вручную.
Когда насос переходит во включенное состояние, запускается логика его включения-выключения в зависимости от температуры обратки.
Интерфейс особо не принципиален, вполне красив тот, что по Вашей ссылке. В интерфейсе интересна уличная температура, температура обраток, состояние насосов и возможность их включения-выключения
ZyaK
Сообщения: 373
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 40 раз
Поблагодарили: 67 раз

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение ZyaK » Вт май 04, 2021 7:07 pm

не обязательно выбрасывать датчик на улицу, я беру температуру с модуля погоды, 2 года полет нормальный.
контролировать температуру обратки не вижу смысла, нужно контролировать температуру в помещении.
меню выглядит как то так.
в авто режиме контроллер сам устанавливает температуру подачи (теплый пол у меня по всему дому без смесительного узла, потому ограничение в 60 градусов на подаче)
по поводу насоса я вообще не запариваюсь, стоит частотник Villo , жрет как лампочка светодиодная, 7 ватт, по тому он у меня молотит даже летом.
температуру ожидания пришлось ввести дополнительно, когда топлю камин по вечерам чтоб температура теплоносителя не падала особо сильно пока в доме тепло
Вложения
1.JPG
1.JPG (26.21 КБ) 229 просмотров
PI2 + MQTT + 5 ESP8266 + Atmega16
John
Сообщения: 36
Зарегистрирован: Пн ноя 10, 2014 1:52 pm
Благодарил (а): 10 раз
Поблагодарили: 0

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение John » Вт май 04, 2021 7:24 pm

По мне датчик на улице это самый простой и бюджетный вариант, делов-то просверлить дыру в стене и протащить кабель. А вот с тепературой в помещении засада, есть 4 комнаты на втором этаже и три на первом, где тут замерять температуру, если хочется, чтобы в спальне было прохладно, а в гостиной тепло? В дальнейших планах поставить электроклапана на гребенку и регулировать температуру покомнатно и при этом температура теплоносителя может быть постоянна. Регулировать температуру обратки нужно для того, чтобы насос не молотил постоянно, разогнал теплоноситель, нагрел радиаторы и отключился, дождался пока система немного остынет и снова заработал. По опыту, визуально и тактильно разница температуры радиаторов вообще не ощущается, а насос работает вдвое меньше.
ZyaK
Сообщения: 373
Зарегистрирован: Вт окт 24, 2017 2:01 pm
Откуда: Ижевск
Благодарил (а): 40 раз
Поблагодарили: 67 раз

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение ZyaK » Вт май 04, 2021 7:43 pm

у меня замер идет в зале, где в основном все и сидим. по поводу электроклапанов на гребенку тоже уже думал, но что то стоят они не особо гуманно.
и как контролируется температура обратки когда насосы уже стоят? циркуляции нет, батареи могут уже остыть, а датчик будет показывать что включать еще рано
PI2 + MQTT + 5 ESP8266 + Atmega16
John
Сообщения: 36
Зарегистрирован: Пн ноя 10, 2014 1:52 pm
Благодарил (а): 10 раз
Поблагодарили: 0

Re: Помогите с кодом (с логикой) пожалуйста

Сообщение John » Вт май 04, 2021 9:06 pm

На входе в гребенку стоит насос котла, он создает небольшую. но все же циркуляцию, управляется он котлом и в эту степь я не залезаю, тем более, что он ватт на 40 примерно, что не очень критично. При отключении насоса радиаторов просто визуально видно по показанию датчика как начинает падать температура обратки.
После того как поставил датчики температуры стало очень интересно наблюдать за отоплением через MDM. Когда на улице холодно, температура обратки падает достаточно быстро, когда тепло, то падает медленнее, когда в комнате жарко и перекрываешь радиатор, то скорость падения снова снижается. Короче, игрался я долго и с интересом ))))
Ответить