Статьи на сайте о том как подключить электрокарнизы и шторы с электроприводом к контролеру для автоматизации Wiren Board:
Беспроводное подключение штор Akko и Dooya к контроллеру Wiren Board.
В предыдущей статье было показано, как выполнить беспроводное подключение эклектрокарнизов Akko и Dooya к контролеру Wiren Board.
Сегодня мы посмотрим как подключить электрокарниз Somfy Glydea Ultra 60e RTS и радиореле Somfy Centralis Indoor RTS VB для жалюзи к универсальному контролеру для автоматизации Wiren Board 6. Подключать будем при помощи радиомодуля RF-Blinds. Этот радиомодуль или его аналог RF-Blinds модем могут стать отличной альтернативой Somfy RTS Transmitter (и отчасти TaHoma® DIN Rail RTS module) для радиоуправления шторами от умного дома. Все нижесказанное касается подключения и управления всеми устройствами Somfy RTS: жалюзи, римские шторы, рулонные и не только.
Начнём с того, что подключимся к Wiren Board по ssh. Сделать это можно по-разному. Вы можете подключиться привычным для себя способом. Под Windows 10 я подключаюсь либо из консоли VS Code (если мне нужно редактировать и отлаживать файлы на удаленном сервере), либо, как сейчас, запустив PowerShell:
В локальной сети Wiren Board у меня имеет адрес 192.168.31.79. У вас будет свой.
После ввода пароля, попадаем в консоль Wiren Board:
Первое, что нам нужно сделать — определить имя порта, к которому будет подключен RF-Blinds. Сейчас радиомодуль ещё не подключен. Посмотрим на устройства, уже подключенные к USB Wiren Board дав команду:
ls /dev/ttyU*
У меня нет устройств, подключенных по USB к Wiren Board.
Ответ:
ls: cannot access ‘/dev/ttyU*’: No such file or directory
Если у вас есть подключенные устройства — вам выдаст их список. Нам этот список нужен для того, чтобы найти новое устройство после того, как мы его подключим.
Подключаем RF-Blinds и выполняем команду ещё раз:
ls /dev/ttyU*
Ответ:
/dev/ttyUSB0
Если у вас были подключены другие устройства USB, вы увидите новое. Запомните его адрес и в дальнейшем вместо ttyUSB0 используйте свой.
Посмотрим текущие настройки порта командой:
stty -F /dev/ttyUSB0
Ответ:
speed 9600 baud;
line = 0;-brkint -imaxbel
Видим, что скорость порта — 9600. Нам нужно 115200. Меняем командой:
stty -F /dev/ttyUSB0 115200
И на всякий случай убеждаемся в том, что скорость обмена изменилась, снова дав команду:
stty -F /dev/ttyUSB0
В ответ должны увидеть:
speed 115200 baud; line = 0;
-brkint -imaxbel
Подключение RF-Blinds к контролеру Wiren Board мы выполнили. Сейчас сделаем привязку радиомодуля к мотору электрокарниза Glydea Ultra 60e RTS.
Замечу, что прежде, чем начинать привязку радиомодуля к вашим устройствам, рекомендуется сменить базовый адрес RF-Blinds. На всякий случай. Вдруг у соседей окажется такое же устройство. Как это сделать, описано в документации (даже видео есть).
Чтобы привязать RF-Blinds к мотору электрокарниза, нужно снять заднюю пластиковую крышку на моторе и чем-то тонким (зубочистка или спичка вполне подойдут) нажать кнопку привязки радиопульта и удержать её в нажатом состоянии несколько секунд. Мотор должен отреагировать поворотом вала. Затем, уже в консоли Wiren Board, дадим команду:
echo «smf_prog 1» > /dev/ttyUSB0
При успешной привязке мы заметим реакцию мотора. В памяти RF-Blinds электрокарниз Glydea Ultra 60e RTS будет сохранен со смещением 1.
Затем выполним привязку реле. Делается это похожим образом. На реле нужно нажать кнопку «PROG», подержать её несколько секунд, до тех пор, пока реле не щёлкнет пару раз и дать команду:
echo «smf_prog 2» > /dev/ttyUSB0
Реле будет иметь номер 2.
Работу в консоли мы закончили, закрываем её.
Далее, открываем веб-интерфейс Wiren Board в браузере:
Никаких устройств к контролеру у меня не подключено. Моя вкладка Devices выглядит так:
Отмечаем, что радиомодуль RF-Blinds на вкладке не отображается.
Чтобы получить возможность вносить изменения, нужно изменить уровень доступа к веб-интерфейсу на уровень «администратор». Для этого переходим на вкладку Settings -> Change access level:
После этого на вкладку Rules:
Из скриптов на этой вкладке у меня отображается один только файл – rules.js. Этот файл у меня в начальном состоянии т.е. пустой. Для каждого устройства обычно я создаю отдельный файл. Мне так удобней. Мы хотим подключить два устройства – мотор для горизонтальных штор и реле. Поэтому файлов будет два. Первый я назову somfy_curtains.js.
Содержимое файла somfy_curtains.js:
/* Создаём виртуальное устройство к которому будем обращаться
** по имени rf-blinds_smf,
** которое будет отображаться в веб-интерфейсе как Somfy Curtains,
** с тремя кнопками:
** 1 - open;
** 2 - stop;
** 3 - close;
*/
defineVirtualDevice("rf-blinds_smf", {
title: "Somfy Curtains",
cells: {
open: {
type: "pushbutton",
order: 1
},
stop: {
type: "pushbutton",
order: 2
},
close: {
type: "pushbutton",
order: 3
}
}
});
/* Устанавливаем параметры последовательного порта ttyUSB0:
** скорость обмена - 115200;
** стоповый бит - 1;
** контроль четности - нет;
** количество бит данных - 8;
** Если у вас несколько файлов, обращающихся к RF-Blinds,
** например, есть по отдельному файлу для каждого мотора и/или радиореле,
** настройку порта можно оставить только в одном файле.
** В других можно закомментировать.
*/
runShellCommand('stty -F /dev/ttyUSB0 115200 -cstopb -parenb cs8');
// Каждой кнопоке виртуального устройства зададим действие:
defineRule("Somfy_open_1", {
whenChanged: "rf-blinds_smf/open",
then: function () {
runShellCommand ('echo "smf_up 1,10" > /dev/ttyUSB0');
}
});
defineRule("Somfy_stop_1", {
whenChanged: "rf-blinds_smf/stop",
then: function () {
runShellCommand ('echo "smf_my 1" > /dev/ttyUSB0');
}
});
defineRule("Somfy_close_1", {
whenChanged: "rf-blinds_smf/close",
then: function () {
runShellCommand ('echo "smf_down 1,10" > /dev/ttyUSB0');
}
});
В файле есть подробные комментарии, поясняющие каждое действие.
Второй файл для реле. Он немного отличается. Этот же файл я рекомендую использовать с моторами для жалюзи – там есть пара дополнительных кнопок.
Содержимое файла: somfy_blinds.js:
// Адрес порта теперь указан только в одном месте:
rf_blinds = '/dev/ttyUSB0'
/* Создаём виртуальное устройство к которому будем обращаться
** по имени rf-blinds_smf_bl,
** которое будет отображаться в веб-интерфейсе как Somfy Blinds,
** с пятью кнопками:
** 1 - open;
** 2 - open step;
** 3 - stop;
** 4 - close step;
** 5 - close;
*/
defineVirtualDevice("rf-blinds_smf_bl", {
title: "Somfy Blinds",
cells: {
open: {
type: "pushbutton",
order: 1
},
open_step: {
type: "pushbutton",
order: 2
},
stop: {
type: "pushbutton",
order: 3
},
close_step: {
type: "pushbutton",
order: 4
},
close: {
type: "pushbutton",
order: 5
}
}
});
/* Устанавливаем параметры последовательного порта rf_blinds:
** скорость обмена - 115200;
** стоповый бит - 1;
** контроль четности - нет;
** количество бит данных - 8;
** Если у вас несколько файлов, обращающихся к RF-Blinds,
** например, есть по отдельному файлу для каждого мотора и/или радиореле,
** настройку порта можно оставить только в одном файле.
** В других можно закомментировать.
*/
runShellCommand('stty -F ' + rf_blinds + ' 115200 -cstopb -parenb cs8');
// Каждой кнопоке виртуального устройства зададим действие:
defineRule("Somfy_Blinds_open_1", {
whenChanged: "rf-blinds_smf_bl/open",
then: function () {
runShellCommand ('echo "smf_up 2,10" > ' + rf_blinds);
}
});
defineRule("Somfy_Blinds_open_step_1", {
whenChanged: "rf-blinds_smf_bl/open_step",
then: function () {
runShellCommand ('echo "smf_up 2" > ' + rf_blinds);
}
});
defineRule("Somfy_Blinds_stop_1", {
whenChanged: "rf-blinds_smf_bl/stop",
then: function () {
runShellCommand ('echo "smf_my 2" > ' + rf_blinds);
}
});
defineRule("Somfy_Blinds_close_step_1", {
whenChanged: "rf-blinds_smf_bl/close_step",
then: function () {
runShellCommand ('echo "smf_down 2" > ' + rf_blinds);
}
});
defineRule("Somfy_Blinds_close_1", {
whenChanged: "rf-blinds_smf_bl/close",
then: function () {
runShellCommand ('echo "smf_down 2,10" > ' + rf_blinds);
}
});
Не забудьте нажать кнопку Save в веб-интерфейсе для каждого файла, чтобы содержимое файлов сохранилось.
Перейдя на вкладку Devices видим, что у нас появилось два новых устройства:
Чтобы обезопасить себя от случайного внесения изменений в веб-интерфейсе Waren Board рекомендуется вернуть уровень доступа в состояние «пользователь»: