Открытая платформа для создания заботливой квартиры
Датчик влажности почвы самое простое, но и очень полезное устройство, с которого вы можете начать знакомство с домашней автоматизацией. Умный датчик влажности в составе умной квартиры напомнит о необходимости полить растение, с учетом его влаголюбивости или засухоустойчивости, например, отправив сообщение на телефон.
Итак, компоненты умного датчика влажности почвы:
Название | Назначение | Цена, руб. |
---|---|---|
BLE CC41-A | Радиомодуль Bluetooth LE | 150 |
Arduino Pro Mini 3V | Микроконтроллер для считывания уровня влажности почвы и отправки значения в Home Assistant | 135 |
YL-38 | Датчик влажности почвы | 40 |
Используйте свободные 3D-модели, чтобы напечатать забавный корпус для вашего датчика, например, такой как этот:
Все компоненты устройства легко могут разместиться внутри такой лягушки:
В режиме ожидания устройство потребляет около 100 мкА, что достигается удалением светодиодов и стабилизатора с платы микроконтроллера. В режиме считывания показаний и конфигурирования BLE-модуля, устройство потребляет 6 мА, в течение 1 сек и затем опять переходит в режим с низким энергопотреблением.
Программирование
О том как настроить Arduino IDE и подключить микроконтроллер к ПК читайте в этой коротенькой инструкции. Для компиляции программы необходимо загрузить библиотеки и добавить их в Arduino IDE через меню Sketch - Install library:
#include <cc41a.h>
#include <LowPower.h>
#define SENSOR_PIN A1
#define SENSOR_VCC 6
#define WAIT_SECONDS 3600
CC41A ble(11, 7, 10); // RX, TX, Reset
int secondsPassed = WAIT_SECONDS;
int lastValue = 0;
void setup() {
ble.configure("Frog-1");
}
void loop()
{
if ( secondsPassed >= WAIT_SECONDS )
{
secondsPassed = 0;
pinMode(SENSOR_VCC, OUTPUT);
pinMode(SENSOR_PIN, INPUT);
digitalWrite(SENSOR_VCC, HIGH);
delay(200);
int sensorValue = analogRead(SENSOR_PIN);
digitalWrite(SENSOR_VCC, LOW);
pinMode(SENSOR_PIN, OUTPUT);
if ( lastValue != sensorValue ) {
lastValue = sensorValue;
ble.major(sensorValue);
}
}
// fall a sleep
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
secondsPassed += 8;
}
Схема устройства
Настройка HASS
Файл: /config/configuration.yaml
sensor:
- platform: cutecare
mac: <укажите тут адрес вашего BLE-модуля>
scan_interval: 3600
monitored_conditions:
- moisture
name: plant1
Файл: /config/customize.yaml
sensor.plant1_moisture:
entity_picture: http://www.plantsguru.com/image/cache/catalog/foliage%20plants/pg-ficus-elastica-600x548.jpg
friendly_name: Маленький фикус
Файл: /config/groups.yaml
default_view:
view: yes
icon: mdi:home
entities:
- group.hall
hall:
name: Большая комната
entities:
- sensor.plant1_moisture
После перезагрузки HASS, со временем, вы получите примерно такой график:
Автоматизация
Самый простой способ отправить уведомление о необходимости полить растение - отправить письмо на электронный адрес. Есть масса других вариантов, например, push-уведомления на телефоне, но в этом случае потребуется установить доп. ПО на телефон.
Файл: /config/configuration.yaml
binary_sensor:
- platform: template
sensors:
moisture_low:
value_template: '{{ states.sensor.plant1_moisture.state|int < 20 }}'
friendly_name: 'Необходимо полить растение'
notify:
- name: email
platform: smtp
server: smtp.gmail.com
port: 587
timeout: 15
sender: youremail@gmail.com
encryption: starttls
username: youremail@gmail.com
password: *********
recipient:
- youremail@gmail.com
sender_name: Умная квартира
alert:
low_moisture:
name: "Нужно полить растение"
entity_id: binary_sensor.moisture_low
repeat: 180
notifiers:
- email
Этими настройками мы создаем бинарный сенсор, который реагирует на достижение порогового значения влажности, измеряемого умным сенсором plant1_moisture. Также создаем канал уведомлений по почте с названием email. Правило "low_moisture" срабатывает при уровне влажности почвы < 20% и отправляет об этом уведомление на почту.