2 पॉइंट द्वारा GN⁺ 2024-06-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Sol Mate e-Paper Display एक प्रोजेक्ट है जो चुनी गई लोकेशन के मौजूदा मौसम और रोशनी की स्थिति को दर्शाने वाला इलस्ट्रेशन बनाता है और उसे Raspberry Pi से जुड़े Waveshare e-Paper स्क्रीन पर दिखाता है
  • स्क्रिप्ट लोकेशन इनपुट लेकर मौसम प्राप्त करती है, और gpt-5-mini द्वारा बनाए गए प्रॉम्प्ट तथा gpt-image-1-mini का उपयोग करके हाई-क्वालिटी इमेज रेंडर करती है, इसलिए OpenAI API टोकन आवश्यक है
  • इसमें केवल वास्तविक लोकेशन ही नहीं, बल्कि दोस्त की लोकेशन या काल्पनिक स्थान भी डाले जा सकते हैं; काल्पनिक स्थान के लिए GPT पृथ्वी पर सबसे मिलती-जुलती जगह के latitude/longitude मौसम सेवा को भेजता है
  • हार्डवेयर Raspberry Pi 5 और Waveshare e-Paper 7.3" display पर आधारित है, और यदि किसी अन्य आकार के डिस्प्ले का उपयोग करना हो तो कोड में बदलाव करना होगा
  • control.py स्क्रीन पर दिखाना, लोकल प्रीव्यू और स्क्रीन साफ़ करना सपोर्ट करता है, और Waveshare की यह सिफारिश कि एक ही इमेज को बहुत देर तक न दिखाया जाए, साथ ही API लागत बढ़ने की संभावना—दोनों का ध्यान रखना चाहिए

Sol Mate e-Paper Display क्या करता है

  • Sol Mate e-Paper Display Raspberry Pi और Waveshare e-Paper डिस्प्ले के लिए weather report image बनाकर दिखाने वाले कोड का संग्रह है
  • इसे शुरुआत में ☀️ Sol Mate GPT के रूप में बनाया गया था, और बाद में यह जिज्ञासा हुई कि यह e-Paper डिस्प्ले पर कैसा दिखेगा, जिससे यह प्रोजेक्ट बना
  • इनपुट लोकेशन के रूप में वास्तविक स्थान, दोस्त की लोकेशन, और काल्पनिक स्थान तक दिए जा सकते हैं
    • उदाहरण के लिए, बारिश होने पर चित्र में छाता लिए लोग दिखाई दे सकते हैं, यानी मौजूदा मौसम इलस्ट्रेशन में झलकता है
    • काल्पनिक स्थान डालने पर GPT अपने आकलन के आधार पर पृथ्वी पर सबसे मिलती-जुलती जगह के latitude/longitude मौसम सेवा को भेजता है

इमेज कैसे बनती है

  • इलस्ट्रेशन gpt-image-1-mini मॉडल से रेंडर होता है
  • इमेज प्रॉम्प्ट gpt-5-mini बनाता है, और हाई-क्वालिटी इमेज सेटिंग का उपयोग किया जाता है
  • इस जनरेशन फ्लो की वजह से चलाने के लिए OpenAI API टोकन चाहिए

आवश्यक हार्डवेयर

चलाना और उपयोग

  • प्रोजेक्ट को Raspberry Pi पर चलाने के लिए बनाया गया है
  • Python environment मैनेजमेंट के लिए uv का उपयोग होता है
    • uv virtual environment को मैनेज करता है, इसलिए उसे मैन्युअली activate करने की ज़रूरत नहीं है
uv sync
  • macOS या Linux के अलावा किसी development machine पर Raspberry Pi hardware library को डिफ़ॉल्ट रूप से skip कर दिया जाता है
  • OPENAI_API_KEY environment variable सेट करना होगा
    • मौजूदा working directory की .env फ़ाइल से environment variables पढ़े जा सकते हैं
OPENAI_API_KEY=... uv run python control.py show Barcelona
  • लोकल में जल्दी जांचने के लिए iTerm2 image display का उपयोग करने वाला preview कमांड चलाया जा सकता है
    • डिफ़ॉल्ट रूप से यह system temporary directory में sol-mate-preview-<timestamp>.png नाम से सेव होता है
OPENAI_API_KEY=... uv run python control.py preview "Barcelona"

स्क्रीन प्रबंधन और ऑटो अपडेट

  • Waveshare सिफारिश करता है_Manual#Precautions>) कि एक ही इमेज को डिस्प्ले पर बहुत लंबे समय तक न छोड़ा जाए
  • स्क्रीन साफ़ करने के लिए clear कमांड का उपयोग करें
uv run python control.py clear
  • उदाहरण कॉन्फ़िगरेशन cron के जरिए दिन में दो बार इमेज अपडेट करती है और भोर में स्क्रीन साफ़ करती है
    • पाथ को अपने इंस्टॉलेशन environment के अनुसार बदलना होगा
    • बार-बार चलाने पर लागत कम नहीं हो सकती
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

बैकएंड और संदर्भ सामग्री

  • मौसम लाने के लिए एक private API का उपयोग किया जा सकता है, लेकिन शर्त है कि उसे अत्यधिक बार कॉल न किया जाए
  • यदि बड़े पैमाने पर उपयोग का विचार हो, तो self-hosting की सिफारिश की जाती है
  • बैकएंड source code blixt/sol-mate में है
  • अतिरिक्त फ़ोटो और बनाने की प्रक्रिया:

1 टिप्पणियां

 
GN⁺ 2024-06-09
Hacker News की राय
  • एक मिलते-जुलते प्रोजेक्ट में Inkplate 6Color इस्तेमाल कर रहा हूँ
    इसमें ESP32 controller बिल्ट-इन है, इसलिए Pi की ज़रूरत नहीं पड़ती, और यह सिर्फ battery पर भी चल सकता है
    अगर deep sleep/wake schedule ठीक से सेट किया जाए, तो एक बार charge पर कई हफ्तों तक चल सकता है
    मुझे सबसे ज़्यादा पसंद ऑफिस के दरवाज़े पर लगा लाल On Air sign है; मीटिंग या recording के समय Mac पर shortcut चलाते ही status अपने-आप अपडेट हो जाता है और डिवाइस mute हो जाते हैं
    weather display, news, और Google Calendar के लिए open source examples भी हैं
    https://soldered.com/product/inkplate-6color-color-e-paper-b...
    सस्ते electronic ink प्रोजेक्ट सच में मज़ेदार और उपयोगी होते हैं

    • मैंने भी ऐसा ही एक प्रोजेक्ट बनाया था
      Pi Zero से जुड़ा electronic ink display सिर्फ Yes/No दिखाता है कि अगले 3 घंटे में बारिश होगी या नहीं
      अब सोचता हूँ तो शायद 7-color display तक की ज़रूरत नहीं होगी
      जो display इस्तेमाल कर रहा हूँ वह https://shop.pimoroni.com/products/inky-impression-7-3?varia... है और यह ज़्यादा सस्ता लगता है
    • इसका उपयोग काफ़ी चतुर और शानदार है
      इतना मज़ेदार है कि मन करता है ऐसे screen घर भर में लगा दूँ
    • हैरानी हुई कि यह चीज़ मेरी सारी ज़रूरतें पूरी करती है, और फिर कीमत देखकर दोबारा हैरानी हुई
  • मैंने भी स्वतंत्र रूप से एक हफ्ते पहले उसी display के साथ लगभग यही चीज़ बनाई थी
    https://imgz.org/iBLADkCU.jpg
    यह एक frame है जो किसी खास location का current weather और time लाता है, और AI उस location को शामिल करते हुए एक photo generate करके दिखाता है
    हैरानी होती है कि हम दोनों अलग-अलग काम करते हुए यहाँ तक कैसे पहुँच गए
    शायद यह सबसे obvious use case था

    • यह वही मामला है जहाँ idea चारों तरफ़ बिखरे होते हैं
      नए founder के लिए यह अच्छा उदाहरण है कि उनका idea अकेला नहीं है, और सच कहें तो truly unique ideas बहुत कम होते हैं
      असली बात execution है
      electronic ink weather board दुनिया का Uber और Lyft जैसा लगता है, और HN पर मैंने इससे मिलती-जुलती चीज़ों को पहले भी tag किया है
      समय मिला तो मैं भी एक बनाऊँगा, और यह सब ESP32 development और free/open source home automation के लिए प्रेरित करता है
  • hardware project और idea शानदार हैं, लेकिन हमेशा चालू रहने वाले device पर OpenAI API का इस्तेमाल मैं बिल्कुल नहीं करना चाहूँगा
    अगर कभी मज़े के लिए बनाना हुआ, तो शायद OpenStreetMap और LAN पर host किए गए Stable Diffusion वाला version बना सकता हूँ, इसलिए इसे bookmark करने लायक मानता हूँ

    • यह जानना दिलचस्प होगा कि OpenAI API और हमेशा चालू रहने वाले device का combination समस्या क्यों है
  • ऐसा ही एक प्रोजेक्ट देखकर मैंने वही display दो खरीद लिए थे

    • "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
      शुरू में योजना थी कि उन दोनों उदाहरणों की तरह color photo display बनाऊँ, लेकिन यह application भी अच्छी लग रही है
    • दूसरे पोस्ट में screen बदलते समय का microscope close-up भी है, जो अच्छा लगा
      उम्मीद है hacking अच्छी चले, और जल्द ही आपका बना प्रोजेक्ट यहाँ देखने को मिले
  • image में Barcelona 26°C और 2°C के रूप में दिख रहा है
    मैं Barcelona कुछ बार जा चुका हूँ, लेकिन एक ही दिन में ये दोनों तापमान देखना कल्पना से बाहर लगता है
    सोच रहा हूँ कि weather data भरोसेमंद है, या फिर सब hallucination है और बस animation का आनंद लेना चाहिए
    या फिर शायद मुझे Barcelona के मौसम की उतनी समझ नहीं, और 26 डिग्री high तथा 2 डिग्री low संभव हो सकते हैं

    • यह वह मामला है जहाँ Dall-E साफ़-सुथरा text नहीं लिख पाया
      2°C, 26°C से निकला हुआ hallucination ही है
      क्योंकि यह hobby project है, इसलिए पारंपरिक तरीके से text render करने के बजाय हर बार text को अलग और अक्सर ज़्यादा artistic दिखने देने को प्राथमिकता दी गई
      लेकिन अगर इसे गंभीर product बनाना हो, तो image generation model अभी इस उपयोग के लिए पर्याप्त नहीं हैं
  • मुझे यह जानने की जिज्ञासा है कि “एक ही image को display पर बहुत देर तक न छोड़ें” ऐसा क्यों कहा गया है
    क्या यह color electronic ink की खास समस्या है?

    • Waveshare की recommendation है कि “कम से कम हर 24 घंटे में एक बार refresh करें”[1]
      असल में शायद यह इतनी बड़ी समस्या नहीं है, लेकिन अगर pixel बहुत लंबे समय तक active रहें, तो उनके अटक जाने का जोखिम हो सकता है
      [1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
    • सोच रहा हूँ कि यह burn-in की वजह से है, या रंग फीके पड़ने की वजह से
  • सामान्य black-and-white electronic ink के विपरीत, क्या display method में कोई ऐसा फ़र्क है जिसकी वजह से एक ही image को लंबे समय तक न छोड़ने की चेतावनी देनी पड़ती है?
    अगर मुझे सही याद है, तो standard black-and-white electronic ink display में burn-in नहीं होता था

    • मैंने बस Waveshare की recommendation[1] ज्यों-का-त्यों लिखी थी, और शायद यह इतना बड़ा मुद्दा नहीं है
      ताकि लोग और जानकारी लेकर खुद निर्णय कर सकें, मैं README में documentation link जोड़ दूँगा
      [1]: https://www.waveshare.com/wiki/7.3inch_e-Paper_HAT_(F)_Manua...
  • यह जिज्ञासा होती है कि ऐसे प्रोजेक्ट्स में डिस्प्ले चलाने के लिए हमेशा Raspberry Pi जैसे छोटे और low-power कंप्यूटर को ही क्यों चुना जाता है
    Debian GNU/Linux चलाने वाले सामान्य कंप्यूटर तो पहले से बहुत हैं
    अगर उन कंप्यूटरों में से किसी एक पर इस कोड का इस्तेमाल करके सामान्य USB केबल से e-paper डिस्प्ले चलाना हो, तो क्या वह संभव नहीं है?
    ऐसा नहीं लगता कि Raspberry Pi जैसा कुछ इस्तेमाल करना अनिवार्य है

    • Raspberry Pi जैसे छोटे कंप्यूटरों में इस छोटे स्क्रीन द्वारा इस्तेमाल किए जाने वाले SPI जैसे low-level peripherals और GPIO तक पहुंचना आसान होता है
      बड़े कंप्यूटरों में भी अगर operating system से ऐसे peripherals इस्तेमाल किए जा सकें, तो वही काम किया जा सकता है
      ऐसे छोटे कंप्यूटर आम होने से पहले, parallel port और छोटे प्रोग्राम की मदद से ऐसे ही low-level signals का उपयोग करके सीधे peripherals से communicate किया जा सकता था
    • इसकी बिल्कुल भी ज़रूरत नहीं है
      Raspberry Pi पर bootstrap documents और code बहुत हैं, इसलिए Linux को थोड़ा-बहुत जानने वाला कोई भी व्यक्ति इसे चालू करके, packages install करके कुछ बना सकता है
      समय और जानकारी हो तो बहुत छोटे microcontroller से भी यह किया जा सकता है
      डिस्प्ले में कोई जादुई चीज़ नहीं होती, बस कभी-कभी उसे अजीब power voltages चाहिए होते हैं
      ज़्यादा आम समस्या यह है कि ऐसे डिस्प्ले सीधे USB से communicate नहीं करते
      pixels सेट करने के लिए ये SPI या parallel digital interface लेते हैं, इसलिए बीच में एक interface और स्क्रीन draw करने वाला software चाहिए
      इसी वजह से लोग अक्सर Raspberry Pi जोड़ देते हैं और फिर उससे किसी ज़्यादा आम protocol में बात करते हैं
    • क्योंकि यह सस्ता है और battery पर लंबे समय तक चलता है
      सिर्फ इस एक डिस्प्ले के लिए किसी सामान्य कंप्यूटर को लगातार चालू रखना inefficent है
  • बेहतरीन प्रोजेक्ट्स की तरह, यह भी किसी को customization की ओर बढ़ने के लिए प्रेरित करता है
    hardware recommendations के अलावा, reference के लिए सिर्फ epaper.py[1] देखना भी अच्छा है
    [1]: https://github.com/blixt/sol-mate-eink/blob/main/epaper.py

  • मौसम लाने के लिए AI का इस्तेमाल क्यों किया जा रहा है, यह ठीक से समझ नहीं आता
    सीधे call की जा सकने वाली मुफ़्त weather APIs दर्जनों हैं

    • कुछ ऐसी चीज़ों के लिए AI इस्तेमाल किया गया है जो free API से करना मुश्किल है
      किसी मोहल्ले के बोलचाल वाले नाम को सटीक latitude/longitude में बदलना कुछ APIs किसी हद तक कर सकती हैं, लेकिन GPT जितनी accuracy देने वाली कोई मुफ़्त API मुझे नहीं पता
      और अगर आप “Hogwarts” या “Tatooine” डालें, तो AI की वजह से वहाँ का मौसम भी ईमानदारी से बना देता है[1]
      सबसे महत्वपूर्ण बात, यह वास्तविक मौसम की स्थिति, सूरज और चाँद आदि को ध्यान में रखकर image generate करने के लिए Dall-E prompt लिखता है
      [1]: https://x.com/blixt/status/1724099967361462714
    • रिज़्यूमे में डालने के लिए यह बहुत अच्छी एक पंक्ति बन जाती है
    • बस खिड़की के बाहर भी देख सकते हैं