3 puntos por GN⁺ 2024-01-04 | 1 comentarios | Compartir por WhatsApp
  • Reúne el renderizado, la implementación y el control de pantalla necesarios para crear un marco inteligente por cuenta propia, con un enfoque centrado en la ejecución dentro del dispositivo, para que los marcos basados en Raspberry Pi o ESP32 puedan operar de forma independiente
  • El backend puede instalarse localmente con Docker o como add-on de Home Assistant; después de desplegarlo por SSH o con una tarjeta SD flasheada, el marco sigue funcionando incluso sin backend
  • Las escenas se crean como un grafo de nodos que conecta eventos, apps de datos, apps de renderizado y estado, y el resultado se compila como un único binario que se ejecuta en el marco
  • Raspberry Pi es compatible desde la Pi Zero 2 W en adelante con despliegue por WiFi, fuentes TrueType, SVG, dithering de e-ink de 6 colores, TLS, análisis de iCal, capturas de pantalla con Chromium en modo headless y su propio servidor web
  • ESP32-S3, ajustado para paneles e-paper SPI de Waveshare, admite flasheo desde el navegador, renderizado en el dispositivo, actualizaciones OTA y deep sleep entre refrescos, pero cada imagen de firmware incluye solo un controlador del panel seleccionado

Qué hace FrameOS

  • FrameOS es un sistema operativo para crear marcos inteligentes autoejecutables, como calendarios, dashboards o marcos de arte, combinando una Raspberry Pi o un ESP32 con una pantalla
  • Está orientado a pantallas e-ink, HDMI y LCD, y el renderizado se procesa dentro del dispositivo
  • Funciona sin nube ni suscripciones, y se ofrece como software libre y gratuito bajo licencia AGPL-3.0 desde 2023
  • El backend puede instalarse con Docker y el repositorio del proyecto está en GitHub

Flujo de instalación y despliegue

  • FrameOS organiza el marco con un flujo de instalación del backend, conexión del hardware y despliegue de escenas
    • El backend puede ejecutarse en una laptop, servidor o NAS con un solo comando, o instalarse como add-on de Home Assistant
    • Se conecta una Raspberry Pi o un ESP32 a la pantalla
    • Se elige una escena prehecha o se diseña una propia y luego se despliega
  • El backend no funciona como un servicio por suscripción, sino como una app web local
  • El despliegue se realiza por SSH o mediante una tarjeta SD flasheada, y después el marco puede ejecutarse de manera independiente sin backend
  • Las pantallas pueden conectarse a más de 120 paneles compatibles, y en Raspberry Pi también se puede usar cable HDMI
  • El marco se controla mediante su propio código QR y API HTTP; la API HTTP de ESP32 todavía es experimental

Edición de escenas y forma de ejecución

  • Las escenas se construyen en un editor visual respaldado por código real
  • La composición de la escena se divide en forma de grafo de nodos
    • Rojo: eventos
    • Verde: apps de datos
    • Azul: apps de renderizado
    • Amarillo: estado
  • La escena configurada se compila como un único binario y se ejecuta en el marco
  • Se pueden instalar con un clic escenas curadas de galería, calendario, agenda, tablero de mensajes, clima, webcam y arte con IA, y editarlas hasta el nivel del código fuente

Opciones entre Raspberry Pi y ESP32

  • FrameOS funciona mejor en un entorno Linux real y está orientado a Raspberry Pi desde la Pi Zero 2 W de $15 en adelante
  • En el entorno Raspberry Pi se puede desplegar por WiFi sin volver a flashear el firmware
  • En marcos basados en Linux se pueden aprovechar las siguientes funciones
    • Fuentes TrueType y SVG en cualquier resolución
    • Dithering para e-ink de 6 colores
    • TLS
    • Análisis de iCal
    • Capturas de pantalla con Chromium en modo headless
    • Servidor web del propio marco
  • Si se quiere un marco sin cables, puede ejecutarse en ESP32-S3 para paneles e-paper SPI de Waveshare
  • La configuración con ESP32-S3 admite flasheo desde el navegador, renderizado de escenas en el dispositivo, actualizaciones OTA y funcionamiento con batería mediante deep sleep entre refrescos
  • Cada imagen de firmware para ESP32 incluye un único controlador del panel seleccionado

Fabricación del case y ejemplos terminados

  • FrameOS Case Maker genera carcasas paramétricas para impresión 3D adaptadas a paneles compatibles y a layouts de Raspberry Pi
  • El usuario puede elegir una plantilla, ajustar la profundidad y el bisel, y luego añadir montaje de pared, kickstand, corte para USB-C y columnas para tornillos antes de descargar el STL
  • Case Maker usa la misma base de datos de hardware que la documentación para ofrecer dimensiones predeterminadas de configuraciones de Waveshare y Pimoroni
  • Case Maker puede usarse en Open Case Maker
  • Los ejemplos terminados muestran en conjunto paneles Waveshare y Pimoroni Spectra 6, una carcasa delgada impresa en 3D, alimentación por USB-C y la configuración de software de FrameOS

1 comentarios

 
GN⁺ 2024-01-04
Opiniones en Hacker News
  • Es un proyectito interesante. Hace 2 años hice un marco Arduino con eInk de 7 colores como regalo, y lo más difícil fue tener que recortar, aplicar dithering y ajustar la paleta de colores de las imágenes a mano para que se vieran más o menos bien en la pantalla
    Si FrameOS se hubiera encargado de eso, creo que me habría ahorrado varias horas de edición manual y pruebas
    Al final, este año terminé comprándole un marco Aura a la misma persona porque agregar fotos de forma remota era demasiado doloroso

    • ImageMagick puede procesar en lote imágenes con una paleta limitada. No había razón para hacerlo todo manualmente
    • Quiero que nadie tenga que recortar, aplicar dithering ni indexar colores de imágenes a mano. Eso es algo que debería manejar el software de FrameOS
      Si usas algo como un marco Inky Impression de 7 colores, ya funciona, porque la mayoría de las veces ese software y sus drivers ya se encargan de ese procesamiento
  • Esto podría ser de gran ayuda para kioscos médicos, arte digital y señalización
    En hospitales hay bastante demanda de arte digital. Fui diseñador tecnológico en SFGH y UCSF, gerente de implementación tecnológica en El Camino Hospital, y director de operaciones de TV en Vizio
    Evalué, compré e instalé estos sistemas y sistemas de orientación en hospitales; también llegamos a gastar cientos de miles de dólares en arte digital para reproducir en loop en lobbies de elevadores o pantallas de habitaciones, pero el software era pésimo
    En el lobby de El Camino Hospital, el sistema de señalización digital era tan malo que tuvimos que cambiar parte del equipo por Mac Mini para reproducir MP4 en loop con VLC
    Por eso creo que un sistema así con una Pi Zero estaría muy bien
    Además, parece que la orientación también podría implementarse de forma elegante con esto. Ojalá que cuando dicen “interactivo” signifique que se puede mostrar una webapp/app en la Pi y, en estado inactivo, volver a reproducir arte digital en loop
    El mercado de arte digital, señalización y orientación necesita un proyecto nuevo y audaz que sacuda este mercado. Si tuviera una Pi ahora, lo probaría de inmediato
    Me pregunto si podría instalarlo también en una tablet Android TCL bastante chafa que recibí de T-Mobile. También valdría la pena revisar el control de focos Feit Electric
    La opción más rentable para este tipo de dispositivo/OS probablemente sería la señalización de información de transporte para transporte regional como BART. Solo hay que hacer que incluso la persona menos técnica de la organización pueda instalarlo, configurarlo y mostrar información sin equivocarse
    El transporte regional de Sacramento tiene muchas pantallas, pero casi nada de información útil
    Si viajas en trenes de APAC, hay pantallas LCD en la parte alta de la pared con mapas de estado. Si viajas en trenes de EE. UU., en la parte alta de la pared hay orina y heces, pero no hay mapas de estado por ninguna parte

    • Si instalan pantallas en trenes de EE. UU., probablemente esas pantallas también terminarían cubiertas de orina y heces
    • Instalar una Mac Mini para reproducir archivos MP3 es un desperdicio enorme de dinero. Bastaría con usar un reproductor MP3 portátil baratísimo de 10 dólares
      Es una locura que en EE. UU. se desperdicie dinero así mientras hay gente en la calle pidiendo comida
    • Me da curiosidad qué opinan de BrightSign. El software base es bastante malo, pero la capacidad de programarlo nos resultó muy buena. Todavía no hemos profundizado mucho
  • Me recuerda a Chumby. Tenía muchísimo potencial, pero fue un producto abandonado demasiado pronto
    Hay muchos lugares en casa donde podría usarse una pantalla inteligente, controlable y de bajo código, pero casi no tengo tiempo para investigarlo por mi cuenta. Me alegra mucho haber visto este proyecto hoy

    • Estoy creando un calendario eInk listo para usar. También puedes desarrollar tu propio contenido y servirlo a la pantalla desde una URL web como .png o .jpeg
      https://shop.invisible-computers.com
    • Yo tampoco tengo tiempo para investigarlo, así que estoy pensando simplemente en comprar un iPad usado y montarlo en la pared
      Puedes tener una pantalla brillante, y basta con que lo que quieras ver se muestre en el navegador web
  • Está realmente genial. El año pasado hice un conjunto de scripts para intercambiar imágenes e-ink mediante Gmail y lo llamé DispatchPi; si hubiera existido un programa así, creo que el desarrollo habría sido mucho más rápido
    https://github.com/malcolmosh/dispatchPi/blob/main/README.md
    Siempre tenía que conectarme por SSH a la Pi desde la terminal y actualizar scripts con el cliente FTP FileZilla y VSCode, así que era bastante engorroso
    Acabo de terminar también un proyecto de dashboard que planeo publicar pronto, y estoy pensando en cambiar el driver del marco a ESP32 para que funcione con batería. El ESP32 consume mucha menos energía incluso que una Pi Zero
    Si hay tiempo, sumo mi voto por la compatibilidad con ESP32

    • Me da curiosidad saber hasta dónde avanzaron con el desarrollo para ESP32. El renderizado de imágenes fue menos sencillo de lo que esperaba. En mi caso, la pantalla no era eInk sino LCD
      En lugar de intentar mostrar imágenes arbitrarias con una biblioteca de ESP, me resultó más fácil y confiable ajustar las imágenes a un tamaño y formato específicos antes de enviarlas al ESP32/la pantalla
    • Me da curiosidad qué hardware estás usando. Hace poco terminé un proyecto parecido y quiero hacer más con e-ink, pero la placa driver de hardware que se conecta a la Pi cuesta tanto como la propia pantalla e-ink
  • La primera imagen de la página es el editor, y vaya, es realmente impresionante. En la explicación aparece esta parte:
    “Editor de diagramas: una interfaz de arrastrar y soltar para componer apps de Nim en escenas. Puedes hacer fork y modificar apps existentes como ‘OpenAI image’ o ‘Text overlay’ para adaptarlas a tus necesidades. Todos los campos se pueden sobrescribir con fragmentos de código inline.”
    Se ve realmente pulido. Debe haber requerido una cantidad enorme de trabajo. Me da curiosidad con qué lo hicieron, y si el editor también está escrito en Nim.
    También me pregunto qué se ejecuta después de crear una escena. No sé si corre un runtime parecido al editor pero con modo de presentación, o si genera un nuevo programa en Nim que ejecuta otros programas en Nim.
    También me pregunto si las apps se invocan una vez cada una, o si siguen ejecutándose y se comunican de forma persistente. También me da curiosidad qué dispara el inicio de un frame y cómo se realiza la composición.
    Aunque se esté usando para un marco inteligente, en realidad se siente como si hubieran creado un sistema de programación basado en flujos de propósito general muy genial.

    • Gracias por el feedback.
      El editor/controlador en sí es una app React+Kea, la parte de diagramas usa React Flow y el backend es Flask.
      Por ahora, para probar si la app que creaste funciona, hay que desplegarla en el marco. Si usas una RPi 5 rápida para pruebas, el ciclo de feedback suele ser de unos 30 segundos; en una Zero W2, alrededor de 1 minuto; y en una Zero W, unos 2 minutos. No es ideal, y me gustaría mejorarlo.
      Idealmente, quisiera usar el backend JS de Nim para crear un “marco” que pueda ejecutarse directamente en el navegador para pruebas.
      Para responder las otras preguntas: el sistema FrameOS se ejecuta al arrancar, y todas las apps se compilan en un solo binario y se ejecutan según lo indique la escena. Cuando se entrega un evento de renderizado, se renderiza un nuevo frame; este evento puede generarse automáticamente de forma periódica o a demanda.
      El marco envía logs al controlador, pero aparte de eso puede funcionar de manera completamente independiente.
    • Solo por las capturas, parece dear imgui. Aquí se pueden ver widgets parecidos: https://github.com/TimoSalomaki/awesome-dear-imgui
      Edit: me equivoqué; en realidad es React Flow.
      https://github.com/FrameOS/frameos/blob/037af53e94a3b47ce5df...
      https://reactflow.dev/
  • Se ve realmente interesante. ¿Es correcto entender que esto no es realmente un OS, sino software que se ejecuta sobre el OS de la Pi?

    • Técnicamente, sí. Y es el mejor tipo de “sí”, aunque esta pregunta tiene algunos matices.
      FrameOS es un binario compilado que se ejecuta sobre Linux. Actualmente, antes de instalar FrameOS en sí, hay que instalar “Raspberry Pi OS Lite” sin entorno de escritorio en la tarjeta SD. Así que se puede ver como “solo una aplicación”.
      Pero eso se debe a que el proyecto está en una etapa temprana y era la forma más rápida de empezar. El siguiente paso es ver cuánto se puede quitar. FrameOS es un único binario compilado estáticamente, así que quizá no necesite mucho más que el kernel de Linux. ¿Entonces se convertiría en un OS de verdad? Android también usa el kernel de Linux, pero se considera su propio OS.
      Cuando está activo, FrameOS toma control de todo el sistema, tiene sus propias carpetas apps/ y drivers/, y en muchos sentidos ya se comporta como un sistema operativo. También estoy considerando hacerlo correr en un ESP32, y quizá tendría que agregar drivers/wifi/. Si funcionara sin ningún OS por debajo, ¿entonces valdría la pena llamarlo OS? Eso queda a criterio de ustedes.
      Si me preguntan si esto es un sistema operativo, para mí lo es, pero está bien verlo de otra manera.
      En mi trabajo real, PostHog, a veces se llaman a sí mismos “Product OS”, y eso me molesta más. Porque un conjunto de webapps claramente no es un sistema operativo en el sentido tradicional. También he visto que se agrega -OS al final de cosas que no son sistemas operativos puros. Me molesta un poco, pero sobre todo porque viví una época en la que “¿qué OS usas?” era una pregunta que definía identidades.
      El lenguaje está cambiando, y “sistema operativo” ahora parece referirse a más cosas, según la persona, de lo que tú y yo imaginamos.
    • Así parece. Entonces es muy probable que funcione en otras placas con solo pequeñas modificaciones.
    • Correcto. Parece más una aplicación de pantalla completa que se puede controlar de forma remota.
    • Tengo una curiosidad genuina sobre qué es un OS. No lo digo con sarcasmo. “OS” es un término definido de forma bastante laxa hoy en día. Android y Ubuntu usan casi el mismo kernel, pero claramente son sistemas operativos muy distintos.
      Como FrameOS usa Nim, se podría portar para que se ejecute en bare metal, sin kernel. Gracias al despacho asíncrono, Nim también ofrece multitarea cooperativa liviana.
      Actualmente, FrameOS puede verse como un OS que solo se ejecuta sobre el kernel de Linux, o como espacio de usuario si prefieres. Pero no hay ningún motivo por el que no pudiera portarse para ejecutarse directamente en un microcontrolador.
  • Se ve genial. Quería configurar una pantalla e-ink con Home Assistant, así que voy a revisar esto.
    En el artículo “Why FrameOS” hay una foto que parece mostrar una pantalla e-ink con un panel de Home Assistant y, debajo, dice “pero el lado del software era un desastre”. Me da curiosidad saber qué problemas había exactamente antes de crear FrameOS. Al menos en la foto parece funcionar bien.
    También me da curiosidad qué significa realmente esta frase: “GPT4 Support: pídele a tu LLM favorito que escriba y depure apps de FrameOS”.

    • El autor integró GPT-4 en el constructor de apps para crear vistas personalizadas de FrameOS, de modo que se le puedan pedir mejoras al código base a GPT. https://frameos.net/blog/gpt4-support
      Apenas vi esto, sentí que confirmaba la tendencia de que las apps nuevas de ahora en adelante incluirán integración con LLM desde el inicio. ¿Por qué no hacerlo? Si se usan bien, los LLM pueden mejorar enormemente la experiencia de usuario en casi cualquier app.
    • Sobre lo de ChatGPT, parece una broma ingeniosa para destacar que es un producto que no necesita integración adicional.
      Es como bromear con que no hace falta crear una nube social de IA autónoma basada en blockchain para vender bien en el mercado de private equity hoy en día.
  • ¿Habrá alguna buena alternativa para evitar que una tablet Amazon Fire vieja se convierta en residuo electrónico? Está basada en Android.

    • Puedes desactivar todas las apps preinstaladas innecesarias con Fire Toolbox. Si compras una licencia de Fully Kiosk, puedes convertirla para varios usos prácticos.
      Personalmente, uso tablets Amazon Fire en casa como controladores de audio para Snapcast. Cada tablet tiene USB, Wi‑Fi, auxiliar de 3,5 mm y batería integrada, así que son muy buenas para ese uso; además, en oferta cuestan 45 dólares cada una, lo cual las hace especialmente convenientes.
    • Me pregunto cuál es el problema ahí. ¿No puedes simplemente instalar cualquier app de Android y mostrarla?
    • El bootloader está bloqueado. Si mal no recuerdo, el modelo de 2015 fue el último que se podía desbloquear gracias a un bug que consistía en hacer corto en algunos pines.
      Sin un bootloader desbloqueado, quizá sea posible rootear Android, pero no puedes reemplazar Android ni la ROM en sí.
      De todos modos, tampoco tendría mucho sentido. Al ser MediaTek, la estructura de particiones y el modelo de drivers de esa época suelen ser bastante desastrosos. Sería difícil hacer que FrameOS funcione de forma razonablemente elegante en ese hardware.
  • Realmente genial. Hay muchos proyectos que intentan replicar algo similar, pero casi ninguno tiene este nivel de pulido, especialmente en la parte de creación.
    Personalmente, me gustaría que soportara dispositivos eINK de bajo consumo con ESP32 integrado, como la serie InkPlate. Aun así, ver esto me hace pensar en cambiarme a una Pi.

    • Me gustaría que FrameOS soportara ESP32. Hace apenas dos días, FrameOS era una app en Python lenta y ejecutada por intérprete. Hoy es un binario enlazado estáticamente de 3 MB.
      Los recursos serían ajustados y probablemente habría que recortar algunas funciones, como threading, pero en teoría debería ser posible ejecutarlo.
      Dicho eso, todavía hay mucho por hacer para que la versión para Raspberry sea excelente, así que no tengo planes de encargarme de eso por ahora.
  • Me alegra que esté saliendo más software en esta área.
    Hablando de algo relacionado de forma indirecta, estoy buscando una pantalla de 32 pulgadas o más que pueda usarse como marco de fotos. Salvo Samsung The Frame, no he encontrado otros productos, lo cual me sorprende para un caso de uso tan simple.
    Hasta ahora, esto es lo que encontré: los televisores y monitores no tienen un consumo eléctrico ideal para dejarlos encendidos 24/7. El e-ink a color suele llegar como máximo a unas 13 pulgadas. Samsung The Frame tiene buenas funciones y buen aspecto, pero es caro y además tiene la desventaja de ser Samsung.
    Me pregunto si alguien tiene algún producto para recomendar.

    • Me pregunto cómo podría un dispositivo de marco dedicado ahorrar energía frente a una pantalla de TV común. ¿No termina usando los mismos componentes básicos?