Управление отоплением
-
Пока не переехал на Cherry, но интересует как правильнее организовать умное отопление в доме посредством сервера c IH Berry.
1. Чтобы сделать круглосуточные сценарии на ветки ТП надо использовать поведение "Батареи отопления по датчику температуры". Гистерезис температуры так понимаю, можно изменить в скрипте. Надеюсь с актюаторами на коллекторах, которые закрываются/открываются 2-3 минуты, все будет работать нормально.
Однако физиологически при одной и той же температуре человек под утро мерзнет, как интерактивно (например, при наступлении времени 4:00) поменять уставку температуры в комнатах (или тупо - к уставке прибавить 2-3 градуса), а позже все вернуть на свои места?
2. Как сделать управление насосом рециркуляции горячего водоснабжения по времени и температуре? Если время больше 7:00 и температура в трубе меньше 50 градусов, насос включаем. При этом если еще нет 23:59 и температура стала больше 55 градусов, то насос выключаем. Так понимаю нужно сделать 2 сценария по датчику температуры с проверкой 3-х условий: время, состояние насоса, температура воды?
-
Однако физиологически при одной и той же температуре человек под утро мерзнет, как интерактивно (например, при наступлении времени 4:00) поменять уставку температуры в комнатах (или тупо - к уставке прибавить 2-3 градуса), а позже все вернуть на свои места?
Самый простой способ - сделать сценарий, который изменит уставки и запускать его по расписанию.
Вот как это выглядит:
1. Делаем Интерактивный Сценарий - назовем его "Повысить уставку температуры под утро"
В нем меняем уставки для датчиков температуры:
2. Запускаем сценарий по расписанию в 4 утра
Чтобы понизить уставки, можно также создать сценарий - Понизить уставки..Но более естественно для того чтобы "все вернуть на свои места" использовать режимы.
Для тех, кто пока не использует переключение режимов - работает это так:
В системе существует на текущий момент 3 режима - День, Ночь, Эконом.
Любые уставки температуры сохраняются в контексте текущего режима.
Т.е. изменяем уставку в дневном режиме - она сохраняется для дневного, при переходе в ночной переключится на ночной.
Переключать режимы удобно по расписанию, но можно и интерактивно (например, для настройки уставок)
Поэтому включим в Расписание переход в Режим "День" в 7:00 по будням и попозже в выходные и все произойдет само собой
Надо только понимать, что наша повышенная уставка ("Повысить уставку температуры под утро" ) сохранилась для ночного режима.
Поэтому при переключении в ночной режим нужно будет запустить сценарий - "Ночные уставки температуры"
Таким образом можно менять температуру хоть каждый час - сначала понижать, потом повышать
-
2. Как сделать управление насосом рециркуляции горячего водоснабжения по времени и температуре? Если время больше 7:00 и температура в трубе меньше 50 градусов, насос включаем. При этом если еще нет 23:59 и температура стала больше 55 градусов, то насос выключаем. Так понимаю нужно сделать 2 сценария по датчику температуры с проверкой 3-х условий: время, состояние насоса, температура воды?
Здесь все-таки лучше использовать скрипт поведения.
Например, скопировать шаблонный скрипт работы батареи scenpat/fm_radiator.pat в scenpat/fm_pump.pat и доработать его, чтобы получился шаблон для насоса:
"patname":"mypump", "patnote":"Насос ГВС", "param":{ "PUMP":{"note":"Насос","type":"500"}, "DT":{"note":"Датчик температуры","type":"210"} },
type определяет, для каких устройств будет предлагаться этот шаблон. 500 - актуатор универсальный
"maindev":"#PUMP#",
Сценарий привязывается к насосу
"start":{ "event":"#PUMP#,#DT#", "if":"(#PUMP#.auto==1) && ((#DT#.aval <= (#DT#.defval-2.5))&&(#PUMP#.dval==0) || (#RAD#.dval==1)&&(#DT#.aval > #DT#.defval+2.5)) " } }
При событиях этих устройств будет проверяться условие start.if
Если температура ниже порога-2.5 и насос выключен ИЛИ выше порога+2.5 и включен - запустится сценарий, в котором сделаем более глубокую проверку
"functions":{ "start":[ {"if":"(#PUMP#.dval == 0)&&(TIME>07:00)", "exec":{"do":"#PUMP#.aon", "exit":1}}, {"if":"(#PUMP#.dval == 1)&&(TIME>07:00)&&(TIME<23:30)", "exec":{"do":"#PUMP#.aoff"}} ] }
Можно то же самое сделать как базовый сценарий - везде вместо #PUMP# и #DT# вписать конкретные названия устройств - MYPUMP, STEMP1
Такой сценарий нужно записать в файл с расширением json в папку base/scenbase и он будет запускаться при старте сервера.
-
Спасибо за ответы. По 1-му пункту не знал что так можно сделать. По второму пункту - предполагал, но считал что можно сделать 2 сценария по событиям устройств.
В Cherry скрипты поведения также есть и будет доступно их редактирование через веб?
-
В Cherry скрипты поведения также есть и будет доступно их редактирование через веб?
Пока по скриптам в Cherry не готово.
Но, естественно, будет.
В отличии от Berry будет возможность редактировать коды скриптов и создавать свои. Через Web интерфейс.
-
Научите, плиз, ещё тому как отключать газовый котёл если насос 1, насос 2, насос 3, насос 4 выключены (дом прогрет), иначе будет включен и работает в автомате.
То есть в поведении необходима возможность выбора нужных рециркуляционных насосов.
По вашей рекомендации сделал шаблонный скрипт для насосов. Вопрос - как правильно с этим синтаксисом задать значение гистерезиса? То есть создать переменную Hst и прибавлять/убавлять ее от defval. Желательно чтобы можно было настраивать гистерезис в поведении.
Ещё в дальнейшем потребуется скрипт отключения насоса коллектора если 7 контуров коллектора отключены. Вероятно я его могу сделать из первого скрипта.
-
Извините за задержку с ответом. Сначала по второму вопросу:
То есть создать переменную Hst и прибавлять/убавлять ее от defval.
Да, в шаблонном сценарии это можно сделать. Для этого используется раздел userparam.
"maindev":"#RAD#", "userparam": {"prop":"hst", "defval":1, "type":"num", "note":"Значение гистерезиса "}
Таким образом мы добавляем новое свойство для главного устройства. Оно появится в пользовательском интерфейсе в окне настройки (кнопка инструменты).
prop - имя свойство, которое появится у главного устройства сценария - #RAD#.hst
note - текст, которой появится в окне настройки этого устройства в пользовательском интерфейсе (молотки)
type - тип, может принимать значения: "num" - число, "cb" - checkbox, "time" - время (для ввода интервалов)
defval - значение переменной по умолчанию (в данном случае #RAD#.hst будет равно 1, если его не поменять через интерфейс)
Теперь это свойство можно использовать в сценарий:
"if":"(#DT#.aval > #DT#.defval + #RAD#.hst )"
-
как отключать газовый котёл если насос 1, насос 2, насос 3, насос 4 выключены (дом прогрет), иначе будет включен и работает в автомате.
То есть в поведении необходима возможность выбора нужных рециркуляционных насосов.
Нужно сделать сценарий, триггерами для которого будут насосы и сам котел:
{ "patname":"kotel", "patnote":"Управление котлом", "param":{ "KOTEL":{"note":"Котел","type":"500,550,610,620,630,710"}, "R1":{"note":"Насос 1","type":"500,550,610,620,630,710"}, "R2":{"note":"Насос 2","type":"500,550,610,620,630,710"}, "R3":{"note":"Насос 3","type":"500,550,610,620,630,710"}, "R4":{"note":"Насос 4","type":"500,550,610,620,630,710"} }, "maindev":"#KOTEL#", "start":{ "event":"#KOTEL#,#R1#,#R2#,#R3#,#R4#", "if":"(#KOTEL#.auto==1)" }, "functions":{ "start":{ "if":"(#R1#.dval == 0)&&(#R2#.dval == 0)&&(#R3#.dval == 0)&&(#R4#.dval == 0)", "exec":{"do":"#KOTEL#.aoff"}, "else"{"do":"#KOTEL#.aon"} } } }
Если автомат у котла отключить, сценарий работать не будет
<quote>> Ещё в дальнейшем потребуется скрипт отключения насоса коллектора если 7 контуров коллектора отключены. Вероятно я его могу сделать из первого скрипта.
Абсолютно верно, нужно будет сделать шаблон на 7 реле. Если реле меньше - можно выбирать одно и то же несколько раз.
-
Да, в шаблонном сценарии это можно сделать. Для этого используется раздел userparam.
В принципе получилось. Но! По мне так неправильно:
1. Что у насоса/радиатора теперь есть настройка "Гистерезис температуры включения/выключения насоса/радиатора". Эта настройка должна быть у датчика температуры, по которому работает насос/радиатор.
2. Обычный пользователь сможет из веба менять гистерезис для включения/отключения отопления.
Можно эту настройку сделать при настройке самого поведения в PM? То есть в том месте где мы выбираем датчик температуры, по которому включаем/отключаем насос/радиатор.
-
Нужно сделать сценарий, триггерами для которого будут насосы и сам котел
Ок, вроде получилось. Подскажите что такое в сценариях (например, для радиаторов)
"scengroup": 3,
И можно где-нибудь расписать индексы типов устройств ("type":500 и прочие)?
-
В принципе получилось. Но! По мне так неправильно:
1. Что у насоса/радиатора теперь есть настройка "Гистерезис температуры включения/выключения насоса/радиатора". Эта настройка должна быть у датчика температуры, по которому работает насос/радиатор.
Это вопрос спорный По одному датчику температуры могут несколько устройств работать.
В версии Berry свойства добавляются к главному устройству сценария, которое управляется.
<quote>> 2. Обычный пользователь сможет из веба менять гистерезис для включения/отключения отопления.
Можно эту настройку сделать при настройке самого поведения в PM? То есть в том месте где мы выбираем датчик температуры, по которому включаем/отключаем насос/радиатор.
Настройку можно скрыть, тогда пользователь ее не увидит - добавить свойство hide:
"userparam": {"prop":"hst", "defval":1, "type":"num", "note":"Значение гистерезиса ", "hide":1}
При настройке поведения редактирование параметров пока не предусмотрено.
Изменять настройку можно в PM - пункт Установки, который стандартно не задействован.
Для этого нужно будет создать два дополнительных файла. Если такой вариант устроит - завтра выложим пример.
-
Подскажите что такое в сценариях (например, для радиаторов) "scengroup": 3
Это было предусмотрено для группировки сценариев при просмотре. Для шаблонных сценариев сейчас это свойство не используется.
<quote>> И можно где-нибудь расписать индексы типов устройств ("type":500 и прочие)?
500 - Универсальный дискретный актуатор
Вы правы, добавим список типов устройств как таблицу для просмотра в PM.
В Cherry типы можно будет добавлять и изменять интерактивно
-
Это вопрос спорный По одному датчику температуры могут несколько устройств работать. В версии Berry свойства добавляются к главному устройству сценария, которое управляется.
Да, Вы правы. Тогда логичнее всего делать настройку гистерезиса (как тонкая настройка при ПНР) именно при выборе датчика температуры. Пытался сделать:) прописав в param:
"HST":{"note":"Гистерезис температуры включения/выключения насоса", "type":"num", "defval":"1"}
Понял, что обработчик не понимает меня…что вы и подтверждаете.
@intrapro:Настройку можно скрыть, тогда пользователь ее не увидит - добавить свойство hide:
Это конечно хорошо, но в Berry (в Cherry вроде Вы хотели реализовать редактирование скриптов через веб) надо значит по ssh лезть на сервер и ручками править defval. Не комильфо это для администратора системы, которая почти полностью настраивается через веб!
@intrapro:Изменять настройку можно в PM - пункт Установки, который стандартно не задействован.
Для этого нужно будет создать два дополнительных файла. Если такой вариант устроит - завтра выложим пример.
Спасибо, но, думаю, не стоит заморачиваться раз все так "сложно". Было бы этих уставок как на большом промышленном объекте, тогда да.
-
Это было предусмотрено для группировки сценариев при просмотре. Для шаблонных сценариев сейчас это свойство не используется.
Значит можно удалить.
@intrapro:500 - Универсальный дискретный актуатор
Вы правы, добавим список типов устройств как таблицу для просмотра в PM.
В Cherry типы можно будет добавлять и изменять интерактивно
Как вариант разместить в вики, тут ну или справочно в РМ. Главное не "перегрузить" РМ. А то меня вот этот перечень - 500,550,610,620,630,710 - заинтересовал. Кроме 500 ничего не знаю. А, кстати, в Berry было бы логично размещать коды устройств тут:
Cherry пока не использовал.
-
А, кстати, в Berry было бы логично размещать коды устройств тут:
Да, наверно это логично. Но при разработке Berry была основная идея - как можно меньше всяческих кодов, как можно проще делать простые вещи. В Cherry упор на универсальность, будем надеяться, не в ущерб простоте.
Как вариант разместить в вики, тут ну или справочно в РМ.
Дело в том, что набор типов устройств а) пополняется, б) зависит от конфигурации (Scada, Smart Home). Поэтому поступили проще - добавили в PM табличку "Типы устройств" сразу после "Устройства". Табличка только для просмотра, редактировать типы интерактивно в Berry нельзя.
Можно обновиться и посмотреть.
-
В принципе все информативно стало - иконки - это те, которые по умолчанию назначены? Только в списке нет 550 и 620.
-
иконки - это те, которые по умолчанию назначены?
Да
Только в списке нет 550 и 620.
Эти устройства есть в расширенной конфигурации, которая используется для наших инсталляций:
550 - Управляемая розетка
620 - Теплый пол
Когда делали стандартный список типов - почистили. Ну а шаблоны сценариев общие для всех конфигураций, и в результате копипаста в примере типы которых нет в стандартной.
-
Эти устройства есть в расширенной конфигурации, которая используется для наших инсталляций:
550 - Управляемая розетка
620 - Теплый пол
Да, кстати, недавно задумывался - "а почему же нет таких стандартных устройств". И мне не понятно почему Вы исключили их из стандартной версии…можно как-то поиметь для Berry? Или не заморачиваться и выбирать универсальный актюатор?
-
-
Задача - управлять резервным (электрическим) котлом в зависимости от состояния насосов и температуры подачи основного котла. Поскольку пока не имею возможности вывести сигнал неисправности с основного газового котла Baxi, то как временное решение - определять его неисправность измеряя температуру на его подаче когда он включен. Он же включен когда включен хотя бы один насос контуров отопления. Правильно ли я написал скрипт или можно как-то лаконичнее?
"start":{ "event":"#BOILER#,#DT#", "if":"(#BOILER#.auto == 1) && (#DT#.aval < #BOILER#.temp)" }, "functions":{ "start":{ "if":"(#PUMP1#.dval == 1)&&(#PUMP2#.dval == 1)&&(#PUMP3#.dval == 1)&&(#PUMP4#.dval == 1)", "exec":{"do":"#BOILER#.aon"}, "else":{"do":"#BOILER#.aoff"} } }
Температуру включения резервного котла задаю в его настройках - свойство temp.
-
Задача - управлять резервным (электрическим) котлом в зависимости от состояния насосов и температуры на подаче основного котла. Поскольку пока не имею возможности вывести сигнал неисправности с основного газового котла Baxi, то как временное решение - определять его неисправность измеряя температуру на его подаче когда он включен. Он же включен когда включен хотя бы один насос контуров отопления. Правильно ли я написал скрипт или можно как-то лаконичнее?
"start":{ "event":"#BOILER#,#PUMP1#,#PUMP2#,#PUMP3#,#PUMP4#", "if":"(#BOILER#.auto == 1) && ( (#PUMP1#.dval == 1)&&(#PUMP2#.dval == 1)&&(#PUMP3#.dval == 1)&&(#PUMP4#.dval == 1) )" }, "timeout":60, "functions":{ "start":{ "if":"(#DT#.aval < #BOILER#.temp)", "exec":{"do":"#BOILER#.aon"}, "else":{"do":"#BOILER#.aoff"} } }
Температуру включения резервного котла задаю в его настройках - свойство temp.
PS: разрешите на форуме удалять/редактировать свои сообщения. А то выходит таймаут и отредактировать уже нельзя. Написал новое и предыдущее удалить уже нельзя:(