Majordomo Умный дом

Как подключить Xiaomi xiaofang к Majordomo

• 31-10-2019 •

К сожалению, в последнее время, камера Xiaomi xiaofang начала проситься обратно на родину в Китай. Выводя сообщение Only mainland China. Так как я обладатель этой камеры, то решил найти способ, как вдохнуть в нее жизнь и готов с ним поделиться с вами!

Сразу стоит отметить, что речь пойдет о камере Xiaomi Xiaofang 1S, убедитесь что у вас именно эта камера!

Что потребуется:

Шаг 1

  1. Первым делом нужно отформатировать микроСД карту в FAT32, лично я использовал для этого программу SD Card Formatter
  2. Распаковываем скачанный архив и закидываем на карту файл demo.bin
  3. Выключаем камеру из сети, вставляем карту, зажимаем и не отпускаем кнопку SETUP, включаем камеру в сеть.
  4. Ждем 10 секунд и отпускаем кнопку SETUP
  5. Ждем около 3-х минут, пока не установиться прошивка. Чтобы понять, что прошивка установлена, следим за светодиодом, который расположен на камере. Когда он перестанет мигать, тогда процесс установки закончился.

Шаг 2

  1. Выключить камеру и вытащить карту
  2. Удалить все из карты
  3. Переходим в папочку firmware_mod/config/ и находим файл wpa_supplicant.conf.dist
  4. Переименовываем в wpa_supplicant.conf и открываем с помощью блокнота
  5. Где ssid указываем название вашей сети и где psk указываем пароль
  6. Теперь, все что внутри папки firmware_mod записываем на сд карту
  7. Вставляем карту в камеру, включаем камеру в сеть
  8. Заходим в браузер и вписываем ip камеры: https://ipaddess
  9. Попросит ввести пароль, вводим: Логин – root, пароль – ismart12

Единственный минус этой прошивки, что сд карту приходиться оставлять внутри камеры. Так как, если ее вытащить, то хак перестанет работать.

Если вы ввели ip адрес камеры и вместо ошибки у вас появилась меню настроек, то я вас поздравляю, вы все сделали правильно. Теперь быстро пробежимся по настройкам:

dafang_hack

В настройках вы можете указать часовой пояс, чтобы на видео отображалась правильная дата, так же есть видео настройки, где вы можете указать разрешение, bitrate, framerate, пароль
Если не хотите заморачиваться с настройками, то перейдите в System -> Video и укажите эти настройки:


Video username: admin
Video password: admin123
Video port: 8554
Video Size: 1280x720
bitrate: 1000
Frame Rate: 15

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

Если автоматический ночной режим со старту не работает, то можно перейти в настройки Services -> SW Night configuration и вручную задать порог значения включения и выключения ночного режима!

В видео настройках вы найдете ссылку rtsp://IPADDRESS:8554/unicast, где вместо IPADDRESS будет ваш локальный адрес. Он то нам и нужен.

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

Заходим в Устройства -> Простые устройства и добавляем камеру.

В настройках указываем как на скриншоте:

После сохранения настроек, в правом верхнем углу, должен появится снапшот, значит на данном этапе все в порядке и можно переходить к следующему.
Переходим в сцены, создаем или редактируем сцену, создаем элемент с типом HTML и в редакторе вставляем:


[#module name="thumb" url="rtsp://IPADDRESS:8554/unicast" username="admin" password="admin123" width="600" height="350" live="1"#]

Сохраняем элемент, переходим в Настройки -> Домашние страницы и создаем страницу с типом URL и с ссылкой на сцену. В итоге у вас на главной появится вкладка с вашей сценой, где будет выводится картинка, которая будет обновляться каждые 3 секунды.

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

Настройка HLS

Если вы уже успели перейти на вкладку “Video“, то ниже вы могли заметить несколько ссылок видео потоков:


Path to feed: rtsp://IPADDRESS:8554/unicast
HLS: http://IPADDRESS:8554/unicast.m3u8
hls.js web player: http://IPADDRESS:8554
MPEG-DASH: http://IPADDRESS:8554/unicast.mpd

К сожалению браузер не умеет воспроизводить с RTSP, а в прошивке по умолчанию HLS отключен. Нам потребуется его включить. Для этого нужно найти файл firmware_mod\config\rtspserver.conf
Найти строчку RTSPH264OPTS=”” и в скобочках написать -S. В итоге должно получится:


RTSPH264OPTS="-S"

Сохранить и закинуть на SD карту, тогда при запуске камеры, автоматически будет работать HLS. Но у этого способа есть один нюанс, если вы решите поменять видео разрешение для камеры, то настройки собьются и придется записывать по новой.

Чтобы каждый раз не перезаписывать файл на карту, можно изменить другой файл, который отвечает за обновление конфига : firmware_mod\www\cgi-bin\status.cgi.js


//Найти строчку 
'video_size': $('select[name=video_size]').val() 

//и изменить ее на:
'video_size': $('select[name=video_size]').val() + ' -S',

Тогда при изменении настроек, автоматически будет прописываться -S
Обновляем файл на SD карте.

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



<video controls id="hlsvideo" width="600" height="350"></video>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/hls.js/0.8.9/hls.light.min.js"></script>
  <script>
    var video = document.getElementById("hlsvideo");
    if (Hls.isSupported()) {
      var hls = new Hls();
      hls.loadSource("http://IPADDRESS/unicast.m3u8"); // IP ADDRESS вашей камеры!
      hls.attachMedia(video);
      hls.on(Hls.Events.MANIFEST_PARSED, function() {
        video.play();
      });
    } else if (video.canPlayType('application/vnd.apple.mpegurl')) {
      video.src = "http://IPADDRESS/unicast.m3u8"; // IP ADDRESS вашей камеры!
      video.addEventListener('loadedmetadata', function() {
        video.play();
      });
    } else {
      document.write("HLS not supported");
    }
  </script>

Сохраняем и проверяем сцену на главной странице Majordomo. Сразу скажу что будет задержка на видео, но тут уже ничего не поделаешь.

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

Снапшот в телеграм

Заходим в модуль телеграм, переходим на вкладку “Команды” и добавляем следующую команду:


callMethod('Camera01.takeSnapshot'); // Вызываем метод, который делает снапшот камеры
$img = '/var/www/html/cms/images/'.gg('Camera01.snapshot'); // Указываем путь к снапшоту
$this->sendImageToUser($chat_id, $img, 'Камера в подвале'); // Отправляем в чат

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

На этом все, если остались вопросы, задавайте смело в комментариях!

Добавить комментарий