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

Чтобы не пропустить момент пробуждения вашего малыша, совсем необязательно покупать дорогую радионяню. Вы легко можете собрать аналог из стандартных модулей и микрофона, итак, вам потребуется

Название Назначение Цена, руб.
BLE CC41-A Радиомодуль Bluetooth LE 150
Arduino Pro Mini Микроконтроллер для детектирования плача 135
Микрофон Чувствительный микрофон 60

Запитать устройство можно от двух батареек AA. Разместить компоненты можно внутри или снаружи какой-то игрушки, чтобы не смущать спящего малыша.

Радионяня своими руками

Программируем микроконтроллер

О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеку CC41A и добавить в Arduino IDE через меню Sketch - Install library.

#include <cc41a.h>
#include <LowPower.h>

#define SENSOR_PIN A3
#define MAX_NOISE_LEVEL 600
#define NOISE_DURATION_SECS 3

CC41A ble(7, 6, 8); // RX, TX, Reset

int noiseTimeline[12] = {0,0,0,0,0,0,0,0,0,0,0,0};
int mode = 0;
int waitForReset = 0;

void setup() {
  ble.configure("Noise-1");
}

void loop() 
{
  // fall a sleep
  LowPower.powerDown(SLEEP_250MS, ADC_OFF, BOD_OFF);

  delay(50);
  pinMode(SENSOR_PIN, INPUT);
  int sensorValue = analogRead(SENSOR_PIN);

  // store noise history
  for( int i = sizeof(noiseTimeline) / sizeof(int); i > 1; i-- ) {
    noiseTimeline[i - 1] = noiseTimeline[i - 2];
  }
  noiseTimeline[0] = sensorValue > MAX_NOISE_LEVEL ? 1 : 0;

  // calculate times of noise detected
  int noiseTimes = 0;
  for( int i = 0; i < sizeof(noiseTimeline) / sizeof(int); i++ ) {
    noiseTimes += noiseTimeline[i];
  }

  switch( mode ) {
    case 0: // waiting for noise
      if ( noiseTimes >= NOISE_DURATION_SECS ) {
        ble.major(1);
        mode = 1;
        waitForReset = 30;
      }
      break;
    case 1: // waiting for reset
      if ( --waitForReset < 1 ) {
        ble.major(0);
        mode = 0;
      }
      break;  
  }
}

Собираем по схеме

Схема радионяни своими руками

Программируем HASS

Файл: /config/configuration.yaml

binary_sensor:
  - platform: cutecare
    name: Noise sensor
    mac: 00:15:84:00:6F:40

notify:
  - name: baby_monitor
    platform: pushbullet
    api_key: YOUR_API_KEY

alert:
  baby_monitor:
    name: Notify when baby is crying
    entity_id: binary_sensor.noise_sensor
    repeat: 20
    notifiers:
      - baby_monitor

Для получения уведомлений необходимо зарегистрироваться в сервисе Pushbullet, установить приложение на телефон и в конфигурации HASS значение YOUR_API_KEY заменить на ключ, который можно получить в настройках сервиса.