Запуск сценария по кнопке



  • Всем привет. Продолжаю разбираться.
    Есть 2 сценария, которые регулируют температуру в заданных интервалах, одинаковых но с разной температурой. Вот пример:

    scen.png

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

    234234.png

    Отсюда несколько вопросов:

    1. Как сделать сценарии не запущенными по умолчанию?
    2. Как сделать кнопки, которые позволят переключаться между сценариями?
    3. Можно ли при включении одного сценария выключать другие?

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

    Спасибо.



  • Дополню, что в расписании эти сценарии также не выбрать.



  • @gewer, по моему в сценарии, который хотите запустить не должно быть StartOnChange - тогда он будет отображаться в списке доступных. При этом для разных кнопок (для отопления, например, эконом/день/ночь) в сценарий нужно передавать разные параметры, например, 1/2/3. В сценарии, соответственно, разбирать param.
    А вообще проще сделать не кнопку, а переключатель для отопления и теми же кнопками менять его значение. У меня "главным" является переключатель, а в виджете сделаны кнопки, которые меняют его состояние:

    const mode = Device("SWITCH_HEATING");
    
    script({
        start(param) {
          //Установка значения у переключателя отопления
          if(param !== undefined) {
            mode.setValue(param);
          }
        }
    });
    


  • @Alex_Jet спасибо. Я с языками совсем не знаком, максимум что я могу - это копипаста.
    Поэтому реализовываю всё преимущественно в блоках.

    Где убрать StartOnChange, учитывая это?)



  • @gewer, блокли штука неповоротливая. Я ее принципиально не использую, чтобы не потерять навык скриптописания. Поэтому даже не знаю чем вам помочь. Вероятно только дать совет - начать разбираться как писать сценарии с помощью js. Таким образом, сможете реализовать самые хитрые задачи!



  • @Alex_Jet ну не может же быть такого, что блочный код нельзя запускать по кнопке?
    Подожду, может разработчики ответят.



  • @gewer Да, вы правы, можно сделать блочный сценарий и запускать его с кнопки. Но тогда в нем не должно быть устройств - триггеров (красных блоков)
    Вот пример такого сценария: здесь используются свойства датчика температуры - значение и уставка (желтые блоки). Эти блоки добавляются с вкладки Операции.

    bs1.png

    Такой сценарий можно запустить с кнопки, но толку в нем нет - он будет переключать батарею только в тот момент, когда вы будете нажимать кнопку 🙂
    Вы же хотите, чтобы регулирование выполнялось при изменении температуры и уставки.
    Просто нужно иметь в виду, что сценарии IH не крутятся постоянно, а срабатывают по заданным событиям. Это позволяет запускать большое количество сценариев, которые очень быстро срабатывают, а большую часть времени не активны. Событиями для запуска могут быть изменения состояния устройств либо действия пользователя. Это два разных типа сценария - интерактивные и по событиям устройств.

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

    Вернемся к вашей задаче, но разобьем ее на подзадачи:

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

    Первая задача решается вашим сценарием, который будет запускаться по событиям датчика температуры, отрабатывать и сразу завершаться.

    Для решения второй есть несколько вариантов, которые уже предлагали выше.
    Значения порогов можно заложить в сценарий или интерактивно менять через пользовательский интерфейс (здесь уже без скриптов не обойтись)
    Посмотрим простое решение без написания скриптов
    Вариант 1, как вы хотели, на кнопках
    Создаем сценарий-блок, в котором делаем ночную уставку для датчика (может быть несколько датчиков). Называем его Ночные уставки. Аналогично делаем сценарий Дневные уставки
    Эти сценарий можно запустить по расписанию.
    Можно также сделать сценарий Экономные уставки.
    Для каждого сценария сделать по кнопке, чтобы можно было переключать интерактивно.
    Минус - не видно, какой сейчас режим. Но это можно решить, добавив виртуальное устройство Режим отопления, переопределить состояния (0 - День, 1 - Ночь, 2 - Эконом) и вывести на экран.

    Вот пример такого сценария. Используется блок "Присваивание значения" на вкладке "Команды". Присваиваются уставки двум датчикам плюс индикатор режима.
    bs2.png

    В свойствах для температуры задать setpoint (уставка) пороговые значения.

    bs3.png



  • @gewer, предыдущий пост получился довольно длинным в попытке прояснить событийный механизм сценариев.
    Возможно, мы вашу задачу не совсем правильно поняли. Пробуйте и задавайте вопросы дальше 🙂



  • Участник @intrapro написал в Запуск сценария по кнопке:

    @gewer, предыдущий пост получился довольно длинным в попытке прояснить событийный механизм сценариев.
    Возможно, мы вашу задачу не совсем правильно поняли. Пробуйте и задавайте вопросы дальше 🙂

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



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


Log in to reply