Пожалуй, один из самых распространенных вариантов автоматизаций, который применяется новичками в умнодомном строительстве – применение датчиков движения.

Как правило в качестве датчиков выступают сенсоры Xiaomi/Aqara и им подобные. Однако существуют иные, местами костыльные, варианты. Об одном из таких и пойдет речь.

В одной из статей на страницах inhomekit было описание решения по добавлению XiaoFang в HomeKit. Отличная камера, а с отличным открытым софтом так вдвойне.

Помимо того что камера эта стоит сущие копейки (хоть с Китая, хоть вот с русского склада без коронавируса) и поддается перепрошивке в Dafang hack, так эта камера еще может выступать в роли датчика движения. При том высокой точности и оперативности.

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

Настройка Dafang.

После завершения установки подключаемся к камере по ssh

ssh root@ip.add.re.ss
cd /system/sdcard/config

И настраиваем последовательно конфигурацию:

Файл подкачки.

mv swap.conf.dist swap.conf
vi swap.conf

Устанавливаем параметры:

SWAP=true
SWAPPATH="/system/sdcard/swapfile"
SWAPSIZE=256

Детекция движения.

mv motion.conf.dist motion.conf
vi motion.conf

Меняем параметры:

motion_indicator_color=4
motion_timeout=31
motion_detection=on
motion_tracking=off
motion_trigger_led=true
publish_mqtt_message=true

Настройка общения с MQTT брокером.

mv mqtt.conf.dist mqtt.conf
vi mqtt.conf

Устанавливаем параметры:

USER=
PASS=
HOST=ip.add.re.ss
PORT=1883
LOCATION="cam"
DEVICE_NAME="room"

USER – логин для доступа к вашему MQTT брокеру (пустой если вы не используете пароль на MQTT)

PASS – пароль для доступа к вашему MQTT брокеру (пустой если вы не используете пароль на MQTT)

HOST – IP адресс вашего MQTT брокера

PORT – порт, по умолчанию 1883

LOCATION – имя локации, я рекомендую cam/camera/defang или какой то подобный

DEVICE_NAME – имя камеры

Перезапускаем.

reboot

После перезагрузки вы должны лицезреть в видеопотоке с камеры синюю точку в верхнем правом углу – признак наличия движения в кадре.

Добро пожаловать в дом.

Прокинем в homebridge данные с датчика движения. Для этого нам понадобиться плагин homebridge-mqttthing (рекомендую установку производить через интерфейс homebridge, дабы обезопасить себя от проблем с зависимостями и переменными окружения). После установки плагина необходимо произвести конфигурацию соответствующего аксесуара

        {
            "accessory": "mqttthing",
            "type": "motionSensor",
            "name": "mainroom cam motion",
            "url": "mqtt://ip.add.re.ss",
            "topics": {
                "getMotionDetected": "cam/room/motion"
            },
            "onValue": "ON",
            "offValue": "OFF"
        }

Перезагружаем HomeBridge. И обнаруживаем в доме новый датчик, который истошно сообщает о движении в кадре.

И это все?

Конечно же нет. Настроить «сяоми камеру – кубик» это вариант простой, даже банальный. Но ведь не зря на обложке статьи нарисованы костыли. Без них никак нельзя.

Существует множество камер, возможно уже в вашем распоряжении, которые так же могут определять движение в кадре, но ни о каком MQTT они знать не знают. Однако, могут отправлять фото, например на FTP или вызывать внешний URL адрес. Попробуем такие камеры начать использовать.

Стартуем.

Начнем, пожалуй с самого простого – когда на камере есть возможность поставить вызов определенного URL при обнаружении движения. Я буду показывать на примере камере Trendnet TV-IP110.

В качестве промежуточного звена и оркестратора будет использоваться node-red, самое лучшее решение для создания автоматизаций в умном доме. ИМХО.

Вот такое простое flow позволит создать web сервер для одной из камер, назовем ее, для простоты понимания, переносной – portable.
Вот такое простое flow позволит создать web сервер для одной из камер, назовем ее, для простоты понимания, переносной – portable.
[{"id":"469873ab.41ad9c","type":"http in","z":"169ec06b.3e0e","name":"","url":"/moveportable","method":"get","upload":false,"swaggerDoc":"","x":110,"y":1480,"wires":[["2d384b77.48c884","3fc013e8.e084bc","151ad83.1d45728"]]},{"id":"2d384b77.48c884","type":"template","z":"169ec06b.3e0e","name":"page","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<html>\n    <head></head>\n    <body>\n        <h1>Hello World!</h1>\n    </body>\n</html>","x":350,"y":1480,"wires":[["19d326e5.cc8499"]]},{"id":"19d326e5.cc8499","type":"http response","z":"169ec06b.3e0e","name":"","statusCode":"","headers":{},"x":470,"y":1480,"wires":[]},{"id":"3fc013e8.e084bc","type":"mqtt out","z":"169ec06b.3e0e","name":"","topic":"cam/portable","qos":"","retain":"","broker":"34443b7c.063704","x":380,"y":1560,"wires":[]},{"id":"abe1f063.25523","type":"mqtt out","z":"169ec06b.3e0e","name":"","topic":"cam/portable/motion/detected","qos":"","retain":"","broker":"34443b7c.063704","x":590,"y":1600,"wires":[]},{"id":"151ad83.1d45728","type":"change","z":"169ec06b.3e0e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"YES","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":315,"y":1600,"wires":[["abe1f063.25523","479556fd.140c98"]],"l":false},{"id":"479556fd.140c98","type":"delay","z":"169ec06b.3e0e","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":375,"y":1640,"wires":[["b6d79a66.aefc18"]],"l":false},{"id":"b6d79a66.aefc18","type":"change","z":"169ec06b.3e0e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"NO","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":415,"y":1640,"wires":[["abe1f063.25523"]],"l":false},{"id":"34443b7c.063704","type":"mqtt-broker","z":"","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

Не забудьте поменять на MQTT нодах данные для подключения к MQTT брокеру.

А теперь в дом.

На самом деле, конечно же, можно использовать сам node-red как шлюз умного дома, но иногда (об этом в будущих статьях) удобнее агрегировать устройства в HomeBridge.

Переходим к настройке нового аксесуара mqttthing.

        {
            "accessory": "mqttthing",
            "type": "motionSensor",
            "name": "portable cam motion",
            "url": "mqtt://localhost",
            "topics": {
                "getMotionDetected": "cam/portable/motion/detected"
            },
            "onValue": "YES",
            "offValue": "NO"
        }

Сохраняем, перезагружаем.

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

Я не стану показывать все меню и последовательность действий в интерфейсе конкретной камеры, это не имеет смысла. Суть в том, что, если в вашей камере есть возможность вызова внешнего сервиса путем обращения к нему через http – вот в таком разделе необходимо прописать ваши настройки.

Сохраняем, применяем. Тестируем (если есть возможность — кнопкой в интерфейсе, если нет – время помахать на камеру).

Все, теперь камера будет детектить движение и направлять запрос на ваш http сервер поднятый на nodered. Который в свою очередь, будет транслировать это событие в MQTT. Если в вашем распоряжении нет node-red, можно обойтись одним HB с плагином webhook.

А если нет в камере HTTP клиента?

Все, вам не помочь. До свидания. Лайки, подписка, донаты, колокольчик…

mrbe
Шутка!

Есть варианты. Один из таковых — FTP. Существует огромное количество камер с поддержкой отправки снэпшотов на внешний FTP ресурс. Этим то мы и воспользуемся.

Начнем с повторения и настройки flow в node-red.

nodered ftp

[{"id":"92946f95.772b","type":"mqtt out","z":"169ec06b.3e0e","name":"","topic":"cam/bedroom/motion/detected","qos":"","retain":"","broker":"34443b7c.063704","x":610,"y":2180,"wires":[]},{"id":"290c344b.1dde1c","type":"change","z":"169ec06b.3e0e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"YES","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":315,"y":2180,"wires":[["92946f95.772b","9909ec45.8acac"]],"l":false},{"id":"9909ec45.8acac","type":"delay","z":"169ec06b.3e0e","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":375,"y":2220,"wires":[["a424a828.9e2b58"]],"l":false},{"id":"a424a828.9e2b58","type":"change","z":"169ec06b.3e0e","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"NO","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":435,"y":2220,"wires":[["92946f95.772b"]],"l":false},{"id":"197d2d9.148abd2","type":"ftp-server","z":"169ec06b.3e0e","name":"","port":"30001","x":80,"y":2120,"wires":[["290c344b.1dde1c"]]},{"id":"34443b7c.063704","type":"mqtt-broker","z":"","name":"","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]

В конфиге FTP сервера (palette node-red-contrib-ftp-server) устанавливается порт и логин/пароль для будущего подключения. В ноде MQTT задается топик, в который будет отправлено сообщение.

Я не то чтобы принципиально не показываю вариант в котором node-red будет шлюзом homekit. Я просто демонстрирую одинаковость решений для множества камер и вариантов интеграции (mqtt dafang over homebridge, http/ftp over node-red over homebridge). К тому же в таком паравозе есть определенные плюсы.

Далее настраиваем камеру. На этот раз пример с Trendnet TV-IP651W.

trendnet 651w

И снова в дом.

Конфиг homebridge будет до боли знакомый с настройки камеры с поддержкой http уведомлений.

        {
            "accessory": "mqttthing",
            "type": "motionSensor",
            "name": "bedroom cam",
            "url": "mqtt://localhost",
            "topics": {
                "getMotionDetected": "cam/bedroom/motion/detected"
            },
            "onValue": "YES",
            "offValue": "NO"
        }

С этим вариантом все.

Что же осталось?

А остался самый популярный вариант — электронная почта.

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

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

Время GIF-ок.

Маршрут «из гардероба в спальне, через зал, рядом со столом, на кухню, закрыть окно»
Вот так теперь выглядит передвижение по дому. Маршрут «из гардероба в спальне, через зал, рядом со столом, на кухню чтобы закрыть окно»

Заключение.

Наверное первый вопрос который витает в воздухе — зачем это все. Ведь есть дешевая xiaomi ip камера кубик, есть расчитанные и заточенные под это датчики движения вроде тех же Xiaomi/Aqara. Но так же существует наследие в виде таких старых IP камер, которые верно служат, полностью устраивают своего владельца и могут раскрыться в новой роли. Так почему бы и нет.

К тому же есть рынок Б/У устройств. На том же Avito представлены и доступны с доставкой IP камеры за скромные деньги.

avito cam avito cam

Все это и желание пробовать подстегивает поиск таких, пусть и костыльных, решений.

О многих таких идеях и не только часто идут споры и обсуждения в нашем telegram канале https://t.me/inhomekit_chat. Заходите.

Author

Write A Comment