Открытая платформа для создания заботливой квартиры
Когда мы уходим из дома или ложимся спать, желательно проверить закрыты ли окна. Сделать это быстро можно с помощью одного взгляда на экран телефона. Для реализации этого сценария используется датчик открытия окна
Итак, вам потребуются следующие компоненты:
Название | Назначение | Цена, руб. |
---|---|---|
BLE CC41A | Радиомодуль Bluetooth LE | 140 |
Arduino Pro Mini | Микроконтроллер для управления автоматизацией | 135 |
Reed-Relay-Switch | Герконовое реле | 10 |
Датчик открытия окна работает от одной батарейки CR-2032 (3.3v). Либо можно использовать один аккумулятор AA совместно с DC-DC преобразователем до 3.3В. В таком варианте не придется покупать батарейки.
Программирование
О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеки и добавить их в Arduino IDE через меню Sketch - Install library:
#include <cc41a.h>
#include <LowPower.h>
#define RELEY_PIN 3
#define BLE_VCC_PIN 10
#define BLE_RX 8
#define BLE_TX 7
#define BLE_RESET 9
volatile byte releyStateChangedFlag = 0;
volatile byte releyState = LOW;
void setup() {
CC41A ble(BLE_RX, BLE_TX, BLE_RESET);
ble.configure("Window-1");
pinMode(RELEY_PIN, INPUT_PULLUP);
waitForReley();
attachInterrupt(digitalPinToInterrupt(RELEY_PIN), waitForReley, CHANGE);
}
void loop() {
if ( releyStateChangedFlag > 0 ) {
releyStateChangedFlag = 0;
changeState(releyState);
delay(50);
}
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
void waitForReley() {
releyStateChangedFlag = 1;
releyState = digitalRead(RELEY_PIN);
}
void changeState( byte state )
{
pinMode(BLE_VCC_PIN, OUTPUT);
digitalWrite(BLE_VCC_PIN, HIGH);
delay(1000);
CC41A ble(BLE_RX, BLE_TX, BLE_RESET);
ble.setData(0, state, true);
for( int i = 0; i < 3; i++ ) {
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
digitalWrite(BLE_VCC_PIN, LOW);
pinMode(BLE_VCC_PIN, INPUT);
pinMode(BLE_RX, INPUT);
pinMode(BLE_TX, INPUT);
}
Схема устройства
Настройка HASS
Файл: /config/configuration.yaml
binary_sensor:
- platform: cutecare
name: Window sensor
mac: 00:15:80:91:3E:0E
type: cc41a
Файл: /config/customize.yaml
binary_sensor.window_sensor:
friendly_name: Окно
Файл: /config/groups.yaml
default_view:
view: yes
icon: mdi:home
entities:
- group.hall
- group.kitchen
- group.bedroom
kitchen:
name: Кухня
entities:
- binary_sensor.window_sensor