Alfawise 1080P и интеграция IP-камер в Home Assistant

Пост опубликован в блогах iXBT.com, его автор не имеет отношения к редакции iXBT.com

Здравствуйте друзья. В этом обзоре я хочу рассмотреть вопрос подключения IP камер к системе управления умным домом Home Assistant, взяв в качестве примера наружную камеру от Alfawise, которая является клоном довольно известного китайского бренда Escam. Метод показанный в обзоре можно использовать для любых IP камер с стандартными протоколами передачи видеопотока. Начнем с камеры - 


GearBest — на момент написания обзора, распродажа по $34.99

Упаковка

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

Привыкнув к качественной и продуманной упаковке от Xiaomi и ее суббрендов, немного странно видеть такую вот картинку, где все насыпом.

Что в коробке

Тем не менее, противоударный пакет для камеры присутствует, да и сама коробка при пересылке совершенно не пострадала. Кроме камеры в комплекте блок питания, комплект крепежа, ethernet кабель и инструкция

Блок питания с евровилкой, на 12 Вольт, максимальный ток — 1А. В ходе испытаний я фиксировал мощность не более 4 Ватт.


Камера имеет одну съемную внешнюю антенну, которая идет в комплекте, не забыл производитель и про три шурупа и дюбеля, а также шестигранник для регулировки положения камеры.

Внешний вид

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

Диапазон рабочих температур (℃): -30-60 Deg.C
Относительная влажность (%) RH: 10%-90%

Объектив камеры имеет угол обзора в 110 градусов, камера оснащена 2 МП матрицей которая снимает с разрешением 1920 * 1080 с частотой 15 кадров в секунду, используя кодек H.264. Кольцо из 18 инфракрасных светодиодов, имеют заявленную дальность подсветки в 15 метров. Подсветка хорошо видна невооруженным глазом.

Размер камеры — 20см * 6 см * 6 см, она довольно компактная, что хорошо видно в сравнении со спичечным коробком.


В нижней части камеры находится металлическая крышка, которая крепится на два винта.  Крышка изнутри имеет резиновую прокладку, для защиты от влаги.

Открыв крышку — получаем вид на электронную начинку камеры и слот для  Micro SD карты.

Под объективом камеры находится датчик освещенности. Кабель камеры — разделяется на три части.  Один конец — это порт Ethernet, для проводного подключения к сети, если есть такая возможность. Второй — разъем для подключения блока питания и третий — закрытая крышкой кнопка сброса.

Подключение

Для подключения камеры, используется приложение CamHi, тоже самое что применяется для работы камер EsCam и некторых других. Перед подключением нужно найти сеть с названием IPCAM — цифры и подключится к ней, используя пароль 01234567.

После этого, запускаем ранее установленное приложение, нажимаем добавить камеру, запускаем мастер поиска в сети с логином и паролем admin / admin, и соединяемся с камерой.

После того, как с камерой установлено соединение, нужно перейти в настройки камеры, нажав на шестеренку справа, там выбрать настройки wi-fi, и запустить поиск wi-fi сетей.

Далее — выбираем нужную wi-fi сеть, подключаемся к ней введя пароль и получаем онлайн доступ к камере, который доступен из любой точки мира, где есть интернет.

Картинка с камеры — довольно неплохая, данные передаются практически без таймлага, сверху и снизу опции, например качество видео потока, SD или HD. Если у вас нормальный канал с интернет, то разницы в скорости между SD и HD не будет, а вот в качестве картинке — она будет существенно лучше. Так же имеются опции по перевороту и зеркалированию изображения в кадре.  Приложение универсальное, и имеет возможность подключения разных камер, поэтому есть опции зуммирования и фокуса. Опции сохранения точек поворота и наклона головки камеры — что в данной модели конечно не работает. Есть опция управления съемкой, например можно принудительно отключить съемку в ИК освещении для получения цветной картинки.

В приложении имеется режим обнаружения движения в кадре, причем область кадра можно задавать. По факту обнаружения — есть выбор опций — отправка пуш уведомления, запись видео на карту памяти — пишется 15 секунд, отправка 1,2 или 3 фото на e-mail или ftp, сохранение на внешний ftp видео фрагмента.

В приложение можно настроить битрейт для основного и дополнительного видеопотока. Включить постоянную запись видео с камеры — любого из потоков, ролики длительностью от 15 секунд до 15 минут. Можно просмотреть занятое место и отформатировать карту памяти.

В приложении имеется доступ к локальному альбому фотографий, и хранилищу камері с видеороликами. Видна их продолжительность, тревожные ролики выделены красным шрифтом. Отсюда можно их скачать на телефон и сразу преобразовать в mp4 файлы которые можно просматривать любым проигрывателем.

Камера имеет встроенный веб сервер, для корректного получения видеопотока надо будет скачать и установить по компонент, по ссылке на приветственной странице.  Язык по умолчанию китайский — переключается на английский.  Здесь есть все те же настройки что и в приложении, но в более расширенном виде. Вот так выглядит страница настройки видеопотоков.  Для камеры можно установить фиксированный IP адрес, что сбережет место в пуле статических адресов роутера. На этой странице задаются порты для веб сервера и стандартных видеопотоков. Имеется страница настройки видеопотока в стандарте onvif.

На карту памяти камера пишет файлы с расширением .264, но такой способ передачи данных — вряд ли будет востребован, учитывая то, что карта памяти скрыта за металлической крышкой на винтах.  После преобразования в приложении, получаются видеофайлы разрешением 1920*1080 и частотой 18 кадров в секунду. Микрофона в камере нет, видео без звука.

Видео как по мне — довольно не плохое как для бюджетной камеры. Достаточная детализация и скорость, видно по экрану телевизора.  Режим в ИК подсветке — похуже, но в целом тоже вполне достаточный. Примеры съемки — смотрите в видеоверсии обзора, в конце статьи.

Пример срабатывания тревоги — пуш уведомления от приложения, но оно должно быть активным в фоне, в самом приложении возле камеры появляется колокольчик. На почту приходит заданное количество снимков от одного до трех.

Интеграция

Если с протоколом onvif особенных трудностей нет, порт можно настроить в приложении, то адрес для rtsp и mjpeg — нужно поискать. Я для этого использую сайт ispyconnect — где есть большая база производителей. Нужные строки я нашел в разделе камер от Escam — клоном которого является эта камера Alfawise. Нужная строка генерируется на сайте по исходным параметрам.

Для проверки корректности подключения я использовал плагин для hassio — который называется motioneye. Сначала нашел адрес обновляемой картинки в jpg.  Потом подобрал параметры потока rtsp. Здесь это удобно делать просто на лету, можно использовать метод проб и ошибок.

Параметры камеры прописываются в разделе camera, основного конфига системы, или, как в моем примере — в отдельно вынесенном файле. Вот так выглядят три варианта для платформ mjpeg, ffmpeg для потока rtsp и onvif.

- platform: onvif<br />name: Alfawiseonvif<br />host: 192.168.0.190<br />username: admin<br />password: admin<br />port: 8080
- platform: mjpeg<br />mjpeg_url: http://192.168.0.190/snap.jpg<br />name: Alfawisejpeg<br />username: admin<br />password: admin
- platform: ffmpeg<br />name: Alfawisertsp<br />input: -rtsp_transport tcp -i rtsp://admin:admin@192.168.0.190/11

Особой разницы при использовании в Home Assistant — я не увидел, так выглядит основное окно системы с тремя подключенными камерами.

Пример сценария

Рассмотрим пример сценария в котором по однократному нажатию на беспроводную кнопку — бинарный датчик с событием клик

Запускается действие — camera.snapshot, указываем ID нужной камеры и путь куда сохранять файл. Папки создаются один раз вручную. При необходимости имя может быть динамическое — например с указанием времени используя сенсор time.  После этого, я даю 5 секунд, с запасом, для сохранения файла, и используя службу notify отправляю снимок в телеграмм. Аналогично можно отправлять на email.

- alias: photo_alfawise<br />trigger:<br />- platform: event<br />event_type: click<br />event_data:<br />entity_id: binary_sensor.switch_158d0001e8a244<br />click_type: single <br />action: <br />- delay: 00:00:01<br />- service: camera.snapshot<br />data:<br />entity_id: camera.alfawise<br />filename: "/config/www/cam_captures/alfawise.jpg"<br />- delay: 00:00:05<br />- service: notify.telegram<br />data:<br />title: "Alfawise"<br />message: "Фотография" <br />data:<br />photo:<br />- file: /config/www/cam_captures/alfawise.jpg

А это мой реальный, рабочий скрипт, который запускается из сценария по открытию входной двери — три фотографии с трех камер время задержек выставлено экспериментально.

photo_door_t:<br />sequence:<br />- service: camera.snapshot<br />data:<br />entity_id: camera.alfawise<br />filename: "/config/www/cam_captures/alfawise.jpg"<br />- delay: 00:00:01<br />- service: camera.snapshot<br />data:<br />entity_id: camera.xiaofang<br />filename: "/config/www/cam_captures/xiaofang.jpg"<br />- service: camera.snapshot<br />data:<br />entity_id: camera.reolink<br />filename: "/config/www/cam_captures/reolink.jpg"<br />- delay: 00:00:05<br />- service: notify.telegram<br />data:<br />title: "Дверь"<br />message: "Фотография" <br />data:<br />photo:<br />- file: /config/www/cam_captures/xiaofang.jpg<br />- file: /config/www/cam_captures/reolink.jpg<br />- file: /config/www/cam_captures/alfawise.jpg

Вот мой рабочий сценарий, который по событию открытия двери, генерирует сообщение с датой и временем события, потом запускает скрипт который делает фото, а далее — запуск трехминутного таймера и отключение самого себя.

- alias: enter_photo<br />initial_state: true<br />trigger:<br />platform: state<br />entity_id: binary_sensor.door_window_sensor_158d000119378d<br />from: 'off'<br />to: 'on'<br />action:<br />- service: notify.telegram<br />data:<br />title: "Дверь"<br />message: "Входная дверь открыта в {{ states('sensor.time__date') }}" <br />- service: script.turn_on<br />entity_id: script.photo_door_t<br />- service: timer.start<br />entity_id: timer.camphoto<br />- service: automation.turn_off<br />entity_id: automation.enter_photo

Чтобы не генерить мусорные сообщения, если дверь открывается несколько раз, сценарий работает не чаще одного раза в три минуты, по таймеру, который по завершению включает сценарий обратно.

- alias: enter_photo_on<br />initial_state: true<br />trigger:<br />- platform: event<br />event_type: timer.finished<br />event_data:<br />entity_id: timer.camphoto<br />action:<br />- service: automation.turn_on<br />entity_id: automation.enter_photo

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

Используя шаги описанные в этом обзоре, аналогично можно интегрировать практически любую IP камеру с стандартными протоколами, для работы в системе Home Assistant.

Видеоверсия обзора:

На этом все, спасибо за внимание