Здравствуйте, меня зовут Артём и я увлекаюсь автоматизацией своей квартиры.

Я считаю, что умный дом должен быть ненавязчивым и не требовать постоянного участия человека (нажать выключатель, просить что-то голосом или тыкать в приложении). Вы просто живёте свою обычную жизнь, а дом подстраивается под неё. 

Например, когда ложитесь спать освещение будет включаться с минимумом яркости, громкость медиа устройств уменьшится, а термостат уменьшит температуру. И напротив, при пробуждении всё приходит в норму. 

Сегодня я хочу поделиться как отслеживаю что я и супруга проснулись.
Будет немного diy ;)

С виду это обычная кровать (ну и немного проводов), но именно с помощью неё происходит вся магия - в ножках датчики веса.
С виду это обычная кровать (ну и немного проводов), но именно с помощью неё происходит вся магия - в ножках датчики веса.

Нам понадобится: паяльник, микросхема hx711, 4 датчика веса, esp32.

Из датчиков веса нужно собрать мост Уинстона.
Из датчиков веса нужно собрать мост Уинстона.
Припаиваем мост Уинстона к микроконтроллеру.
Припаиваем мост Уинстона к микроконтроллеру.
Тестируем собранную систему. Надписи на датчиках Л В или Л Н - левая верхняя, левая нижняя. Для правых аналогично.
Тестируем собранную систему. Надписи на датчиках Л В или Л Н - левая верхняя, левая нижняя. Для правых аналогично.
Прикидываем расстояние до ножек кровати (до пола).
Прикидываем расстояние до ножек кровати (до пола).
Наращиваем провода с помощью витой пары.
Наращиваем провода с помощью витой пары.
Печатаем корпус на 3д принтере для схем.
Печатаем корпус на 3д принтере для схем.
Монтируем всё это дело.
Монтируем всё это дело.
Печатаем проставку между датчиком и полом.
Печатаем проставку между датчиком и полом.

Далее пишем прошивку для esphome: 

substitutions:
name: esphome-web-acb314
friendly_name: ESPHome bed sensor

esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
platformio_options:
board_build.flash_mode: dio

esp32:
board: esp32-c3-devkitm-1
framework:
type: arduino

api:

ota:
platform: esphome

wifi:
ssid: "Имя Вашей wi-fi сети"
password: "пароль от wi-fi"
ap:
ssid: "ESPHome-Setup"
password: "setup1234"

sensor:
- platform: hx711
id: hx711_sensor
name: "HX711 Value"
dout_pin: GPIO3
clk_pin: GPIO4
gain: 128
update_interval: 5s
unit_of_measurement: "kg"

Значения, передаваемые датчиком. Я так и не разобрался как считывать достоверный вес.
Значения, передаваемые датчиком. Я так и не разобрался как считывать достоверный вес.

Методом тыка устанавливаем показания датчика при свободной кровати, когда один и два человека. На основе этих значений создаём сенсор для home assistant: 

sensor:
- platform: template
sensors:
bed_state:
friendly_name: "Кровать состояние"
unique_id: bed_state
value_template: >
{% set value = states('sensor.esphome_web_bed_hx711_value') | float %}
{% if value >= -500000 and value < -400000 %}
Свободна
{% elif value >= -723000 and value < -500000 %}
Коты
{% elif value >= -2000000 and value < -723000 %}
Один человек
{% elif value <= -2000000 %}
Два человека
{% else %}
Неизвестно
{% endif %}

binary_sensor:
- platform: template
sensors:
bed_occupied:
friendly_name: "Кровать занята"
unique_id: bed_occupied
value_template: >
{% set value = states('sensor.esphome_web_bed_hx711_value') | float %}
{{ value < -723000 }}

По итогу имеем информацию о занятости кровати.
По итогу имеем информацию о занятости кровати.

По итогу мне обошлось это менее чем в 1000 рублей, зато потенциал для автоматизации огромен. Например, если пришло время открыть шторы по заданному времени, а я сплю на внезапном выходном, то откроются они только после того как кровать будет свободна.

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