- C 86.6%
- C++ 12.9%
- Python 0.2%
- CMake 0.2%
- Rust 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Le payload /api/device a gagné le champ proto (PR #5) ; la convention du repo exige que le tag de release corresponde à la version Cargo. |
||
| .forgejo/workflows | ||
| boards | ||
| docs | ||
| lib | ||
| server | ||
| src | ||
| tests/ui_sim | ||
| .gitignore | ||
| manifest.json | ||
| platformio.ini | ||
| README.md | ||
| rotatifscreen-v2-PLAN.md | ||
rotatifscreen v2
Firmware ESP32-LCD qui affiche l'état de Hermes via WiFi.
Architecture
- Carte : ESP-LCD ESP32-S3, écran 466×466, knob + bouton + tactile
- UI : LovyanGFX (immédiat, sans LVGL), rendu par régions : une région n'est
composée et envoyée au panneau que si ses entrées changent, et les animations
avancent sur un compteur d'images (voir
docs/alignement-hermes-gadget-sdk.md) - Réseau : WiFi puis HTTPS vers
API_HOST(hermes.thidev.frpar défaut) - Endpoint préféré :
/api/device(proxy compact,server/) ; repli sur/healthet/api/profilesen direct si le proxy est absent - TLS : certificat CA ISRG Root X1 dans
src/root_ca.h - Poll : toutes les
POLL_INTERVAL_SECONDSsecondes
Documentation
docs/device-api.md— contrat versionné de l'API device (/api/device) et du manifeste OTAdocs/alignement-hermes-gadget-sdk.md— comparaison avec le SDK communautaire Hermes Gadget et feuille de routeserver/README.md— proxyhermes-device-server
Configuration locale
cp lib/config_local.example.h lib/config_local.h
Puis renseigner WIFI_SSID et WIFI_PASSWORD dans lib/config_local.h.
Le fichier est ignoré par git. Aucun token Hermes n'est actuellement requis
(l'endpoint est accessible depuis le réseau interne).
Bibliothèques locales
ESP32_Button, ESP32_Display_Panel, ESP32_IO_Expander, ESP32_Knob et
esp-lib-utils sont vendorisées dans lib/ (bibliothèques VIEWESMART du projet
d'origine). PlatformIO télécharge ArduinoJson et LovyanGFX (voir
platformio.ini).
Écrans
- HERMES : streams/runs actifs, run courant, uptime, dernier run terminé.
- VERSION / MAJ : version du firmware et contrôle OTA manuel.
- PROFILS : un écran par compagnon Hermes, avec pulsation douce de l'avatar actif.
Le knob, le bouton et un tap tactile naviguent entre les écrans ; le knob gauche revient à l'écran précédent et le knob droit avance, avec retour cyclique.
Mises à jour OTA
La CI (build.yml) publie firmware.bin et manifest.json sur
ota.thidev.fr à chaque tag v*. Le firmware vérifie le SHA-256 de l'image et
refuse toute image dont le manifeste ne porte pas l'identifiant de la carte
(board). Voir docs/device-api.md.
État de validation
- Compilation : vérifiée avec PlatformIO 6.1.19 (
pio run, cibleESP-LCD). - Redraw par régions et animations : non vérifiés sur la carte. La
composition et le trafic au panneau ne se mesurent qu'avec le matériel ; la
console série imprime une ligne
[perf]toutes les 300 images (ticks sans envoi, moyennes et p95 de composition et depushSprite, débit en Kio/s). Comparer cette ligne avant/après pour trancher. - Simulateur d'UI (
tests/ui_sim) : désaccordé. Il compile l'ancienne UI LVGL, remplacée par le rendu LovyanGFX ; à remettre à niveau ou à retirer. - Essai sur carte : à faire (affichage, encodeur, tactile, OTA réel). Ne pas considérer le firmware comme validé matériellement tant que cet essai n'a pas été fait.