Lumo
Lumo est une app native macOS et iOS pour piloter les afficheurs LED sous firmware AWTRIX (Ulanzi TC001) : rotation, connecteurs d'API, pixel art, notifications et alertes, sans passer par l'interface web.
Lumo remplace l'interface web d'AWTRIX, le firmware communautaire des afficheurs LED type Ulanzi TC001, par une app native pour Mac, iPhone et iPad. Elle parle directement à l'afficheur en HTTP sur le réseau local, et rend simple ce qui demandait jusque-là des requêtes à la main : choisir ce qui s'affiche, dans quel ordre, brancher des sources de données, et faire réagir l'afficheur à des événements.

Ce que Lumo propose
- Découverte automatique des afficheurs sur le réseau (sans mDNS, par sondage du sous-réseau), ajout manuel par IP, multi-afficheurs.
- Écran : la rotation éditée comme une playlist, avec des vignettes au rendu réel 32×8, du glisser-déposer et un aperçu live.
- Sources prêtes à l'emploi : météo (Open-Meteo, sans clé), calendrier, CPU et RAM du Mac, cours crypto, apps natives du firmware.
- Connecteurs : n'importe quelle API REST devient une source. URL, authentification (clé API, Bearer, OAuth 2.0 + PKCE avec rafraîchissement automatique), explorateur de réponse JSON, gabarit d'affichage, aperçu live. Une trentaine de modèles fournis (GitHub, npm, Spotify, YouTube, Stripe, Plausible, Home Assistant, Tempo EDF, ISS…).
- Studio : compositions texte avec icône et couleur, éditeur de pixel art 32×8, galerie d'icônes LaMetric avec import et conversion automatiques.
- Moments : notifications, règles d'alerte par seuil ou à heure fixe, minuteur et Pomodoro, LED témoins, passerelle de notifications locale (HTTP et schéma
lumo://notify). - Appareil : luminosité manuelle ou automatique, mode nuit programmé, lampe d'ambiance, capteurs.
- Menu-bar macOS, Raccourcis (App Intents) et, sur iPhone, Santé, batterie, rappels, anniversaires, mode de concentration et HomeKit.
- Afficheur de démonstration intégré pour découvrir l'app sans matériel.
- Interface française et anglaise.
Aspects techniques
- SwiftUI, Swift 6 (concurrence stricte),
@Observable, Swift Testing. Un seul bundle et une seule base de code pour macOS 15+ et iOS 18+, les parties spécifiques à chaque plateforme étant écartées à la compilation. - Protocole : API REST d'AWTRIX 3 uniquement (
/api/stats,/api/custom,/api/notify,/api/settings…), en HTTP local. - Sécurité : jetons OAuth et clés d'API stockés dans le Trousseau, passerelle de notifications en loopback uniquement, aucune collecte de données.
- Outillage : projet généré par XcodeGen, CI GitHub Actions (tests, .dmg signé et notarisé) et Xcode Cloud (archives et TestFlight), captures d'écran générées automatiquement par des tests UI sur l'afficheur de démonstration.
- Volume : environ 15 000 lignes de Swift et 200 tests.
- Landing : Nuxt 4 en génération statique, Tailwind 4, bilingue, avec des composants LED maison. Hébergée sur un VPS via Docker et Nginx.
Le modèle
Lumo est gratuit, sans achat intégré, sans publicité, sans analytique. C'est un projet communautaire, non affilié à AWTRIX ni à Ulanzi.
Et la suite ?
La version 1.0 est prête et la publication sur l'App Store est en cours sous le nom « Lumo for AWTRIX ». Ensuite : les retours des premiers utilisateurs, et peut-être le support MQTT pour ceux qui ont déjà un broker chez eux.