Открытая платформа для создания заботливой квартиры

Когда мы уходим из дома или ложимся спать, желательно проверить закрыты ли окна. Сделать это быстро можно с помощью одного взгляда на экран телефона. Для реализации этого сценария используется датчик открытия окна

Итак, вам потребуются следующие компоненты:

Название Назначение Цена, руб.
BLE CC41A Радиомодуль Bluetooth LE 140
Arduino Pro Mini Микроконтроллер для управления автоматизацией 135
Reed-Relay-Switch Герконовое реле 10

Датчик открытия окна работает от одной батарейки CR-2032 (3.3v).

Умный датчик движения

Программирование

О том как настроить 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