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

Магазинные увлажнители обладают рядом минусов: а) дорогие, б) сложно устроены. Последнее особенно вредно влияет на здоровье, поскольку в полостях, трубках и других потаенных местах заводятся вредные бактерии, которыми мы потом дышим... Увлажнитель можно периодически промывать, однако, как убедиться в том, что все вредители были вымыты?

Правильный ответ - значительно упростить конструкцию, при этом мы получаем такие преимущества: 1. вместо 3 000 руб. вы тратите 500 руб. 2. поскольку это недорого, то увлажнителей можно поставить хоть по три штуки в каждую комнату. 3. за ним не нужно ухаживать, и так все видно, где там и сколько плесени или грибов завелось - меняем эту часть и спим спокойно. 4. конструкция индивидуальная - хочешь на стол ставь, хочешь на люстру (или карниз) вешай.

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

Название Назначение Цена, руб.
BLE JDY-08 Радиомодуль Bluetooth LE 140
Arduino Pro Mini Микроконтроллер для управления автоматизацией 135
Ультразвуковой увлажнитель 250
DHT-22 Датчик температуры и влажности 200
G3MB-202P Твердотельное реле 60

Для питания испарителя потребуется минимум 12В (можно и больше). Для этих целей можно использовать отдельный блок питания, либо батарейку на 9В с повышающим преобразователем до 12В.

Программирование для HASS

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

#include <jdy8.h>
#include <LowPower.h>
#include "DHT.h"

#define BLE_RX 8
#define BLE_TX 9
#define BLE_RESET 7
#define BLE_IO1 5
#define RELEY_PIN 4
#define DHT_DATA_PIN 6

long lastMilliseconds = 0;
float lastHumidity = 0;

void setup() {
  JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
  ble.configure("Humidifier-1");
  attachInterrupt(digitalPinToInterrupt(BLE_IO1), waitForButton, CHANGE);
}

void loop() 
{
  if ( digitalRead(BLE_IO1) == HIGH ) {
    pinMode(RELEY_PIN, OUTPUT);
    digitalWrite(RELEY_PIN, HIGH);
    JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
    ble.setIOPin(1, 0, true);
    digitalWrite(RELEY_PIN, LOW);
  }

  if ( millis() - lastMilliseconds > 60000 ) {
    lastMilliseconds = millis();

    DHT dht;
    dht.setup(DHT_DATA_PIN, DHT::AM2302);
    float humidity = dht.getHumidity();

    if ( humidity != lastHumidity ) {
      lastHumidity = humidity;

      JDY8 ble(BLE_RX, BLE_TX, BLE_RESET);
      ble.humidity(lastHumidity, true);
    }
  }

  LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}

void waitForButton() {
}

Схема устройства

схема

Настройка HASS

Файл: /config/configuration.yaml

light:
  - platform: cutecare
    mac: <укажите тут адрес вашего BLE-модуля>
    name: humidifier
    type: jdy8
    pin: 1
sensor:
  - platform: cutecare
    mac: <укажите тут адрес вашего BLE-модуля>
    monitored_conditions:
      - humidity
    name: humidifier

Файл: /config/customize.yaml

sensor.humidifier:
  friendly_name: Уровень влажности
light.humidifier:
  friendly_name: Увлажнитель воздуха