Что было год назад - Мой умный дом 2019: Sonoff, ESP8266, MQTT, Node-red, Алиса
Способы управления 🔗
- Автоматика - идеальный вариант, когда делается само
- Голос - доступно в любом месте квартиры, без рук
- Выключатели - приклеиваются на скотч или просто кладутся в подходящих местах
- Радиопульты - пульт 4х3 см удобно положить в карман домашней одежды
- Приложение - доступно на ПК и на телефоне
- Telegram - можно писать Алисе через Telegram, она передаст умному дому
- HTTP, MQTT - низкоуровневые протоколы управления
Примеры автоматики 🔗
Что произошло | Что сделал дом |
---|---|
Я включил тёплый пол за компом и ушёл на кухню | Тёплый пол выключается |
Я сказал: “Начинай медитацию” | Свет выключается, включается таймер на 20 минут. Можно спрашивать: “Сколько осталось?” |
Я сказал: “Засеки время” | Включится отсчёт времени. Вывод на экранчик в каждой комнате. Можно справшивать: “Сколько прошло?” |
Я включил дома вечером телефон на зарядку | Телефон уточнит, ложусь ли я спать, выключит свет, включит будильник и поставит таймер на 15 минут |
Камера видит больше одного человека | Включается режим гостей |
Я пошёл вечером на балкон | Свет в комнате выключается |
Я выключил будильник | Включается свет, через 2 минуты начинается зарядка |
Компьютерное зрение 🔗
Я поставил камеру и научил её распознавать местоположение людей на кадре.
Камера видит почти всю квартиру: комнату, кухню и часть коридора. Выглядит это так:
У камеры есть знание о 5 зонах в квартире:
Каждую секунду камера распознаёт картинку и выдаёт мои координаты. Картинка для распознавания именно такая маленькая, 300х300 пикселей, этого хватает, чтобы хорошо распознавать людей и не путать с кошками:
Так умный дом узнаёт, где сейчас находятся люди и может, например, выключить свет в комнате, где нет людей.
Ночное зрение 🔗
Камера имеет инфракрасную подсветку, с ней она может видеть комнату в темноте.
На фото видно, как камера распознаёт меня в коридоре, в полной темноте:
До кухни ИК-подсветка не добивала, поставил на кухню инфракрасных диодов, для камеры это как освещение люстры, а глазу не видно.
На этом фото по-прежнему в квартире выключен свет, но кухня хорошо видна:
Нейросеть vs Кошка 🔗
Весной кошка начала ссать в коридоре, я сначала ведро ставил в том месте, пару месяцев помогало, потом перестало помогать.
Написал распознавалку кошки, поставил вторую камеру с видом на коридор.
Теперь, когда кошка идёт в место, где гадит, мой строгий голос из колонки говорит ей, что я всё вижу. Это срабатывает, но не всегда, камера без ночного видения, поэтому кошка пользуется этим и под покровом ночи делает свои грязные дела.
Проект пришлось свернуть из-за трудности обучения камеры распознавать срущую кошку. Но этого хватило, чтобы кошка одумалась и начала хорошо себя вести.
Технически распознавание работает на дообученной модели SSD MobileNet v1 COCO. На датасете из 500 фоток начала работать хорошо. Несколько раз дообучал.
Помидор 🔗
В июне начал постоянно использовать метод помидора. Для этого сделал голосовое управление и аппаратный экранчик.
В видео показано 3 способа управления таймером: голос, команды по сети и панель умного дома:
Помидор можно ставить на любое количество минут и использовать как таймер.
Экранчики с цифрами 🔗
После проекта с помидором у меня появился маленький экранчик перед глазами.
Позже он научился показывать:
- Время с таймеров (я что-то засёк или принтер печатает)
- Непрочитанные в Планфиксе
- Курс доллара
- Котировки акций
- Температуру в квартире
Сделал второй такой же экранчик, поставил на кухне. Вывод на экран дублируется.
Экран в комнате крупным планом (размер около 25х20 мм):
Экран на кухне, издалека:
Освещение 🔗
Светодиодная лента 🔗
Раньше лента висела как попало:
Напечатал крепления на 3D принтере:
Светильник “Затмение” 🔗
Увидел на Youtube красивый светильник:
Через 2 часа у меня появился похожий:
Прошивка - Tasmota.
Светильник работает в паре с лентой на противоположной стене.
Другие фото и видео светильника
Яркость люстры 🔗
Осенью слетела прошивка на люстре (теперь и такое бывает). Купил на замену не просто реле, а диммер с регулировкой яркости.
Оставил диоды основным светом (включается автоматом когда надо), а люстру можно включить только голосом. Но если менять яркость через Алису (“Яркость на 100%"), меняется сразу весь свет.
Видео процесса тестирования диммера Sonoff D1
Умный дом говорит через Алису 🔗
Проект AlexxIT помог настроить озвучку событий (TTS) в умном доме через колонки, голосом Алисы.
Озвучка через ближайшее устройство 🔗
Если умный дом знает, что я в комнате или на кухне, он произнесёт текст только соответствующей колонкой.
В телефоне озвучка происходит всегда (на Android настроил TTS через вебхуки MacroDroid).
Озвучка входящих 🔗
Сделал озвучку того, кто звонит на телефон.
Сделал озвучку сообщений из мессенджеров. Если сообщение короче 100 символов, то Алиса зачитает, из какого приложения, кто и что написал.
Иногда это удобно, иногда не очень, в панели управления умным домом есть переключатель подробности озвучки. Когда гости приходят, озвучка сообщений отключается.
3D принтер 🔗
Сценарий:
- Говорю “Алиса, включи принтер”
- Принтер включается, ставится на прогрев
- Когда нагреется, Алиса напоминает, что можно начинать печатать
- После этого нажимаю “Печать” в программе
- При завершении печати Алиса напомнит ещё раз
Теперь принтер подключен к сети, что это даёт:
- Можно включить принтер и отправить модель на печать из другой комнаты
- Умный дом говорит, когда принтер готов печатать. Принтеру надо около 5 минут на прогрев, за которые про него легко забыть
- Информация о времени печати (можно спросить: “Сколько осталось печатать”, за минуту до конца печати напоминание)
Принтером управляет Octoprint, он добавил новых фич:
- Связь с умным домом по MQTT
- Автонагрев при вклчении принтера
- Автоотключение
- Более точное время печати
- Картинка с вебкамеры с процессом печати
- Просмотр 3D модели будущей 3D модели
- Более удобное выравнивание столика
Я купил USB микроскоп, он идеально подошёл как камера для принтера: ручной фокус, штатив, подсветка вокруг камеры. Я напечатал крепление и прицепил камеру прямо на столик, теперь можно идеально выставить фокус и смотреть на неподвижную модель:
Альбом 3D принтера и напечатанных моделей
Связка устройств с Алисой (по MQTT) 🔗
popstas/yandex-dialogs-smarthome-mqtt
Новые фичи:
- Не только выключатели, но и другие устройства, предусмотренные Яндексом
- Поддержка датчиков
После этого стал добавлять устройства:
Управление компьютером 🔗
Комп подключил к MQTT через IOT Link, настроил несколько команд:
- Вкл/выкл (спящий режим и WakeOnLAN)
- Управление громкостью
- Переключение звука (колонки/наушники)
- Включение музыки (сценарий запускает Яндекс.Музыку и через 5 секунд нажимает пробел)
Управление компьютером 2.0 🔗
Этот проект вырос из mqtt2tts, для управления компом (громкость, клавиатура, озвучка сообщений).
IOT Link написан на C#, он глючный, я не знаю язык и не могу дописывать. Проще было написать на NodeJS свою версию и добавить регуляцию громкости.
Телевизор 🔗
Телевизор LG на WebOS подключил к MQTT, к Алисе (вкл/выкл, громкость, пауза).
Mi Box TV 🔗
Купил приставку с одной целью: смотреть ютуб за обедом на скорости 1.5. Нашёл больше плюсов:
-
Видео по запросу включить очень просто - видео
-
Смотришь видос на 2 часа, решил другим заняться, нажал одну кнопку “выкл”, ушёл. Возвращаешься, нажимаешь “вкл”, плей и видос продолжается
-
Он запоминает скорость ютуба, я по умолчанию на 1.5 смотрю и задолбался на телефоне каждый раз переключать. Теперь, через мибокс, узнал про альтернативный ютуб клиент, который умеет запоминать - SmartTubeNext
-
Скорость. По сравнению со встроенным SmartTV можно в 3 раза быстрее включить что-то на Кинопоиске и в 5 раз быстрее на Youtube.
Умная кофеварка 🔗
popstas/mongoose-redmond-rcm-1512-mqtt
Купил новую кофеварку Redmond RCM-1512, заметил, что у неё управление электронное, значит можно управлять.
Сделал модуль, который умеет принимать команды от умного дома и нажимать на кнопки “вкл” и “кофе”.
Теперь кофе можно наливать через Алису:
Но наливать кофе голосом не очень удобно. Основной сценарий, ради которого всё затевалось:
- Я ставлю рожок с кофе и кружку, нажимаю одну кнопку
- Кофеварка включается и кипятит воду
- Автомат нажимает кнопку “кофе”, наливается полкружки
- Автомат ещё раз нажимает кнопку “кофе”, наливается остальное
- Через 5 минут кофеварка выключается
Если бы мне сказали, сколько времени у меня уйдёт на этот проект, я бы не стал делать :)
Умная электронная сигарета 🔗
Захотел посчитать, сколько затяжек в день я делаю. Для этого использовал такую платку, размер 18х20 мм:
Удивительное время: можно за 200 рублей купить микрокомпьютер с WiFi и засунуть в сигарету.
Умная банка 🔗
Захотел сделать автоматическую наливалку питьевой воды. Зачем это может быть нужно:
- Поставить наливать и уйти
- Пополнять кофеварку без снимания бака
- Наливать воду, когда мойка занята посудой (некуда поставить чайник)
Банка включается голосом (“Алиса, налей чайник” - сработает), либо кнопкой (каждое нажатие +500 мл).
Технически банка состоит из USB насоса, реле Sonoff TH16 (подойдёт любое реле), блока питания и трёхлитровки. Поставил прошивку Tasmota, логику дописал в Node-RED.
Насадка на конце шланга нужна, чтобы крепить шланг на край ёмкости, гайка - чтобы напор не выбил шланг.
Вывод данных умного дома на график 🔗
- Перемещения по квартире
- Где когда горел свет
- Когда был сон, зарядка, обед, медитация, работа, игра на гитаре
- Изменения температуры
- Изменения освещённости
- Потребление электричества (для пары устройств)
- Потребление никотина
- График появления и решения личных задач
График сна за неделю:
График задач, видно, что полоска постоянно растёт (новые задачи добавляются), а закрашенная часть под контролем (активные задачи):
Технически MQTT передаётся в InfluxDB через Telegraf и выводится на Grafana.
Прочее 🔗
Датчик освещения 🔗
Поменял датчик освещения с простого фоторезистора на спец. датчик MAX44009 (GY-49), он показывает освещение конкретно в люксах.
Зачем: чтобы умный дом лучше понимал, когда стемнело.
Чувствительность на 1-2 порядка выше, чем у фоторезистора. Раньше показания были 0-100%, где 100% - свечу фонариком в резистор.
Теперь при искусственном свете показывает 3-4, на рассвете 10, солнечным утром (10 утра 30 марта) - 100, в 11:40 уже 400, в 12:40 был пик, 640 люмен. Если светить фонариком, различает даже среднюю и высокую яркость мощной велофары, на максимуме показывает 180000!
Фоторезистор выполнял свою функцию, но для него солнечный свет и свет люстры были примерно одинаковыми, а для люксометра искусственный свет - почти ноль, это больше совпадает с восприятием.
В сочетании с камерой, которая срабатывает за секунду, это включает освещение ещё до того, как я об этом подумаю.
Бесконтактный термометр 🔗
Давно хотел термометр, чтобы можно было измерить температуру плиты, паяльника.
Купил по акции датчик 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.
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 рублей. Что-то куплено на потом и здесь не учтено.