# Operación diaria ## Consultar estado actual ```bash curl -s "http://192.168.40.100:8088/api/drain-window/current?tenant=tma4p1aego_lab&site=bench_gh01&product=climate&asset=drain-01" ```` ## Consultar auditoría ```bash curl -s "http://192.168.40.100:8088/api/drain-window/audit?tenant=tma4p1aego_lab&site=bench_gh01&product=climate&asset=drain-01&limit=10" ``` ## Comprobar histórico reciente en PostgreSQL ```sql SELECT ts, raw_drain_state, sample_valid, drain_state, control_state, semantic_state, battery_v FROM mv_hot.drain_readings WHERE tenant = 'tma4p1aego_lab' AND site = 'bench_gh01' AND product = 'climate' AND asset = 'drain-01' ORDER BY ts DESC LIMIT 20; ``` ## Entrar en PostgreSQL hot ```bash docker exec -it mv_postgres_hot psql -U mv_hot_app -d mesavault_hot ``` ## Reiniciar drain-control ```bash cd /srv/verticals/drain-control docker-compose up -d --build ``` ## Reiniciar drain-lab ```bash cd /srv/verticals/drain-lab docker-compose up -d --build ``` ## Reiniciar plataforma base ```bash cd /srv/platform docker-compose up -d ``` ## UI local técnica ```text http://192.168.40.100:8088/ui ``` ## ChirpStack local ```text http://192.168.40.100:8080 ``` ## Lecciones operativas importantes 1. No mezclar control con visualización. 2. No confiar en `127.0.0.1` si estás pensando en otro host. 3. No publicar servicios internos en `0.0.0.0` si Tailscale está presente. 4. No asumir que una entrada digital significa medición válida. 5. `ack` no significa “he aplicado el cambio”; significa “he reconocido el downlink”. 6. Si algo falla por JSON y funciona por HEX, normalmente el problema está en el codec o en la forma del payload.