Xiaomi Yi Action Camera: Guía para convertirla en Cámara de Seguridad 24/7
La Xiaomi Yi Action Camera (1ª Gen) esconde un procesador Ambarella que permite virguerías técnicas, pero sus apps oficiales han muerto. Al lío: en lugar de guardarla en un cajón, vamos a convertirla en una cámara de seguridad 24/7 totalmente autónoma e integrada en tu red local.
Olvídate de aplicaciones chinas. En esta guía configuraremos la cámara en Modo Cliente, montaremos un Watchdog en Python para evitar que el streaming RTSP se caiga y lo dejaremos corriendo como servicio en Linux.
🛠️ Fase 1: Configuración de la Cámara (Mode Switch)
El primer problema de la Yi es que por defecto crea su propia red WiFi. Lo ideal en producción es que actúe como un cliente más de tu router. Usaremos un sistema de arranque que nos permite conmutar entre el modo normal y el Modo Seguridad.
1.1 Preparación de la Tarjeta SD
- Formatea tu tarjeta microSD en FAT32.
- Descarga el repositorio XIAOMI_YI_MODE_SWITCH.
- Copia en la raíz de la tarjeta todos los archivos manteniendo la estructura de carpetas.
Si usas Windows, edita los archivos obligatoriamente con Notepad++. Asegúrate de que el formato de salto de línea sea UNIX (LF). El bloc de notas nativo corromperá los scripts e impedirá el arranque.
1.2 Configuración del WiFi
Solo tienes que editar dos archivos en la carpeta MISC/ de la tarjeta SD que acabas de copiar:
MISC/TMP.WIFI.CONF: CambiaESSIDyPASSWORDpor los de tu red.MISC/wpa_supplicant.conf: Actualizassidypskcon los mismos datos. Debe haber coincidencia exacta.
1.3 Cómo Cambiar al Modo Estación
Al ser un fork mejorado, el cambio de modo tiene un feedback visual y auditivo muy claro:
- Arranque: Al encender la cámara, escucharás los dos pitidos rápidos de siempre y, justo después, escucharás un nuevo pitido más largo.
- Selector activo: Ese pitido largo indica que el selector está activo. En ese momento, mantén PULSADO el botón de disparo (shutter).
- Selección de Modo: El LED del botón parpadeará. Mantén pulsado y suéltalo cuando veas 2 parpadeos (Modo 2: Modo Estación / WiFi doméstico).
- Confirmación: Oirás un pitido largo de confirmación indicando que se ha guardado. La cámara recordará este modo en futuros arranques.
Consejo Hardware: Si va a estar 24/7 conectada, extrae la batería. La cámara funcionará solo con el cable micro-USB, evitando que la batería se hinche por el calor generado por el sensor y el chip WiFi.
🛡️ Fase 2: Watchdog en Python (Keep-Alive)
La Xiaomi Yi tiende a cortar el streaming por inactividad o fallos menores en el protocolo RTSP. Para evitarlo, usaremos un script en Python alojado en un servidor local (Raspberry Pi, DietPi, etc.) que envíe “latidos” constantes.
Crea yi_watchdog.py:
import socket
import json
import time
import datetime
# --- CONFIGURACIÓN ---
# Puedes ver la IP asignada a la cámara en la lista de dispositivos de tu router
CAM_IP = "192.168.1.45"
CTRL_PORT = 7878
RTSP_PORT = 554
HEARTBEAT_INTERVAL = 45
# ---------------------
def log(mensaje):
hora = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
print(f"[{hora}] {mensaje}")
def check_rtsp_port():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(2.0)
resultado = sock.connect_ex((CAM_IP, RTSP_PORT))
sock.close()
return resultado == 0
def enviar_comando(sock, payload):
try:
sock.sendall(json.dumps(payload).encode('utf-8'))
response = sock.recv(1024).decode('utf-8')
return json.loads(response)
except Exception as e:
log(f"Error: {e}")
return None
def iniciar_camara():
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5.0)
try:
sock.connect((CAM_IP, CTRL_PORT))
# 1. Solicitar Token
auth_req = {"msg_id": 257, "token": 0, "param": 0}
auth_res = enviar_comando(sock, auth_req)
if not auth_res or "param" not in auth_res:
sock.close()
return None, None
token = auth_res["param"]
# 2. Forzar inicio del stream RTSP
stream_req = {"msg_id": 259, "token": token, "param": "none_force"}
enviar_comando(sock, stream_req)
log("Streaming iniciado correctamente.")
return sock, token
except Exception:
sock.close()
return None, None
def watchdog_loop():
log(f"Iniciando Watchdog en {CAM_IP}")
sock = None
while True:
if sock is None or not check_rtsp_port():
if sock: sock.close()
log("RTSP caído. Reconectando...")
sock, _ = iniciar_camara()
if not sock:
time.sleep(10)
continue
try:
# Heartbeat para evitar apagado automático
heartbeat_req = {"msg_id": 257, "token": 0, "heartbeat": 1, "param": 0}
enviar_comando(sock, heartbeat_req)
except Exception:
sock.close()
sock = None
time.sleep(HEARTBEAT_INTERVAL)
if __name__ == "__main__":
watchdog_loop()
⚙️ Fase 3: Configuración como Servicio (Systemd)
Para que el script arranque solo tras un reinicio del sistema, lo configuraremos como un servicio de systemd.
- Instalar Python:
sudo apt update && sudo apt install python3 -y - Crear el servicio:
sudo nano /etc/systemd/system/yi_watchdog.service - Pegar configuración:
[Unit]
Description=Watchdog para Xiaomi Yi Camera
After=network-online.target
[Service]
Environment=PYTHONUNBUFFERED=1
Type=simple
User=dietpi
ExecStart=/usr/bin/python3 /home/dietpi/yi_watchdog.py
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
- Activar y lanzar:
sudo systemctl daemon-reload
sudo systemctl enable yi_watchdog.service
sudo systemctl start yi_watchdog.service
Puedes monitorizar la actividad en tiempo real con:
journalctl -u yi_watchdog.service -f
📺 Visualización del Streaming
Con todo configurado, la cámara estará transmitiendo vídeo de forma ininterrumpida. Para verlo en tu PC:
- Abre VLC Media Player.
Ctrl + N(Abrir emisión de red).- URL:
rtsp://[IP_DE_LA_CAMARA]/live
Esta arquitectura es ideal para usar la Yi como entrada en sistemas como Home Assistant, Node-RED o simplemente para vigilar una impresión 3D desde otra habitación sin depender de nubes chinas ni apps obsoletas.