¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Xiaomi Dafang
Cámara IP
- Procesador principal: Ingenic T20
- Wifi: Realtek 8192
- LED Driver: ULN2803
Custom firmware
Primero hay que instalar el cargador de arranque:
- Descargar el binario del firmware para el modelo en cuestión
- Renombrarlo a
demo.biny 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_moda la raíz de la tarjeta microSD - Copiar
firmware_mod/config/wpa_supplicant.conf.distafirmware_mod/config/wpa_supplicant.conf - Modificar el fichero
firmware_mod/config/wpa_supplicant.confpara 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.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
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.
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
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. bin/audioplay is up to date. bin/autonight is up to date. bin/avconv is up to date. bin/bftpd needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/busybox needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/curl is up to date. bin/curl.bin is up to date. bin/dosfsck is up to date. bin/dosfslabel is up to date. bin/dropbearmulti needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/fatlabel needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/fsck.fat needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/fsck.msdos is up to date. bin/fsck.vfat is up to date. bin/gdbserver is up to date. bin/getimage is up to date. bin/h264Snap is up to date. bin/jpegoptim is up to date. bin/jpegtran is up to date. bin/jq is up to date. bin/lighttpd is up to date. bin/lighttpd.bin needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/mJpegStreamer is up to date. bin/matrix is up to date. bin/mkdosfs is up to date. bin/mkfs.fat needs to be updated. Overwrite? [Y]es or [N]o or [A]ll? Y bin/mkfs.msdos is up to date. bin/mkfs.vfat is up to date. bin/mosquitto_pub is up to date. bin/mosquitto_pub.bin is up to date. bin/mosquitto_sub is up to date. bin/mosquitto_sub.bin is up to date. bin/motor is up to date. bin/motor.bin is up to date. bin/onvif_srvd doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y bin/openRTSP doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y bin/openRTSP.bin doesn't exist, create it? [Y]es or [N]o or [A]ll ? Y bin/openssl needs to be updated. Overwrite? [Y]es or [N]o or [A]ll?
