Управление отоплением
-
Научите, плиз, ещё тому как отключать газовый котёл если насос 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: разрешите на форуме удалять/редактировать свои сообщения. А то выходит таймаут и отредактировать уже нельзя. Написал новое и предыдущее удалить уже нельзя:(
-
Заменил
"if":"(#BOILER#.auto == 1) && ( (#PUMP1#.dval == 1)&&(#PUMP2#.dval == 1)&&(#PUMP3#.dval == 1)&&(#PUMP4#.dval == 1) )"
на правильное условие:
"if":"(#BOILER#.auto == 1) && ( (#PUMP1#.dval == 1) || (#PUMP2#.dval == 1) || (#PUMP3#.dval == 1) || (#PUMP4#.dval == 1) )"
Вроде работает как задумано. Я правильно полагаю, что эти условия должны быть стартовыми? А далее проводим проверку только по температуре?
-
Поскольку при включении насосов рециркуляции не выполняется условие "if":"(#DT#.aval < #BOILER#.temp)", то резервный котел (электрический) отключается:
Температура уменьшилась: 04.12.2017 07:23:41 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=19:1 - НАСОС ТП1 04.12.2017 07:23:41 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=28:1 - Газовый котел 04.12.2017 07:23:41 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=27:0 - Электрический котел 04.12.2017 07:23:41 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=21:1 - НАСОС ТП2 04.12.2017 07:23:41 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=28:1 - Газовый котел 04.12.2017 07:23:47 localhost => 192.168.11.24:80 HTTP GET /sec/?cmd=27:0 - Электрический котел
1. Где и как правильно добавить условие чтобы не выполнялась бесполезная команда 27:0 если условие #DT#.aval < #BOILER#.temp соответствует false?
2. То же по основному котлу (газовый) - где и как правильно добавить условие чтобы во второй и последующие разы (события по 4-м насосам) не выполнялась бесполезная команда 28:1?
-
1. Где и как правильно добавить условие чтобы не выполнялась бесполезная команда 27:0 если условие #DT#.aval < #BOILER#.temp соответствует false?
2. То же по основному котлу (газовый) - где и как правильно добавить условие чтобы во второй и последующие разы (события по 4-м насосам) не выполнялась бесполезная команда 28:1?
Можно задать несколько команд - массив команд, и в каждой проверять условие:
- если нужно включить котел, а он выключен - то включить. И наоборот.
"functions":{ "start":[ { "if":"(#DT#.aval < #BOILER#.temp) && (#BOILER#.dval == 0)", "exec":{"do":"#BOILER#.aon", "exit":1 }}, { "if":"(#DT#.aval > #BOILER#.temp) && (#BOILER#.dval == 1)", "exec":{"do":"#BOILER#.aoff"}} ] }
Все команды будут выполняться подряд. После включения можно сразу выйти: "exit":1
<quote>> Я правильно полагаю, что эти условия должны быть стартовыми? А далее проводим проверку только по температуре?
Если идея в том, что сценарий должен срабатывать (запускать блок start), когда хотя бы один из насосов включен, то абсолютно верно.
-
Можно задать несколько команд - массив команд, и в каждой проверять условие:
- если нужно включить котел, а он выключен - то включить. И наоборот.
Все команды будут выполняться подряд. После включения можно сразу выйти: "exit":1
Спасибо за ответы! Сразу выйти - это чтобы не проверять следующее условие? Или какое-то еще значение несет?