diff --git a/docs/descargas/SHA256SUMS.txt b/docs/descargas/SHA256SUMS.txt index 3288c58..4f4ce7b 100644 --- a/docs/descargas/SHA256SUMS.txt +++ b/docs/descargas/SHA256SUMS.txt @@ -1,6 +1,8 @@ a68a87ff1f6b34a8284e9e5e32c95da7bb8d8adc071c5fd64412a3e744e46b28 hbox-tarjetaV3_4.0.0.bin 1458470bbdd95b490969976402bf2144a773a991b7650c55e3281687ba77b2e3 hbox-tarjetaV4_0.6.0.bin 8a0ee4839763eae8c96e990eb471dae30f0a491bfb9bd81fdfb39ee69436790a hbox-v5-bringup_0.6.0.bin +ec7425ace7a43d36238ecf9536c82d06b6f9b5304aad49748031ebe35b5167af prueba/hbox-tarjetaV4_0.6.2.bin +3a183fccfbff32bc7f686ff5c68d959b783c910c2ae6b668e9ea069f90f76ebf prueba/hbox-v5-bringup_0.6.2.bin 035ebeb348461765f099341603a9e99b94512f8477509efb78aa7caf953f4c2f superseded/hbox-tarjetaV3_3.0.4.bin 4528187f9d675bca8114583d44eccf4d2149d847f7e5fc402631d8811ee39282 superseded/hbox-tarjetaV4_0.5.1.bin fa2b7554099b332c70ab18cde24b30a4f0a46ac01987466e491c69b308783a5a superseded/hbox-tarjetaV4_0.5.2.bin diff --git a/docs/descargas/hbox-v5-bringup-README.md b/docs/descargas/hbox-v5-bringup-README.md index 790cd18..dff318c 100644 --- a/docs/descargas/hbox-v5-bringup-README.md +++ b/docs/descargas/hbox-v5-bringup-README.md @@ -51,15 +51,16 @@ arduino-cli compile --fqbn "$FQBN_V5" \ # V4: --fqbn "$FQBN_V4" --build-property "build.extra_flags=-DHBOX_BOARD_V4 -DENABLE_ETH=1" --output-dir out-v4-eth ``` Sin PoE (J10 solo datos). Con 5 V presente el W5500 sale del reset, pide DHCP o cae a `192.168.7.2/24` y abre un -TCP a `192.168.7.1:5010` (portátil con `nc -lk 5010`), por donde salen en espejo NMEA + `$PHLG` + `$PHEV` + `$PHID`. +TCP a `192.168.7.1:5010` (portátil con `nc -lk 5010`), por donde salen en espejo NMEA + `$PHLG` + `$PHCG` (0.6.2) + `$PHEV` + `$PHID`. Cable directo al portátil (Auto-MDIX) o cualquier switch. Overrides: `-DETH_IP=a,b,c,d -DETH_SERVER_IP=a,b,c,d -DETH_SERVER_PORT=n -DETH_DHCP=0`. Tecla `E` = on/off. Ver CHANGELOG 0.6.0-eth. -### Simulador en PC (0.6.1) — `../tools/hostsim_v5` +### Simulador en PC (0.6.1, ampliado en 0.6.2) — `../tools/hostsim_v5` Antes de flashear un cambio del gobernador de carga, del riel o del `$PHLG`, correr el simulador: compila este sketch sin -cambios contra stubs y un modelo eléctrico de la entrada de 5 V (calibrado con H0027) y revisa 21 escenarios (ráfagas del +cambios contra stubs y un modelo eléctrico de la entrada de 5 V (calibrado con H0027) y revisa 24 escenarios (ráfagas del módem, cable débil, desconexión del 24 V, hiccup, batería mala, pausa NTC, autoprueba `r`, vuelta del `millis()`, VDDA, -formato del `$PHLG`) más un invariante de seguridad del cargador en cada vuelta del lazo. +formato del `$PHLG`/`$PHCG` y largo de las líneas que van al módem, tecla `X`) más un invariante de seguridad del +cargador en cada vuelta del lazo. ```bash bash ../tools/hostsim_v5/run.sh # todo PASS = exit 0 bash ../tools/hostsim_v5/run.sh /ruta/a/otra/copia old # mismos escenarios contra otra versión (p. ej. 0.6.0) @@ -67,6 +68,16 @@ bash ../tools/hostsim_v5/run.sh /ruta/a/otra/copia old # mismos escenarios con Necesita g++ con `-m32` (Linux: `g++-multilib`); en un Mac con Apple silicon, dentro de Docker `linux/amd64` — ver `tools/hostsim_v5/README.md`. No reemplaza la prueba de banco. +### Prueba de largo de línea (0.6.2) — tecla `X` + `../tools/phtst_report.py` +El módem (NTRIP Master) descarta las líneas largas que el MCU mete en banda (0.6.1: ninguna `$PHLG` de 125–131 caracteres llegó +al servidor). Con Modo B activo, `X` manda 105 líneas `$PHTST` de largo exacto (100…140, controles de 60 y 6 pares pegados), +~50 s; `X` otra vez la cancela. Unos 15 s después de `PRUEBA DE LARGO fin` bajar el historial crudo de la unidad (monitor → +⬇ Historial crudo) y: +```bash +python3 ../tools/phtst_report.py H0027.txt +``` +Da el límite por línea, si el módem corta por línea o por ráfaga, y si recorta las líneas en vez de descartarlas. + ## Puente 0.5.6 — MODEM_RST desde el MCU (V4 y V5) El módem 4G (socket J7/J8) solo tiene su reset (`MODEM_RST`, J7.5) en el botón `SW4G1`. Desde 0.5.6 el firmware diff --git a/docs/descargas/index.md b/docs/descargas/index.md index d5dcecd..16f6d9a 100644 --- a/docs/descargas/index.md +++ b/docs/descargas/index.md @@ -1,10 +1,10 @@ --- title: "Descargas" tags: [project-drogheda, hbox, descargas, firmware, v3, v4, v5, modem, zed-f9p] -date: 2026-09-29 +date: 2026-09-30 project: Project Drogheda author: Helgen Technologies -version: "2.0" +version: "2.2" --- # Descargas @@ -42,15 +42,28 @@ Un binario por tarjeta. El nombre lleva la tarjeta y eso manda; el número de ve 0.6.0 CAMPO (V4 y V5): cargador con gobernador (hasta 0.5.9 estaba apagado, paquete de un solo uso); en batería la etapa y el módem siguen encendidos y reportando igual que en 24 V (la V5.5 no arranca el módem en frío sobre el boost, ver [módem en batería](../procedimientos/prueba-bateria-modem.md#3-hallazgos-2527-sep)); ningún ciclo de etapa en batería; corte a 3.40 V; reset del MCU al volver el 5 V tras ≥ 10 s de respaldo; vigilancia del módem solo diagnóstica (`modem=` en `STAT`); teclas `C`/`M`/`R`. 0.5.1 fue la última embarcada antes de 0.6.0. Qué cambió en cada versión y por qué: **[notas de versión](notas-de-version.md)**. !!! danger "0.6.1 retirada (29-sep): no la flashees" - Su `$PHLG` de 36 campos (125–131 caracteres) no pasa por el módem 4G NTRIP Master, que descarta las líneas largas: el monitor se queda sin Salud ni Energía (batería, carga, temperaturas). El gobernador de 0.6.1 sí funcionaba. 0.6.2 lleva el mismo gobernador, el `$PHLG` de siempre (29 campos) y el estado del gobernador en una sentencia corta aparte; se publica después de probarla en H0027. Detalle: [notas de versión](notas-de-version.md#por-que-se-retiro-061). + Su `$PHLG` de 36 campos (125–131 caracteres) no pasa por el módem 4G NTRIP Master, que descarta las líneas largas: el monitor se queda sin Salud ni Energía (batería, carga, temperaturas). El gobernador de 0.6.1 sí funcionaba. 0.6.2 lleva el mismo gobernador y manda la telemetría en dos líneas cortas; está publicada solo para prueba de banco (abajo). Detalle: [notas de versión](notas-de-version.md#por-que-se-retiro-061). + +!!! warning "0.6.2 EN PRUEBA DE BANCO (30-sep): solo para ingeniería y el banco, no flashear en campo" + El gobernador de 0.6.1 con la telemetría arreglada: en banda el `$PHLG` va con los campos 1–24 y una línea nueva, `$PHCG`, lleva el resto (fuente, uptime y estado del gobernador); las dos de 100 caracteres o menos. Tecla `X`: prueba del largo de línea que deja pasar el módem. En campo sigue 0.6.0 hasta que 0.6.2 pase el banco (H0027 primero). + + Antes de flashearla, el servidor tiene que tener el `retranslator.py` con `$PHCG` (htracker, 30-sep). Con el viejo, el monitor no ve la fuente, el uptime ni el gobernador de esa unidad. + + | Tarjeta | Binario de prueba | Tamaño | SHA-256 | + |---|---|---|---| + | V4 | [`prueba/hbox-tarjetaV4_0.6.2.bin`](prueba/hbox-tarjetaV4_0.6.2.bin) | 95 692 B | `ec7425ace7a43d36…` | + | V5 / V5.5 | [`prueba/hbox-v5-bringup_0.6.2.bin`](prueba/hbox-v5-bringup_0.6.2.bin) | 96 180 B | `3a183fccfbff32bc…` | + + Qué probar y qué debe verse: [notas de versión → 0.6.2](notas-de-version.md#062-en-prueba). Para leer la prueba de la tecla `X`: [`prueba/phtst_report.py`](prueba/phtst_report.py) (Python 3). !!! warning "No se cruzan" - `hbox-v5-bringup_…` (F411RE soldado) en una V3 o V4: otro MCU y otro mapa de pines. La V4 usa `hbox-tarjetaV4_…`. - `hbox-tarjetaV3_…` o `blackpillrtkcode_v3` en una V4 o V5: manejan los LEDs de carga en PB12–PB15, que ahí son el SPI del W5500. - Nada de `superseded/`: se guarda solo por trazabilidad. + - Nada de `prueba/` en campo: son builds para el banco hasta que pasen y entren a la tabla de vigentes. - Nada que no esté publicado aquí con su SHA-256. Los `.bin` de V3 y V4 no viven en el repositorio; se compilan, se prueban en banco y se publican ([reflasheo §5](../procedimientos/reflasheo-unidades.md#5-para-ingenieria-generar-y-publicar-un-binario)). -Las tres tarjetas mandan la misma trama: `$PHLG` de 29 campos cada 30 s y un `$PHEV` por cambio de estado, en banda por el módem (Modo B). El monitor la parsea igual (`retranslator.py`: 20 campos base + 4 de v3 + 5 de 0.5.1, y `$PHEV`) y las tres se ven igual en Salud. Ninguna línea en banda puede pasar de lo que deja pasar el módem: hasta 105 caracteres está probado; las de 125 o más (el `$PHLG` de 0.6.1) se pierden. +Las tres tarjetas mandan la misma trama: `$PHLG` de 29 campos cada 30 s y un `$PHEV` por cambio de estado, en banda por el módem (Modo B). El monitor la parsea igual (`retranslator.py`: 20 campos base + 4 de v3 + 5 de 0.5.1, y `$PHEV`) y las tres se ven igual en Salud. Ninguna línea en banda puede pasar de lo que deja pasar el módem: hasta 105 caracteres está probado; las de 125 o más (el `$PHLG` de 0.6.1) se pierden. El `$PHLG` de 29 campos crece con el tiempo encendida (`up_s` y `rx_count` ganan dígitos): ~102 caracteres al arrancar, ~108 tras unas horas, ~113 a los 12 días. 0.6.2 (en prueba) manda en banda el `$PHLG` con los campos 1–24 y aparte una `$PHCG`, las dos de 100 caracteres o menos; su tecla `X` mide el límite exacto. !!! warning "V3 4.0.0: todavía no en unidades de campo" Compila y pasa el simulador, pero no ha corrido en una EinarBoard 1.0 real. Solo en la mesa de ingeniería hasta que se pruebe en banco (RTK-003 o RTK-006) y se quite este aviso. 4.0.0 activa Modo B por omisión (el MCU queda en línea con el enlace de correcciones), así que la primera prueba es en par: el binario publicado y uno sin Modo B sobre la misma unidad. Si el fix RTK cae al energizar K1, o `v5min` se hunde en ese instante, sospecha de la bobina de K1 llevando el riel al PFI del LTC4040. @@ -64,7 +77,7 @@ Las tres tarjetas mandan la misma trama: `$PHLG` de 29 campos cada 30 s y un `$P No se podía encender el cargador sin más: en V5.5/V4 `RS1` 8 mΩ → límite de entrada del LTC4040 ≈ 3.1 A (más que los 3 A del SD-15B) y `R50` 825 Ω → 2.4 A de carga; paquete vacío + etapa + ráfaga LTE hunden el riel hasta el PFI del LTC4040 y la unidad entra en bucle (incidente de flota 10-ago). H0008 amaneció a 3.50 V tras una noche en batería y seguía "sin cargar" en 24 V. -El gobernador de 0.6.0 (vigente) carga solo con etapa ON en 24 V; nunca en los primeros 120 s tras boot ni tras cada STACK ON; arranca tras 30 s de riel ≥ 5.05 V; corta al instante si una muestra baja de 4.90 V, con enfriamiento de 60 s a 30 min; inhibe con celda ≥ 45 °C; rearma el safety timer del LTC4040. Con la ruta de 5 V justa (riel cerca de 5.0 V al cargar) cualquier ráfaga del módem corta la carga: la batería carga poco y el monitor casi nunca muestra 🔌 CARGANDO. Eventos `CHG_ON/CHG_SHED/CHG_OFF/CHG_HOT/CHG_COOL/CHG_PULSE`; `STAT` → `carga=FASE … ltc=CARGANDO|no cortes=`; tecla `C` = veto. El monitor muestra 🔌 CARGANDO solo con `chg=1` en `$PHLG`. 0.6.2 (en preparación) corrige los cortes y manda el estado del gobernador al monitor ([notas de versión](notas-de-version.md)); su prueba de banco: [módem en batería §1](../procedimientos/prueba-bateria-modem.md#1-cargador-062). Si corta sin parar: ruta de 5 V débil hasta P2 ([regla](notas-de-version.md#el-limite-de-la-ruta-de-5-v)) o fuente sin margen de corriente (el SD-15B da 3 A; carga + etapa piden ~2.8 A). La V5.6 (`RS1` 10 mΩ, `R50` 1.5 kΩ) pide mucho menos. +El gobernador de 0.6.0 (vigente) carga solo con etapa ON en 24 V; nunca en los primeros 120 s tras boot ni tras cada STACK ON; arranca tras 30 s de riel ≥ 5.05 V; corta al instante si una muestra baja de 4.90 V, con enfriamiento de 60 s a 30 min; inhibe con celda ≥ 45 °C; rearma el safety timer del LTC4040. Con la ruta de 5 V justa (riel cerca de 5.0 V al cargar) cualquier ráfaga del módem corta la carga: la batería carga poco y el monitor casi nunca muestra 🔌 CARGANDO. Eventos `CHG_ON/CHG_SHED/CHG_OFF/CHG_HOT/CHG_COOL/CHG_PULSE`; `STAT` → `carga=FASE … ltc=CARGANDO|no cortes=`; tecla `C` = veto. El monitor muestra 🔌 CARGANDO solo con `chg=1` en `$PHLG`. 0.6.2 (en prueba de banco, arriba) corrige los cortes y manda el estado del gobernador al monitor ([notas de versión](notas-de-version.md#062-en-prueba)); su prueba de banco: [módem en batería §1](../procedimientos/prueba-bateria-modem.md#1-cargador-062). Si corta sin parar: ruta de 5 V débil hasta P2 ([regla](notas-de-version.md#el-limite-de-la-ruta-de-5-v)) o fuente sin margen de corriente (el SD-15B da 3 A; carga + etapa piden ~2.8 A). La V5.6 (`RS1` 10 mΩ, `R50` 1.5 kΩ) pide mucho menos. ### Monitor con builds de ciclo @@ -107,8 +120,9 @@ No se flashean. Sirven para identificar lo que trae una tarjeta vieja o para vol | [`superseded/hbox-v5-bringup_0.5.1.bin`](superseded/hbox-v5-bringup_0.5.1.bin) · [`superseded/hbox-tarjetaV4_0.5.1.bin`](superseded/hbox-tarjetaV4_0.5.1.bin) | Última de campo antes del ciclo de 10 min (en batería dejaba la etapa encendida hasta vaciar el paquete). | | [`superseded/hbox-v5-bringup_0.4.0.bin`](superseded/hbox-v5-bringup_0.4.0.bin) | Sin `$PHLG` en banda. Sustituida por 0.5.1. | -??? note "Historial por versión, 0.4.0 → 0.6.1" +??? note "Historial por versión, 0.4.0 → 0.6.2" - Desde 0.4.0: AUTO de fábrica (la etapa RTK enciende sola 3 s después de ver 5 V en P2); watchdog 16 s; ventilador (política v3.0.3); recuperación de enlace (ciclo de etapa si el F9P calla 60 s; LIMP tras 3 ciclos); LEDs de carga y color de estado; corte térmico 60 °C; corte de batería 3.40 V. Anota la versión en el acta. + - 0.6.2 (en prueba de banco desde el 30-sep, carpeta `prueba/`): el gobernador de 0.6.1; en banda `$PHLG` de 24 campos + `$PHCG` (fuente, uptime, gobernador), cada línea sola en el cable; tecla `X` (prueba de largo de línea). [Notas de versión](notas-de-version.md#062-en-prueba). - 0.6.1 (retirada el 29-sep): gobernador corregido, pero con un `$PHLG` de 36 campos que el módem descarta; el monitor se quedaba sin Salud. Ese gobernador vuelve en 0.6.2. [Notas de versión](notas-de-version.md#por-que-se-retiro-061). - 0.6.0 CAMPO (vigente): 0.5.9 + gobernador de carga; con la ruta de 5 V justa corta la carga en cada ráfaga del módem (lo corrige 0.6.2). - 0.5.9 CAMPO: sin ciclo ni ahorro en batería (`ENABLE_DUTY 0`, `ENABLE_BATT_SAVER 0`); ningún ciclo de etapa en batería (`RECOVERY_ABORT`); reset del MCU al volver el 5 V tras ≥ 10 s; un reset en batería deja la etapa apagada hasta que vuelva el 5 V; vigilancia del módem: `STAT` con `rtcm_age= sta= rtcm_last= sag5= sagb= flat= modem=vivo|SOSPECHOSO|?`, eventos `MODEM_DARK`/`MODEM_BACK`/`MODEM_WATCH`. Con esos números se calibra 0.5.10. @@ -170,5 +184,6 @@ Lista y comandos: [reflasheo §5](../procedimientos/reflasheo-unidades.md#5-para | 1.9 | 2026-09-29 | Edición breve. Una sola tabla de binarios vigentes; verificación SHA-256 con encabezado propio; tabla de parámetros del módem completa (antes en la configuración de la unidad); lista de publicación → reflasheo §5. | | 2.0 | 2026-09-29 | Firmware 0.6.1 vigente en V4 y V5; 0.6.0 a `superseded/`; `$PHLG` de 36 campos; gobernador 0.6.1; [notas de versión](notas-de-version.md). | | 2.1 | 2026-09-29 | 0.6.1 retirada (su `$PHLG` no pasa por el módem): 0.6.0 vigente otra vez; 0.6.2 en preparación. | +| 2.2 | 2026-09-30 | 0.6.2 publicada solo para prueba de banco, en `prueba/` (V4 `ec7425ac…`, V5 `3a183fcc…`), con `phtst_report.py`; 0.6.0 sigue vigente. | Versiones anteriores en git. diff --git a/docs/descargas/notas-de-version.md b/docs/descargas/notas-de-version.md index 80b0a75..70bdd74 100644 --- a/docs/descargas/notas-de-version.md +++ b/docs/descargas/notas-de-version.md @@ -1,10 +1,10 @@ --- title: "Notas de versión — firmware V4 / V5" tags: [project-drogheda, hbox, firmware, notas-de-version, v4, v5, cargador, ltc4040, descargas] -date: 2026-09-29 +date: 2026-09-30 project: Project Drogheda author: Helgen Technologies -version: "1.0" +version: "1.2" --- # Notas de versión — firmware V4 / V5 @@ -15,26 +15,28 @@ Un solo código fuente (`hbox_v5_bringup`) para las dos tarjetas: la V5 usa `hbo - **0.5.9**: en batería no se apaga ni cicla la etapa, pero **no carga**. La batería es de un solo uso. - **0.6.0**: **carga**, con un gobernador que protege al módem. Pero con la ruta de 5 V justa cortaba la carga en cada ráfaga del módem, y el monitor casi nunca mostraba 🔌 CARGANDO. - **0.6.1** (retirada al día siguiente): el gobernador distingue una ráfaga del módem de una fuente que no aguanta. Pero su `$PHLG` era demasiado largo para el módem y el monitor se quedó sin Salud ni Energía. - - **0.6.2** (en preparación): el gobernador de 0.6.1 con el `$PHLG` de siempre y el estado del gobernador en una sentencia corta aparte. + - **0.6.2** (en prueba de banco desde el 30-sep): el gobernador de 0.6.1, con la telemetría en dos líneas cortas que el módem sí deja pasar. -## Estado al 29-sep-2026 +## Estado al 30-sep-2026 | Versión | Fecha | Estado | Binarios | |---|---|---|---| -| 0.6.2 | — | En preparación: se publica después de probarla en H0027 | — | +| 0.6.2 | 29-sep | **En prueba de banco** desde el 30-sep (H0027 primero). No flashear en campo hasta que pase ([abajo](#062-en-prueba)) | [V5](prueba/hbox-v5-bringup_0.6.2.bin) · [V4](prueba/hbox-tarjetaV4_0.6.2.bin) | | 0.6.1 | 28-sep | **Retirada el 29-sep: no flashear.** Su telemetría no llega al monitor ([por qué](#por-que-se-retiro-061)) | [V5](superseded/hbox-v5-bringup_0.6.1.bin) · [V4](superseded/hbox-tarjetaV4_0.6.1.bin) | | **0.6.0** | 27-sep | **Vigente otra vez.** Carga, pero con la ruta de 5 V justa se corta con las ráfagas del módem | [V5](hbox-v5-bringup_0.6.0.bin) · [V4](hbox-tarjetaV4_0.6.0.bin) | | 0.5.9 | 27-sep | Retirada. No carga | [V5](superseded/hbox-v5-bringup_0.5.9.bin) · [V4](superseded/hbox-tarjetaV4_0.5.9.bin) | ## Por qué se retiró 0.6.1 -El módem 4G NTRIP Master reenvía al monitor solo líneas NMEA completas hasta cierto largo y descarta, sin aviso, las más largas. El `$PHLG` de 0.6.0 mide 99–107 caracteres y pasa. El de 0.6.1, con sus 7 campos nuevos, mide 125–131 y no llega nunca. +El módem 4G NTRIP Master reenvía al monitor solo líneas NMEA completas hasta cierto largo y descarta, sin aviso, las más largas. El `$PHLG` de 0.6.0 pasa. El de 0.6.1, con sus 7 campos nuevos, mide 125–131 caracteres y no llega nunca. Lo confirmó el banco del 29-sep con H0027 en 0.6.1. La consola mostraba el `$PHLG` saliendo cada 30 s (`phlg_aire` subía). En el historial crudo del servidor llegaron todas las sentencias del GPS y los `$PHEV` cortos, pero ningún `$PHLG`, ni siquiera cortado. H0018, con 0.6.0 y el mismo modelo de módem, entregaba su `$PHLG` de 102–105 caracteres cada 30 s. El servidor no tiene límite de largo. Consecuencia: una unidad con 0.6.1 manda posición y eventos, pero el monitor no ve batería, carga ni temperaturas. El gobernador en sí funcionaba bien (carga continua, sin cortes, aviso de ruta de 5 V débil). -0.6.2 vuelve al `$PHLG` de 29 campos de 0.6.0 y manda el estado del gobernador en una sentencia corta aparte, de unos 40–55 caracteres. El servidor la une a la salud de la unidad. Además trae una prueba desde la consola para medir el largo máximo que deja pasar el módem. +Ojo con 0.6.0: su `$PHLG` crece con el tiempo encendida (`up_s` y `rx_count` ganan dígitos), de ~102 caracteres al arrancar a ~108 tras unas horas y ~113 a los 12 días. Hasta 105 está comprobado. Si el límite del módem queda por debajo, una unidad 0.6.0 que lleva mucho encendida deja de mandar Salud (la posición sigue). La tecla `X` de 0.6.2 dice dónde está el límite. + +0.6.2 manda en banda el `$PHLG` con los campos 1–24 y, en el hueco siguiente, una línea `$PHCG` con el resto: las dos de 100 caracteres o menos aunque la unidad lleve meses encendida. El servidor las une en la salud de la unidad. Además trae una prueba desde la consola (tecla `X`) para medir el largo máximo que deja pasar el módem. Detalle: [0.6.2 en prueba](#062-en-prueba). ## Comparación rápida @@ -47,11 +49,38 @@ Consecuencia: una unidad con 0.6.1 manda posición y eventos, pero el monitor no | Espera tras un corte | — | 60 s, se duplica en cada corte, tope 30 min | Igual, pero solo por cortes contados | | Pulso de rearranque del LTC4040 | — | vbat < 3.90 V, 1 cada 30 min | Solo entre 3.00 y 3.80 V, nunca con FALLA del cargador | | PFI que supone el firmware | — | 4.60 V (el de la V3) | 4.40 V (el real de V4 / V5.5) | -| `$PHLG` | 29 campos, `0.5.9-fm` | 29 campos, `0.6.0` | 0.6.1: 36 campos (el módem los descarta). 0.6.2: 29 campos + sentencia corta del gobernador | +| `$PHLG` | 29 campos, `0.5.9-fm` | 29 campos, `0.6.0` | 0.6.1: 36 campos (el módem los descarta). 0.6.2: en consola 29 campos + `$PHCG`; en banda campos 1–24 + `$PHCG`, 100 caracteres o menos cada una | | Monitor, columna Energía | «cargador OFF (fw)» | 🔌 CARGANDO solo si la muestra de cada 30 s cae cargando; si no, «sin cargar» (o ✅ CARGADA con ≥ 3.97 V y 5 V del vehículo) | 0.6.1: nada (no llega el `$PHLG`). 0.6.2: fase del gobernador («espera de arranque 2:30», «corte por riel»…), «cargó N %», «casi lleno», ✅ CARGADA | | En batería | Etapa y módem encendidos, sin ciclos de etapa; corte a 3.40 V | Igual | Igual | | Al volver el 24 V tras ≥ 10 s en batería | Reset del MCU | Igual | Igual | -| Build de banco con Ethernet | `0.6.0-eth` (sin cargador) | `0.6.0-eth` (con gobernador) | `0.6.1-eth` (ya no repite el DHCP cada 5 s) | +| Build de banco con Ethernet | `0.6.0-eth` (sin cargador) | `0.6.0-eth` (con gobernador) | `0.6.1-eth` / `0.6.2-eth` (ya no repite el DHCP cada 5 s) | + +## 0.6.2 en prueba de banco (30-sep) {#062-en-prueba} + +Publicada el 30-sep **solo para ingeniería y el banco** ([Descargas](index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta), carpeta `prueba/`). En campo sigue 0.6.0 hasta que 0.6.2 pase el banco con H0027. El gobernador es el de 0.6.1 sin cambios (sección siguiente); lo que cambia es cómo viaja la telemetría: + +- **Consola USB (y Ethernet del build `-eth`):** el `$PHLG` vuelve a los 29 campos de 0.6.0, idéntico, y detrás sale una línea nueva, `$PHCG`. +- **En banda (por el módem):** el `$PHLG` va con los campos 1–24 y, en el hueco siguiente, `$PHCG,,,,,,,,,,,,`: los campos 25–36 de 0.6.1, mismos valores. Las dos líneas quedan en 100 caracteres o menos aunque la unidad lleve meses encendida (el `$PHLG` de 29 campos crece con el tiempo encendida). En esa copia `nmea_age_ms` se topa en 99999. +- **Cada línea del MCU sale sola:** solo se mete cuando la línea hacia el módem lleva más de 8 ms sin nada que mandar. Así da igual si el módem corta por línea o por ráfaga. +- **Servidor primero:** el `retranslator.py` con `$PHCG` (htracker, 30-sep) une las dos líneas en la salud de la unidad; el monitor y la base no cambian. Con el servidor viejo, una unidad 0.6.2 sale sin fuente VEH/BATT, sin uptime y sin gobernador. +- **Tecla `X`, prueba de largo de línea** (con Modo B activo; `X` otra vez la cancela): 105 líneas `$PHTST` de largo exacto (100 a 140 caracteres, líneas de control de 60 y 6 pares pegados), una cada 500 ms, ~50 s, entre `$PHEV PHTST ini` y `fin`. Unos 15 s después de `PRUEBA DE LARGO fin: 105 lineas`, baja el historial crudo de la unidad en el monitor (⬇ Historial crudo) y pásalo por [`phtst_report.py`](prueba/phtst_report.py): `python3 phtst_report.py H0027.txt`. Dice el límite por línea, si el módem corta por línea o por ráfaga, y si recorta las líneas en vez de descartarlas. +- `STAT aire_max=`: la línea más larga que el MCU metió en banda desde el arranque (sin contar las de prueba); debe quedar en 100 o menos. +- Banner: la línea del cargador ya no sale cortada. Ayuda: `MODEM_RST` 5 s después de STACK ON (así desde 0.5.8). + +### Cómo probarla + +1. Servidor desplegado con `$PHCG`. +2. Flashea H0027 (V4) con [`prueba/hbox-tarjetaV4_0.6.2.bin`](prueba/hbox-tarjetaV4_0.6.2.bin) y [verifica el SHA-256](index.md#verifica-el-sha-256). Consola: `hbox-v5-bringup 0.6.2 built …`; cada 10 s `$PHLG,0.6.2,…` y `$PHCG,…`. +3. Monitor: la unidad con ⚡ VEHÍCULO, su uptime y las fases del gobernador (espera de arranque → comprobando riel → 🔌 CARGANDO). En el historial crudo, cada 30 s un `$PHLG` de 24 campos y su `$PHCG`. +4. Tecla `X` y `phtst_report.py` (arriba). Manda el resultado a ingeniería. +5. La prueba del cargador: [módem en batería §1](../procedimientos/prueba-bateria-modem.md#1-cargador-062). + +| Archivo | Tarjeta | Tamaño | SHA-256 | +|---|---|---|---| +| [`prueba/hbox-v5-bringup_0.6.2.bin`](prueba/hbox-v5-bringup_0.6.2.bin) | V5.5 (V5.6 solo con paquete Li-ion) | 96 180 B | `3a183fccfbff32bc7f686ff5c68d959b783c910c2ae6b668e9ea069f90f76ebf` | +| [`prueba/hbox-tarjetaV4_0.6.2.bin`](prueba/hbox-tarjetaV4_0.6.2.bin) | V4 | 95 692 B | `ec7425ace7a43d36238ecf9536c82d06b6f9b5304aad49748031ebe35b5167af` | + +Compilados del commit `d090cbf` del repositorio de firmware (arduino-cli 1.3.1, STM32duino 3.0.0). Detalle técnico: `CHANGELOG.md` del firmware, sección 0.6.2. Simulador en PC: 24 escenarios y 130 comprobaciones, todas bien; incluye 30 días encendida, la tecla `X` y apagar la etapa con eventos en cola. ## 0.6.1 → 0.6.2: el gobernador ya no corta la carga por las ráfagas del módem @@ -202,14 +231,15 @@ Detalle de cada versión anterior: [Descargas → versiones superadas](index.md# ## Cómo saber qué versión tiene una unidad - Consola USB: al arrancar, bajo una línea de `=====`, sale `hbox-v5-bringup 0.6.1 built …` y en la línea siguiente `board=EinarBoard v5 (HBOX v5)` o `v4`. -- `$PHLG`, campo 1: `0.5.9-fm`, `0.6.0`, `0.6.1` (`-eth` en los builds de banco con Ethernet). Ojo: `0.6.0-eth` salió de dos códigos, 0.5.9 (sin cargador; el monitor dice «sin cargar») y 0.6.0 (con gobernador). +- `$PHLG`, campo 1: `0.5.9-fm`, `0.6.0`, `0.6.1`, `0.6.2` (`-eth` en los builds de banco con Ethernet). Desde 0.6.2 detrás de cada `$PHLG` sale una `$PHCG`. Ojo: `0.6.0-eth` salió de dos códigos, 0.5.9 (sin cargador; el monitor dice «sin cargar») y 0.6.0 (con gobernador). - Monitor: detalle de la unidad, chip **fw**. ## Pendiente - V5.5 / V4: si el módem se apaga en batería no vuelve a arrancar sobre el boost. Es hardware y lo corrige la V5.6; el firmware evita apagarlo. - La vigilancia del módem todavía no actúa: sus umbrales se fijan con la [prueba en batería §2](../procedimientos/prueba-bateria-modem.md#2-aceptacion-059-y-06x). -- Lazo y eco de RS-485 / RS-232: queda para un build posterior. 0.6.1 salió como arreglo del cargador y solo comprueba que el SC16IS752 responde. +- Lazo y eco de RS-485 / RS-232: queda para un build posterior. 0.6.1 y 0.6.2 salieron como arreglo del cargador y de la telemetría, y solo comprueban que el SC16IS752 responde. +- El largo máximo de línea que deja pasar el módem: lo mide la tecla `X` de 0.6.2 en el banco. - V5.6: `RS1` 10 mΩ y `R50` 1.5 kΩ (~1.3 A de carga). Con eso el gobernador casi nunca tendrá que cortar. ## Historial de revisiones @@ -218,3 +248,4 @@ Detalle de cada versión anterior: [Descargas → versiones superadas](index.md# |---|---|---| | 1.0 | 2026-09-29 | Primera versión: 0.5.9, 0.6.0 y 0.6.1. | | 1.1 | 2026-09-29 | 0.6.1 retirada: su `$PHLG` no pasa por el módem. 0.6.0 vigente otra vez; 0.6.2 en preparación. | +| 1.2 | 2026-09-30 | 0.6.2 en prueba de banco: telemetría en `$PHLG` corto + `$PHCG`, tecla `X` y cómo probarla; binarios en `prueba/`. | diff --git a/docs/descargas/prueba/hbox-tarjetaV4_0.6.2.bin b/docs/descargas/prueba/hbox-tarjetaV4_0.6.2.bin new file mode 100644 index 0000000..fbfb135 Binary files /dev/null and b/docs/descargas/prueba/hbox-tarjetaV4_0.6.2.bin differ diff --git a/docs/descargas/prueba/hbox-v5-bringup_0.6.2.bin b/docs/descargas/prueba/hbox-v5-bringup_0.6.2.bin new file mode 100644 index 0000000..41fad80 Binary files /dev/null and b/docs/descargas/prueba/hbox-v5-bringup_0.6.2.bin differ diff --git a/docs/descargas/prueba/phtst_report.py b/docs/descargas/prueba/phtst_report.py new file mode 100755 index 0000000..8dea7e8 --- /dev/null +++ b/docs/descargas/prueba/phtst_report.py @@ -0,0 +1,184 @@ +#!/usr/bin/env python3 +"""phtst_report.py — lee el historial crudo de una unidad y dice hasta qué largo de línea pasa el módem (tecla X, fw 0.6.2+). + +Uso: + python3 phtst_report.py H0027.txt # el .txt de «⬇ Historial crudo» del monitor (o /api/unit_history/H0027) + python3 phtst_report.py captura1.txt captura2.txt + cat H0027.txt | python3 phtst_report.py - + +Qué manda la unidad con la tecla X (ver hbox_v5_bringup.ino, phtstService): + $PHTST,,,,*CS con EXACTAMENTE caracteres desde '$' hasta el checksum (sin CR LF) + pasadas 1 y 2: control de 60, 100..109, control, 110..119, ..., 140, control (control = línea de 60) + luego 6 pares PEGADOS (pasada 'P', las dos líneas en una sola escritura, sin hueco): 60+60, 100+60, 100+100, dos veces + $PHEV ... PHTST,ini ... / PHTST,fin n=105 enmarcan la corrida. +Una línea cuenta como «llegó» solo si está ENTERA: checksum bien y largo real = largo declarado (un módem que recorta en +vez de descartar dejaría líneas cortas con checksum malo; esas salen como «dañadas»). +El servidor vuelca el historial cada ~10 s y, pasada la primera hora, lo reescribe en anillo (no queda en orden): el +script ordena por la hora de cada línea y solo da veredicto si llegó el cierre ($PHEV ... PHTST,fin). Bajar el historial +~15 s después de «PRUEBA DE LARGO fin» en la consola. +""" +import re +import sys + +MIN, MAX, CTRL, PASSES = 100, 140, 60, 2 +PAIRS = [(60, 60), (100, 60), (100, 100)] * 2 + + +def expected(): + """[(seq, largo, pasada)] tal como las manda el firmware: 105 líneas.""" + out, seq = [], 0 + for p in range(1, PASSES + 1): + if p == 1: + seq += 1; out.append((seq, CTRL, str(p))) + for L in range(MIN, MAX + 1): + seq += 1; out.append((seq, L, str(p))) + if (L + 1 - MIN) % 10 == 0 or L == MAX: + seq += 1; out.append((seq, CTRL, str(p))) + for a, b in PAIRS: + seq += 1; out.append((seq, a, 'P')) + seq += 1; out.append((seq, b, 'P')) + return out + + +def checksum_ok(s): + if not s.startswith('$') or '*' not in s: + return False + body, _, cs = s[1:].partition('*') + try: + want = int(cs[:2], 16) + except ValueError: + return False + got = 0 + for ch in body: + got ^= ord(ch) + return got == want and len(cs) == 2 + + +TS = re.compile(r'^(\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2})') + + +def read_runs(texts): + """Ordena por hora (historial en anillo) y separa corridas por PHTST,ini. Devuelve + [(estado, {seq: (ok, largo_real, largo_declarado, pasada)})], estado = 'fin' | 'cancelada' | 'abierta'.""" + rows = [] + for text in texts: + for raw in text.splitlines(): + m = TS.match(raw) + rows.append((m.group(1) if m else '', len(rows), raw)) + if any(r[0] for r in rows): + rows.sort(key=lambda r: (r[0], r[1])) # estable: dentro del mismo segundo, el orden del archivo + runs, cur, state = [], None, 'abierta' + for _, _, raw in rows: + if 'PHTST,ini' in raw: + if cur is not None: + runs.append((state, cur)) + cur, state = {}, 'abierta' + continue + if cur is not None and ('PHTST,fin' in raw or 'PHTST,cancelada' in raw): + state = 'fin' if 'PHTST,fin' in raw else 'cancelada' + continue + i = raw.find('$PHTST,') + if i < 0: + continue + if cur is None: # sin marca de inicio (historial cortado): corrida abierta + cur = {} + s = raw[i:].strip() + f = s.split(',') + try: + declared, pas, seq = int(f[1]), f[2], int(f[3]) + except (IndexError, ValueError): + continue + ok = checksum_ok(s) and len(s) == declared + if seq not in cur or ok: + cur[seq] = (ok, len(s), declared, pas) + if cur is not None: + runs.append((state, cur)) + return runs + + +def report(got, state='fin'): + exp = expected() + lines = [] + say = lines.append + intact = {seq for seq, v in got.items() if v[0]} + damaged = sorted(seq for seq, v in got.items() if not v[0]) + say(f"Líneas $PHTST esperadas {len(exp)}; llegaron enteras {len(intact)}; dañadas {len(damaged)}.") + if damaged: + decl = sorted({got[q][2] for q in damaged}); real = sorted({got[q][1] for q in damaged}) + say(f" dañadas (checksum malo o largo real distinto del declarado): largos declarados {decl[0]}..{decl[-1]}, " + f"llegaron con {real[0]}..{real[-1]} caracteres => el módem RECORTA las largas en vez de descartarlas") + if state != 'fin': + say("CORRIDA INCOMPLETA: " + ("se canceló (X otra vez o Modo B off)." if state == 'cancelada' else + "no llegó el cierre PHTST,fin. Baja el historial otra vez ~15 s después de «PRUEBA DE LARGO fin».") + + " Sin veredicto; lo que llegó hasta ahora:") + ctrl = [e for e in exp if e[1] == CTRL and e[2] != 'P'] + ctrl_ok = sum(1 for e in ctrl if e[0] in intact) + say(f"Líneas de control (60): {ctrl_ok}/{len(ctrl)}.") + singles = [e for e in exp if e[2] != 'P' and e[1] != CTRL] + arrived = {L: [] for L in range(MIN, MAX + 1)} + for seq, L, p in singles: + arrived[L].append(seq in intact) + row = ''.join('#' if all(arrived[L]) else ('+' if any(arrived[L]) else '.') for L in range(MIN, MAX + 1)) + say(f"Largo 100..140 (# = llegó en las 2 pasadas, + = en una, . = en ninguna):") + say(f" 100 {row[:10]} {row[10:20]} {row[20:30]} {row[30:40]} {row[40:]} 140") + all_ok = [L for L in range(MIN, MAX + 1) if all(arrived[L])] + none_ok = [L for L in range(MIN, MAX + 1) if not any(arrived[L])] + verdict_line = None + if not any(any(v) for v in arrived.values()): + verdict_line = "No llegó ninguna línea de 100 o más: límite por línea < 100 caracteres (o la corrida no llegó)." + else: + lim = max(L for L in range(MIN, MAX + 1) if any(arrived[L])) + clean = all(all(arrived[L]) for L in range(MIN, lim + 1)) and all(not any(arrived[L]) for L in range(lim + 1, MAX + 1)) + if clean and lim == MAX: + verdict_line = f"Llegaron TODAS hasta {MAX}: el límite por línea es > {MAX} caracteres (o no hay límite en este rango)." + elif clean: + verdict_line = f"LÍMITE POR LÍNEA: {lim} caracteres (sin CR LF) — de {lim + 1} para arriba no llegó ninguna." + else: + holes = [L for L in range(MIN, lim + 1) if not all(arrived[L])] + verdict_line = (f"Resultado no limpio: la más larga que llegó es {lim}, pero faltan {holes} por debajo " + f"(pérdidas sueltas: cobertura / UDP). Repetir X; el límite probable es {lim}.") + if state == 'fin': + say(verdict_line) + if ctrl_ok < len(ctrl): + say(" OJO: se perdieron líneas de control (cortas): hubo pérdidas que no son por largo. Repetir la prueba.") + pair_res = [] + pair_seqs = [e for e in exp if e[2] == 'P'] + for k in range(len(PAIRS)): + (s1, a, _), (s2, b, _) = pair_seqs[2 * k], pair_seqs[2 * k + 1] + pair_res.append(((a, b), s1 in intact, s2 in intact)) + summary = {} + for (a, b), o1, o2 in pair_res: + t = summary.setdefault((a, b), [0, 0]) + t[0] += int(o1 and o2); t[1] += 1 + say("Pares pegados (las dos líneas en una sola ráfaga, sin hueco): " + + ', '.join(f"{a}+{b} {ok}/{n}" for (a, b), (ok, n) in summary.items())) + if state != 'fin': + return lines + single100 = all(arrived[100]) + if single100 and summary[(100, 100)][0] == summary[(100, 100)][1] and summary[(100, 60)][0] == summary[(100, 60)][1]: + say(" => el módem corta por LÍNEA, no por ráfaga: líneas pegadas pasan si cada una es corta.") + elif single100 and summary[(100, 100)][0] < summary[(100, 100)][1]: + say(" => los pares de 100 no pasan aunque la línea de 100 sola sí: el módem corta por RÁFAGA/paquete. Cada línea " + "del MCU tiene que salir sola (0.6.2 ya lo hace: la siguiente espera a que la anterior salga + 8 ms).") + return lines + + +def main(argv): + if len(argv) < 2: + print(__doc__); return 2 + texts = [] + for a in argv[1:]: + texts.append(sys.stdin.read() if a == '-' else open(a, encoding='utf-8', errors='replace').read()) + runs = read_runs(texts) + if not runs: + print("No hay líneas $PHTST en la entrada: ¿se corrió X con Modo B activo? ¿es el historial de esa unidad y de esa hora?") + return 1 + for i, (state, got) in enumerate(runs, 1): + if len(runs) > 1: + print(f"== corrida {i} de {len(runs)}") + print('\n'.join(report(got, state))) + return 0 + + +if __name__ == '__main__': + sys.exit(main(sys.argv)) diff --git a/docs/index.md b/docs/index.md index dbd55dc..938bffb 100644 --- a/docs/index.md +++ b/docs/index.md @@ -131,6 +131,6 @@ La lupa busca por unidad (H00xx), conector (P15, J10), evento (MODEM_DARK) o pro | V5.5 | 15 unidades en campo · fw 0.6.0 | | V5.6 | Esquemático cerrado · PCB en layout · pedido pendiente | | v6 | En diseño (GNSS + 4G a bordo) — no pedir | -| firmware 0.6.2 | En preparación; 0.6.1 retirada el 29-sep (su telemetría no pasaba por el módem) · [notas de versión](descargas/notas-de-version.md) | +| firmware 0.6.2 | En prueba de banco desde el 30-sep, no para campo ([descargas](descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta)); en campo sigue 0.6.0; 0.6.1 retirada el 29-sep (su telemetría no pasaba por el módem) · [notas de versión](descargas/notas-de-version.md#062-en-prueba) | Reglas de trabajo: [Guía del ingeniero](guia-ingeniero.md). Fuente: repositorio Drogheda. Contacto: leo@helgen.tech diff --git a/docs/procedimientos/prueba-bateria-modem.md b/docs/procedimientos/prueba-bateria-modem.md index b0aa091..87e31e0 100644 --- a/docs/procedimientos/prueba-bateria-modem.md +++ b/docs/procedimientos/prueba-bateria-modem.md @@ -1,10 +1,10 @@ --- title: "Prueba de banco — módem 4G en modo batería" tags: [project-drogheda, hbox, procedimiento, bateria, modem, ltc4040, v5, v4, firmware] -date: 2026-09-26 +date: 2026-09-30 project: Project Drogheda author: Helgen Technologies -version: 1.5 +version: 1.6 --- # Prueba de banco — módem 4G en modo batería @@ -22,6 +22,8 @@ version: 1.5 Misma unidad, paquete bajo (menos de 3.5 V), antes de la corrida en batería. Vale también para la V4, con la consola en el cable sin 5 V del [procedimiento V4](v4-prueba-fw-0.5.6.md). Es la prueba del gobernador corregido de 0.6.2 (el de 0.6.1, que se retiró por la telemetría): con 0.6.0, vigente, la carga se corta con las ráfagas del módem si el riel queda cerca de 5.0 V. Qué cambió en el gobernador y por qué: [notas de versión](../descargas/notas-de-version.md). +Antes del paso 1: flashea 0.6.2 de prueba ([Descargas](../descargas/index.md#firmware-del-hbox-que-binario-va-en-que-tarjeta), carpeta `prueba/`), con el servidor ya desplegado con `$PHCG`, y confirma que el monitor muestra la fuente (⚡ VEHÍCULO), el uptime y la fase del gobernador. Si no los muestra, la telemetría no está llegando: para la prueba ahí y avisa a ingeniería ([0.6.2 en prueba](../descargas/notas-de-version.md#062-en-prueba)). + 1. 24 V + etapa ON, consola abierta. Los primeros 120 s `STAT` dice `carga=HOLDOFF`; luego `carga=PROVING n/30s` y a los ~150 s `EVT up=… CARGA ON: riel 5.xx V estable 30 s`. 5 s después, `EVT up=… CARGA: riel 5.2x -> 5.0x V con el cargador (caida 0.xx V)`: anota la caída (esperado < 0.10 V; con más de 0.15 V añade `RUTA DE 5 V DEBIL`). Siguiente `STAT`: `ltc=CARGANDO`; el monitor muestra 🔌 CARGANDO o «cargó N %». 2. 30 min sin tocar, multímetro en P2 (anota el mínimo). En `STAT`: `cortes=0`, `duty=` cerca de 100 % y `cargado=` subiendo; `vbat` inicial y final (debe subir). Las ráfagas del módem ya no cortan la carga. 3. Quita 24 V con la carga puesta, espera ~5 s (con menos de 3 s cuenta como corte; con 10 s o más hay reset) y reconecta: `CARGA OFF: se fue el 5 V … no cuenta como corte`, `cortes=` sin cambio, `carga=WAIT` con cuenta atrás y vuelve a cargar. Con 10 s o más en batería, al volver: reset del MCU y de nuevo 120 s de `HOLDOFF`. En batería nunca carga (`carga=BATT`). @@ -140,5 +142,6 @@ Todo va en el [acta de la prueba](../formularios/prueba-bateria.html): configura | 1.3 | 2026-09-29 | Edición breve; los hallazgos 26/27-sep viven aquí (Descargas solo los resume). | | 1.4 | 2026-09-29 | §1 para el gobernador 0.6.1: 30 min sin cortes, desconexión, corte SOSTENIDO, noche y regla de la ruta de 5 V; pulso `MODEM_RST` a 5 s. | | 1.5 | 2026-09-29 | §1 pasa a 0.6.2 (0.6.1 retirada: su `$PHLG` no pasaba por el módem). | +| 1.6 | 2026-09-30 | §1: 0.6.2 publicada para prueba de banco; antes del paso 1, confirmar la telemetría en el monitor. | Versiones anteriores en git. diff --git a/scripts/sync-docs.sh b/scripts/sync-docs.sh index 467a1bc..b5c36e7 100755 --- a/scripts/sync-docs.sh +++ b/scripts/sync-docs.sh @@ -27,6 +27,11 @@ declare -a MAP=( # Descargas para técnicos (firmware de bring-up v5) # Versión nueva: su .bin va a docs/descargas/ y la anterior a docs/descargas/superseded/. El script no borra: # el .bin anterior que quedó en docs/descargas/ se mueve a mano (mv) a superseded/. + # En prueba de banco (no para campo): docs/descargas/prueba/. Cuando pasa el banco, su .bin se mueve (mv) a + # docs/descargas/, la vigente anterior a superseded/, y se corrigen estas líneas. + "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.2.bin|docs/descargas/prueba/hbox-v5-bringup_0.6.2.bin" + "04-Source-Code/firmware/release/hbox-tarjetaV4_0.6.2.bin|docs/descargas/prueba/hbox-tarjetaV4_0.6.2.bin" + "04-Source-Code/firmware/tools/phtst_report.py|docs/descargas/prueba/phtst_report.py" "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.0.bin|docs/descargas/hbox-v5-bringup_0.6.0.bin" "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.6.1.bin|docs/descargas/superseded/hbox-v5-bringup_0.6.1.bin" "04-Source-Code/firmware/hbox_v5_bringup/release/hbox-v5-bringup_0.5.9.bin|docs/descargas/superseded/hbox-v5-bringup_0.5.9.bin" @@ -93,7 +98,7 @@ for entry in "${MAP[@]}"; do done # SHA256SUMS se GENERA de los .bin que de verdad se publican (antes se copiaba el del v5 y # borraba las lineas de los demas firmwares). Asi la lista nunca miente sobre la carpeta. -( cd docs/descargas && shasum -a 256 *.bin superseded/*.bin > SHA256SUMS.txt ) +( cd docs/descargas && shopt -s nullglob && shasum -a 256 *.bin prueba/*.bin superseded/*.bin > SHA256SUMS.txt ) echo "SHA256SUMS.txt regenerado: $(wc -l < docs/descargas/SHA256SUMS.txt) binarios" echo "sincronizados $n archivos desde $SRC" echo "Revisa 'git status' y haz commit de los cambios que quieras publicar."