Собственные алгоритмы на EasyHome - «Умный Дом и решения» » Умный Дом и решения
Что такое Умный дом — это система домашних устройств, связанных между собой и выполняющих действия по команде человека или даже без его участия, по расписанию или сигналу от датчика.
Некоторые умные дома управляются через приложения и голосом через умные колонки, другие — с помощью отдельных устройств.
Задачи тоже могут быть разными: повысить комфорт, сэкономить время или обеспечить безопасность..
Возможности создания собственных более-менее сложных алгоритмов работы в программном обеспечении EasyHome (для контроллеров EasyHomePLC и Beckhoff) достаточно широкие.
Под собственными алгоритмами я понимаю не возможность простой ассоциации выключателя к светильнику или датчика движения с задержкой к светильнику или вытяжки санузла к движению в санузле, а индивидуальные алгоритмы, которых не настроить выставлением пары галочек.
Например, вот удобная сводная таблица освещения, в которой настраивается базовая работа света:
Строки — это группы освещения, из в системе может быть до 255. По каждой группе света мы задаём его работу по датчику движения (отдельно номер датчика и разрешение работы), до трёх выключателей (через лампы-клоны можно сделать больше выключателей), исключение группы из глобальных сцен света.
В отдельных настройках указываются типы выключателей, время включения света по датчикам для разных групп датчиков, функция отключения забытого света. Это всё стандартные настройки, выставляемые просто галочками и номерами выключателей и датчиков. Как правило, эти настройки покрывают 90% задач пользователя. Как сделать что-то своё, не предусмотренное простыми настройками?
В контроллере Fibaro Home Center (а также в Larnitech) есть достаточно удобный блочный редактор. Он описан в этой статье. Также есть редактор кода на языке Lua, можно запрограммировать вообще что угодно, имея базовые навыки программирования. В EasyHome всё сначала кажется несколько сложнее по написанию собственных алгоритмов, но если разобраться, то может оказаться даже удобнее.
В EasyHome три инструмента для создания нестандартных алгоритмов: глобальные сцены, мультисцены и свободные функции.
Глобальные сцены
Глобальных сцен может быть 8. Например «Все дома», «Отпуск», «Все на работе», «Ночь» и ещё останется. Есть основная страница настроек сцен, вот такая:
Мы можем переименовывать сцены, каждой глобальной сцене ассоциировать сцену освещения, отопления, инженерную и медиа сцену. Можно настроить текст смс, который надо отправить на контроллер для включения сцены. Можно сделать таймер запуска сцены по дням недели, настроить выключатель для выключения сцены. И привязать запуск сцены к событию: закат, рассвет (по датчику освещенности или астрономическому программному датчику), взятие или снятие охраны. Удобно — поставили дом на охрану, сразу включился соответствующий сценарий «Никого нет дома».
Что делает каждая сцена в каждой комнате, выбирается в окне самой комнаты. Ставим свет в нужное состояние и нажимаем кнопку «Сохранить сцену» в левой части окна.
В появляющемся меню выбираем название соответствующей сцены комнаты (это 4 кнопки сцен в окне комнаты) или глобальную сцену.
Так получаем быстрый запуск любой сцены дома по кнопке или сценарию.
Мультисцены
Более сложные вещи прячутся в меню «Настройки ПЛК» — «Свободные функции».
Мультисцена — это последовательность выполняемых контроллером действий при запуске этой сцены. Действия — это запись значений в различные ячейки памяти, то есть, выполнение вообще всего, чего угодно. Для запуска мультисцены надо создать в интерфейсе кнопку, которая будет в байт памяти 24 записывать номер нужной мультисцены, от 1 до 255.
Например, нам надо при входе в дом выполнить множество действий: включить определённые группы света, розетки, музыку в каких-то помещениях. Глобальными сценами это делать не так удобно. В мультисценах ми пишем все действия в виде команд на запись значений в ячейки памяти. На скриншоте ниже строка начала мультисцены №4, потом запись значений в разные биты ячейки памяти 692 (это лампочка №10, уровень диммирования).
Можно копировать строки, можно видеть номер последней запущенной мультисцены, можно делать задержку выполнения. Мультисцена заканчивается при появлении пустой строки или строки начала следующей мультисцены.
Мультисцена может запускать локальные или глобальные сцены записью значений в ячейки 18 или 24.
В мультисценах нет никаких логических операций над переменными или условий, только запись значений в ячейки.
Свободные функции
Вот здесь уже можно задавать любые условия, потому что в свободных функциях помимо записи значений в ячейки памяти есть ещё логические операции над ними с использованием специально отведённых под разные флаги ячеек.
В каждой строчке есть два аргумента (ячейки памяти или константы), функция (И, ИЛИ, Сравнение, таймеры, задержки и много чего ещё) и выход — также ячейка памяти. Значения каждого аргумента видны здесь же.
На свободные функции отведено 255 строк. Можно копировать строки.
Разумеется, в свободных функциях мы можем запускать сцены и мультисцены.
Советую перед редактированием свободных функций или мультисцен выключать кнопку их работы, чтобы в процессе редактирования ничего не запустить лишнего. А после окончания отдельной кнопкой сохранять настройки в память контроллера, иначе после перезапуска они сотрутся.
Кстати, ещё у системы EasyHome есть открытый API. То есть, вы можете написать собственное отдельное приложение (в самом простом варианте — консольное) на любом удобном языке и под любую операционную систему, которое будет осуществлять то, что вам нужно. Один из моих клиентов, программист, так и поступил: реализовал всё, что ему было нужно от системы, написал своё приложение, так оказалось проще. Также систему можно связать с Apple Homekit или с Openhab, там есть свои возможности по реализации алгоритмов и сценариев.
Реализованные алгоритмы
Автоматическое включение музыки в санузле
Человек заходит в санузел — начинает играть висящая там колонка Sonos Play One. Для этого колонка была через свободные функции привязана к вытяжке санузла. И это автовключение сделано отключаемым отдельной галочкой в интерфейсе EasyHome
Когда включается вытяжка (бит 7 ячейки 1940 становится 1), и галочка стоит (бит 7 ячейки 1260), то в ячейку 12223 (включение музыки) записывается 1. Когда вытяжка выключается, и галочка стоит, то музыка выключается.
Автоотключение камина
Когда человек уходит из дома и выключает весь свет в доме, электрокамин должен отключиться. Камин управляется с собственного пульта, поэтому после включения питания он не включится сам. Сделано так, что при выключении всего света в доме (в бит 101 записывается 16) реле питания камина отключается, но через 10 секунд включается обратно. Таймер реализован функцией vary tp.
Попеременное включение и отключение музыки
Нужно при длительном нажатии на кнопку включать музыку, а при повторном длительном нажатии включать музыку в нескольких комнатах.
Делаем мультисцену включенной музыки и мультисцену выключенной музыки. При длительном нажатии на кнопку если музыка включена (смотрим по одному помещению), запускаем мультисцену выключения, а если выключена, то мультисцену включения.
Попеременное включение тёплых полов
При запуске сценария «Возвращение домой» электрические тёплые полы должны включаться не все сразу, а сначала зоны 1-2-6, через 30 минут зона 8, еще через 30 минут зоны 3-4-7. В любой момент времени, если нажата кнопка выключения всей системы (выход из дома), все таймеры обнуляются и полы выключаются.
Реализуется через мультисцены с задержкой. И свободные функции, которые включают эти мультисцены.
Режим проветривания
Подойдёт для любого помещения: санузла, гардеробной, кладовой, чтобы воздух не застаивался. В течение 8 часов с момента включения режима каждые 30 минут вытяжка включается на 5 минут.
Реализуется через мультисцены с задержкой.
Автоматические приоткрывание штор
В заданное время шторы в спальне открываются на заданный процент, например, на 15%. Далее открываются каждые 5 минут ещё на 10%. Перед каждым движением шторы алгоритм проверяет, что штора всё ещё находится в том положении, в которое была приведена 5 минут назад, если нет (то есть, человек, вручную открыл или закрыл штору), то таймер дальше не работает.
Возможности создания собственных более-менее сложных алгоритмов работы в программном обеспечении EasyHome (для контроллеров EasyHomePLC и Beckhoff) достаточно широкие. Под собственными алгоритмами я понимаю не возможность простой ассоциации выключателя к светильнику или датчика движения с задержкой к светильнику или вытяжки санузла к движению в санузле, а индивидуальные алгоритмы, которых не настроить выставлением пары галочек. Например, вот удобная сводная таблица освещения, в которой настраивается базовая работа света: Строки — это группы освещения, из в системе может быть до 255. По каждой группе света мы задаём его работу по датчику движения (отдельно номер датчика и разрешение работы), до трёх выключателей (через лампы-клоны можно сделать больше выключателей), исключение группы из глобальных сцен света. В отдельных настройках указываются типы выключателей, время включения света по датчикам для разных групп датчиков, функция отключения забытого света. Это всё стандартные настройки, выставляемые просто галочками и номерами выключателей и датчиков. Как правило, эти настройки покрывают 90% задач пользователя. Как сделать что-то своё, не предусмотренное простыми настройками? В контроллере Fibaro Home Center (а также в Larnitech) есть достаточно удобный блочный редактор. Он описан в этой статье. Также есть редактор кода на языке Lua, можно запрограммировать вообще что угодно, имея базовые навыки программирования. В EasyHome всё сначала кажется несколько сложнее по написанию собственных алгоритмов, но если разобраться, то может оказаться даже удобнее. В EasyHome три инструмента для создания нестандартных алгоритмов: глобальные сцены, мультисцены и свободные функции. Глобальные сцены Глобальных сцен может быть 8. Например «Все дома», «Отпуск», «Все на работе», «Ночь» и ещё останется. Есть основная страница настроек сцен, вот такая: Мы можем переименовывать сцены, каждой глобальной сцене ассоциировать сцену освещения, отопления, инженерную и медиа сцену. Можно настроить текст смс, который надо отправить на контроллер для включения сцены. Можно сделать таймер запуска сцены по дням недели, настроить выключатель для выключения сцены. И привязать запуск сцены к событию: закат, рассвет (по датчику освещенности или астрономическому программному датчику), взятие или снятие охраны. Удобно — поставили дом на охрану, сразу включился соответствующий сценарий «Никого нет дома». Что делает каждая сцена в каждой комнате, выбирается в окне самой комнаты. Ставим свет в нужное состояние и нажимаем кнопку «Сохранить сцену» в левой части окна. В появляющемся меню выбираем название соответствующей сцены комнаты (это 4 кнопки сцен в окне комнаты) или глобальную сцену. Так получаем быстрый запуск любой сцены дома по кнопке или сценарию. Мультисцены Более сложные вещи прячутся в меню «Настройки ПЛК» — «Свободные функции». Мультисцена — это последовательность выполняемых контроллером действий при запуске этой сцены. Действия — это запись значений в различные ячейки памяти, то есть, выполнение вообще всего, чего угодно. Для запуска мультисцены надо создать в интерфейсе кнопку, которая будет в байт памяти 24 записывать номер нужной мультисцены, от 1 до 255. Например, нам надо при входе в дом выполнить множество действий: включить определённые группы света, розетки, музыку в каких-то помещениях. Глобальными сценами это делать не так удобно. В мультисценах ми пишем все действия в виде команд на запись значений в ячейки памяти. На скриншоте ниже строка начала мультисцены №4, потом запись значений в разные биты ячейки памяти 692 (это лампочка №10, уровень диммирования). Можно копировать строки, можно видеть номер последней запущенной мультисцены, можно делать задержку выполнения. Мультисцена заканчивается при появлении пустой строки или строки начала следующей мультисцены. Мультисцена может запускать локальные или глобальные сцены записью значений в ячейки 18 или 24. В мультисценах нет никаких логических операций над переменными или условий, только запись значений в ячейки. Свободные функции Вот здесь уже можно задавать любые условия, потому что в свободных функциях помимо записи значений в ячейки памяти есть ещё логические операции над ними с использованием специально отведённых под разные флаги ячеек. В каждой строчке есть два аргумента (ячейки памяти или константы), функция (И, ИЛИ, Сравнение, таймеры, задержки и много чего ещё) и выход — также ячейка памяти. Значения каждого аргумента видны здесь же. На свободные функции отведено 255 строк. Можно копировать строки. Разумеется, в свободных функциях мы можем запускать сцены и мультисцены. Советую перед редактированием свободных функций или мультисцен выключать кнопку их работы, чтобы в процессе редактирования ничего не запустить лишнего. А после окончания отдельной кнопкой сохранять настройки в память контроллера, иначе после перезапуска они сотрутся. Кстати, ещё у системы EasyHome есть открытый API. То есть, вы можете написать собственное отдельное приложение (в самом простом варианте — консольное) на любом удобном языке и под любую операционную систему, которое будет осуществлять то, что вам нужно. Один из моих клиентов, программист, так и поступил: реализовал всё, что ему было нужно от системы, написал своё приложение, так оказалось проще. Также систему можно связать с Apple Homekit или с Openhab, там есть свои возможности по реализации алгоритмов и сценариев. Реализованные алгоритмы Автоматическое включение музыки в санузле Человек заходит в санузел — начинает играть висящая там колонка Sonos Play One. Для этого колонка была через свободные функции привязана к вытяжке санузла. И это автовключение сделано отключаемым отдельной галочкой в интерфейсе EasyHome Когда включается вытяжка (бит 7 ячейки 1940 становится 1), и галочка стоит (бит 7 ячейки 1260), то в ячейку 12223 (включение музыки) записывается 1. Когда вытяжка выключается, и галочка стоит, то музыка выключается. Автоотключение камина Когда человек уходит из дома и выключает весь свет в доме, электрокамин должен отключиться. Камин управляется с собственного пульта, поэтому после включения питания он не включится сам. Сделано так, что при выключении всего света в доме (в бит 101 записывается 16) реле питания камина отключается, но через 10 секунд включается обратно. Таймер реализован функцией vary tp. Попеременное включение и отключение музыки Нужно при длительном нажатии на кнопку включать музыку, а при повторном длительном нажатии включать музыку в нескольких комнатах. Делаем мультисцену включенной музыки и мультисцену выключенной музыки. При длительном нажатии на кнопку если музыка включена (смотрим по одному помещению), запускаем мультисцену выключения, а если выключена, то мультисцену включения. Попеременное включение тёплых полов При запуске сценария «Возвращение домой» электрические тёплые полы должны включаться не все сразу, а сначала зоны 1-2-6, через 30 минут зона 8, еще через 30 минут зоны 3-4-7. В любой момент времени, если нажата кнопка выключения всей системы (выход из дома), все таймеры обнуляются и полы выключаются. Реализуется через мультисцены с задержкой. И свободные функции, которые включают эти мультисцены. Режим проветривания Подойдёт для любого помещения: санузла, гардеробной, кладовой, чтобы воздух не застаивался. В течение 8 часов с момента включения режима каждые 30 минут вытяжка включается на 5 минут. Реализуется через мультисцены с задержкой. Автоматические приоткрывание штор В заданное время шторы в спальне открываются на заданный процент, например, на 15%. Далее открываются каждые 5 минут ещё на 10%. Перед каждым движением шторы алгоритм проверяет, что штора всё ещё находится в том положении, в которое была приведена 5 минут назад, если нет (то есть, человек, вручную открыл или закрыл штору), то таймер дальше не работает.