No description
  • C 86.6%
  • C++ 12.9%
  • Python 0.2%
  • CMake 0.2%
  • Rust 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
bthidev 2bead57994
All checks were successful
server / Check (fmt, clippy, tests) (push) Successful in 1m52s
server / Build release binary (tags server-v* only) (push) Successful in 1m55s
chore(server): bump crate to 0.1.3
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.
2026-10-18 19:11:07 +02:00
.forgejo/workflows Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
boards Initial source import 2026-09-12 12:05:24 +02:00
docs Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
lib Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
server chore(server): bump crate to 0.1.3 2026-10-18 19:11:07 +02:00
src Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
tests/ui_sim Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
.gitignore test: add headless LVGL UI simulator 2026-09-13 22:59:11 +02:00
manifest.json Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
platformio.ini Migrate UI from LVGL to LovyanGFX (#1) 2026-10-01 19:37:04 +00:00
README.md Aligner le firmware sur le SDK Hermes Gadget : contrat device, OTA durci, rendu par régions (#5) 2026-10-18 15:54:07 +00:00
rotatifscreen-v2-PLAN.md Initial source import 2026-09-12 12:05:24 +02:00

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.fr par défaut)
  • Endpoint préféré : /api/device (proxy compact, server/) ; repli sur /health et /api/profiles en direct si le proxy est absent
  • TLS : certificat CA ISRG Root X1 dans src/root_ca.h
  • Poll : toutes les POLL_INTERVAL_SECONDS secondes

Documentation

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

  1. HERMES : streams/runs actifs, run courant, uptime, dernier run terminé.
  2. VERSION / MAJ : version du firmware et contrôle OTA manuel.
  3. 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, cible ESP-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 de pushSprite, 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.