Repository navigation
Description
Contexto
platformio.ini no fijaba la versión de la plataforma (platform = espressif32). Cuando caducó la caché del CI, GitHub Actions se descargó la plataforma más reciente, con Arduino core 3.x / ESP-IDF 5 y C++20, y la compilación se rompió. Como solución temporal, en #13 se fijó espressif32 @ 6.12.0 (core Arduino 2.x), la versión validada en hardware.
Migrar a core 3.x es buena idea a medio plazo: es la rama mantenida, trae ESP-IDF 5, correcciones de seguridad y las nuevas APIs de red. Pero toca red, Ethernet y OTA, que son la base del proxy, así que requiere pruebas serias en hardware antes de llegar a producción.
Errores detectados al compilar con la plataforma nueva
src/i18n/es.hpp:105: invalid conversion from 'const char8_t*' to 'const char*'
src/i18n/de.hpp:105: invalid conversion from 'const char8_t*' to 'const char*'
src/proxy_operativo.hpp: invalid conversion from 'int' to 'eth_phy_type_t' (ETH.begin)
src/proxy_operativo.hpp: 'ESP_MAC_ETH' was not declared in this scope
src/proxy_operativo.hpp: 'esp_read_mac' was not declared in this scope
Seguramente solo son los primeros: el compilador se detiene en el primer fichero que falla.
Tareas
- Decidir la plataforma de destino (versión oficial de
platformio/espressif32o el forkpioarduino) y fijar la versión exacta enplatformio.ini - i18n: los literales
u8"..."pasan a serchar8_ten C++20; quitar el prefijou8(los fuentes ya son UTF-8) o hacer un cast - Ethernet: adaptar
ETH.begin(...)a la nueva firma (tipo de PHYeth_phy_type_t, orden de parámetros, LAN8720) - MAC: incluir
esp_mac.hparaesp_read_mac/ESP_MAC_ETH - Revisar los eventos de red (
WiFi.onEvent/ARDUINO_EVENT_*) y las APIs de WiFi que hayan cambiado - Comprobar que las librerías son compatibles:
ESP32Ping,Adafruit SH110X,Adafruit GFX,ArduinoOTA,WebServer,DNSServer,Preferences - Revisar los logs:
esp_log_level_sety que la UART siga en silencio - Comparar el tamaño del binario (ahora ~75 % de flash) y la RAM libre
Plan de pruebas en hardware (obligatorio antes de producción)
Primero en el proxy de test (.213) contra el emulador EMMA (.212), y después varios días de funcionamiento continuo antes de tocar producción (.211).
- Primer flasheo por USB (por si OTA falla, que exista vuelta atrás)
- NVS: al actualizar desde 6.x se conserva la configuración (red, IP destino, idioma, Test Target)
- WiFi: IP estática y DHCP; reconexión tras caída del AP
- Ethernet (LAN8720): IP estática y DHCP; desconectar y reconectar el cable
- OTA: subida correcta, contraseña, pantalla de progreso en el OLED, y una segunda OTA desde el firmware nuevo
- Portal de Setup: AP, portal cautivo, escaneo WiFi y guardado
- Arranque: peaje de ping y Test Target (EMMA, SUN2000, Custom y test desactivado)
- Proxy: varios clientes a la vez (Home Assistant + scripts), reensamblado de tramas fragmentadas, log y CSV
- OLED y botones: menú, test ping, test Modbus, escáner, pausa y apagado
- Estabilidad: 72 h o más sin reinicios ni fugas de memoria (vigilar el heap libre)
- Vuelta atrás probada: volver a flashear la 6.x por USB y comprobar que la NVS sigue siendo compatible
Riesgos
- Si cambia el comportamiento de la pila de red o de Ethernet, el proxy puede quedarse sin red y sin forma de recibir OTA. Por eso el primer flasheo va por USB.
- Cambios de formato en la NVS o en la tabla de particiones podrían obligar a reconfigurar el equipo.
Referencias
- PR que fijó la plataforma: feat: configurable startup Test Target (EMMA / SUN2000 / Custom) #13
- Guía de migración de Espressif, de 2.x a 3.0: https://docs.espressif.com/projects/arduino-esp32/en/latest/migration_guides/2.x_to_3.0.html
Activity