- Réunit le rendu, le déploiement et le contrôle de l’affichage nécessaires à la création d’une smart frame, avec une approche centrée sur l’exécution sur l’appareil, afin de faire fonctionner de manière autonome des frames basées sur Raspberry Pi ou ESP32
- Le backend s’installe en local avec Docker ou comme module complémentaire Home Assistant ; le déploiement se fait via SSH ou carte SD flashée, puis la frame continue de fonctionner même sans backend
- Les scènes se créent sous forme de graphe de nœuds reliant événements, applications de données, applications de rendu et états ; le résultat est compilé en un binaire unique exécuté sur la frame
- Raspberry Pi prend en charge le déploiement en Wi‑Fi à partir du Pi Zero 2 W ou supérieur, les polices TrueType, SVG, le dithering e-ink 6 couleurs, TLS, le parsing iCal, les captures headless Chromium et son propre serveur web
- L’ESP32-S3 prend en charge le flash depuis le navigateur, le rendu sur l’appareil, les mises à jour OTA et le deep sleep entre les rafraîchissements pour les panneaux e-paper SPI Waveshare, mais chaque image firmware n’inclut qu’un seul pilote de panneau sélectionné
Rôle de FrameOS
- FrameOS est un système d’exploitation qui combine un Raspberry Pi ou un ESP32 avec un écran pour créer des smart frames autonomes, capables d’afficher un calendrier, un tableau de bord ou un cadre artistique
- Il cible les écrans e-ink, HDMI et LCD, avec un rendu traité sur l’appareil
- Il fonctionne sans cloud ni abonnement, et est proposé gratuitement en open source sous licence AGPL-3.0 depuis 2023
- Le backend peut être installé avec Docker, et le dépôt du projet se trouve sur GitHub
Installation et flux de déploiement
- FrameOS permet de configurer une frame selon un flux en trois étapes : installation du backend, connexion du matériel, puis déploiement des scènes
- Le backend peut être lancé en une commande sur un ordinateur portable, un serveur ou un NAS, ou installé comme module complémentaire Home Assistant
- Le Raspberry Pi ou l’ESP32 est connecté à l’écran
- Il suffit ensuite de choisir une scène préconçue ou d’en concevoir une, puis de la déployer
- Le backend ne repose pas sur un service par abonnement : il fonctionne comme une application web locale
- Le déploiement s’effectue via SSH ou carte SD flashée, après quoi la frame peut continuer à fonctionner de manière autonome sans backend
- Il est possible de connecter plus de 120 panneaux pris en charge, et un câble HDMI peut aussi être utilisé sur Raspberry Pi
- La frame se contrôle via son propre QR code et une API HTTP ; l’API HTTP de l’ESP32 reste encore expérimentale
Édition des scènes et mode d’exécution
- Les scènes sont construites dans un éditeur visuel appuyé sur du vrai code
- La composition des scènes prend la forme d’un graphe de nœuds
- Rouge : événements
- Vert : applications de données
- Bleu : applications de rendu
- Jaune : état
- Les scènes configurées sont compilées en un binaire unique puis exécutées sur la frame
- Une galerie organisée permet d’installer en un clic des scènes de galerie, calendrier, agenda, tableau de messages, météo, webcam ou art IA, avec possibilité de les modifier jusqu’au niveau du code source
Options Raspberry Pi et ESP32
- FrameOS fonctionne au mieux dans un véritable environnement Linux, en ciblant les Raspberry Pi à partir du Pi Zero 2 W à 15 $
- Dans l’environnement Raspberry Pi, le déploiement peut se faire en Wi‑Fi sans reflasher le firmware
- Les frames basées sur Linux peuvent exploiter les fonctions suivantes
- Polices TrueType et SVG à toutes les résolutions
- Dithering pour e-ink 6 couleurs
- TLS
- Parsing iCal
- Captures headless Chromium
- Serveur web intégré à la frame
- Pour une frame sans fil, il est possible d’utiliser un ESP32-S3 avec des panneaux e-paper SPI Waveshare
- La configuration ESP32-S3 prend en charge le flash depuis le navigateur, le rendu des scènes sur l’appareil, les mises à jour OTA et le fonctionnement sur batterie grâce au deep sleep entre les rafraîchissements
- Chaque image firmware ESP32 n’inclut qu’un seul pilote de panneau sélectionné
Fabrication du boîtier et exemples finis
- FrameOS Case Maker génère des boîtiers paramétriques imprimables en 3D, adaptés aux panneaux pris en charge et aux dispositions Raspberry Pi
- L’utilisateur peut choisir un modèle, ajuster la profondeur et le bezel, puis ajouter un support mural, un kickstand, une découpe USB-C et des colonnettes de vis avant de télécharger le STL
- Case Maker s’appuie sur la même base de données matérielle que la documentation pour fournir les dimensions par défaut des configurations Waveshare et Pimoroni
- Case Maker est disponible sur Open Case Maker
- Les exemples finis montrent en un seul ensemble les panneaux Spectra 6 de Waveshare et Pimoroni, un boîtier slim imprimé en 3D, une alimentation USB-C et la configuration logicielle FrameOS
1 commentaires
Commentaires sur Hacker News
Petit projet amusant. Il y a deux ans, j’ai fabriqué pour offrir un cadre Arduino eInk 7 couleurs, et le plus difficile a été de recadrer les images à la main, de les tramer et d’ajuster la palette de couleurs pour qu’elles rendent à peu près correctement à l’écran
Si FrameOS avait fait ça à ma place, je pense que j’aurais économisé plusieurs heures d’édition manuelle et de tests
Au final, cette année, comme ajouter des photos à distance était trop pénible, j’ai acheté un cadre Aura à la même personne
Avec un cadre comme l’Inky Impression 7 couleurs, ça fonctionne déjà, parce que la plupart du temps le logiciel et les pilotes correspondants font déjà ce traitement
Cela pourrait beaucoup aider pour les kiosques médicaux, l’art numérique et la signalétique
La demande d’art numérique dans les hôpitaux est assez forte. J’ai été architecte technique pour SFGH et UCSF, responsable de la mise en œuvre technique à l’El Camino Hospital, ainsi que directeur des opérations TV chez Vizio
J’ai évalué, acheté et installé ce type de systèmes ainsi que des systèmes d’orientation dans les hôpitaux, et on a dépensé des centaines de milliers de dollars en art numérique diffusé en boucle dans les halls d’ascenseurs ou sur les écrans des chambres, mais les logiciels étaient lamentables
Dans le hall de l’El Camino Hospital, le système de signalétique numérique était tellement mauvais qu’il a fallu remplacer une partie du matériel par des Mac Mini pour faire tourner des MP4 en boucle dans VLC
Je pense donc qu’un système comme celui-ci avec un Pi Zero serait une bonne option
Cela dit, on pourrait aussi implémenter l’orientation de manière élégante avec ça. Quand il est question d’« interactif », j’espère que cela signifie qu’on peut lancer une webapp/app sur le Pi et, en veille, revenir à une boucle d’art numérique
Les marchés de l’art numérique, de la signalétique et de l’orientation ont besoin d’un jeune projet audacieux capable de les bousculer. Si j’avais un Pi sous la main, je l’essaierais tout de suite
Je me demande si je pourrais aussi l’installer sur la tablette Android TCL médiocre reçue de T-Mobile. Ce serait aussi intéressant de regarder le contrôle des ampoules Feit Electric
L’option la plus rentable pour ce type d’appareil/OS serait sans doute la signalétique d’information voyageurs pour des transports locaux comme BART. Il faut simplement faire en sorte que même la personne la moins à l’aise avec la technique dans l’organisation puisse l’installer, le configurer et l’afficher sans se tromper
Le réseau de transport de la région de Sacramento a beaucoup d’écrans, mais presque aucune information utile
Quand on prend le train en APAC, il y a des écrans LCD en hauteur sur le mur qui affichent une carte d’état. Quand on prend le train aux États-Unis, il y a de l’urine et des excréments en hauteur sur le mur, mais aucune carte d’état nulle part
C’est fou de voir autant d’argent gaspillé aux États-Unis alors que des gens mendient de quoi manger dans la rue
Ça me rappelle Chumby. C’était un produit au potentiel énorme, mais il a été abandonné beaucoup trop vite
Il y a plein d’endroits dans la maison où un écran intelligent, contrôlable et gérable avec peu de code serait utile, mais je n’ai presque jamais le temps de creuser. Je suis vraiment content d’avoir découvert ce projet aujourd’hui
.pngou de.jpeghttps://shop.invisible-computers.com
J’aurai un écran lumineux, et tout ce que je veux voir n’a qu’à s’afficher dans un navigateur web
Vraiment génial. L’an dernier, j’ai créé un ensemble de scripts pour échanger des images e-ink via Gmail et je l’ai appelé DispatchPi ; si un programme comme celui-ci avait existé, le développement aurait été beaucoup plus rapide
https://github.com/malcolmosh/dispatchPi/blob/main/README.md
C’était assez pénible de devoir toujours me connecter en SSH au Pi depuis le terminal, puis mettre à jour les scripts avec le client FTP FileZilla et VSCode
Je viens aussi de terminer un projet de tableau de bord que je compte publier bientôt, et j’envisage de remplacer le pilote du cadre par un ESP32 pour le faire fonctionner sur batterie, car l’ESP32 consomme beaucoup moins qu’un Pi Zero
Si j’ai mon mot à dire, je vote pour la compatibilité ESP32
Plutôt que d’essayer d’afficher des images arbitraires avec une bibliothèque ESP, il était plus simple et plus fiable de préparer les images dans une taille et un format précis avant de les envoyer à l’ESP32/écran
La première image de la page montre l’éditeur, et franchement, c’est impressionnant. Il y a ce passage dans la description :
« Diagram Editor : une interface drag-and-drop pour composer des apps Nim en scènes. Il est possible de forker et modifier des apps existantes comme “OpenAI image” ou “Text overlay” afin de les adapter à ses besoins. Tous les champs peuvent être remplacés par des fragments de code inline. »
Ça a vraiment l’air soigné. J’imagine qu’il y a eu une énorme quantité de travail derrière. Je me demande avec quoi ça a été fait, et si l’éditeur lui-même est écrit en Nim
Je me demande aussi ce qui est exécuté une fois qu’on a écrit une scène. Est-ce que ça lance un runtime ressemblant à l’éditeur mais avec un mode présentation, ou est-ce que ça génère un nouveau programme Nim qui exécute d’autres programmes Nim ?
Je me demande aussi si les apps sont appelées ponctuellement, ou si elles tournent en continu avec une communication persistante. Qu’est-ce qui déclenche le démarrage d’une frame, et comment la composition est-elle faite ?
Même si ça sert à des cadres connectés, j’ai l’impression qu’en réalité vous avez créé un système générique de programmation par flux vraiment cool
L’éditeur/contrôleur lui-même est une app React+Kea, la partie diagramme utilise React Flow, et le backend est en Flask
Pour l’instant, pour tester si l’app qu’on a créée fonctionne, il faut la déployer sur le cadre. Avec un RPi 5 rapide pour les tests, la boucle de feedback prend généralement environ 30 secondes ; sur un Zero W2, environ 1 minute ; sur un Zero W, environ 2 minutes. Ce n’est pas idéal, et j’aimerais améliorer ça
Idéalement, j’aimerais utiliser le backend JS de Nim pour créer une “frame” exécutable directement dans le navigateur afin de tester
Pour répondre aux autres questions, le système FrameOS se lance au démarrage, et toutes les apps sont compilées dans un seul binaire, puis exécutées selon ce qu’indique la scène. Quand un événement de rendu est transmis, une nouvelle frame est rendue ; cet événement peut être généré automatiquement à intervalles réguliers ou à la demande
Le cadre envoie ses logs au contrôleur, mais à part ça, il peut fonctionner de manière totalement autonome
Correction : je me suis trompé, c’est en fait React Flow
https://github.com/FrameOS/frameos/blob/037af53e94a3b47ce5df...
https://reactflow.dev/
Ça a l’air vraiment intéressant. Si je comprends bien, ce n’est pas vraiment un OS, mais plutôt un logiciel qui s’exécute par-dessus l’OS du Pi ?
FrameOS est un binaire compilé qui tourne sur Linux. Actuellement, avant d’installer FrameOS lui-même, il faut installer “Raspberry Pi OS Lite”, sans environnement de bureau, sur la carte SD. Donc on peut le voir comme “juste une application”
Cela dit, c’était la manière la plus rapide de démarrer, parce que le projet en est à ses débuts. L’étape suivante est de voir jusqu’où on peut réduire les dépendances. FrameOS est un binaire unique compilé statiquement, donc il n’a peut-être pas besoin de grand-chose en dehors du noyau Linux. Est-ce que ça en ferait un vrai OS ? Android utilise aussi le noyau Linux, mais il est considéré comme un OS à part entière
Une fois activé, FrameOS prend le contrôle de tout le système, possède ses propres dossiers
apps/etdrivers/, et se comporte déjà comme un système d’exploitation à bien des égards. J’envisage aussi de le faire tourner sur ESP32, auquel cas il faudra peut-être ajouterdrivers/wifi/. S’il fonctionne sans aucun OS en dessous, méritera-t-il alors d’être appelé un OS ? À vous d’en jugerSi vous me demandez si c’est un système d’exploitation, pour moi oui, mais on peut aussi le voir autrement
Dans mon vrai travail chez PostHog, il nous arrive de nous appeler “Product OS”, ce qui m’agace davantage. Un ensemble d’apps web n’est clairement pas un système d’exploitation au sens traditionnel. J’ai aussi vu le suffixe -OS ajouté à des choses qui ne sont pas de purs systèmes d’exploitation. Ça m’agace un peu, sans doute surtout parce que j’ai vécu à une époque où la question “Quel OS utilisez-vous ?” définissait une part de l’identité
La langue évolue, et “système d’exploitation” semble désormais désigner davantage de choses, selon les personnes, que ce que vous et moi avons en tête
Comme FrameOS utilise Nim, il pourrait être porté pour s’exécuter en bare metal, sans noyau. Grâce au dispatch asynchrone, Nim fournit aussi un multitâche coopératif léger
FrameOS peut actuellement être vu comme un OS qui ne s’exécute que par-dessus le noyau Linux, ou comme de l’espace utilisateur si vous préférez. Mais rien n’empêche en principe de le porter pour qu’il s’exécute directement sur un microcontrôleur
Ça a l’air chouette. Je voulais configurer un écran e-ink avec Home Assistant, donc je vais regarder ça
Dans l’article « Why FrameOS », il y a une photo qui ressemble à un écran e-ink affichant un tableau de bord Home Assistant, et juste en dessous il est écrit : « mais côté logiciel, c’était le bazar ». Je me demande quels étaient exactement les problèmes avant la création de FrameOS. Au moins sur la photo, ça semble bien fonctionner
Je me demande aussi ce que cette phrase veut vraiment dire : « GPT4 Support: demandez à votre LLM préféré d’écrire et de déboguer des apps FrameOS. »
En voyant ça, j’ai tout de suite eu l’impression que cela confirmait la tendance selon laquelle les nouvelles apps intégreront des LLM dès le départ. Pourquoi ne pas le faire ? Bien utilisés, les LLM peuvent améliorer fortement l’expérience utilisateur dans presque toutes les apps
Une blague du genre : pas besoin de créer un truc comme un cloud social IA autonome basé sur la blockchain, qui se vend bien en ce moment sur le marché du private equity
Existe-t-il une bonne alternative pour éviter de transformer de vieilles tablettes Amazon Fire en déchets électroniques ? Elles sont basées sur Android
Personnellement, j’utilise des tablettes Amazon Fire chez moi comme pilotes audio pour Snapcast. Chaque tablette a de l’USB, du Wi-Fi, une sortie aux 3,5 mm et une batterie intégrée, ce qui les rend très adaptées à cet usage ; en promo à 45 dollars pièce, c’est particulièrement intéressant
Sans bootloader déverrouillé, il est peut-être possible de rooter Android, mais pas de remplacer Android ou la ROM elle-même
De toute façon, ça ne change pas grand-chose. C’est du MediaTek, donc à cette époque la structure des partitions et le modèle de pilotes étaient globalement un bazar. Faire tourner FrameOS sur ce matériel de façon raisonnablement élégante serait difficile
Vraiment excellent. Il y a beaucoup de projets qui essaient de reproduire des choses similaires, mais très peu ont ce niveau de finition, surtout côté création
Personnellement, j’aimerais qu’il prenne en charge des appareils eINK basse consommation avec ESP32 intégré, comme la série InkPlate. Cela dit, en voyant ça, je me demande si je ne vais pas passer à un Pi
Les marges seraient serrées, et il faudrait sans doute supprimer certaines fonctionnalités comme le threading, mais en théorie ce serait faisable
Cela dit, il reste encore beaucoup à faire pour rendre la version Raspberry excellente, donc je ne prévois pas de m’en occuper pour le moment
C’est une bonne chose de voir davantage de logiciels arriver dans ce domaine
Sujet indirectement lié : je cherche un écran de 32 pouces ou plus utilisable comme cadre photo. À part le Samsung The Frame, je n’ai rien trouvé d’autre, ce qui est surprenant pour un cas d’usage aussi simple
Voilà où j’en suis pour l’instant. Les TV et moniteurs consomment trop pour rester allumés 24 h/24. L’e-ink couleur plafonne généralement autour de 13 pouces. Le Samsung The Frame est réussi en fonctionnalités et en apparence, mais il est cher, et il a aussi le défaut d’être un Samsung
Je me demande s’il existe des produits recommandables