Лучшее решение для HomeKit камеры и лайфхак плавного видео для всех Xiaomi камер

Однажды мы уже рассказывали про камеры в homekit, но недавно на одном из русских аналогов AliExpress были неплохие скидки на камеру XiaoFang от Xiaomi, поэтому решил ее приобрести и завести себе в дом. 

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

Установка хака

  1. Заходим на страницу гитхаба и скачиваем актуальную прошивку для нашей камеры. На момент написания статьи ссылка на прошивку вела сюда
  2. Форматируем microSD в формат FAT32. На macOS это делается стандартной программой «Дисковая утилита». Если не получилось, то открываем Terminal и используем следующие команды:
    1. diskutil list
      и ищем среди списка диск с нашим именем (должно быть что-то типа disk1)
    2. sudo diskutil eraseDisk FAT32 <NAME> MBRFormat <DISK>
      где вместо <NAME> пишем имя нашей карты (по-умолчанию, это ‘NO NAME’), а вместо <DISK> то, что мы нашли в пункте 1
      В таком случае наша команда будет выглядеть вот так

      sudo diskutil eraseDisk FAT32 ‘NO NAME’ MBRFormat /dev/disk1
  3. После чего закидываем скачанную прошивку на отформатированную SD карту и переименовываем её в demo.bin
  4. Вставляем карту в камеру, зажимаем кнопку setup на нижней стороне камеры и подаём питание (кнопку не отпускаем)
  5. Сначала загорается желтая лампочка, потом белая, и когда начнет мигать желтая лампочка, отпускаем кнопку setup
  6. Дальше по инструкции автора мы должны подождать 3 минуты, после чего лампочка перестанет мигать. В моем случае она мигала минут 10, после чего я решил пойти дальше, не дожидаясь того когда лампочка перестанет мигать (т.е. просто выдернул питания не дожидаясь окончания миганий)
  7. Следующим шагом мы отключаем камеру от питания и вынимаем карточку
  8. Скачиваем репозиторий с файлами с гитхаба (просто нажимаем DOWNLOAD ZIP по ссылке)
  9. Переносим все файлы из папки «firmware_mod» в корень карты, а сам файл прошивки с карты можем удалить. Должно получиться примерно так:
    E:/
    ├── Media
    ├── autoupdate.sh
    ├── bin
    ├── config
    ├── controlscripts
    ├── driver
    ├── run.sh
    ├── scripts
    ├── uEnv.bootfromnand.txt
    ├── uEnv.bootfromsdcard.txt
    ├── uboot-flash
    └── www
  10. Переходим в папку config/
  11. Открываем файл wpa_supplicant.conf.dist в текстовом редакторе Sublime или что-то на подобие
  12. Заполняем своими данными Wi-Fi (в большинстве случаев достаточно поменять ssid (название вашей wi-fi сети) и psk (пароль)
  13. Сохраняем файл, как wpa_supplicant.conf (без dist)
  14. Вставляем карту в камеру и подаем питание
  15. После чего можете попробовать перейти по ссылке https://dafang или же если не получилось, то найти в роутере устройство с именем DAFANG и перейти по адресу с указанием IP типа https://192.168.31.222 
  16. После чего вам необходимо будет принять сертификат и пройти форму авторизацию (логин:root, пароль ismart12)

На этом базовая установка хака закончена. Дальше перейдем к настройкам для проброса её в HomeKit.

Настройка камеры

Проводим следующие настройки на самой камере. Для этого заходим в веб-интерфейс камеры:

  1. Переходим во вкладку System -> Video и повторяем там эти настройки
  2. Если вы купили камеру недавно, то скорее всего у вас нет датчика освещенности (в смысле в новых камерах производитель убрал этот датчик), и поэтому переводим настройки Auto Night Mode в положение SW (режим sw позволяет определять день/ночь по анализу самого изображения без датчика света) и на всякий случай нажимаем на off и потом on для того, чтобы точно применить настройки (не забудьте проверить работоспособность этой настройки, потому что веб-интерфейс иногда не с первого раза применяет их — при необходимости повторите действия)
  3. А если вы захотите также и получить адекватный звук на выходе в HomeKit, то необходимо перейти во вкладу System -> Audio и выполнить настройки со скриншота (не забываем выполнить Reboot камеры после внесения изменений).

Настройка HomeBridge

Теперь переходим к HomeBridge.

Тут мы НАСТОЯТЕЛЬНО рекомендуем выполнить данные шаги инструкции, т.к. это сильно изменит ваш опыт использования данной камеры и в общем любой камеры, которая изначально поставляет поток видео в h264 (а это практически любая xiaomi camera).

Особенность данного потока в том, что его можно практически полностью проксировать в том виде, который поставляется от камеры, из-за чего нам не нужно напрягать нашу Raspberry Pi лишним кодированием видео. К сожалению, на момент написания статьи (версия плагина homebridge-camera-ffmpeg 0.1.11) в плагине из коробки такой возможности нет, поэтому нам необходимо будет модифицировать код плагина, чтобы тот не производил лишних операций в нашем видео.

Справка: кодирование видео достаточно сильно сьедает CPU нашей Raspberry, для того, чтобы его избежать нам необходимо будет передать на вход vcodec copy (означающий «ничего не делай с нашим видео") и убрать так называемый скейлинг (увы, это нужно сделать в самом коде, а не в параметрах конфига).

Для этого:

  1. Если вдруг у вас еще не установлен плагин homebridge-camera-ffmpeg и не собран ffmpeg, то идем в данную статью и делаем это (сразу делаем это вместе со звуком)
  2. Находим где установлен плагин homebridge-camera-ffmpeg и файл ffmpeg.js
  3. Скорее всего он будет у вас по адресу /usr/local/lib/node_modules/homebridge-camera-ffmpeg/ffmpeg.js
  4. Редактируем данный файл
    sudo nano /usr/local/lib/node_modules/homebridge-camera-ffmpeg/ffmpeg.js
  5. Ищем в файле строку #300 с содержанием
    if (videoFilter !== null) {
  6. Заменяем данную строку на следующее содержание
    if (videoFilter !== null && vcodec !== "copy") {
  7. Сохраняем изменения (ctrl + C, потом Y и enter)

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

    "platforms": [
        {
            "platform": "Camera-ffmpeg",
            "cameras": [
                {
                    "name": "Camera 5",
                    "videoConfig": {
                        "source": "-rtsp_transport tcp -y -i rtsp://192.168.31.222:8554/unicast",
                        "maxFPS": 30,
                        "vcodec": "copy",
                        "packetSize": 376,
                        "audio": true
                    }
                }
            ]
        }
    ]

Т.е. всё, что нам нужно указать, это source, подставив там IP вашей камеры, указать фпс, обязательно указать vcodec: copy и по желанию добавить audio: true для передачи звука и задать packetSize для того, чтобы аудиокодек не захлебывался и отдавал качественный звук.

После этого сохраняем конфиг, перезапускаем homebridge и довольствуемся результатом. 

Итоги

В итоге в приложении Дом вы получите плавное и качественное видео со звуком (да, ffmpeg поставляет не лучший звук, но в общем-то годный). 

По итогам скажу, что за 1400 рублей (или за 700-800 рублей со скидками) эту камеру можно назвать лучшим решением для HomeKit камеры, которая передает качественное видео без залипаний и тормозов, звук и ночное видение. Ссылка на Aliexpress.

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

Author

Наш главный гайд-мастер. Инструкции и обзоры его конёк. Иногда перебарщивает с личным мнением.