2 Punkte von GN⁺ 2024-06-09 | 1 Kommentare | Auf WhatsApp teilen
  • Sol Mate e-Paper Display ist ein Projekt, das eine Illustration erzeugt, die das aktuelle Wetter und die Lichtverhältnisse an einem angegebenen Ort widerspiegelt, und sie auf einem Waveshare-e-Paper-Display anzeigt, das mit einem Raspberry Pi verbunden ist
  • Das Skript nimmt einen Ort entgegen, ruft das Wetter ab und rendert mit einem von gpt-5-mini erstellten Prompt und gpt-image-1-mini hochwertige Bilder; dafür ist ein OpenAI-API-Token erforderlich
  • Neben realen Orten können auch der Standort eines Freundes oder fiktive Orte eingegeben werden; bei fiktiven Orten übergibt GPT dem Wetterdienst die Breiten- und Längengrade des ähnlichsten Ortes auf der Erde
  • Die Hardware ist auf Raspberry Pi 5 und ein Waveshare e-Paper 7.3" display ausgelegt; für Displays anderer Größen sind Codeänderungen nötig
  • control.py unterstützt Anzeige auf dem Display, lokale Vorschau und Löschen des Bildschirms; dabei sollte man sowohl Waveshares Empfehlung, dasselbe Bild nicht zu lange anzuzeigen, als auch potenziell steigende API-Kosten berücksichtigen

Was Sol Mate e-Paper Display macht

  • Sol Mate e-Paper Display ist eine Sammlung von Code, die mit Raspberry Pi und Waveshare-e-Paper-Display Wetterbericht-Bilder erzeugt und anzeigt
  • Ursprünglich wurde es mit ☀️ Sol Mate GPT erstellt; später entstand dieses Projekt aus der Neugier, wie es auf einem e-Paper-Display aussehen würde
  • Als Eingabe sind reale Orte, der Standort eines Freundes und sogar fiktive Orte möglich
    • Wenn es regnet, wird das aktuelle Wetter etwa dadurch in der Illustration widergespiegelt, dass Personen mit Regenschirmen im Bild erscheinen
    • Gibt man einen fiktiven Ort ein, übergibt GPT dem Wetterdienst die Breiten- und Längengrade des Ortes auf der Erde, den es als am ähnlichsten einschätzt

Wie die Bilder erzeugt werden

  • Die Illustration wird mit dem Modell gpt-image-1-mini gerendert
  • Der Bild-Prompt wird von gpt-5-mini erzeugt und verwendet hochwertige Bildeinstellungen
  • Wegen dieses Generierungsablaufs ist zur Ausführung ein OpenAI-API-Token erforderlich

Benötigte Hardware

Ausführung und Nutzung

  • Das Projekt ist dafür gedacht, auf einem Raspberry Pi zu laufen
  • Für die Verwaltung der Python-Umgebung wird uv verwendet
    • Da uv die virtuelle Umgebung verwaltet, ist keine manuelle Aktivierung erforderlich
uv sync
  • Auf Entwicklungsrechnern, die nicht macOS oder Linux sind, werden die Raspberry-Pi-Hardwarebibliotheken standardmäßig übersprungen
  • Die Umgebungsvariable OPENAI_API_KEY muss gesetzt werden
    • Umgebungsvariablen können aus einer .env-Datei im aktuellen Arbeitsverzeichnis gelesen werden
OPENAI_API_KEY=... uv run python control.py show Barcelona
  • Für eine schnelle lokale Prüfung kann der Befehl preview ausgeführt werden, der die Bildanzeige von iTerm2 verwendet
    • Standardmäßig wird die Datei als sol-mate-preview-<timestamp>.png im temporären Systemverzeichnis gespeichert
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"

Display-Verwaltung und automatische Updates

  • Waveshare empfiehlt_Manual#Precautions), dasselbe Bild nicht zu lange auf dem Display stehen zu lassen
  • Zum Löschen des Bildschirms wird der Befehl clear verwendet
uv run python control.py clear
  • Die Beispielkonfiguration aktualisiert das Bild zweimal täglich per cron und löscht den Bildschirm in den frühen Morgenstunden
    • Die Pfade müssen an die jeweilige Installationsumgebung angepasst werden
    • Wiederholte Ausführung kann nicht unerhebliche Kosten verursachen
0 8 * * * cd ~/src/sol-mate-eink && OPENAI_API_KEY=... uv run python control.py show Barcelona
0 18 * * * cd ~/src/sol-mate-eink && OPENAI_API_KEY=... uv run python control.py show Barcelona
0 2 * * * cd ~/src/sol-mate-eink && uv run python control.py clear

Backend und Referenzen

1 Kommentare

 
GN⁺ 2024-06-09
Hacker-News-Kommentare
  • Ich verwende Inkplate 6Color für ein ähnliches Projekt
    Der ESP32-Controller ist integriert, sodass kein Pi nötig ist, und es kann auch nur mit Akku betrieben werden
    Wenn man Deep-Sleep-/Wake-up-Zeitpläne gut abstimmt, hält es mit einer Ladung mehrere Wochen durch
    Am besten gefällt mir das rote On Air-Schild an meiner Bürotür: Wenn ich bei Meetings oder Aufnahmen auf dem Mac einen Kurzbefehl ausführe, wird der Status automatisch aktualisiert und die Geräte werden stummgeschaltet
    Es gibt auch Open-Source-Beispiele für Wetteranzeige, News und Google Calendar
    https://soldered.com/product/inkplate-6color-color-e-paper-b...
    Günstige E-Ink-Projekte machen wirklich Spaß und sind nützlich

    • Ich habe ein ähnliches Projekt gebaut
      Ein an einen Pi Zero angeschlossenes E-Ink-Display zeigt nur Yes/No an, ob es in den nächsten 3 Stunden regnen wird
      Im Nachhinein denke ich, dass man vielleicht nicht unbedingt ein 7-Farben-Display braucht
      Ich verwende https://shop.pimoroni.com/products/inky-impression-7-3?varia..., und das wirkt günstiger
    • Clevere und coole Anwendung
      Das ist so spaßig, dass man solche Displays überall im Haus aufhängen möchte
    • Ich war überrascht, dass es genau alle Anforderungen erfüllt, und dann noch einmal vom Preis
  • Ich habe vor einer Woche unabhängig davon mit demselben Display fast genau das Gleiche gebaut
    https://imgz.org/iBLADkCU.jpg
    Es ist ein Bilderrahmen, der die aktuelle Uhrzeit und das aktuelle Wetter für einen bestimmten Ort abruft und ein von einer AI generiertes Bild mit diesem Ort anzeigt
    Faszinierend, wie wir beide unabhängig voneinander bis hierher gekommen sind
    Vermutlich war das einfach der naheliegendste Anwendungsfall

    • So ein Fall, in dem die Idee in der Luft liegt
      Für neue Gründer ist das ein gutes Beispiel dafür, dass ihre Idee nicht einzigartig ist; tatsächlich sind Ideen fast nie einzigartig
      Entscheidend ist die Umsetzung
      Es fühlt sich an wie Uber und Lyft der E-Ink-Wettertafeln, und auf HN habe ich schon öfter ähnliche Dinge markiert gesehen
      Wenn ich Zeit habe, baue ich auch eins; all das inspiriert zu ESP32-Entwicklung und freier Open-Source-Hausautomation
  • Das Hardwareprojekt und die Idee sind cool, aber ich würde für ein dauerhaft eingeschaltetes Gerät auf keinen Fall die OpenAI API verwenden wollen
    Wenn ich so etwas mal zum Spaß baue, würde ich vielleicht eine Version mit OpenStreetMap und im LAN gehostetem Stable Diffusion machen; deshalb ist es einen Bookmark wert

    • Ich frage mich, warum die Kombination aus OpenAI API und einem dauerhaft eingeschalteten Gerät problematisch ist
  • Ich habe nach einem ähnlichen Projekt zwei von denselben Displays gekauft

    • "A WiFi color eInk picture frame" https://news.ycombinator.com/item?id=35689706
    • "Color E-Ink Display Photo Frame Pranks [Mom]" https://news.ycombinator.com/item?id=26977747
      Ursprünglich wollte ich wie in diesen beiden Beispielen ein Farbfoto-Display bauen, aber auch diese Anwendung sieht gut aus
    • Mir gefällt, dass der zweite Beitrag auch eine Mikroskop-Nahaufnahme zeigt, während sich der Bildschirm aktualisiert
      Viel Erfolg beim Hacken, und hoffentlich sehen wir dein gebautes Projekt bald hier
  • Auf dem Bild wird Barcelona mit 26°C und 2°C angezeigt
    Ich war ein paarmal in Barcelona, aber es ist schwer vorstellbar, dass an einem Tag beide Temperaturen erreicht werden
    Ich frage mich, ob die Wetterdaten vertrauenswürdig sind oder ob alles halluziniert ist und man nur die Animation genießen soll
    Oder ich kenne das Wetter in Barcelona doch nicht so gut, und 26 als Höchstwert und 2 als Tiefstwert könnten möglich sein

    • Das ist ein Fall, in dem Dall-E keinen sauberen Text schreiben konnte
      2°C ist nur eine Halluzination ausgehend von 26°C
      Da es ein Hobbyprojekt ist, habe ich es priorisiert, dass der Text jedes Mal einzigartig aussieht und meist künstlerischer wirkt, statt ihn auf traditionelle Weise zu rendern
      Für ein ernsthaftes Produkt sind Bildgenerierungsmodelle für diesen Einsatzzweck aber noch nicht gut genug
  • Ich frage mich, warum man „nicht zu lange dasselbe Bild auf dem Display lassen“ soll
    Ist das ein spezielles Problem von farbigem E-Ink?

    • Die Empfehlung von Waveshare lautet „mindestens einmal alle 24 Stunden aktualisieren“[1]
      In der Praxis ist das vermutlich kein großes Problem, aber wenn Pixel zu lange aktiv bleiben, könnte das Risiko bestehen, dass sie festhängen
      [1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
    • Ich frage mich, ob das wegen Burn-in ist oder weil die Farben verblassen
  • Ich frage mich, ob es im Vergleich zu normalem schwarzweißem E-Ink einen Unterschied in der Anzeigetechnik gibt, der den Hinweis nötig macht, nicht zu lange dasselbe Bild stehen zu lassen
    Wenn ich mich richtig erinnere, hatten Standard-Schwarzweiß-E-Ink-Displays kein Burn-in

  • Ich frage mich, warum bei solchen Projekten für die Ansteuerung des Displays immer gezielt ein kleiner, stromsparender Computer wie ein Raspberry Pi verwendet wird.
    Es gibt bereits viele normale Computer, auf denen Debian GNU/Linux läuft.
    Wenn man auf einem solchen Computer diesen Code verwenden wollte, um ein E-Paper-Display über ein normales USB-Kabel anzusteuern, müsste das doch möglich sein, oder?
    Es scheint keinen zwingenden Grund zu geben, unbedingt so etwas wie einen Raspberry Pi zu verwenden.

    • Kleine Computer wie ein Raspberry Pi erlauben einfachen Zugriff auf GPIO und auf Low-Level-Peripherie wie SPI, die dieser kleine Bildschirm nutzt.
      Wenn man auf einem großen Computer unter dem Betriebssystem solche Peripherie nutzen kann, lässt sich das genauso verwenden.
      Bevor sich solche kleinen Computer verbreitet haben, konnte man über den Parallelport und mit kleinen Programmen dieselben Low-Level-Signale verwenden, um direkt mit Peripheriegeräten zu kommunizieren.
    • Das ist überhaupt nicht zwingend nötig.
      Ein Raspberry Pi ist praktisch, weil es viele Bootstrap-Dokumentationen und viel Code dafür gibt, sodass jemand mit etwas Linux-Erfahrung ihn einschalten, Pakete installieren und etwas damit machen kann.
      Mit genügend Zeit und Wissen geht das auch mit einem sehr kleinen Mikrocontroller.
      Am Display selbst ist nichts Magisches, abgesehen davon, dass es manchmal ungewöhnliche Versorgungsspannungen braucht.
      Das häufigere Problem ist, dass solche Displays nicht direkt per USB kommunizieren.
      Um Pixel zu setzen, erwarten sie SPI oder eine parallele digitale Schnittstelle, daher braucht man ein zwischengeschaltetes Interface und Software zum Zeichnen auf dem Bildschirm.
      Deshalb schließen die Leute oft einfach einen Raspberry Pi an und sprechen ihn dann über ein gängigeres Protokoll an.
    • Weil es billig ist und lange mit Batterie läuft.
      Einen normalen Computer nur für dieses eine Display dauerhaft eingeschaltet zu lassen, wäre ineffizient.
  • Ein großartiges Projekt führt, wie so oft, dazu, dass jemand mit der Anpassung weitermachen kann.
    Nicht nur die Hardware-Empfehlungen, auch ein Blick in epaper.py[1] als Referenz lohnt sich.
    [1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py

  • Ich verstehe nicht ganz, warum man AI verwendet, um Wetterdaten zu holen.
    Es gibt Dutzende frei nutzbare Wetter-APIs, die man direkt aufrufen kann.

    • AI wird für einige Dinge verwendet, die mit kostenlosen APIs schwer umzusetzen sind.
      Die umgangssprachliche Bezeichnung eines Ortes präzise in exakte Breiten- und Längengrade umzuwandeln können manche APIs zwar bis zu einem gewissen Grad, aber ich kenne keine kostenlose API, die dabei so genau ist wie GPT.
      Außerdem erzeugt AI sogar dann gewissenhaft Wetter für diesen Ort, wenn man „Hogwarts“ oder „Tatooine“ eingibt[1].
      Am wichtigsten ist, dass sie einen Prompt für Dall-E schreibt, um ein Bild zu erzeugen, das die tatsächlichen Wetterbedingungen sowie Sonne und Mond widerspiegelt.
      [1]: https://x.com/blixt/status/1724099967361462714
    • Das ist eine sehr gute Zeile für den Lebenslauf.
    • Man kann auch einfach aus dem Fenster schauen.