Управление отоплением



  • Пока не переехал на Cherry, но интересует как правильнее организовать умное отопление в доме посредством сервера c IH Berry.

    1. Чтобы сделать круглосуточные сценарии на ветки ТП надо использовать поведение "Батареи отопления по датчику температуры". Гистерезис температуры так понимаю, можно изменить в скрипте. Надеюсь с актюаторами на коллекторах, которые закрываются/открываются 2-3 минуты, все будет работать нормально.

    Однако физиологически при одной и той же температуре человек под утро мерзнет, как интерактивно (например, при наступлении времени 4:00) поменять уставку температуры в комнатах (или тупо - к уставке прибавить 2-3 градуса), а позже все вернуть на свои места?

    2. Как сделать управление насосом рециркуляции горячего водоснабжения по времени и температуре? Если время больше 7:00 и температура в трубе меньше 50 градусов, насос включаем. При этом если еще нет 23:59 и температура стала больше 55 градусов, то насос выключаем. Так понимаю нужно сделать 2 сценария по датчику температуры с проверкой 3-х условий: время, состояние насоса, температура воды?



  • @Alex_Jet:

    Однако физиологически при одной и той же температуре человек под утро мерзнет, как интерактивно (например, при наступлении времени 4:00) поменять уставку температуры в комнатах (или тупо - к уставке прибавить 2-3 градуса), а позже все вернуть на свои места?

    Самый простой способ - сделать сценарий, который изменит уставки и запускать его по расписанию.

    Вот как это выглядит:

    1. Делаем Интерактивный Сценарий - назовем его "Повысить уставку температуры под утро"

    В нем меняем уставки для датчиков температуры:
    scr1001.jpg
    2. Запускаем сценарий по расписанию в 4 утра
    scr1002.jpg
    Чтобы понизить уставки, можно также создать сценарий - Понизить уставки..

    Но более естественно для того чтобы "все вернуть на свои места" использовать режимы.

    Для тех, кто пока не использует переключение режимов - работает это так:

    В системе существует на текущий момент 3 режима - День, Ночь, Эконом.

    Любые уставки температуры сохраняются в контексте текущего режима.

    Т.е. изменяем уставку в дневном режиме - она сохраняется для дневного, при переходе в ночной переключится на ночной.

    Переключать режимы удобно по расписанию, но можно и интерактивно (например, для настройки уставок)

    Поэтому включим в Расписание переход в Режим "День" в 7:00 по будням и попозже в выходные и все произойдет само собой 🙂

    Надо только понимать, что наша повышенная уставка ("Повысить уставку температуры под утро" ) сохранилась для ночного режима.

    Поэтому при переключении в ночной режим нужно будет запустить сценарий - "Ночные уставки температуры"

    Таким образом можно менять температуру хоть каждый час - сначала понижать, потом повышать 🙂



  • @Alex_Jet:

    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 скрипты поведения также есть и будет доступно их редактирование через веб?



  • @Alex_Jet:

    В 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 реле. Если реле меньше - можно выбирать одно и то же несколько раз.



  • @intrapro:

    Да, в шаблонном сценарии это можно сделать. Для этого используется раздел userparam.

    В принципе получилось. Но! По мне так неправильно:

    1. Что у насоса/радиатора теперь есть настройка "Гистерезис температуры включения/выключения насоса/радиатора". Эта настройка должна быть у датчика температуры, по которому работает насос/радиатор.

    2. Обычный пользователь сможет из веба менять гистерезис для включения/отключения отопления.

    Можно эту настройку сделать при настройке самого поведения в PM? То есть в том месте где мы выбираем датчик температуры, по которому включаем/отключаем насос/радиатор.



  • @intrapro:

    Нужно сделать сценарий, триггерами для которого будут насосы и сам котел

    Ок, вроде получилось. Подскажите что такое в сценариях (например, для радиаторов)

    "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 типы можно будет добавлять и изменять интерактивно



  • @intrapro:

    Это вопрос спорный 🙂 По одному датчику температуры могут несколько устройств работать. В версии Berry свойства добавляются к главному устройству сценария, которое управляется.

    Да, Вы правы. Тогда логичнее всего делать настройку гистерезиса (как тонкая настройка при ПНР) именно при выборе датчика температуры. Пытался сделать:) прописав в param:

    "HST":{"note":"Гистерезис температуры включения/выключения насоса", "type":"num", "defval":"1"}
    
    

    Понял, что обработчик не понимает меня…что вы и подтверждаете.
    @intrapro:

    Настройку можно скрыть, тогда пользователь ее не увидит - добавить свойство hide:

    Это конечно хорошо, но в Berry (в Cherry вроде Вы хотели реализовать редактирование скриптов через веб) надо значит по ssh лезть на сервер и ручками править defval. Не комильфо это для администратора системы, которая почти полностью настраивается через веб!
    @intrapro:

    Изменять настройку можно в PM - пункт Установки, который стандартно не задействован.

    Для этого нужно будет создать два дополнительных файла. Если такой вариант устроит - завтра выложим пример.

    Спасибо, но, думаю, не стоит заморачиваться раз все так "сложно". Было бы этих уставок как на большом промышленном объекте, тогда да.



  • @intrapro:

    Это было предусмотрено для группировки сценариев при просмотре. Для шаблонных сценариев сейчас это свойство не используется.

    Значит можно удалить.
    @intrapro:

    500 - Универсальный дискретный актуатор

    Вы правы, добавим список типов устройств как таблицу для просмотра в PM.

    В Cherry типы можно будет добавлять и изменять интерактивно

    Как вариант разместить в вики, тут ну или справочно в РМ. Главное не "перегрузить" РМ. А то меня вот этот перечень - 500,550,610,620,630,710 - заинтересовал. Кроме 500 ничего не знаю. А, кстати, в Berry было бы логично размещать коды устройств тут:
    Коды_Устройств.png
    Cherry пока не использовал.



  • @Alex_Jet:

    А, кстати, в Berry было бы логично размещать коды устройств тут:

    Да, наверно это логично. Но при разработке Berry была основная идея - как можно меньше всяческих кодов, как можно проще делать простые вещи. В Cherry упор на универсальность, будем надеяться, не в ущерб простоте.

    @Alex_Jet:

    Как вариант разместить в вики, тут ну или справочно в РМ.

    Дело в том, что набор типов устройств а) пополняется, б) зависит от конфигурации (Scada, Smart Home). Поэтому поступили проще - добавили в PM табличку "Типы устройств" сразу после "Устройства". Табличка только для просмотра, редактировать типы интерактивно в Berry нельзя.

    Можно обновиться и посмотреть.



  • В принципе все информативно стало - иконки - это те, которые по умолчанию назначены? Только в списке нет 550 и 620.



  • @Alex_Jet:

    иконки - это те, которые по умолчанию назначены?

    Да

    @Alex_Jet:

    Только в списке нет 550 и 620.

    Эти устройства есть в расширенной конфигурации, которая используется для наших инсталляций:

    550 - Управляемая розетка

    620 - Теплый пол

    Когда делали стандартный список типов - почистили. Ну а шаблоны сценариев общие для всех конфигураций, и в результате копипаста в примере типы которых нет в стандартной.



  • @intrapro:

    Эти устройства есть в расширенной конфигурации, которая используется для наших инсталляций:

    550 - Управляемая розетка

    620 - Теплый пол

    Да, кстати, недавно задумывался - "а почему же нет таких стандартных устройств". И мне не понятно почему Вы исключили их из стандартной версии…можно как-то поиметь для Berry? Или не заморачиваться и выбирать универсальный актюатор?



  • @Alex_Jet:

    Или не заморачиваться и выбирать универсальный актюатор?

    Можно не заморачиваться



  • Задача - управлять резервным (электрическим) котлом в зависимости от состояния насосов и температуры подачи основного котла. Поскольку пока не имею возможности вывести сигнал неисправности с основного газового котла 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: разрешите на форуме удалять/редактировать свои сообщения. А то выходит таймаут и отредактировать уже нельзя. Написал новое и предыдущее удалить уже нельзя:(


Log in to reply