====== 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/