3 pontos por GN⁺ 2024-01-04 | 1 comentários | Compartilhar no WhatsApp
  • Reúne renderização, implantação e controle de display necessários para criar smart frames por conta própria, com foco em execução no próprio dispositivo, permitindo operar de forma independente frames baseados em Raspberry Pi ou ESP32
  • O backend pode ser instalado localmente com Docker ou como addon do Home Assistant; após a implantação via SSH ou cartão SD gravado, o frame continua funcionando mesmo sem backend
  • As cenas são criadas como um grafo de nós que conecta eventos, apps de dados, apps de renderização e estado, e o resultado é compilado em um único binário executado no frame
  • O Raspberry Pi oferece suporte, a partir do Pi Zero 2 W, a implantação por Wi‑Fi, fontes TrueType, SVG, dithering para e-ink de 6 cores, TLS, parsing de iCal, screenshots com Chromium headless e servidor web próprio
  • O ESP32-S3 oferece suporte a flash pelo navegador, renderização no dispositivo, atualizações OTA e deep sleep entre atualizações para painéis e-paper SPI da Waveshare, mas cada imagem de firmware inclui apenas um driver de painel selecionado

O que o FrameOS faz

  • O FrameOS é um sistema operacional para criar smart frames autônomos, como calendários, dashboards e molduras de arte, combinando um Raspberry Pi ou ESP32 com um display
  • Ele é voltado a displays e-ink, HDMI e LCD, e a renderização é processada no próprio dispositivo
  • Funciona sem nuvem nem assinatura e é oferecido como software livre gratuito sob licença AGPL-3.0 desde 2023
  • O backend pode ser instalado com Docker, e o repositório do projeto está no GitHub

Fluxo de instalação e implantação

  • O FrameOS organiza a configuração do frame em um fluxo de instalação do backend, conexão do hardware e implantação da cena
    • Executa o backend em um notebook, servidor ou NAS com um único comando, ou instala como addon do Home Assistant
    • Conecta o Raspberry Pi ou ESP32 ao display
    • Escolhe uma cena pronta ou cria a sua própria e faz a implantação
  • O backend não é um serviço por assinatura, e sim um app web local
  • A implantação é feita por SSH ou por cartão SD gravado e, depois disso, o frame pode funcionar de forma independente sem backend
  • É possível conectar mais de 120 painéis compatíveis, e no Raspberry Pi também é possível usar cabo HDMI
  • O frame é controlado por seu próprio QR code e API HTTP; no ESP32, a API HTTP ainda é experimental

Edição de cenas e modo de execução

  • As cenas são montadas em um editor visual apoiado por código real
  • A composição da cena é dividida na forma de um grafo de nós
    • Vermelho: eventos
    • Verde: apps de dados
    • Azul: apps de renderização
    • Amarelo: estado
  • A cena montada é compilada em um único binário e executada no frame
  • Galeria curada, calendário, agenda, quadro de mensagens, clima, webcam e cenas de arte com IA podem ser instalados com um clique, e é possível editar tudo até o nível do código-fonte

Opções com Raspberry Pi e ESP32

  • O FrameOS funciona melhor em um ambiente Linux real e é voltado a Raspberry Pi a partir do Pi Zero 2 W de US$ 15
  • No ambiente Raspberry Pi, é possível implantar por Wi‑Fi sem regravar o firmware
  • Em frames baseados em Linux, é possível usar os seguintes recursos
    • Fontes TrueType e SVG em todas as resoluções
    • Dithering para e-ink de 6 cores
    • TLS
    • Parsing de iCal
    • Screenshots com Chromium headless
    • Servidor web do próprio frame
  • Para quem quiser um frame sem fios, é possível rodar em ESP32-S3 com painéis e-paper SPI da Waveshare
  • A configuração com ESP32-S3 oferece suporte a flash pelo navegador, renderização de cenas no dispositivo, atualizações OTA e funcionamento com bateria via deep sleep entre atualizações
  • Cada imagem de firmware do ESP32 inclui um único driver correspondente ao painel selecionado

Criação de cases e exemplos prontos

  • O FrameOS Case Maker gera gabinetes paramétricos para impressão 3D ajustados aos painéis compatíveis e ao layout do Raspberry Pi
  • O usuário pode escolher um template, ajustar profundidade e moldura e depois adicionar suporte de parede, kickstand, recorte para USB-C e colunas de parafuso para baixar o STL
  • O Case Maker usa o mesmo banco de dados de hardware da documentação para fornecer dimensões padrão das configurações da Waveshare e da Pimoroni
  • O Case Maker pode ser usado em Open Case Maker
  • Os exemplos prontos mostram em conjunto painéis Spectra 6 da Waveshare e da Pimoroni, case slim impresso em 3D, alimentação por USB-C e configuração de software do FrameOS

1 comentários

 
GN⁺ 2024-01-04
Opiniões do Hacker News
  • É um projetinho interessante. Dois anos atrás fiz, para dar de presente, um porta-retrato Arduino com eInk de 7 cores, e a parte mais difícil foi ter que recortar, aplicar dithering e ajustar a paleta de cores das imagens manualmente para que elas ficassem minimamente boas na tela
    Se o FrameOS tivesse cuidado disso, acho que eu teria economizado algumas horas de edição e testes manuais
    No fim, este ano foi tão sofrido adicionar fotos remotamente que comprei um porta-retrato Aura para a mesma pessoa

    • O ImageMagick consegue processar imagens em lote com uma paleta limitada. Não havia motivo para fazer tudo manualmente
    • Quero que ninguém precise recortar, aplicar dithering e indexar cores de imagens manualmente. Essa é uma parte que o software do FrameOS deveria resolver
      Se você usa algo como um frame Inky Impression de 7 cores, isso já funciona, porque na maioria dos casos o software e os drivers correspondentes já fazem esse processamento
  • Isso pode ajudar bastante em quiosques médicos, arte digital e sinalização
    Há uma demanda bem grande por arte digital em hospitais. Fui arquiteto de tecnologia no SFGH e na UCSF, gerente de implementação de tecnologia no El Camino Hospital e diretor de operações de TVs na Vizio
    Já avaliei, comprei e instalei sistemas desse tipo e sistemas de orientação em hospitais; chegamos a gastar centenas de milhares de dólares em arte digital para reproduzir em loop em halls de elevadores ou telas de quartos, mas o software era péssimo
    No lobby do El Camino Hospital, o sistema de sinalização digital era tão ruim que tivemos que trocar parte dos equipamentos por Mac Minis para reproduzir MP4 em loop no VLC
    Por isso acho que seria ótimo usar um sistema assim com um Pi Zero
    Além disso, parece que também daria para implementar orientação de forma elegante com isso. Espero que, quando dizem “interativo”, signifique que dá para rodar um web app/app no Pi e, quando estiver ocioso, voltar para a reprodução em loop de arte digital
    O mercado de arte digital, sinalização e orientação precisa de um projeto novo e audacioso que sacuda esse setor. Se eu tivesse um Pi agora, acho que testaria imediatamente
    Fico curioso para saber se daria para instalar também naqueles tablets Android TCL meia-boca que ganhei da T-Mobile. Também seria bom dar uma olhada no controle de lâmpadas Feit Electric
    A opção mais lucrativa para esse tipo de dispositivo/OS provavelmente seria a sinalização de informações de transporte em transportes regionais como o BART. Basta fazer com que até a pessoa menos técnica da organização consiga instalar, configurar e exibir as informações sem errar
    O transporte regional de Sacramento tem muitas telas, mas quase nenhuma informação útil
    Se você pega trens na APAC, há telas LCD nas paredes superiores mostrando mapas de status. Se você pega trens nos EUA, há urina e fezes nas paredes superiores, mas nenhum mapa de status em lugar nenhum

    • Se instalarem telas nos trens dos EUA, acho que essas telas também acabarão cobertas de urina e fezes
    • Instalar um Mac Mini para reproduzir arquivos MP3 é um desperdício absurdo de dinheiro. Bastaria usar um daqueles players portáteis de MP3 bem baratos de 10 dólares
      Parece loucura ver esse tipo de dinheiro sendo desperdiçado nos EUA enquanto há pessoas nas ruas pedindo comida
    • Fico curioso sobre o que acham do BrightSign. O software básico é bem ruim, mas a programabilidade foi muito boa para nós. Ainda não cheguei a me aprofundar muito
  • Isso me lembra o Chumby. Era um produto com um potencial enorme, mas foi abandonado rápido demais
    Há muitos lugares em casa onde uma tela inteligente, controlável e de baixo código seria útil, mas quase não tenho tempo para pesquisar por conta própria. Fiquei muito contente de ver este projeto hoje

    • Estou criando um calendário eInk pronto para uso. Você também pode desenvolver seu próprio conteúdo e fornecê-lo para a tela como .png ou .jpeg a partir de uma URL da web
      https://shop.invisible-computers.com
    • Eu também não tenho tempo para pesquisar por conta própria, então estou pensando simplesmente em comprar um iPad usado e prender na parede
      Dá para ter uma tela brilhante, e tudo que eu quiser ver só precisa aparecer no navegador
  • Muito legal. No ano passado criei um conjunto de scripts para trocar imagens e-ink via Gmail e dei a ele o nome DispatchPi; se um programa como este existisse, acho que o desenvolvimento teria sido muito mais rápido
    https://github.com/malcolmosh/dispatchPi/blob/main/README.md
    Era bem trabalhoso ter que entrar no Pi via SSH pelo terminal o tempo todo e atualizar os scripts com o cliente FTP FileZilla e o VSCode
    Acabei de concluir também um projeto de dashboard e pretendo publicá-lo em breve; também estou pensando em trocar o driver do frame por um ESP32 para rodar com bateria, já que o ESP32 consome muito menos energia até do que o Pi Zero
    Se houver tempo, deixo meu voto pela compatibilidade com ESP32

    • Fico curioso para saber até que ponto o desenvolvimento para ESP32 avançou. A renderização de imagens foi menos simples do que eu esperava. No meu caso, a tela era LCD, não eInk
      Em vez de tentar exibir imagens arbitrárias com bibliotecas do ESP, foi mais fácil e confiável deixar as imagens em um tamanho e formato específicos antes de enviá-las para o ESP32/tela
    • Fico curioso para saber que hardware você usa. Recentemente concluí um projeto parecido e quero mexer mais com e-ink, mas a placa driver de hardware que se conecta ao Pi é tão cara quanto o próprio display e-ink
  • A primeira imagem da página é o editor, e nossa, é realmente impressionante. Há este trecho na descrição:
    “Editor de diagramas: uma interface de arrastar e soltar para compor apps em Nim em cenas. É possível fazer fork e modificar apps existentes, como ‘OpenAI image’ e ‘Text overlay’, para ajustá-los às suas necessidades. Todos os campos podem ser sobrescritos com trechos de código inline.”
    Parece muito refinado. Imagino que tenha dado um trabalho enorme. Fico curioso sobre com o que foi feito e se o editor também foi escrito em Nim.
    Também fico curioso sobre o que é executado depois de criar uma cena. Não sei se ele roda um runtime parecido com o editor, mas com modo de apresentação, ou se gera um novo programa Nim que executa outros programas Nim.
    Também fico curioso se os apps são chamados uma vez ou se ficam rodando continuamente e se comunicando de forma persistente. O que dispara o início de um frame e como a composição é feita também me deixam curioso.
    Embora esteja sendo usado em um smart frame, dá a sensação de que, na verdade, foi criado um sistema genérico de programação baseada em fluxo muito bacana.

    • Obrigado pelo feedback.
      O editor/controlador em si é um app React+Kea, a parte de diagramas usa React Flow e o backend é em Flask.
      No momento, para testar se um app criado funciona, é preciso implantá-lo no frame. Usando um RPi 5 rápido para testes, o ciclo de feedback costuma ser de cerca de 30 segundos; no Zero W2, cerca de 1 minuto; e no Zero W, cerca de 2 minutos. Não é o ideal, então quero melhorar isso.
      Idealmente, eu gostaria de usar o backend JS do Nim para criar um “frame” que rode diretamente no navegador para testes.
      Respondendo às outras perguntas: o sistema FrameOS é executado na inicialização, e todos os apps são compilados em um único binário, que é executado conforme a cena determina. Quando um evento de renderização é entregue, um novo frame é renderizado; esse evento pode ser disparado automaticamente de forma periódica ou sob demanda.
      O frame envia logs para o controlador, mas fora isso pode funcionar de forma totalmente independente.
    • Só pelo screenshot, parece dear imgui. Dá para ver widgets parecidos aqui: https://github.com/TimoSalomaki/awesome-dear-imgui
      Edit: eu estava errado; na verdade é React Flow.
      https://github.com/FrameOS/frameos/blob/037af53e94a3b47ce5df...
      https://reactflow.dev/
  • Parece realmente interessante. Entendi corretamente que isso, na prática, não é um OS, mas sim um software que roda sobre o OS do Pi?

    • Tecnicamente, sim. É o melhor tipo de “sim”, mas há uma nuance nessa pergunta.
      FrameOS é um binário compilado que roda sobre Linux. Atualmente, antes de instalar o próprio FrameOS, é preciso instalar no cartão SD o “Raspberry Pi OS Lite”, sem ambiente de desktop. Então dá para vê-lo como “apenas uma aplicação”.
      Mas isso acontece porque o projeto está no começo, e esse foi o jeito mais rápido de começar. O próximo passo é ver o quanto dá para remover. Como o FrameOS é um único binário compilado estaticamente, talvez ele não precise de muita coisa além do kernel Linux. Nesse caso, ele se torna um OS de verdade? O Android também usa o kernel Linux, mas é considerado um OS próprio.
      Quando ativado, o FrameOS assume o sistema inteiro, tem suas próprias pastas apps/ e drivers/ e, em muitos aspectos, já se comporta como um sistema operacional. Também estou pensando em rodá-lo em um ESP32, caso em que talvez seja preciso adicionar drivers/wifi/. Se ele funcionar sem nenhum OS por baixo, aí ele mereceria ser chamado de OS? Isso fica para vocês julgarem.
      Se você me pergunta se isso é um sistema operacional, para mim é, mas tudo bem ver de outro jeito.
      No meu trabalho de verdade, na PostHog, às vezes eles se chamam de “Product OS”, e isso me incomoda mais. Um conjunto de webapps claramente não é um sistema operacional no sentido tradicional. Também já vi -OS no fim de coisas que não são sistemas operacionais puros. Incomoda um pouco, mas principalmente porque vivi numa época em que “qual OS você usa?” era uma pergunta que definia identidade.
      A linguagem está mudando, e “sistema operacional” agora parece significar mais coisas para pessoas diferentes do que eu e você pensamos.
    • Parece isso mesmo. Nesse caso, é bem provável que funcione em outras placas com apenas pequenas modificações.
    • Sim. Parece mais uma aplicação em tela cheia que pode ser controlada remotamente.
    • Estou realmente curioso sobre o que é um OS. Não estou sendo sarcástico. “OS” hoje é um termo definido de forma bem frouxa. Android e Ubuntu usam praticamente o mesmo kernel, mas são claramente sistemas operacionais muito diferentes.
      Como o FrameOS usa Nim, ele pode ser portado para rodar em bare metal, sem kernel. Graças ao dispatch assíncrono, o Nim também oferece multitarefa cooperativa leve.
      Atualmente, o FrameOS pode ser visto como um OS que roda apenas sobre o kernel Linux, ou como espaço de usuário, se preferir. Mas não há motivo para que ele não possa ser portado para rodar diretamente em um microcontrolador.
  • Parece legal. Eu queria configurar um display e-ink com o Home Assistant, então vou dar uma olhada nisso
    No post “Why FrameOS”, há uma foto que parece ser de um display e-ink mostrando um dashboard do Home Assistant e, logo abaixo, está escrito “mas o lado de software era uma bagunça”. Fico curioso para saber exatamente quais problemas havia antes de criarem o FrameOS. Pelo menos na foto, parece funcionar bem
    Também fiquei curioso sobre o que esta frase realmente significa: “GPT4 Support: peça ao seu LLM favorito para escrever e depurar apps do FrameOS.”

    • O autor integrou o GPT-4 ao app builder para criar visualizações personalizadas do FrameOS, permitindo pedir ao GPT melhorias no código-base. https://frameos.net/blog/gpt4-support
      Assim que vi isso, senti que confirma a tendência de que novos apps passarão a incluir integração com LLM desde o início. Não há motivo para não fazer, certo? Quando bem usado, um LLM pode melhorar bastante a experiência do usuário em praticamente qualquer app
    • Sobre o ChatGPT, parece uma piada esperta para enfatizar que é um produto que não precisa de integrações adicionais
      É uma piada do tipo “não precisamos criar uma nuvem de IA social autônoma baseada em blockchain, dessas que vendem bem hoje no mercado de private equity”
  • Existe alguma boa alternativa para evitar que tablets Amazon Fire antigos virem lixo eletrônico? Eles são baseados em Android

    • Basta desativar todos os apps padrão desnecessários com o Fire Toolbox. Comprando uma licença do Fully Kiosk, dá para transformá-los em várias coisas úteis
      Pessoalmente, uso tablets Amazon Fire em casa como drivers de áudio para o Snapcast. Cada tablet tem USB, Wi-Fi, saída auxiliar de 3,5 mm e bateria interna, então é ótimo para esse uso; em promoção, por US$ 45 cada, fica especialmente interessante
    • Fico curioso para saber qual é o problema nisso. Não dá simplesmente para instalar qualquer app Android e exibi-lo?
    • O bootloader é bloqueado. Se não me falha a memória, o modelo de 2015 foi o último em que era possível desbloquear usando um bug que envolvia curto-circuitar alguns pinos
      Sem um bootloader desbloqueado, talvez seja possível fazer root no Android, mas não trocar o Android nem a própria ROM
      De todo modo, isso nem faria tanta diferença. Por ser MediaTek, a estrutura de partições e o modelo de drivers daquela época eram, em geral, uma bagunça. Seria difícil fazer o FrameOS rodar nesse hardware de uma forma razoavelmente elegante
  • Realmente muito legal. Há muitos projetos tentando replicar algo parecido, mas quase nenhum tem esse nível de acabamento, especialmente no lado de criação
    Pessoalmente, eu gostaria que ele tivesse suporte a dispositivos eINK de baixo consumo com ESP32 integrado, como a série InkPlate. Ainda assim, ver isso me faz pensar em talvez migrar para um Pi

    • Eu gostaria que o FrameOS desse suporte ao ESP32. Até dois dias atrás, o FrameOS era um app em Python lento e executado por interpretador. Hoje, é um binário de 3 MB com linkagem estática
      O espaço seria apertado e provavelmente algumas funcionalidades, como threading, teriam de ser removidas, mas em teoria deve ser possível executá-lo
      Dito isso, ainda há muito trabalho para tornar a versão para Raspberry excelente, então não pretendo assumir essa tarefa por enquanto
  • É bom ver mais software surgindo nessa área
    Indiretamente relacionado: estou procurando uma tela de 32 polegadas ou mais que possa ser usada como porta-retratos. Tirando a Samsung The Frame, não encontrei outros produtos, o que é surpreendente para um caso de uso tão simples
    Até agora, encontrei isto: TVs e monitores não têm bom consumo de energia para ficarem ligados 24 horas por dia. E-ink colorido normalmente vai só até cerca de 13 polegadas. A Samsung The Frame tem bons recursos e aparência, mas é cara e ainda tem a desvantagem de ser Samsung
    Alguém tem algum produto para recomendar?

    • Fico curioso para saber como um dispositivo dedicado de moldura poderia economizar energia em relação a uma tela de TV comum. No fim, não se resume aos mesmos componentes básicos?