====== Xiaomi Dafang ====== Cámara IP * Procesador principal: Ingenic T20 * Wifi: Realtek 8192 * LED Driver: ULN2803 {{ https://p.turbosquid.com/ts-thumb/QS/KGGglq/cnx8RVxH/xiaomi1/jpg/1523303312/600x600/fit_q87/0ebaae85b4b8a09aea4788bbccc59a71f986939d/xiaomi1.jpg |}} ===== Custom firmware ===== * https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks Primero hay que instalar el cargador de arranque: - [[https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/hacks/install_cfw.md|Descargar el binario del firmware]] para el modelo en cuestión - Renombrarlo a ''demo.bin'' y copiarlo a una tarjeta microSD formateada en FAT32 - Con la cámara apagada, meter la tarjeta - Mantener el botón de setup pulsado mientras encendemos la cámara. - Mantener pulsado el botón otros 10 segundos. - Esperar que se instale el firmware (más o menos 3 minutos). - Apagar la cámara cuando empiece a moverse - Quitar la tarjeta y encender la cámara El LED azul aparecerá unos 5 segundos antes de que se empiece a mover la base de la cámara. Si eso no sucede, repetir los pasos. Instalación del firmware: - Clonar el repositorio de github. - Copiar el contenido de ''firmware_mod'' a la raíz de la tarjeta microSD - Copiar ''firmware_mod/config/wpa_supplicant.conf.dist'' a ''firmware_mod/config/wpa_supplicant.conf'' - Modificar el fichero ''firmware_mod/config/wpa_supplicant.conf'' para adaptarlo a nuestra configuración WiFi - Meter la tarjeta microSD y encender la cámara. - Iniciar sesión a https://ip.camara con las credenciales ''root:ismart12'' ==== SSH ==== Credenciales por defecto: * Usuario: ''root'' * Contraseña: ''ismart12'' ==== Captura ==== Para obtener una captura de lo que está viendo la cámara: curl --insecure https://usuario:contraseña@di.rec.cion.ip/cgi-bin/currentpic.cgi --output dafang-capture.jpg ==== Streaming ==== Cuando está activado el servidor RTSP H264 permite conectarse al streaming mediante: * ''rtsp:%%//%%ip.de.la.camara:8554/unicast'' * HLS: ''http://ip.de.la.camara:8554/unicast.m3u8'' * hls.js web player: ''http://ip.de.la.camara:8554'' * MPEG-DASH: ''http://ip.de.la.camara:8554/unicast.mpd'' ==== Modo nocturno ==== Al no disponer de sensor de luz, el cambio a modo nocturno se hace por software. Se pueden configurar los parámetros que indican cuando se debe cambiar de modo desde //Services// -> **SW night configuration**. Para poder probar y guardar los cambios, el servicio **auto-night-detection** debe estar detenido (//Services// -> **Services**) La visión nocturna está funcionando si IR Led está activado e IR-Cut está apagado. Si los parámetros no se guardan, podemos hacerlo a mano entrando por SSH a la cámara y editando el fichero ''/system/sdcard/config/autonight.conf'' * https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/issues/845#issuecomment-453542165 ==== MQTT ==== Se configura desde el fichero ''/system/sdcard/config/mqtt.conf'': # Options for mosquitto_sub & mosquitto_pub USER=user PASS=pass HOST=192.168.0.110 PORT=1883 # Define a location LOCATION="home" # Define device name DEVICE_NAME="dafang" # Define the base topic used by the camera # send a message to myhome/dafang/set with the payload help for help. # Results will be placed in myhome/dafang/${command} or topic/dafang/error - so please subscribe topic/dafang/# for testing purposes TOPIC="$LOCATION/$DEVICE_NAME" # Define an autodiscovery prefix, if autodiscovery is desired: AUTODISCOVERY_PREFIX="hassio" Luego hay que arracar los servicios **mqtt-control** y **mqtt-status** desde //Services// -> **Services** Si todo ha ido bien, en Home Assistant, //Configuración// -> **Integraciones** veremos la cámara con sus sensores, etc. * https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/5ad82e85208edcce21efa4ebce21d572a5992b50/integration/homeassistant/homeassistant.md ==== Telegram ==== Configuración en ''/system/sdcard/config/telegram.conf'': apiToken="" userChatId="" El **chat id** podemos obtenerlo tras haber "hablado" con nuestro bot yendo a ''https://api.telegram.org/bot[apiToken]/getUpdates'' * Ejecutable: ''/system/sdcard/bin/telegram'' * Registro: ''/tmp/telegram.log'' * Comandos: ''/system/sdcard/scripts/telegram-bot-daemon.sh'' Podríamos añadir un nuevo comando en ''/system/sdcard/scripts/telegram-bot-daemon.sh'': # Función a ejecutar restart() { . /system/sdcard/scripts/common_functions.sh $TELEGRAM m "reboot" reboot_system } # Comandos y sus llamadas respond() { cmd=$1 [ $chatId -lt 0 ] && cmd=${1%%@*} case $cmd in /mem) sendMem;; (...) /reboot ) restart;; (...) ==== Ethernet USB ==== Se puede usar el puerto USB trasero para conectar una tarjeta de red Ethernet. Por ahora solo se soporta el driver ASIX Para activar el soporte, hay que crear el fichero ''usb_eth_driver.conf'' en la ruta ''/system/sdcard/config/'' Tras reiniciar, se deshabilitará la WiFi y se habilitará la conexión vía Ethernet. ==== Flash U-boot bootloader ==== * [[https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/hacks/flashinguboot.md|Información oficial]] Las mejoras de utilizar el cargador opensource **U-boot** en esta cámara: * Utilizar streaming en FullHD * Arrancar con kernel/rootfs personalizados desde la SD * Modificar los parámetros de arranque del kernel (''uEnv.txt'') * Flash la NAND utilizando este cargador de arranque. * Modificación de los parámetros a través de ''fw_printenv'' * Open source. cd /system/sdcard/ # Copia del cargador de arranque original por si queremos restaurarlo más tarde: dd if=/dev/mtd0 of=/system/sdcard/original-bootloader.bin # Descarga del cargador de arranque adecuado al dispositivo: wget https://github.com/Dafang-Hacks/uboot/raw/master/compiled_bootloader/NAME_OF_YOUR_BOOTLOADER_FILE.bin # Comprobación de la suma md5: md5sum NAME_OF_YOUR_BOOTLOADER_FILE.bin # Borrado del cargador de arranque flash_eraseall /dev/mtd0 # Escritura del nuevo cargador de arranque dd if=/system/sdcard/NAME_OF_YOUR_BOOTLOADER_FILE.bin of=/dev/mtd0 # Renombramos el fichero 'uEnv.bootfromnand.txt' para habilitar el arranque desde la NAND. mv uEnv.bootfromnand.txt uEnv.txt Para comprobar que todo ha ido bien, reiniciamos la cámara: * LED amarillo: se usa la configuración por defecto. * LED azul: se usa la configuración de ''uEnv.txt'' ==== Actualización ==== Vía web o a través de SSH: cd /system/sdcard/ ./autoupdate.sh -v Ejemplo de salida: [root@DAFANG2:sdcard]# ./autoupdate.sh -v Starting AutoUpdate Getting list of remote files. autoupdate.sh is up to date. run.sh is up to date. uEnv.bootfromnand.txt is up to date. uEnv.bootfromsdcard.txt is up to date. bin/README.md is up to date. bin/audioplay is up to date. bin/autonight is up to date. (...) No files to update. Ejemplo cuando hay actualizaciones: [root@DAFANG:sdcard]# ./autoupdate.sh -v Starting AutoUpdate Getting list of remote files. autoupdate.sh needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y run.sh needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y uEnv.bootfromnand.t20l.txt doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y uEnv.bootfromnand.txt is up to date. uEnv.bootfromsdcard.t20l.txt doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y uEnv.bootfromsdcard.txt is up to date. bin/README.md is up to date. (...) www/lib/fontawesome/scss/solid.scss doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y --------------- Stopping services --------- stopping /system/sdcard/controlscripts/auto-night-detection stopping /system/sdcard/controlscripts/configureMotion stopping /system/sdcard/controlscripts/configureOsd stopping /system/sdcard/controlscripts/debug-on-osd stopping /system/sdcard/controlscripts/ftp_server stopping /system/sdcard/controlscripts/mqtt-control stopping /system/sdcard/controlscripts/mqtt-status stopping /system/sdcard/controlscripts/recording stopping /system/sdcard/controlscripts/rtsp-h264 stopping /system/sdcard/controlscripts/rtsp-mjpeg stopping /system/sdcard/controlscripts/sound-on-startup stopping /system/sdcard/controlscripts/telegram-bot stopping /system/sdcard/controlscripts/timelapse --------------- Updating files ---------- --------------- Reboot ------------ A reboot is needed, do you want to reboot now? [Y]es or [N]o ===== Firmware original ===== * [[https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/firmware_original/demo_5.5.1.177.bin|5.5.1.177]] * [[https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks/blob/master/firmware_original/demo_5.5.1.194.bin|5.5.1.194]] ====== Recursos ====== * https://community.home-assistant.io/t/hacking-the-xiaomifang-wifi-camera/18579/76 * https://gadget-freakz.com/xiaomi-dafang-1080p-smart-monitor-camera-review/