Благодарности: денежное общество и мойка авто

Smart Logic System Gateway (SLS), автоматизация с помощью скриптов

Использую для автоматизации Smart Logic System Gateway (SLS), связь между выключателями (пультами) и исполнительными устройствами (реле, димерами) можно делать разными способами. В официальной инструкции хорошо расписано как делать локальные автоматизации через SimpleBind, но на мой взгляд это не очень удобно

Вот такой код для двух клавишного выключателя Xiaomi:

left, Dimmer04, state_l1, TOGGLE; right, Dimmer04, state_l2, TOGGLE; left_double, Curtain03, position, 100; right_double, Curtain03, position, 0; left_double, Curtain04, position, 100; right_double, Curtain04, position, 0; left_double, Curtain05, position, 100; right_double, Curtain05, position, 0;

при редактировании выглядит так:

кроме того в автоматизации через SimpleBind невозможно остановить при движении мотор рольставни на ту же кнопку, то есть для останова при неполном открытии/закрытии нужно использовать ещё одно событие выключателя, так же невозможно одной кнопкой открывать если закрыты и закрывать если открыты рольставни. Все эти возможности мы реализуем через lua скрипты

Кто знает другие языки программирования понять lua не составит труда, ну и не стоит обращать внимания на используемые мной конструкции if — then — много elseif поскольку в lua отсутствует switch, можно было написать функцию switch, но мне было лень писать ещё одну функцию (может потом и напишу для красивого кода)

В каждом выключателе в SB rule свойства action пишем название скрипта, у меня button_click.lua

заходим в файлы и создаем 2 файла, один будет с функциями, второй собственно с самими правилами, я создал myfunction.lua и button_click.lua

файл myfunction.lua имеет 3 функции и имеет следующее содержание:

теперь подключив этот файл в другой файл скрипта нам будут доступны 3 функции:

Curtain_down(«имя модуля Curtain») — закрытие, при нажатии когда в движении  — останов

Curtain_up(«имя модуля Curtain») — открытие, при нажатии когда в движении  — останов

Curtain_revers(«имя модуля Curtain») — если закрыты то открытие, если в движении то останов, если не закрыты, то закрыть.

теперь будем редактировать файл с правилами button_click.lua

теперь всю автоматизацию добавляем в этот файл для всех выключателей.

UPD:

более изящный вариант:

файл myfunction.lua имеет одну функцию

файл button_click.lua будет выглядеть следующим образом:

button_click.lua делает то же самое что и в верхнем примере, но теперь более изящный код и удобнее добавлять новые автоматизации, можно ещё модернизировать код, определять тип по наличию пятого параметра, тем самым убрать третий параметр «тип»

Поделиться в соц. сетях

Опубликовать в Facebook
Опубликовать в Google Buzz
Опубликовать в Google Plus
Опубликовать в LiveJournal
Опубликовать в Мой Мир
Опубликовать в Одноклассники
Опубликовать в Яндекс