В связи с выходом крупного обновления 5.9.х, приглашаем вас принять участие в вебинаре 09.06.2022 в 15:00. Участвовать

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



  • Задача - рулить резервным котлом в зависимости от:

    1. Нужно ли тепло в данный момент (включен хотя бы один насос рециркуляции)?

    2. Работает ли основной котел (косвенный признак его нормальной работы - температура на подаче равна 40+-5градусов)

    Поэтому не вижу смысла постоянно отслеживать температуру подачи основного котла. Только состояние рециркуляционных насосов и auto-режима. Поймите, мне просто хочется глубже понять как работает синтаксис сценариев.

    Сейчас у меня основные условия такие:

        "start": {
            "event": "#BOILER#,#PUMP1#,#PUMP2#,#PUMP3#,#PUMP4#",
            "if": "(#BOILER#.auto == 1) && ( (#PUMP1#.dval == 1) || (#PUMP2#.dval == 1) || (#PUMP3#.dval == 1) || (#PUMP4#.dval == 1) )"
        },
            "functions": {
            "start": [
                {   "if": "(#DT#.aval < (#BOILER#.temp - #BOILER#.hst)) && (#BOILER#.dval == 0)",
                    "exec": { "do": "#BOILER#.aon"}
                },
                {   "if": "(#DT#.aval > (#BOILER#.temp + #BOILER#.hst)) && (#BOILER#.dval == 1)",
                    "exec": {"do": "#BOILER#.aoff"}
                }
            ]
        }
    
    

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

    Это как с последним запуском ракето-носителя Союз… - "несовершенный алгоритм программного обеспечения системы управления разгонного блока "Фрегат" и неверные азимуты пуска".



  • @Alex_Jet:

    Поэтому не вижу смысла постоянно отслеживать температуру подачи основного котла.

    Да, Вы правы, это излишне. По температуре работают насосы.

    @Alex_Jet:

    …может быть такое стечение обстоятельств (под конец режима прогрева основной котел ушел в ошибку, магистраль остыла, включился резервный котел, а дом по инерции прогрелся и все насосы отключились), что он не выключиться и будет бесполезно греть магистраль и маслать насосом пока дому снова не потребуется тепло.

    Тогда добавим подзадачу: При остановке всех насосов резервный котел отключить

    Предусловие тогда будет таким: Бойлер в авто И (один из насосов включен ИЛИ все насосы выключены И Бойлер включен)

      "if": "(#BOILER#.auto == 1) && ( (#PUMP1#.dval == 1) || (#PUMP2#.dval == 1) || (#PUMP3#.dval == 1) || (#PUMP4#.dval == 1) ||
              (#PUMP1#.dval == 0) && (#PUMP2#.dval == 0) && (#PUMP3#.dval == 0) &&(#PUMP4#.dval == 0)&&(#BOILER#.dval == 1))"
    
    // В функцию start добавим первую строку для обработки этой ситуации
    
     "functions": {
            "start": [
                 {   "if": " (#PUMP1#.dval == 0) && (#PUMP2#.dval == 0) && (#PUMP3#.dval == 0) &&(#PUMP4#.dval == 0)",
                    "exec": {"do": "#BOILER#.aoff", "exit":1}
                },
                {   "if": "(#DT#.aval < (#BOILER#.temp - #BOILER#.hst)) && (#BOILER#.dval == 0)",
                    "exec": { "do": "#BOILER#.aon"}
                },
                {   "if": "(#DT#.aval > (#BOILER#.temp + #BOILER#.hst)) && (#BOILER#.dval == 1)",
                    "exec": {"do": "#BOILER#.aoff"}
                }
            ]
        }
    
    
    

    Либо можно сделать всего две строки - объединить условия для выключения

    
            "functions": {
            "start": [
              {   "if": "(#BOILER#.dval == 1) && ((#DT#.aval > (#BOILER#.temp + #BOILER#.hst)) ||  
                  		|| (#PUMP1#.dval == 0) && (#PUMP2#.dval == 0) && (#PUMP3#.dval == 0) &&(#PUMP4#.dval == 0))",
                    "exec": {"do": "#BOILER#.aoff", "exit":1}
                },
    
                {   "if": "(#BOILER#.dval == 0)&&(#DT#.aval < (#BOILER#.temp - #BOILER#.hst))",
                    "exec": { "do": "#BOILER#.aon"}
                }
            ]
        }
    
    

    Обратите внимание, что перенос строки в условии не допускается. Также как и комментарии.

    Здесь сделано только для удобства просмотра.

    @Alex_Jet:

    Это как с последним запуском ракето-носителя Союз… - "несовершенный алгоритм программного обеспечения системы управления разгонного блока "Фрегат" и неверные азимуты пуска".

    Короче, во всем виноваты проклятые программисты 😄



  • @intrapro:
    Вопрос на засыпку - в Berry возможно из скрипта, точнее сценария, выключить авторежим насоса/котла, на период действия условия, а потом снова включить?



  • Можно, почему нельзя?

    "do":"KOTEL.auto:1" - включить режим авто

    "do":"KOTEL.auto:0" - выключить режим авто



  • @intrapro:

    Можно, почему нельзя?

    "do":"KOTEL.auto:1" - включить режим авто

    "do":"KOTEL.auto:0" - выключить режим авто

    Да, спасибо! Это для шаблонных поведений (*.pat). В создаваемых из веба сценариев по событиям тоже это есть! Что мне и требовалось!

    Со сценариям "Таймер на входе учитывает основное условие" - это то, что можно выбрать из выпадающего списка "Событие"???



  • @Alex_Jet:

    Со сценариям "Таймер на входе учитывает основное условие" - это то, что можно выбрать из выпадающего списка "Событие"???

    Да, абсолютно верно.

    Таймер на входе означает, что условие должно выполняться непрерывно в течение времени таймера, иначе сценарий не запустится.

    Основное условие - на первой вкладке, дополнительное - на вкладке "При Условии". Можно учитывать оба условия одновременно.



  • @intrapro:

    @Alex_Jet:

    Со сценариям "Таймер на входе учитывает основное условие" - это то, что можно выбрать из выпадающего списка "Событие"???

    Да, абсолютно верно.

    Таймер на входе означает, что условие должно выполняться непрерывно в течение времени таймера, иначе сценарий не запустится.

    Основное условие - на первой вкладке, дополнительное - на вкладке "При Условии". Можно учитывать оба условия одновременно.

    Немного муторно сделано:

    1. Чтобы учитывались условия вкладки "При условии" - нужно обязательно активировать "Таймер…на входе при условии"?

    2. Если вообще не активировать кнопки "Таймер на входе учитывает...", то сценарий будет выполняться? Если будет то только по основному условию или по условия на вкладке "При условии" тоже?

    3. Как правильно сделать сценарии по этим формам? Я реально немного запутался.

    При включении насоса 1 и температуре <-20 спустя 5 секунд перевести насос 2 в ручной режим и принудительно отключить.

    При выключении насоса 1 и температуре <-20 без задержек перевести насос 2 в автоматический режим.



  • @Alex_Jet:

    1. Чтобы учитывались условия вкладки "При условии" - нужно обязательно активировать "Таймер…на входе при условии"?

    Нет, не обязательно.

    @Alex_Jet:

    2. Если вообще не активировать кнопки "Таймер на входе учитывает…", то сценарий будет выполняться? Если будет то только по основному условию или по условия на вкладке "При условии" тоже?

    Можно таймеры не использовать совсем, сценарий запустится сразу, если оба условия выполняются.

    Таймеры используются, если нужно чтобы условие непрерывно было верно в течение какого-то интервала, и если так, выполняется сценарий

    Приведу примеры использования таймеров:

    Сработал датчик протечки, сбросился через 2 сек (просто капнули при уборке) - если поставить таймер на входе по основному условию - можно SMS не посылать, нервы сберечь 🙂

    Другой пример

    Под охраной открыта входная дверь, 1 мин дается на снятие сигнализации. Если Охрана не снята - бить тревогу: сирена, SMS, световая сигнализация, …..

    Здесь основное условие - сработка геркона, дополнительное - Охрана установлена.

    Поставим таймер на дополнительное условие. Если в течение минуты снять охрану - тревога отменяется

    @Alex_Jet:

    3. Как правильно сделать сценарии по этим формам? Я реально немного запутался.

    При включении насоса 1 и температуре <-20 спустя 5 секунд перевести насос 2 в ручной режим и принудительно отключить.

    При выключении насоса 1 и температуре <-20 без задержек перевести насос 2 в автоматический режим.

    В ваших задачах можно обойтись без таймеров совсем.

    Во второй задаче таймеры точно не нужны

    В первой - температура вряд ли радикально изменится в течение 5 секунд, поэтому можно просто использовать задержку в действиях

    Основное условие - включение насоса 1

    При условии - T<-20

    Действия:

    • Задержка 5 сек

    • Насос 2 перевести в ручной режим

    • Насос 2 отключить



  • Есть. Некоторые шаблоны сценариев показаны здесь: https://intrahouse.ru/scenes-examples/



  • Прошу вопросы по системе intraHouse Cherry задавать на форуме intraHouse Cherry

    Вопрос по скриптам логично задать в теме https://frm.intrahouse.ru/viewtopic.php?f=18&t=5316


Log in to reply