Найти тему
Sprut.ai

Умный дверной звонок с Apple HomeKit на базе ESP01

Оглавление

Добрый день, после серии моих статей про ESP ко мне в личку поступило много вопросов по поводу того как сделать Звонок. Сегодня я расскажу как просто и дешево сделать звонок с уведомлениями в HomeKit, через Homebridge или HomeAssistant. Идеально на роль контроллера подойдет ESP01 с его родным Модулем реле 01S Relay, зачастую на Aliexpress продаются вместе. 

Итак, нам понадобиться:

ESP01
ESP01
 01S Relay
 01S Relay
Проводной звонок, подойдет абсолютно любой
Проводной звонок, подойдет абсолютно любой
Блок питания на 5В.
Блок питания на 5В.
ttl контроллер
ttl контроллер

Приступим к сборке

-7

Как видим схема примитивная. Справиться даже ребенок.

Приступим к программной части. Для прошивки ESP01 нам необходимо подключить ее к контроллеру TTL. 

Схема подключения:

TTL контроллеры для ESP01 - для совсем ленивых. 
TTL контроллеры для ESP01 - для совсем ленивых. 

Программная часть

Первым делом установим MQTT Брокер на Raspberry PI. Подключаемся по SSH к нашей Raspbery pi и далее в терминале 

sudo apt update
sudo apt install -y mosquitto mosquitto-clients

Во время установки Вам потребуется ввести "Y" и нажать "Enter"

sudo systemctl enable mosquitto.serviceSHELLКОПИРОВАТЬ

Поздравляю вы получили рабочий брокер у себя на Raspbery Pi

Приступим к прошивке ESP8266

Идем по ссылке и качаем самый свежий образ. На момент написания статьи ESPEasy_mega-20181101.zip. Распаковываем архив. Нам понадобиться ESP.Easy.Flasher.exe запускаем ее. И выбираем как на фото ниже вписав свой SSID и пароль роутера. 

-9

Нажимаем "Flash ESP Easy FW" и ждем окончания процесса прошивки. После прошивки ESP сама подключиться к вашему Wi-Fi роутеру. 

Настройка ESP Easy

В настройках роутера смотрим IP адрес нашей ESP и открываем ее. 

Открываем раздел "Config" Вводим Unit Name: "Zvonok" и нажимаем "Submit"

Далее открываем "Controllers" и нажимаем "Edit" Выбираем Протокол: OpenHAB MQTT, вписуем Controller IP: IP адрес малины (Брокера) и порт 1883 и нажимаем "Submit"

-10

Переходим на вкладку "Devices" нажимаем "Edit" и заполняем все как на скриншоте.

-11

На этом настройка Esp Easy закончена, перейдем к добавлению в HomeKit, добавить можно двумя способами.

Способ №1 через HomeBridge

Установим и настроем Plugins Homebridge 

Я использую homebridge-mqttthing, он мне нравиться больше всех своей простотой и большим количеством поддерживаемых устройств.

Подключаемся по SSH к малине и пишем в командной строке:

sudo npm install -g homebridge-mqttthing

далее nano ~/.homebridge/config.json

и добавляем аксессуары в конфиг:

{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Zvonok",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getMotionDetected": "/Zvonok/Relay/Switch"
},
"integerValue": "true",
"onValue": "1",
"offValue": "0"
}

Перезагружаем homebridge и радуемся проделанной работой.

Способ №2 через Home Assistant

Тут еще проще, для настройки нам необходим отредактировать файл configuration.yaml, добавив в него:

binary_sensor:
- platform: mqtt
name: "motionesp"
state_topic: "/Zvonok/Relay/Switch"
payload_on: "1"
payload_off: "0"
device_class: motion
force_update: false

mqtt:
broker: localhost
port: 1883
protocol: 3.1
discovery: true

После чего перезагрузить Home Assistant.

Вишенка на торте =)

-12

Многие наверно задались вопросом почему мы кнопку "Звонка" объявили "Датчиком Движения"?!...

Сделано это было специально т.к. если в HomeKit в одной комнате находятся Датчик Движения и Камера, то при обнаружении движения HomeKit шлет нам push уведомление с изображением с камеры. При условии что в настройках Датчика Движения включено "Доступ уведомлений"

-13

Выгладит это так:

На заблокированном телефоне
На заблокированном телефоне
На заблокированном телефоне если развернуть уведомление 
На заблокированном телефоне если развернуть уведомление 
В приложении HomeKit
В приложении HomeKit

Режим без звука

Если взять 01S Relay 2 Channel, то можно добавить еще и режим без звука.


01S Relay 2 Channel 
01S Relay 2 Channel 

Схема будет выглядеть так: 

-18

где: 

Relay1 - объявлен как в предыдущем варианте Датчиком Движения

Relay2 - Свитч разрывает замыкание звонка 

При желании ESP можно разместить в самом звонке, и питать от одного Блока питания. 

В настройках ESP Easy добавить второе реле, по аналоги с первым, обзываем его "Relay2" и указать ему gpio2, а в конфиг Homebridge добавить еще одно реле:

{
"accessory": "mqttthing",
"type": "lightbulb",
"name": "Zvonok Tixo",
"url": "mqtt://127.0.0.1",
"username": "admin",
"password": "admin",
"topics": {
"getOn": "/Zvonok/Relay2/Switch",
"setOn": "/Zvonok/gpio/2"
},
"integerValue": "true",
"onValue": "0",
"offValue": "1"
}

После чего в HomeKit у нас появится "Zvonok Tixo". 

Таким образом если переключатель "Zvonok Tixo" в состояние "Выключен" push уведомления получать мы будем, но звонок не будет проигрывать мелодию. Тем самым получим "Режим без звука". 

Заключение

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

-19

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