Мой умный дом 2020: камера, голос, экранчики, кофеварка, сигарета с WiFi, умная банка

10.01.2021, 09:30 - 15 мин читать

Дом, поделенный на зоны


Что было год назад - Мой умный дом 2019: Sonoff, ESP8266, MQTT, Node-red, Алиса

Способы управления 🔗

  • Автоматика - идеальный вариант, когда делается само
  • Голос - доступно в любом месте квартиры, без рук
  • Выключатели - приклеиваются на скотч или просто кладутся в подходящих местах
  • Радиопульты - пульт 4х3 см удобно положить в карман домашней одежды
  • Приложение - доступно на ПК и на телефоне
  • Telegram - можно писать Алисе через Telegram, она передаст умному дому
  • HTTP, MQTT - низкоуровневые протоколы управления

Примеры автоматики 🔗

Что произошло Что сделал дом
Я включил тёплый пол за компом и ушёл на кухню Тёплый пол выключается
Я сказал: “Начинай медитацию” Свет выключается, включается таймер на 20 минут. Можно спрашивать: “Сколько осталось?”
Я сказал: “Засеки время” Включится отсчёт времени. Вывод на экранчик в каждой комнате. Можно справшивать: “Сколько прошло?”
Я включил дома вечером телефон на зарядку Телефон уточнит, ложусь ли я спать, выключит свет, включит будильник и поставит таймер на 15 минут
Камера видит больше одного человека Включается режим гостей
Я пошёл вечером на балкон Свет в комнате выключается
Я выключил будильник Включается свет, через 2 минуты начинается зарядка

Компьютерное зрение 🔗

Я поставил камеру и научил её распознавать местоположение людей на кадре.

Камера видит почти всю квартиру: комнату, кухню и часть коридора. Выглядит это так: Камера видит комнату, кухню и часть коридора

У камеры есть знание о 5 зонах в квартире: Камера видит комнату, кухню и часть коридора

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

Камера видит меня за компом

Так умный дом узнаёт, где сейчас находятся люди и может, например, выключить свет в комнате, где нет людей.

Ночное зрение 🔗

Камера имеет инфракрасную подсветку, с ней она может видеть комнату в темноте.

На фото видно, как камера распознаёт меня в коридоре, в полной темноте: Ночное видение комнаты

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

На этом фото по-прежнему в квартире выключен свет, но кухня хорошо видна: Ночное видение кухни

Нейросеть vs Кошка 🔗

Весной кошка начала ссать в коридоре, я сначала ведро ставил в том месте, пару месяцев помогало, потом перестало помогать.

Написал распознавалку кошки, поставил вторую камеру с видом на коридор.

Теперь, когда кошка идёт в место, где гадит, мой строгий голос из колонки говорит ей, что я всё вижу. Это срабатывает, но не всегда, камера без ночного видения, поэтому кошка пользуется этим и под покровом ночи делает свои грязные дела.

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

Кошка detected

Технически распознавание работает на дообученной модели SSD MobileNet v1 COCO. На датасете из 500 фоток начала работать хорошо. Несколько раз дообучал.

Помидор 🔗

popstas/mongoose-mqtt-ssd1306

В июне начал постоянно использовать метод помидора. Для этого сделал голосовое управление и аппаратный экранчик.

В видео показано 3 способа управления таймером: голос, команды по сети и панель умного дома:

Помидор можно ставить на любое количество минут и использовать как таймер.

Экранчики с цифрами 🔗

После проекта с помидором у меня появился маленький экранчик перед глазами.

Позже он научился показывать:

  • Время с таймеров (я что-то засёк или принтер печатает)
  • Непрочитанные в Планфиксе
  • Курс доллара
  • Котировки акций
  • Температуру в квартире

Сделал второй такой же экранчик, поставил на кухне. Вывод на экран дублируется.

Экран в комнате крупным планом (размер около 25х20 мм): Экран в комнате

Экран на кухне, издалека: Экран на кухне

Освещение 🔗

Светодиодная лента 🔗

Раньше лента висела как попало: Раньше лента висела как попало

Напечатал крепления на 3D принтере: Теперь лента висит аккуратно

Светильник “Затмение” 🔗

Увидел на Youtube красивый светильник:

Через 2 часа у меня появился похожий: Светильник Затмение

Прошивка - Tasmota.

Светильник работает в паре с лентой на противоположной стене.

Другие фото и видео светильника

Яркость люстры 🔗

Осенью слетела прошивка на люстре (теперь и такое бывает). Купил на замену не просто реле, а диммер с регулировкой яркости.

Оставил диоды основным светом (включается автоматом когда надо), а люстру можно включить только голосом. Но если менять яркость через Алису (“Яркость на 100%"), меняется сразу весь свет.

Видео процесса тестирования диммера Sonoff D1

Умный дом говорит через Алису 🔗

AlexxIT/YandexStation

Проект AlexxIT помог настроить озвучку событий (TTS) в умном доме через колонки, голосом Алисы.

Озвучка через ближайшее устройство 🔗

Если умный дом знает, что я в комнате или на кухне, он произнесёт текст только соответствующей колонкой.

В телефоне озвучка происходит всегда (на Android настроил TTS через вебхуки MacroDroid).

Озвучка входящих 🔗

Сделал озвучку того, кто звонит на телефон.

Сделал озвучку сообщений из мессенджеров. Если сообщение короче 100 символов, то Алиса зачитает, из какого приложения, кто и что написал.

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

3D принтер 🔗

Сценарий:

  1. Говорю “Алиса, включи принтер”
  2. Принтер включается, ставится на прогрев
  3. Когда нагреется, Алиса напоминает, что можно начинать печатать
  4. После этого нажимаю “Печать” в программе
  5. При завершении печати Алиса напомнит ещё раз

Теперь принтер подключен к сети, что это даёт:

  • Можно включить принтер и отправить модель на печать из другой комнаты
  • Умный дом говорит, когда принтер готов печатать. Принтеру надо около 5 минут на прогрев, за которые про него легко забыть
  • Информация о времени печати (можно спросить: “Сколько осталось печатать”, за минуту до конца печати напоминание)

Принтером управляет Octoprint, он добавил новых фич:

  • Связь с умным домом по MQTT
  • Автонагрев при вклчении принтера
  • Автоотключение
  • Более точное время печати
  • Картинка с вебкамеры с процессом печати
  • Просмотр 3D модели будущей 3D модели
  • Более удобное выравнивание столика

Я купил USB микроскоп, он идеально подошёл как камера для принтера: ручной фокус, штатив, подсветка вокруг камеры. Я напечатал крепление и прицепил камеру прямо на столик, теперь можно идеально выставить фокус и смотреть на неподвижную модель:

Микроскоп крепится на столик принтера

Альбом 3D принтера и напечатанных моделей

Связка устройств с Алисой (по MQTT) 🔗

popstas/yandex-dialogs-smarthome-mqtt

Новые фичи:

После этого стал добавлять устройства:

Управление компьютером 🔗

Комп подключил к MQTT через IOT Link, настроил несколько команд:

  • Вкл/выкл (спящий режим и WakeOnLAN)
  • Управление громкостью
  • Переключение звука (колонки/наушники)
  • Включение музыки (сценарий запускает Яндекс.Музыку и через 5 секунд нажимает пробел)

Управление компьютером 2.0 🔗

popstas/windows-mqtt

Этот проект вырос из mqtt2tts, для управления компом (громкость, клавиатура, озвучка сообщений).

IOT Link написан на C#, он глючный, я не знаю язык и не могу дописывать. Проще было написать на NodeJS свою версию и добавить регуляцию громкости.

Телевизор 🔗

hobbyquaker/lgtv2mqtt

Телевизор LG на WebOS подключил к MQTT, к Алисе (вкл/выкл, громкость, пауза).

Mi Box TV 🔗

Купил приставку с одной целью: смотреть ютуб за обедом на скорости 1.5. Нашёл больше плюсов:

  1. Видео по запросу включить очень просто - видео

  2. Смотришь видос на 2 часа, решил другим заняться, нажал одну кнопку “выкл”, ушёл. Возвращаешься, нажимаешь “вкл”, плей и видос продолжается

  3. Он запоминает скорость ютуба, я по умолчанию на 1.5 смотрю и задолбался на телефоне каждый раз переключать. Теперь, через мибокс, узнал про альтернативный ютуб клиент, который умеет запоминать - SmartTubeNext

  4. Скорость. По сравнению со встроенным SmartTV можно в 3 раза быстрее включить что-то на Кинопоиске и в 5 раз быстрее на Youtube.

Умная кофеварка 🔗

popstas/mongoose-redmond-rcm-1512-mqtt

Купил новую кофеварку Redmond RCM-1512, заметил, что у неё управление электронное, значит можно управлять.

Сделал модуль, который умеет принимать команды от умного дома и нажимать на кнопки “вкл” и “кофе”.

Теперь кофе можно наливать через Алису:

Но наливать кофе голосом не очень удобно. Основной сценарий, ради которого всё затевалось:

  1. Я ставлю рожок с кофе и кружку, нажимаю одну кнопку
  2. Кофеварка включается и кипятит воду
  3. Автомат нажимает кнопку “кофе”, наливается полкружки
  4. Автомат ещё раз нажимает кнопку “кофе”, наливается остальное
  5. Через 5 минут кофеварка выключается

Если бы мне сказали, сколько времени у меня уйдёт на этот проект, я бы не стал делать :)

Фото и видео процесса

Умная электронная сигарета 🔗

Захотел посчитать, сколько затяжек в день я делаю. Для этого использовал такую платку, размер 18х20 мм: ESP-M3

Удивительное время: можно за 200 рублей купить микрокомпьютер с WiFi и засунуть в сигарету.

Умная банка 🔗

Захотел сделать автоматическую наливалку питьевой воды. Зачем это может быть нужно:

  • Поставить наливать и уйти
  • Пополнять кофеварку без снимания бака
  • Наливать воду, когда мойка занята посудой (некуда поставить чайник)

Банка включается голосом (“Алиса, налей чайник” - сработает), либо кнопкой (каждое нажатие +500 мл).

Технически банка состоит из USB насоса, реле Sonoff TH16 (подойдёт любое реле), блока питания и трёхлитровки. Поставил прошивку Tasmota, логику дописал в Node-RED.

Насадка на конце шланга нужна, чтобы крепить шланг на край ёмкости, гайка - чтобы напор не выбил шланг.

Альбом умной банки

Умная банка

Вывод данных умного дома на график 🔗

  • Перемещения по квартире
  • Где когда горел свет
  • Когда был сон, зарядка, обед, медитация, работа, игра на гитаре
  • Изменения температуры
  • Изменения освещённости
  • Потребление электричества (для пары устройств)
  • Потребление никотина
  • График появления и решения личных задач

График сна за неделю: График сна за неделю

График задач, видно, что полоска постоянно растёт (новые задачи добавляются), а закрашенная часть под контролем (активные задачи): График задач

Технически MQTT передаётся в InfluxDB через Telegraf и выводится на Grafana.

Прочее 🔗

Датчик освещения 🔗

popstas/mongoose-button

Поменял датчик освещения с простого фоторезистора на спец. датчик MAX44009 (GY-49), он показывает освещение конкретно в люксах.

Зачем: чтобы умный дом лучше понимал, когда стемнело.

Чувствительность на 1-2 порядка выше, чем у фоторезистора. Раньше показания были 0-100%, где 100% - свечу фонариком в резистор.

Теперь при искусственном свете показывает 3-4, на рассвете 10, солнечным утром (10 утра 30 марта) - 100, в 11:40 уже 400, в 12:40 был пик, 640 люмен. Если светить фонариком, различает даже среднюю и высокую яркость мощной велофары, на максимуме показывает 180000!

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

В сочетании с камерой, которая срабатывает за секунду, это включает освещение ещё до того, как я об этом подумаю.

Бесконтактный термометр 🔗

popstas/mongoose-mlx90614

Давно хотел термометр, чтобы можно было измерить температуру плиты, паяльника.

Купил по акции датчик MLX90614 (GY-906), пришлось опускаться до чтения документации от датчика и написания низкоуровневого кода: обращение к регистрам памяти датчика по шине I2C. Эти 3 строчки я писал несколько часов.

Датчик показывает +-5 градусов, если поднести почти вплотную, меня устроило.

Мелкие интеграции с Алисой через приватный навык 🔗

Написал свой приватный навык, практически копия Кузи, но на js и без умного дома, берёт команды из yml, типа такого:

- match: [засеки время, засечь время]
  type: mqtt
  topic: actions/timer/start
  answer: [ок, засекла, ладно]

- match: сколько прошло
  type: node-red
  path: timer/get

Приватному навыку можно дать любой голос и фразы активации. Я назвал просто “дом, сервер, центр”, теперь буду сам себе фразы хостить, без Домовёнка Кузи.

Что умеет: 🔗

  • Сделай кофе
  • Добавь событие в Планфикс
  • Сколько градусов на кухне
  • Добавь задачу на сегодня

Интеграция Strava и MQTT: вывод тренировок на график 🔗

strava-mqtt

Программа не имеет интерфейса, просто раз в час проверяет новые тренировки на strava и отправляет эти данные в MQTT.

Home Assistant 🔗

Поставил Home Assistant, наконец нашёл причину: под него есть плагин, который позволяет рулить колонками. Это позволило:

  • Настроить автоматическое изменение громкости колонки в течение дня, до этого часто менял голосом по несколько раз в день
  • Настроить TTS через колонки, то есть мой умный дом теперь может включить любую из колонок и произнести любую фразу

Прибрался в MQTT 🔗

MQTT Explorer помог найти ненужные данные.

Устройства по комнатам 🔗

Коридор 🔗

Датчик движения и датчик открытия входной двери: в паре они определяют, когда я пришёл/ушёл из дома.

Туалет и ванная 🔗

Тут без изменений, стоят датчики за 200 рублей, которые включают свет на 1 минуту при любом движении. С системой умного дома не связаны.

Кухня 🔗

  • Кофеварка
  • Экранчик
  • Датчик освещения
  • Датчик температуры на плите
  • Умная банка
  • Колонка с Алисой
  • 3D принтер
  • Телевизор
  • Mi Box
  • ИК-подсветка
  • Ручной пылесос (его альбом)

Комната 🔗

  • 2 светильника: настенные диоды и верхний свет
  • Датчики температуры, влажности, CO2, освещения
  • Тёплый пол
  • Компьютер
  • Экранчик
  • Колонка с Алисой

Цены 🔗

  • Камера - 1800 руб
  • Мозги для кофеварки - 400 руб
  • Мозги для электронной сигареты - 200 руб
  • 2 экранчика с мозгами - 600 руб
  • Xiaomi Mi Box TV - 4400 руб
  • Умная банка: насос 560 руб, остальное было
  • Бесконтактный термометр MLX90614 - 530 руб
  • Диммер Sonoff D1, для регуляции яркости люстры - 800 руб
  • Ручной пылесос - 1600 руб
  • ИК-подсветка кухни - 200 руб
  • Датчики освещения - 200 руб
  • Блоки питания - около 500 руб

Итого около 12 000 рублей. Что-то куплено на потом и здесь не учтено.

Фотоальбом умного дома 2020