Звонок в умном доме

Театр начинается с вешалки. Компьютерный клуб с хаба. А квартира с дверного звонка.

После перехода на самоизоляцию, понял, что без дверного звонка жить никак. Стук курьеров в дверь — это не то, что мне хочется слышать. Посмотрел какие есть звонки в онлайн магазинах и понял, что все это не для меня. При наличии систем умного дома, возможностей автоматизации, голосовых исполнителей в лице колонок Google Home в каждом уголке квартиры, нет ничего проще, чем сделать по настоящему умный звонок.

Приступим.

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

  • Внешне кнопка звонка не должна никак выделяться и отличаться от обыкновенного звонка
  • Необходимо реализовать оповещения всеми возможными способами (звонок, звук из колонок Google Home, сообщение в telegram, уведомление от приложения Дом от Apple)
  • В свою очередь, необходимо иметь возможность звук выключить
  • Нажатие на звонок должно порождать череду событий в системах умного дома, системах видеонаблюдения

Аппаратная часть.

Как то само-собой решилось, что в качестве связующего звена между механическим звонком и умным домом, будет zigbee датчик открытия двери. Выпаяв геркон и запаяв на его место нормально разомкнутый контакт звонка (можно и nc, просто логику надо будет перевернуть) получим беспроводную кнопку с антиванадльным размещением в коридоре (в отличии от варианта с установкой, например, круглой Xiaomi кнопки).

Выбрал на OZON обычную кнопку звонка, заказал ее и датчики открытия двери. Датчики приехали, а кнопку OZON доставить не смог. Даже не извинились. Благо удалось заказать ее в Ситилинк, вместе с IP камерой HIKVISION HiWatch DS-I122, которая тоже в этом проекте примет участие. В качестве кнопки будет использоваться кнопка выхода FALCON EYE FE-100.

Кнопка выхода FE-100 (Черная) Falcon Eye 10724139

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

Монтаж.

Камеру я и так прикупил, и не одну, с запасом (пришло время обновить на даче камеры). Не долго думая, взял перфоратор и замонтировал камеру в подьезде, проведя ethernet кабель под гипсокартоновым потолком прихожей (камера у меня с PoE).

Не убирая далеко перфоратор приделал и кнопку. Которую сразу же и подключил к датчику открытия двери вместо геркона.

Код и логика.

Первое, что необходимо в звонке — чтобы он звенел.

Набор стикеров для Telegram «Кот стендапер»

Вариантов для реализации я увидел два:

  • Поставить электромеханический звонок и запитать его, скажем от Shelly 1, Sonoff Basic, DIY реле.
  • Использовать вещание на существующие аудиустройства, встроенные в умный дом.

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

У меня почти в каждом помещении квартиры установлены колонки Google Home (кстати, крайне рекомендую прикупить хотя бы классическую Google Home mini для интеграции «говорилки» в системы умного дома). Все они могут воспроизводить тексты, проигрывать .mp3 файлы или даже воспроизводить онлайн поток.

На этом, кстати, можно сделать радио интегрированное в homekit. Готовый пример обсуждался в нашем telegram чате. Заходите.

Итого родился такой замечательный flow обросший множеством выходов.

После импорта flow, в нем необходимо поменять некоторые параметры, свойственные вашей инсталляции. Внутри нод я постарался отметить все необходимые переменные максимально ОЧЕВИДНО.

Это основное flow, его работа дополняется извне.

Работа с GoogleHome для проговаривания текста, воспроизведения mp3.

Чтобы компонент работал с вашими .mp3 необходимо обеспечить их доступность на http ресурсе. Для этого можно использовать web движок самого node-red. Необходимо в файле конфигурации /home/pi/.node-red/settings.js изменить параметр httpStatic: ‘/home/pi/node-red-static/’, после рестарта node-red все файлы находящиеся в директории /home/pi/node-red-static/’ будут доступны по http://IPмалины:1880/filename.qwerty.

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

В будущих статьях более подробно расскажу о настройке telegram в nodered

Ну и последний выход этого flow — генерация внешних событий. Для себя я решил, что наиболее стабильно будет в этот момент, как минимум, дергать внешний sh скрипт, который получит картинку с камеры и отправит ее в telegram, а так же подготовит картинку для вывода на системный дисплей.

Код flow по вызову .sh скрипта в котором заложена логика по получению изображения и его отправке в telegram

А вот сам код этого скрипта.

Итоги.

Что имеем по результату.

  • Привычного вида вызывная кнопка звонка
  • Видеонаблюдение с использованием картинки в уведомлениях
  • Полная интеграция с homekit
  • Дополнительный канал уведомления в telegram

Изначально мой звонок проговаривал такую фразу. Теперь он говорит фразой из Простоквашино

Оставьте комментарий