Agregando una cámara Xiaomi Xiaofang 1S a Homekit vía Homebridge

Publicado por emontes en

Dentro de las cosas que tenía pendiente de realizar era sumar a mi sistema de domótica una cámara Xiaomi Xiaofang 1S la cual había comprado hace tiempo simplemente para probar su calidad y ver si podría ser de alguna utilidad. Hasta ahora sólo la había utilizado a través de la aplicación Xiaomi Home, con lo cual si bien es cierto podía visualizar la cámara, no estaba integrada a Homekit.

Buscando entre los plugins de Homebridge, encontré 2  plugins los cuales permitían agregar dicha cámara a Homekit vía Homebridge. El primero fue homebridge-dafang desarrollado por sahilchaddha, con el cual no logré mi objetivo probablemente porque no logré entender las instrucciones ya que eran algo enredadas. Afortunadamente con homebridge-dafang-mqtt-republish desarrollado por sunookitsune logré agregar exitosamente la cámara a Homekit.

1. Instalando el bootloader y el custom firmware en la cámara Xiaomi Xiaofang 1S

Lo primero que debemos hacer es instalar un bootloader y un custom firmware para lo cual simplemente seguimos las instrucciones publicadas en el repositorio Xiaomi Dafang Hacks en Github desarrollado por EliasKotlyar.

Para esto necesitamos una tarjeta microSD de al menos 512 Mb, aunque en mi caso utilicé una de 2 Gb sin problemas. Es necesario formatearla en FAT32 para lo cual utilicé la aplicación SD Card Formatter descargada desde el sitio web de la sdcard.org.

Una vez formateada seguimos los siguientes pasos

  • Descargamos el bootloader correspondiente a la cámara Xiaomi Xiaofang 1S desde Xiaomi Dafang Hacks.
  • Renombramos el archivo descargado a «demo.bin».
  • Copiamos «demo.bin» a la microSD.
  • Expulsamos la microSD.
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Insertamos la microSD en la cámara apagada.
  • Mantenemos presionado el botón «reset» de la cámara.
  • Volvemos a conectar el cable de alimentación.
  • Mantenemos presionado el botón «reset» por al menos 10 segundos.
  • Esperamos a que el led de la parte posterior de la cámara se apague.

Con esto la cámara ya tiene cargado el bootloader y ahora corresponde instalar el custom firmware.

  • Descargamos el custom firmware desde Xiaomi Dafang Hacks.
  • Editamos el archivo «config/wpa_supplicant.conf.dist», reemplazamos los campos «SSID» y «psk» respectivamente por el nombre y el password de nuestra red WiFi.
  • Guardamos el archivo con el nombre «config/wpa_supplicant.conf».
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Retiramos la microSD de la cámara apagada.
  • Insertamos la microSD en nuestro computador.
  • Copiamos el contenido del directorio «firmware_mod» en la raíz de la microSD. Esto es muy importante.
  • Expulsamos la microSD.
  • Desconectamos el cable de alimentación de energía de la cámara.
  • Insertamos la microSD en la cámara apagada.
  • Volvemos a conectar el cable de alimentación.

El archivo «config/wpa_supplicant.conf» debe verse de la siguiente manera antes de modificarlo. Tal como indiqué más arriba, modifiquen «your_wifi_name» por el nombre de su red WiFi, y «your_wifi_pswd» por el password de esta.

# For more configuration option please see:
# https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1

network={
        ssid="your_wifi_name"
        # Uncomment to connect to Hidden SSIDs
        #scan_ssid=1 
        key_mgmt=WPA-PSK
        pairwise=CCMP TKIP
        group=CCMP TKIP WEP104 WEP40
        psk="your_wifi_pswd"
        priority=2
}

Con esto la cámara Xiaomi Xiaofang 1S queda configurada y podemos verificarlo conectándonos a la IP de nuestra cámara. En mi caso la IP asignada fue «192.168.1.100».

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12 en el cuadro de diálogo que nos aparecerá para ingresar al sistema operativo de la cámara.

Puede que Chrome no les permita ingresar a la cámara ya que por defecto no acepta conexiones https sin certificado, así que pueden utilizar Safari o Firefox, con los que pueden bypassear este problema.

2. Instalación de Mosquitto en la Raspberry Pi

Antes de instalar y configurar los plugins de Homebridge que permiten agregar la cámara Xiaomi Dafang 1S a Homebridge, es necesario instalar Mosquitto en el dispositivo en que tenemos corriendo Homebridge, en mi caso, una Raspberry Pi.

Para esto nos logueamos en nuestra Raspberry Pi, e instalamos Mosquitto utilizando el siguiente comando.

sudo apt-get install mosquitto mosquitto-clients

Una vez instalado Mosquito, tenemos que activar e iniciar el daemon de Mosquito con los siguientes comandos.

sudo systemctl enable mosquitto
sudo systemctl start mosquitto

3. Configuración de Mosquitto en la cámara Xiaomi Xiaofang 1S

Antes de instalar y configurar los plugins que permiten agregar la cámara Xiaomi Xiaofang 1S a Homebridge, es necesario configurar Mosquitto para que funcione correctamente.

Para esto tendremos que seguir los siguientes pasos.

  • Desconectamos el cable de alimentación de la cámara.
  • Retiramos la tarjeta microSD de la cámara.
  • Insertamos la tarjeta microSD en nuestro computador.
  • Editamos el archivo «config/mqtt.conf.dist».
# Options for mosquitto_sub & mosquitto_pub
#USER=mqtt-user
#PASS=mqtt-password
HOST=your_homebridge_IP
PORT=1883

# Define a location
LOCATION="your_location"

# Define device name
DEVICE_NAME="camera_name"
  • Reemplazamos en HOST el valor «your_homebridge_IP» por la IP del dispositivo en que está instalado Homebridge. En mi caso 192.168.1.30.
  • Reemplazamos en LOCATION el valor «your_location» por algún valor que les haga sentido, sin espacios. En mi caso utilicé «montes-tapia» que es el nombre que tiene mi casa en Home.
  • Reemplazamos en DEVICE_NAME el valor «camera_name» por el nombre que le quieren asignar a la cámara, sin espacios. En mi caso utilicé «camara-comedor».
  • Guardamos el archivo con el nombre «config/mqtt.conf».
  • Expulsamos la microSD.
  • Retiramos la microSD de nuestro computador.
  • Insertamos la microSD en la cámara apagada.
  • Volvemos a conectar el cable de alimentación de energía a la cámara.

4. Configuración de la cámara Xiaomi Xiaofang 1S

Este paso es opcional, pero puede ser útil para asegurarse que la cámara funcione correctamente en Homebridge.

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12.
  • En el menú «Configuration» seleccionamos la opción «Video».
  • Dejamos en blanco «Video username» y «Video password».
  • Configuramos «Video Size» con el valor 1280×720, «bitrate» con el valor 300 kbps y «Video format» con el valor CBR.
  • Luego configuramos «FrameRate» con el valor 28 por 1 segundo.
  • Pinchamos en «Set» para grabar la configuración.
  • Nuevamente en el menú «Configuration», esta vez seleccionamos la opción «Audio».
  • Configuramos «Audio format» con el valor PCM.
  • Configuramos tanto «in sample rate» y «out sample rate» con el valor 16000.
  • Configuramos «Filter» con el valor No Filter y deshabilitamos tanto «High pass filter» como «AEC Filter».
  • Configuramos el volumen en la variable «Volume» con un valor razonable, en mi caso utilicé 80%.
  • Pinchamos en «Set» para grabar la configuración.
  • Finalmente en el menú «System», seleccionamos la opción «Reboot».

5. Activación de los servicios en la cámara Xiaomi Xiaofang 1S

Para completar la configuración de la cámara sólo nos falta activar algunos servicios.

  • Abrimos una ventana de navegador y escribimos la IP de nuestra cámara. https://camera_ip.
  • Ingresamos con el nombre de usuario root y con la contraseña ismart12.
  • En el menú «System» seleccionamos la opción «Services».
  • Iniciamos el servicio mqtt-control y activamos la opción autorun.
  • Iniciamos el servicio mwtt-status y activamos la opción autorun.
  • Iniciamos el servicio configureMotion y activamos la opción autorun.
  • Iniciamos el servicio rtsp-h264 y activamos la opción autorun.
  • Ahora en el menú desplegable «Camera Controls» arriba a la derecha, activamos Motion Detection, Motion – MQTT Message, MQTT Status Server, MQTT Control Server y RTSP H264 Server si es que no están activados.
  • Finalmente en el menú «System», seleccionamos la opción «Reboot».

6. Instalación y configuración de homebridge-dafang-mqtt-republish en Homebridge

Ahora corresponde la instalación de los plugins de Homebridge que permiten agregar la cámara Xiaomi Xiaofang 1S a esta plataforma, y por consiguiente a Homekit.

Nos conectamos a nuestra instalación de Homebridge, en mi caso a través de la interfaz gráfica ya que lo tengo instalado vía Docker. Necesitamos instalar 2 plugins, homebridge-camera-ffmpeg y homebridge-dafang-mqtt-republish para lo cual pinchamos en el menú Plugins, y en la caja de búsqueda escribimos el nombre de cada uno de los plugins antes mencionados, uno a la vez para instalarlos.

Una vez instalados el sistema nos mostrará un cuadro de diálogo para configurarlos.

Para la configuración de homebridge-camera-ffmpeg utilicé los siguientes parámetros los cuales al menos para mi funcionaron.

  • En la sección «Cameras».
  • Configuré «Name» con el valor Cámara Comedor. Puedes utilizar cualquier nombre incluyendo espacios.
  • Configuré «Source» con el valor -i rtsp://camera_ip:8554/unicast. Debes reemplazar «camera_ip» con la IP de tu cámara.
  • Configuré «Still Image Source» con el valor -i https://root:ismart12@camera_ip/cgi-bin/currentpic.cgi. Debes reemplazar «root» con el usuario de tu cámara, «ismart12» con el password de acceso y «camera_ip» con la IP de tu cámara.
  • Configuré «Video Codec» con el valor copy.
  • Finalmente activé la opción «Enable Audio».
  • Continuando en la sección «Cameras», subsección «Advanced Settings».
  • Configuré «Maximum Concurrent Streams» con el valor 2.
  • Configuré «Maximum Width» con el valor 1280.
  • Configuré «Maximun Height» con el valor 720.
  • Configuré «Maximum FPS» con el valor 28.
  • Configuré «Maximum Bitrate» con el valor 300.
  • Continuando en la sección «Cameras», subsección «Customization Settings».
  • Configuré «Manufacturer» con el valor Xiaomi.
  • Configuré «Model» con el valor Dafang 1S.
  • En la sección «Automation Settings», subsección «MQTT Client».
  • Configuré «MQTT Server» con el valor homebridge_ip. Debes reemplazar «homebridge_ip» por la IP del dispositivo que está corriendo Homebridge y que es donde instalamos Mosquitto.
  • Configuré «MQTT Port» con el valor 1883.
  • Configuré «MQTT Topic» con el valor homebridge.
  • Finalmente pinchamos en «Save».

Para la configuración de homebridge-dafang-mqtt-republish utilicé los siguientes parámetros los cuales al menos para mi funcionaron.

  • Configuré «Name» con el valor Dafang MQTT.
  • Configuré «MQTT Server» con el valor homebridge_ip. Debes reemplazar «homebridge_ip» por la IP del dispositivo que está corriendo Homebridge y que es donde instalamos Mosquitto.
  • Configuré «MQTT Port» con el valor 1883.
  • Configuré «Homebridge MQTT Topic» con el valor homebridge.
  • En la sección «Cameras».
  • Configuré «Camera Name» con el valor Cámara Comedor. Puedes utilizar cualquier nombre incluyendo espacios.
  • Configuré «Dafang MQTT Topic» con el valor montes-tapia/camara-comedor. Este valor corresponde a las variables LOCATION y DEVICE_NAME que configuramos para Mosquitto en nuestra cámara en el paso Nº 3.
  • Configuré «Manufacturer» con el valor Xiaomi.
  • Configuré «Model» con el valor Dafang 1S.
  • Finalmente pinchamos en «Save».

La configuración tanto de homebridge-camera-ffmpeg y homebridge-dafang-mqtt-republish debe parecerse a lo siguiente.

{
            "name": "Camera FFmpeg",
            "mqtt": "homebridge_ip",
            "portmqtt": 1883,
            "topic": "homebridge",
            "cameras": [
                {
                    "name": "Cámara Comedor",
                    "manufacturer": "Xiaomi",
                    "model": "Dafang S1",
                    "motion": true,
                    "motionTimeout": 0,
                    "videoConfig": {
                        "source": "-i rtsp://camera_ip:8554/unicast",
                        "stillImageSource": "-i https://root:ismart12@camera_ip/cgi-bin/currentpic.cgi",
                        "maxStreams": 2,
                        "maxWidth": 1280,
                        "maxHeight": 720,
                        "maxFPS": 28,
                        "maxBitrate": 300,
                        "vcodec": "copy",
                        "packetSize": 564,
                        "audio": true,
                        "debug": true
                    }
                }
            ],
            "platform": "Camera-ffmpeg"
        },
        {
            "cameras": [
                {
                    "name": "Camera Name",
                    "dafang_topic": "location/device-name",
                    "manufacturer": "Xiaomi",
                    "model": "Dafang S1"
                }
            ],
            "name": "Dafang MQTT",
            "server": "homebridge_ip",
            "port": 1883,
            "homebridge_topic": "homebridge",
            "platform": "dafangMqtt"
        }

Una vez que nos aseguramos que la configuración está correcta, sólo basta rebootear la Raspberry Pi.

7. Configurar la cámara en Home

Finalmente, si todo ha sido realizado como debe ser, al abrir la aplicación Home en nuestro iPhone o iPad, podremos visualizar nuestra cámara al final de todos los dispositivos favoritos.

Seleccionamos la cámara, pinchamos en la rueda dentada arriba a la izquierda con lo cual podremos configurar la habitación a la cual esta asignada la cámara, incluirla o quitarla de favoritos, y activar o desactivar las notificaciones.

Después de todos estos largos, tediosos y complejos pasos, ya tenemos funcionando nuestra cámara Xiaomi Dafang 1S en Homekit vía Homebridge.


0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *