DevSEO

Xiaomi Yi Action Camera: Guía para convertirla en Cámara de Seguridad 24/7

5 min read

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

  1. Formatea tu tarjeta microSD en FAT32.
  2. Descarga el repositorio XIAOMI_YI_MODE_SWITCH.
  3. 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: Cambia ESSID y PASSWORD por los de tu red.
  • MISC/wpa_supplicant.conf: Actualiza ssid y psk con 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:

  1. 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.
  2. Selector activo: Ese pitido largo indica que el selector está activo. En ese momento, mantén PULSADO el botón de disparo (shutter).
  3. 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).
  4. 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.

  1. Instalar Python: sudo apt update && sudo apt install python3 -y
  2. Crear el servicio: sudo nano /etc/systemd/system/yi_watchdog.service
  3. 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
  1. 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:

  1. Abre VLC Media Player.
  2. Ctrl + N (Abrir emisión de red).
  3. 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.