# Transporte de monitoreo

Node 24 LTS, ws y mysql2 con versiones fijadas en package-lock.json.
En el piloto lo mantiene `homecore-websocket.service`; no iniciar un segundo
proceso sobre la misma base. Node escucha únicamente 127.0.0.1:8080.

## Desarrollo independiente

Desde `homecore/`:

```bash
bash deployment/scripts/install-node.sh
export PATH="$HOME/.local/share/homecore-tools/node-v24.21.0-linux-x64/bin:$PATH"
npm --prefix websocket-server ci
# Solo si no está activo el servicio del piloto:
bash deployment/scripts/ws-dev.sh
```

Para simular un dispositivo registrado, exportar HOMECORE_DEVICE_UID,
HOMECORE_DEVICE_TOKEN y HOMECORE_WS_URL antes de `npm run simulate` en esta
carpeta. Para introducir el token sin dejarlo en el historial de bash:

```bash
read -r -p 'UID: ' HOMECORE_DEVICE_UID
read -r -s -p 'Clave: ' HOMECORE_DEVICE_TOKEN
export HOMECORE_DEVICE_UID HOMECORE_DEVICE_TOKEN
export HOMECORE_WS_URL=wss://transbook.mx/homecore/ws
npm run simulate
```

El simulador marca sus datos como simulados, valida TLS y rechaza WS sin
cifrar fuera de localhost. No debe usar el mismo UID de una ESP32 conectada.

## Pruebas

```bash
npm test
```

Las pruebas usan la instancia privada por socket y una base temporal que
se elimina al terminar. HOMECORE_DB_SOCKET permite indicar otro socket.
Pruebas opcionales de navegador: instalar Chromium con Playwright y ejecutar
`HOMECORE_UI_TEST=1 npm test`. En este servidor las bibliotecas de Chromium
se extrajeron fuera del sistema, bajo `~/.local/share/homecore-tools/browser-libs`;
configurar LD_LIBRARY_PATH a su subdirectorio usr/lib/x86_64-linux-gnu y
PLAYWRIGHT_BROWSERS_PATH a `~/.local/share/homecore-tools/playwright`.

`tests/public-probe.mjs` es una comprobación explícita del piloto por HTTPS
/WSS: crea datos temporales propios y los elimina. No se ejecuta con npm test.

Consultar [protocolo](../docs/websocket-protocol.md).
