Решился балкон переделать в рабочий кабинет. Фотографий ДО и ПОСЛЕ не будет, но я расскажу об автоматизации, которую там устроил. С самого начала планировал автоматическое управление теплым полом и освещением, а уже по окончанию ремонта решил добавить еще и сенсорную панель управления на стену. Устройства выбрал с технологией Z-Wave, но в процессе использования оказалось, что меня не устраивает функционал управления освещением. Пришлось разработать свой собственный выключатель на базе платы Z-Uno 2 и твердотельных реле Сrydom.
Мне очень нравится серия выключателей Gira E3 за их лаконичный дизайн и качественное исполнение, также она входит в программу System 55, что дает совместимость с большим количеством устройств для умного дома. Я выбрал двойную белую рамку и одинарный выключатель.
Среди Z-Wave термостатов теплого пола есть термостат Heatit Z-TRM3 совместимый с рамками программы Gira System 55. В использовании термостат мне очень понравился, сенсорный экран и всего 3 кнопки: вверх/ок/вниз, даже ребенок справится. Меня он полностью устраивает!
На балконе 2 зоны освещения, это встроенные светильники на потолке и лампа над рабочим местом. Но управлять ими я хотел с одного выключателя по следующему сценарию:
- По одинарному клику вкл/выкл светильников
- По двойному клику вкл/выкл лампы
- По долгому удержание вкл/выкл лампы и светильников
В наличии у меня был двухканальный Z-Wave модуль реле Philio PHI_PAN04. К нему я подключил одинарный звонковый выключатель, который одновременно включал/выключал лампу и светильники, для раздельного управления использовался телефон. К сожалению этот модуль нельзя было настроить, как я хотел на одинарные и двойные нажатия, можно было только управлять нагрузкой с двух выключателей. После нескольких недель неудобств я решился на разработку собственного выключателя с бесшумными твердотельными реле и Z-Wave чипом 7-го поколения.
Встраиваемое Z-Wave двойное реле Philio PAN4 с сухими контактами
Недавно вышла новая Z-Wave плата Z-Uno 2 для быстрой разработки устройств в среде Arduino IDE (теперь еще и VS Code поддерживается). Новая Z-Uno 2 основана на Z-Wave чипе 7 поколения ZGM130S, а это CortexM4F, 39 МГц и куча периферии, но мне нужно было только 4 GPIO.
Для разработки собственного выключателя потребовалось немного деталей «Lego»:
- Z-Wave плата Z-Uno G2
- Блок питания Hi-Link 3.3 В
- Пара твердотельных реле Сrydom
- Кусок макетки
Аккуратно спаяв все компоненты на макетке получился компактный модуль, который точно влезает в подрозетник за выключатель. Перед установкой всю макетку обмотал изоляцией.
Z-Uno на Z-Wave чипе 700 серии, блок питания Hi-Link, два твердотельных реле
Запаял блок питания Hi-Link и твердотельные реле Crydom на макетке
Писать код для такого простого устройства совсем не сложно, для ознакомления оставлю его в спойлере. Можно вообще не писать код и воспользоваться графическим конфигуратором .
Код двойного выключателя для Z-Uno 2
#include "ZUNO_Buttons.h"
#define RELAY_1 0
#define RELAY_2 1
#define BTN_PIN 23
// Global variables
byte relay1State = 0;
byte relay2State = 0;
// Create btn
PinBtn btn;
// Z-Wave channels
ZUNO_SETUP_CHANNELS(
ZUNO_SWITCH_BINARY(relay1Getter, relay1Setter),
ZUNO_SWITCH_BINARY(relay2Getter, relay2Setter)
);
void setup() {
pinMode(RELAY_1, OUTPUT);
pinMode(RELAY_2, OUTPUT);
pinMode(BTN_PIN, INPUT_PULLUP);
// Add button with parameters
ZunoBtnButtonInit_t initButton = BTN_BUTTON_INIT_DEFAULT;
btn.addButton(BTN_PIN, &initButton);
}
void loop() {
digitalWrite(RELAY_1, relay1State ? HIGH : LOW);
digitalWrite(RELAY_2, relay2State ? HIGH : LOW);
if (btn.isSingleClick(BTN_PIN) || btn.isLongClick(BTN_PIN)) {
relay1State = !relay1State;
zunoSendReport(1);
}
else if (btn.isDoubleClick(BTN_PIN)) {
relay2State = !relay2State;
zunoSendReport(2);
}
}
// Getters and setters
void relay1Setter(byte value) {
relay1State = value;
}
byte relay1Getter() {
return relay1State;
}
void relay2Setter(byte value) {
relay2State = value;
}
byte relay2Getter() {
return relay2State;
}
Часть управления реле сгенерировал графический конфигуратор, а обработку кнопок по моему желанию я написал следую документации.
Запихал модуль в подрозетник, подключил питание и выключатель. Подрозетник в этом месте специально сделан глубоким — 80 мм. В 60 мм тоже можно было бы запихнуть, а в 40 мм вообще ни один радио модуль не влезет с выключателем.
Во время тестирования выяснилось, что с твердотельными реле не все светодиодные лампы работают одинаково хорошо, оно и понятно, через транзисторы течет небольшой ток на лампу и она вспыхивает. В таком случае нужно использовать либо диммируемые лампы, либо на которых указано, что они работают с выключателями с подсветкой. У меня диммируемая лампа из IKEA.
Gira E3 System 55 в интерьере
Уровень комфорта повышен, свет под контролем и включение/выключение совершенно бесшумные.
А в стену я встроил 7 дюймовый сенсорный дисплей Nextion NX8048P070. Управляет им ESP32 и держит связь с контроллером умного дома на базе Raspberry Pi, но это уже совсем другая история, если будет интересно, расскажу о ней в следующей статье.
P/s ещё немного картинок:
Nextion NX8048P070
ESP32 + Nextion NX8048P070
ESP32 + Nextion NX8048P070