2 poin oleh GN⁺ 2024-06-09 | 1 komentar | Bagikan ke WhatsApp
  • Sol Mate e-Paper Display adalah proyek yang membuat ilustrasi yang mencerminkan cuaca dan kondisi pencahayaan saat ini di lokasi yang ditentukan, lalu menampilkannya di layar Waveshare e-Paper yang terhubung ke Raspberry Pi
  • Skrip menerima input lokasi, mengambil data cuaca, lalu merender gambar berkualitas tinggi menggunakan prompt yang dibuat oleh gpt-5-mini dan gpt-image-1-mini, sehingga memerlukan token OpenAI API
  • Selain lokasi nyata, Anda juga bisa memasukkan lokasi teman atau tempat fiktif; untuk tempat fiktif, GPT akan meneruskan lintang dan bujur lokasi di Bumi yang paling mirip ke layanan cuaca
  • Perangkat keras mengacu pada Raspberry Pi 5 dan Waveshare e-Paper 7.3" display; jika menggunakan display berukuran lain, kode perlu dimodifikasi
  • control.py mendukung penayangan di layar, pratinjau lokal, dan penghapusan tampilan; perlu mempertimbangkan rekomendasi Waveshare untuk tidak menampilkan gambar yang sama terlalu lama, serta kemungkinan kenaikan biaya API

Apa yang dilakukan Sol Mate e-Paper Display

  • Sol Mate e-Paper Display adalah kumpulan kode yang membuat dan menampilkan gambar laporan cuaca menggunakan Raspberry Pi dan display Waveshare e-Paper
  • Awalnya dibuat sebagai ☀️ Sol Mate GPT, lalu proyek ini dibuat karena penasaran bagaimana tampilannya di display e-Paper
  • Lokasi input bisa berupa tempat nyata, lokasi teman, hingga tempat fiktif
    • Jika hujan, cuaca saat ini tercermin dalam ilustrasi, misalnya dengan menambahkan orang-orang yang membawa payung
    • Jika memasukkan tempat fiktif, GPT akan meneruskan lintang dan bujur tempat di Bumi yang dinilainya paling mirip ke layanan cuaca

Cara pembuatan gambar

  • Ilustrasi dirender dengan model gpt-image-1-mini
  • Prompt gambar dibuat oleh gpt-5-mini, dengan menggunakan pengaturan gambar berkualitas tinggi
  • Karena alur pembuatan ini, proses eksekusi memerlukan token OpenAI API

Perangkat keras yang dibutuhkan

Menjalankan dan cara penggunaan

  • Proyek ini diasumsikan berjalan di Raspberry Pi
  • Pengelolaan environment Python menggunakan uv
    • Karena uv mengelola virtual environment, aktivasi manual tidak diperlukan
uv sync
  • Pada mesin pengembangan selain macOS atau Linux, library perangkat keras Raspberry Pi secara default akan dilewati
  • Variabel environment OPENAI_API_KEY harus ditentukan
    • Variabel environment dapat dibaca dari file .env di direktori kerja saat ini
OPENAI_API_KEY=... uv run python control.py show Barcelona
  • Untuk mengecek dengan cepat secara lokal, Anda bisa menjalankan perintah preview yang menggunakan tampilan gambar iTerm2
    • Secara default, gambar disimpan di direktori sementara sistem sebagai sol-mate-preview-<timestamp>.png
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"

Pengelolaan layar dan pembaruan otomatis

  • Waveshare merekomendasikan_Manual#Precautions) agar gambar yang sama tidak dibiarkan terlalu lama di display
  • Untuk menghapus tampilan layar, gunakan perintah clear
uv run python control.py clear
  • Contoh konfigurasi menggunakan cron untuk memperbarui gambar dua kali sehari dan menghapus layar saat dini hari
    • Path harus disesuaikan dengan lingkungan instalasi masing-masing
    • Eksekusi berulang bisa menimbulkan biaya yang tidak kecil
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 dan referensi

1 komentar

 
GN⁺ 2024-06-09
Opini Hacker News
  • Saya memakai Inkplate 6Color untuk proyek serupa
    Kontroler ESP32 sudah tertanam, jadi tidak perlu Pi, dan bisa berjalan hanya dengan baterai
    Kalau jadwal deep sleep/bangunnya diatur dengan baik, sekali isi daya bisa bertahan hingga beberapa minggu
    Yang paling saya suka adalah tanda On Air merah yang saya gantung di pintu kantor; saat rapat atau rekaman, jika saya menjalankan Shortcut dari Mac, statusnya otomatis diperbarui dan perangkat-perangkat dibisukan
    Ada juga contoh open source untuk tampilan cuaca, berita, dan Google Calendar
    https://soldered.com/product/inkplate-6color-color-e-paper-b...
    Proyek e-ink murah benar-benar menyenangkan dan berguna

    • Saya membuat proyek serupa
      Layar e-ink yang terhubung ke Pi Zero hanya menampilkan Yes/No apakah akan hujan dalam 3 jam ke depan
      Dipikir-pikir, mungkin tidak perlu sampai layar 7 warna
      Layar yang saya pakai adalah https://shop.pimoroni.com/products/inky-impression-7-3?varia... dan kelihatannya lebih murah
    • Pemanfaatannya cerdas dan keren
      Begitu menyenangkan sampai membuat saya ingin menempelkan layar seperti ini di berbagai sudut rumah
    • Saya terkejut karena perangkat ini memenuhi semua kebutuhan, lalu terkejut lagi dengan harganya
  • Secara independen, seminggu lalu saya membuat sesuatu yang hampir sama dengan layar yang sama
    https://imgz.org/iBLADkCU.jpg
    Ini adalah bingkai foto yang mengambil cuaca dan waktu saat ini di lokasi tertentu, lalu AI membuat dan menampilkan foto yang memasukkan lokasi itu
    Aneh juga bagaimana kami berdua secara independen sampai ke titik yang sama
    Mungkin ini memang penggunaan yang paling jelas

    • Ini kasus ketika idenya memang ada di mana-mana
      Bagi pendiri startup baru, ini contoh bagus bahwa ide mereka tidak unik, dan pada praktiknya ide yang benar-benar unik hampir tidak ada
      Yang penting adalah eksekusi
      Rasanya seperti Uber dan Lyft di dunia papan cuaca e-ink; saya pernah menandai beberapa hal serupa di HN
      Kalau ada waktu saya juga akan membuat satu, dan semuanya memberi inspirasi untuk pengembangan ESP32 serta otomasi rumah yang bebas dan open source
  • Proyek hardware dan idenya keren, tetapi saya sama sekali tidak mau menyentuh penggunaan OpenAI API pada perangkat yang selalu menyala
    Kalau suatu saat membuatnya untuk iseng, mungkin saya akan membuat versi yang memakai OpenStreetMap dan Stable Diffusion yang di-host di LAN, jadi ini layak di-bookmark

    • Saya penasaran, apa masalahnya kombinasi OpenAI API dan perangkat yang selalu menyala?
  • Setelah melihat proyek serupa, saya membeli dua layar yang sama

    • "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
      Awalnya saya berencana membuatnya sebagai layar foto berwarna seperti dua contoh itu, tetapi aplikasi ini juga terlihat bagus
    • Saya juga suka karena tulisan kedua punya close-up mikroskop saat layarnya berubah
      Semoga hacking-nya lancar, dan semoga proyek yang Anda buat bisa segera kami lihat di sini
  • Pada gambar, Barcelona ditampilkan dengan 26°C dan 2°C
    Saya pernah beberapa kali ke Barcelona, tetapi sulit membayangkan kedua suhu itu tercapai dalam satu hari
    Saya penasaran apakah data cuacanya bisa dipercaya, atau semuanya hanya halusinasi dan kita cukup menikmati animasinya
    Atau mungkin saya tidak tahu cuaca Barcelona sebaik yang saya kira, dan suhu maksimum 26 derajat serta minimum 2 derajat memang mungkin

    • Ini adalah kasus ketika Dall-E tidak bisa menulis teks dengan rapi
      2°C hanyalah halusinasi dari 26°C
      Karena ini proyek hobi, saya lebih memprioritaskan teks yang tampak unik setiap kali dan biasanya lebih artistik, daripada merender teks dengan cara tradisional
      Namun jika dijadikan produk serius, model pembuatan gambar belum cukup baik untuk penggunaan ini
  • Saya penasaran kenapa “jangan biarkan gambar yang sama terlalu lama di layar”
    Apakah ini masalah khas e-ink berwarna?

    • Rekomendasi Waveshare adalah “refresh setidaknya sekali setiap 24 jam”[1]
      Dalam praktiknya saya rasa ini bukan masalah besar, tetapi mungkin ada risiko piksel tersangkut jika terlalu lama berada dalam keadaan aktif
      [1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
    • Saya penasaran apakah karena burn-in, atau karena warnanya memudar
  • Berbeda dari e-ink hitam-putih biasa, saya penasaran apakah ada perbedaan pada metode tampilan yang membuatnya perlu diberi peringatan jangan biarkan gambar yang sama terlalu lama
    Kalau ingatan saya benar, layar e-ink hitam-putih standar tidak mengalami burn-in

  • Saya penasaran kenapa proyek seperti ini selalu secara spesifik memakai komputer kecil dan hemat daya seperti Raspberry Pi untuk menggerakkan display
    Sudah ada banyak komputer biasa yang menjalankan Debian GNU/Linux
    Kalau ingin memakai kode ini di salah satu komputer seperti itu untuk menggerakkan display e-paper lewat kabel USB biasa, bukankah itu memungkinkan?
    Rasanya tidak ada alasan harus memakai sesuatu seperti Raspberry Pi

    • Komputer kecil seperti Raspberry Pi memudahkan akses ke GPIO dan periferal level rendah seperti SPI yang dipakai layar kecil ini
      Di komputer besar pun, kalau sistem operasinya bisa memakai periferal seperti itu, penggunaannya akan sama saja
      Sebelum komputer kecil seperti ini menjadi umum, kita bisa memakai sinyal level rendah yang sama dengan port paralel dan program kecil untuk berkomunikasi langsung dengan periferal
    • Sama sekali tidak perlu begitu
      Raspberry Pi punya banyak dokumentasi bootstrap dan kode, jadi nyaman bagi orang yang pernah sedikit mengutak-atik Linux untuk menyalakannya, memasang paket, lalu melakukan sesuatu
      Kalau punya waktu dan pengetahuan, ini juga bisa dilakukan dengan mikrokontroler yang sangat kecil
      Tidak ada hal ajaib pada display itu sendiri, selain kadang membutuhkan tegangan daya yang aneh
      Masalah yang lebih umum adalah display seperti ini tidak berkomunikasi langsung lewat USB
      Untuk mengatur piksel, display menerima SPI atau antarmuka digital paralel, sehingga dibutuhkan antarmuka perantara dan perangkat lunak untuk menggambar layar
      Karena itu orang sering kali tinggal memasang Raspberry Pi dan berbicara dengannya lewat protokol yang lebih umum
    • Karena murah dan baterainya bisa bertahan lama
      Menyalakan komputer biasa terus-menerus hanya untuk satu display ini tidak efisien
  • Proyek yang bagus, seperti biasa, membuat orang terdorong melakukan kustomisasi
    Selain rekomendasi hardware, epaper.py[1] saja sudah bagus untuk dijadikan referensi
    [1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py

  • Saya kurang paham kenapa memakai AI untuk mengambil data cuaca
    Ada puluhan API cuaca gratis yang bisa dipanggil langsung

    • AI dipakai untuk beberapa hal yang sulit dilakukan dengan API gratis
      Mengubah nama sehari-hari suatu lingkungan menjadi lintang dan bujur yang tepat mungkin bisa dilakukan sampai batas tertentu oleh API tertentu, tetapi saya tidak tahu ada API gratis yang seakurat GPT
      Selain itu, kalau memasukkan “Hogwarts” atau “Tatooine”, berkat AI ia juga akan dengan tekun membuatkan cuaca di tempat itu[1]
      Yang paling penting, AI menuliskan prompt untuk Dall-E yang akan menghasilkan gambar dengan mempertimbangkan kondisi cuaca sebenarnya, matahari, bulan, dan sebagainya
      [1]: https://x.com/blixt/status/1724099967361462714
    • Ini menjadi satu baris yang sangat bagus untuk dimasukkan ke CV
    • Bisa juga cukup melihat ke luar jendela