London

<<< Back

Делаем видеодомофон в Homekit

Реализация видеодомофона на базе MajorDoMo, Apple HomeKit, видеокамеры и электромеханического замка.

Дано:
Имею на даче на калитке аналоговый видеодомофон, который заведен на ТВ-тюнер и аналоговый сигнал преобразуется в rtsp поток.
Изображение анализирую через ZoneMinder и при движении опредляю, что в домофон звонят, т.к., когда в него не звонят - сигнала нет, чёрный экран. Тоесть есть картинка, значит звонят -> можно отправлять уведомление в систему.
Так же, имею электромеханический замок на калитке, с прикрученной к нему ESP8266.

Чтобы всё это завести в Homekit пришлось сделать следующее:

Устанавливаем в Homebridge плагины Homebridge Camera FFmpeg и Homebridge Mqttthing (проще всего делать через Homebridge Config UI X)

Далее, добавляем камеру домофона по rstp, указывая так же настройки для mqtt. В конфиге homebridge в разделе platforms:

        {
            "name": "Camera FFmpeg",
            "porthttp": 8089,
            "mqtt": "127.0.0.1",
            "topic": "homebridge",
            "usermqtt": "mqttlogin",
            "passmqtt": "mqttpassword",
            "cameras": [
                {
                    "name": "Domofon",
                    "motion": false,
                    "doorbell": true,
                    "switches": false,
                    "videoConfig": {
                        "source": "-i rtsp://localhost:8091/live",
                        "stillImageSource": "-i http://localhost/zm/cgi-bin/nph-zms?mode=single&monitor=7&scale=100",
                        "maxWidth": 720,
                        "maxHeight": 482,
                        "maxFPS": 30,
                        "maxBitrate": 1024,
                        "forceMax": false,
                        "vcodec": "libx264",
                        "encoderOptions": "-preset ultrafast -vf mpdecimate -vsync vfr",
                        "audio": true,
                        "debug": false
                    }
                }
                    ],
          "platform": "Camera-ffmpeg"

в разделе accessories добавляем кнопку открывания замка через Mqttthing:

       {
            "type": "lockMechanism",
            "name": "Открыть домофон",
            "username": "mqttlogin",
            "password": "mqttpassword",
            "topics": {
                "getOnline": "homebridge/domofon/online",
                "getLockCurrentState": "homebridge/domofon/state",
                "getLockTargetState": "homebridge/domofon/status",
                "setLockTargetState": "homebridge/domofon/status"
            },
            "startPub": [
                {
                    "topic": "homebridge/domofon/state",
                    "message": "S"
                }
            ],
            "accessory": "mqttthing"
        }

Перезапускаем homebridge.
В MajorDoMo при обнаружении звонка в домофон вызываем топик mqtt:
callAPI('/api/module/mqtt','GET',array('publish'=>'homebridge/doorbell','msg'=>'Domofon'));

Теперь звонок в домофон прилетит push уведомлением на телефон.

в модуле MQTT привязываем топик homebridge/domofon/state к Геркону открытия калитки, к свойству status. Replace list указываем: U=0, S=1

топик homebridge/domofon/status привязываем к методу, который будет открывать замок и возвращать статус кнопки к "закрытому":

Открытие калитки у меня осуществляется свойством command объекта kalitka.
Соответственно, в методе следующий код

if (isset($params['VALUE']) && $params['VALUE']=='U' && !timeOutExists('domofon_lock_timer')) {
    sg('kalitka.command',1);
    setTimeout('domofon_lock_timer', "callAPI('/api/module/mqtt','GET',array('publish'=>'homebridge/domofon/status','msg'=>'S'));sg('kalitka.command',0);", 10);
}

В итоге получаем то, что на видео и наслаждаемся :)
Если статья оказалась Вам интересна, или полезна, не забывайте ставить лайк :)
Вопросы в комментариях приветствуются

https://youtu.be/1Ost2iWpQlY

P.S.
А ещё, неожиданно, это оказался юбилейный, 500-й блог в коннекте. С чем всех торжественно и поздравляю :-)

Discuss (0) (9)

See also:
2020-10-07 Модернизируем сенсорный выключатель LIVOLO для умного дома. Выводим нулевой провод, для нормального питания.
2020-09-03 Уведомления ZoneMinder без модуля.
2020-05-14 Подписка на топики mqtt
2020-05-08 Мониторинг хостов с миротика

Ашукино, Россия

На форуме: London