3 points par GN⁺ 2024-01-04 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2024-01-04
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

    • ImageMagick peut traiter par lots des images avec une palette limitée. Il n’y avait aucune raison de tout faire à la main
    • Je veux éviter que quiconque doive recadrer, tramer et indexer les couleurs des images à la main. C’est quelque chose que le logiciel FrameOS doit prendre en charge
      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

    • Si on installe des écrans dans les trains américains, ils finiront probablement eux aussi couverts d’urine et d’excréments
    • Installer un Mac Mini pour lire des fichiers MP3, c’est un énorme gaspillage d’argent. Un tout petit lecteur MP3 portable à 10 dollars ferait l’affaire
      C’est fou de voir autant d’argent gaspillé aux États-Unis alors que des gens mendient de quoi manger dans la rue
    • Je me demande ce que vous pensez de BrightSign. Le logiciel de base est assez mauvais, mais les possibilités de programmation ont été très bonnes pour nous. Nous n’en sommes pas encore à une exploration approfondie
  • Ç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

    • Nous créons un calendrier eInk prêt à l’emploi. On peut aussi développer son propre contenu puis le fournir à l’écran depuis une URL web sous forme de .png ou de .jpeg
      https://shop.invisible-computers.com
    • Moi non plus, je n’ai pas le temps de creuser, donc je pense simplement acheter un iPad d’occasion et le fixer au mur
      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

    • Je suis curieux de savoir jusqu’où le développement ESP32 a avancé. Le rendu d’images a été moins simple que prévu. Dans mon cas, l’écran n’était pas eInk mais LCD
      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
    • Je suis curieux de savoir quel matériel vous utilisez. J’ai récemment terminé un projet similaire et j’aimerais faire plus d’e-ink, mais la carte pilote matérielle qui se branche sur le Pi coûte aussi cher que l’écran e-ink
  • 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

    • Merci pour le retour
      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
    • Rien qu’avec les captures d’écran, ça ressemble à dear imgui. On peut voir des widgets similaires ici : https://github.com/TimoSalomaki/awesome-dear-imgui
      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 ?

    • Techniquement, oui. Et c’est même la meilleure sorte de “oui”, mais il y a un peu de nuance dans cette question
      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/ et drivers/, 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 ajouter drivers/wifi/. S’il fonctionne sans aucun OS en dessous, méritera-t-il alors d’être appelé un OS ? À vous d’en juger
      Si 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
    • On dirait bien. Dans ce cas, il y a de fortes chances que ça fonctionne aussi sur d’autres cartes avec seulement quelques petites modifications
    • Oui. Ça ressemble plutôt à une application plein écran contrôlable à distance
    • Je me demande vraiment ce qu’est un OS. Ce n’est pas du sarcasme. “OS” est aujourd’hui un terme défini assez largement. Android et Ubuntu utilisent presque le même noyau, mais ce sont clairement des systèmes d’exploitation très différents
      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. »

    • L’auteur a intégré GPT-4 à l’app builder de FrameOS pour créer des vues personnalisées, afin de pouvoir demander à GPT d’améliorer le code sous-jacent. https://frameos.net/blog/gpt4-support
      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
    • Pour ce qui est de ChatGPT, ça ressemble à une blague maligne pour souligner que c’est un produit qui n’a pas besoin d’intégrations supplémentaires
      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

    • Il suffit de désactiver toutes les applis préinstallées inutiles avec Fire Toolbox. Avec une licence Fully Kiosk, on peut les reconvertir pour plusieurs usages pratiques
      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
    • Je me demande quel est le problème avec ça. On ne peut pas simplement installer et afficher n’importe quelle appli Android ?
    • Le bootloader est verrouillé. Si je me souviens bien, le modèle de 2015 a été le dernier qu’on pouvait déverrouiller grâce à un bug impliquant de court-circuiter certaines broches
      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

    • J’aimerais que FrameOS prenne en charge l’ESP32. Il y a encore deux jours, FrameOS était une appli Python lente et interprétée. Aujourd’hui, c’est un binaire lié statiquement de 3 Mo
      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

    • Je me demande comment un appareil dédié de type cadre photo pourrait économiser de l’énergie par rapport à un écran de TV classique. Au final, on ne retombe pas sur les mêmes composants de base ?