2 заметки с тегом

sonoff

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

/core.php, line 2
Error 2: Use of undefined constant k - assumed 'k' (this will throw an Error in a future version of PHP)

«Умный» дом

Добавляем камеру в Domoticz

Во-первых, почему Domoticz? Мне он показался намного более простым по сравнению с Majordomo и другими системами. Во-вторых, этот пакет присутствует в репозитории на роутере (с установленным OpenWrt). С одной стороны ставить такую программу я предпочел бы на сервер, с другой — именно роутер является точкой, соединяющей все сетевые устройства в квартире. Поэтому пусть пока будет так.
Так как камера у меня — «чистый» китаец, то просто так добавить ее в систему не получится. По крайней мере, мне это не удалось. Пришлось идти обходным путем.
Строка подключения к камере выглядит примерно так:

rtsp://192.168.1.12:554/user=admin&password=&channel=1&stream=0.sdp?real_stream

Открыв этот адрес, например, через плеер VLC, можно увидеть основной поток камеры. В принципе, строку можно чуть-чуть сократить, убрав всё после sdp. В любом случае, Domoticz такое не понимает. Поэтому нам понадобится пакет под названием motion. У меня он уже установлен и отправляет мне в Telegram фото событий. Камера у меня пока что одна, но в будущем планируется еще несколько, поэтому все настройки, отличающиеся от настроек по умолчанию, я вынес в отдельный файл, который подключил в motion.conf. Там нам понадобятся несколько параметров, перечисленных ниже.

netcam_url rtsp://192.168.1.12:554/user=admin&password=&channel=1&stream=1.sdp?real_stream
netcam_keepalive on
width 704
height 576
stream_port 8091
on_event_start /root/motion/actions/on_event_start
on_event_end /root/motion/actions/on_event_end

Первая строка — подключение к самой камере на вторичный поток. Вторая — поддержка подключения, можно пропустить. Третья и четвертая — размеры кадра вторичного потока, у меня они такие. Можно выбрать, конечно, и основной, но это повлечет за собой увеличение трафика в сети и времени подключения. Самая «интересная» строка — следующая. Она указывает motion через какой порт выводить картинку. И последние две строки — пути к скриптам, которые будут выполняться при возникновении и завершении события. У скриптов должны быть установлены права на выполнение.
Запускаем motion и первым делом проверяем наличие потока, просто открыв ссылку в браузере. Например, motion у нас будет установлен на компьютер с адресом 192.168.1.10. Тогда в браузере набираем:

http://192.168.1.10:8091/

Вы должны увидеть видеопоток с камеры. Если его нет — придется разбираться что не так. Чаще всего просто не открыт указанный порт на компьютере. Если картинка есть — идем дальше.
Открываем Domoticz и пробуем добавить камеру.

Нужное меню в Domoticz Добавляем камеру в Domoticz
Добавляем камеру в Domoticz

Протокол оставляем HTTP, в качестве IP-адреса указываем адрес компьютера, куда установили motion. Порт указываем тот же самый, что и в файле настроек motion. Имя пользователя и пароль заполняем в том случае, если для просмотра камеры нужна авторизация. Ну и в ImageURL забиваем полный путь к потоку, тот же самый, который вбивали в браузере при проверке потока камеры. Нажимаем «Тест соединения» и надеемся, что картинка появится. Обычно на это нужно до 10 секунд. Если картинки нет, значит что-то пошло не так и придется всё проверять. В моем случае картинка нормально появляется когда я работаю в домашней сети. Если я запускаю Domoticz с рабочего компьютера, то она не показывается.
Нажимаем кнопку «Add», чтобы добавить камеру в список. И тут тоже есть нюанс. В строке с камерой тоже есть предварительный просмотр, но в моем случае он не работает. Также не работают кнопки «Сделать снимок» и «Stream video». Но это не важно, камера работает.
Не зря же мы это все делали? Пусть теперь камера работает датчиком движения — нечего ей просто так висеть на потолке. Например, включает освещение в коридоре, когда обнаружит движение.
В качестве выключателя с удаленным доступом у меня стоит простой Sonoff Basic, подключенный к моей сети через WiFi. Идем в настройки Domoticz, выбираем «Оборудование». В выпадающем списке ищем пункт «Dummy (Does nothing, use for virtual switches only)», называем его как-нибудь и нажимаем кнопку добавить. Теперь в списке чуть выше нажимаем кнопку «Создать виртуальные датчики», вводим название выключателя (придумываем сами) и указываем тип «Переключатель». Жмем «ОК». Всё, мы создали виртуальное устройство, которое будет управлять освещением в коридоре. Остается теперь соединить между собой камеру и выключатель.
Вспоминаем, что у нас есть два скрипта от motion, которые выполняются при возникновении и завершении события, в данном случае — в коридоре. Добавляем в каждый из скриптов по одной строке. В  /root/motion/actions/on_event_start добавляем

/usr/bin/curl -s "http://api_username:api_password@domoticz_server:domoticz_port/json.htm?
type=command&param=switchlight&idx=your_ID&switchcmd=On"

а в  /root/motion/actions/on_event_end такую строку:

/usr/bin/curl -s "http://api_username:api_password@domoticz_server:domoticz_port/json.htm?
type=command&param=switchlight&idx=your_ID&switchcmd=Off"

Теперь разберем, что это за бред.
curl — программа, позволяющая выполнить те или иные действия по указанному адресу, используя только командную строку.
api_username и api_password — имя пользователя и пароль, которые вы установили для доступа к Domoticz. Если не устанавливали, то эту часть «api_username:api_password@» можно не вводить.
domoticz_server и domoticz_port — IP-адрес и порт компьютера, где у вас установлен Domoticz. В качестве порта нужно указать стандартный 8080, если, конечно, вы не делали перенаправления портов.
idx=your_ID — в качестве your_ID нужно указать значение выключателя из колонки Idx таблицы устройств. У меня это значение равно «1».

Таблица устройств
Таблица устройств

Ну и последний параметр switchcmd может принимать значения On или Off, в зависимости от того, хотите ли вы включить освещение или выключить соответственно. Подозреваю, что можно также указать «1» и «0» соответственно, но, если честно, лень проверять :-)
Должен также отметить, что в Sonoff установлена не стандартная прошивка с привязкой к китайскому облаку (и возможностью потерять доступ к своему выключателю из-за рвения Роскомнадзора заблокировать всех и вся), а Tasmota. Возможностей у нее немного, но лично мне хватит с избытком. Не будет же выключатель вещать радио, когда мне скучно? :-)
Теперь почему мы используем такой сложный способ включения/выключения? Просто при таком способе состояние выключателя будет корректно отображаться в Domoticz в случае возникновения или завершения движения в коридоре.

Эксперименты с видеонаблюдением

Небольшое отступление.
Посмотрел дату последней заметки — оказалось, что ничего не писал уже около полугода. Работа со «странным» заказом, затем предновогодняя суета, потом другие дела. Порой хотелось поделиться событиями из жизни, но то забудешь, то времени нет, то желания. А потом вроде как и поздновато уже.
Если вкратце, то события последнего времени такие. Работу в «Балансе» закончили, москвичи полностью расплатились с нашим куратором еще в декабре, но полного расчета от последнего мы так и не получили. «Минус» ему в карму. Договоров в письменном виде никаких не было, поэтому увы и ах. Подождем еще немного.
Три дня подряд корпоративов — это тяжело. Очень тяжело. Из них вынес для себя, что водку и самогон лучше не пить, только вино. Или это старость ко мне так подкрадывается?

Ну и хватит, ближе к делу.
Ну не могу я несколько дней ничего не делать и сидеть дома. Руки начинают «чесаться». В итоге, вспомнив, что у меня домашний видеорегистратор является гибридным, прикупил IP-камеру попробовать. Брал без особых наворотов типа PTZ, распознавания лиц и т. д. Обычную Full HD камеру с инфракрасной подсветкой. Заодно перевесил ее со стены в центр потолка в тамбуре. Особых различий в картинке между предыдущей аналоговой и новой IP я не заметил. Хотя нет, обманываю, одно различие все же было — в цветах. У аналоговой камеры тамбур был намного более синим из-за того, что в этот цвет покрашены стены в нем. «Цифра» более точно передает цвета. Плюс к этому всякие «примочки» в виде автобаланса цветов, антиблика и т. п.
Кстати, в таблице переключения режимов работы регистратора указано, что он поддерживает 4 аналоговых канала или 8 цифровых в формате Full HD. Или 2 аналоговых и 2 цифровых, но в 720p. После недолгих размышлений пришел к выводу, что не хочу совмещать аналоговые и IP-камеры. Пусть лучше будут только последние.
Потратив примерно месяц на «любование» новой камерой, снова заскучал. Пришлось купить себе пару Sonoff Basic для экспериментов — это реле управления нагрузкой с возможностью доступа к нему через WiFi. Поставил программу для управления на телефон, запустил и... Ненавижу управлять устройством через чье-то облако. В данном случае, конечно же, китайское. Недавно только читал пару статей о том, как два человека не могли получить доступ к технике: один к водонагревателю, другой к пылесосу. И все потому, что РКН (не к ночи будет помянут) заблокировал серверы Amazon, где располагались эти облака. Открыл 4pda, почитал, посмотрел на скриншоты и залил стороннюю прошивку Tasmota. Мне лично ее возможностей пока хватает.
Итак, проблема с облаком решена, теперь устройства ни к чему не привязаны, кроме моего роутера. Отлично! Зарезервировал для них IP-адреса, немного поигрался и стал думать куда их поставить.
Тут нужно упомянуть, что чуть раньше прикупил себе в «Леруа» датчик движения с реле. Вот вроде такого:

Датчик движения с реле

Но он меня немного разочаровал — достаточно медленно, на мой взгляд, реагирует на движение, несмотря на выкрученную на максимум чувствительность. Хотелось все же чего-то побыстрей. Вроде такого: ты только начинаешь открывать дверь из подъезда/квартиры, а датчик уловил движение и включил освещение в тамбуре.
И вот на этой почве у меня родилась идея по замене установленного датчика движения на этот самый Sonoff. А в качестве первого будет выступать новая IP-камера — у нее-то чувствительность можно регулировать. Если быть совсем точным, то не в ней, а в программе motion, которая рассылает мне оповещения и шлет кадр с камеры с фото человека, движущегося в тамбуре. Но тут произошел небольшой казус с motion. Оказалось, что для программы выключение света — тоже движение. А значит его нужно записать. И включить свет — ведь есть «движение»! Мать его!!! Бесит!
Пока что нашел только один выход из этой ситуации, «костыль» — свет выключается через 58 секунд после обнаружения движения, за 2 секунды до окончания события. За это время человек гарантированно пройдет тамбур. Надо будет, кстати, попробовать находиться в нем более 1 минуты и посмотреть выключиться свет или нет. Попробую еще покопаться в настройках камеры и видеорегистратора — возможно, что найду что-то полезное для данного случая.
В целях решения этой проблемы в голову пришла мысль прикупить еще PIR-сенсор и прикрепить его к Sonoff. Правда получится почти такой же датчик, как и тот, который я брал в «Леруа», но размеры явно будут поменьше. Дома еще уже много лет валяется «объемник», тоже с PIR-сенсором, но как его связать с реле — пока непонятно.
В общем, пока что с выключением света думаю, рассматриваю разные варианты. Как все получится — отпишусь что получилось и к чему я пришел. И хочется, наконец-то, сделать распознавание лиц.