500 दिन और 30,000 मील
यह अंग्रेज़ी मूल लेख का मशीनी अनुवाद है। कुछ बारीकियाँ छूट सकती हैं, इसलिए संदर्भ के लिए अंग्रेज़ी संस्करण ही मान्य है। अंग्रेज़ी में मूल लेख पढ़ें
संक्षेप में
पिछले रविवार की सुबह 10:22 बजे, जब ओडोमीटर 40,397.8 पर था, मेरे घर के एक Raspberry Pi ने मेरी ड्राइविंग का तीस हज़ारवाँ मील दर्ज किया। पाँच सौ दिन का डेटा संग्रह, ठीक दिन के हिसाब से।
किसी ने इसे चिह्नित नहीं किया, क्योंकि ऐसा करने के लिए कुछ बनाया ही नहीं गया था। Postgres की एक टेबल में एक पंक्ति ठीक वैसे ही आई जैसे उससे पहले की एक करोड़ आईं, जो किसी इन्फ़्रास्ट्रक्चर के लिए मेरी सबसे बड़ी तारीफ़ है।
एक करोड़ कोई कहने भर की बात नहीं है। डेटाबेस में 10,356,022 पोज़िशन पंक्तियाँ हैं और चार्जिंग विवरण की 243,380 पंक्तियाँ और हैं। यह रोज़ लगभग 20,700 नई पंक्तियाँ बैठती हैं, हर दिन, पाँच सौ दिन तक, एक अकेले समर्पित नोड से जिसे बिल्कुल यही काम करने और कुछ और नहीं करने के लिए अकेला छोड़ दिया गया है।
असल में क्या चल रहा है
एक Raspberry Pi 5 पर चार Docker कंटेनर। TeslaMate डेटा जुटाता है, Postgres 16 उसे सँजोता है, Grafana उसे चित्र बनाकर दिखाता है, और Mosquitto MQTT पर लाइव स्टेट प्रकाशित करता है ताकि घर की बाक़ी चीज़ें कार के पहुँचने पर प्रतिक्रिया दे सकें। पूरा स्टैक बस यही है, और इसके पास अपनी अलग मशीन है। मेरी लैब में कई Pi हैं, और यह सिर्फ़ डेटा संग्रह के लिए अलग रखा गया है, 24/7 रिकॉर्ड बनाए रखने के अलावा कुछ नहीं करता। इससे CPU, मेमोरी या अपटाइम के लिए कोई और होड़ नहीं करता, यानी कोई और इसे गिरा भी नहीं सकता।
कलेक्टर किसी पोलिंग लूप से ज़्यादा समझदार है। जब कार चल रही होती है तो वह हर कुछ सेकंड में नमूना लेता है: पोज़िशन, गति, दिशा, ऊँचाई, बैटरी स्तर, बिजली की खपत, तापमान। जब कार चार्ज हो रही होती है तो वह सिर्फ़ शुरुआत और अंत दर्ज करने के बजाय पूरा सेशन ट्रैक करता है। और जब कार खड़ी होती है तो वह जान-बूझकर पीछे हट जाता है और उसे सोने देता है, क्योंकि Tesla के API को बार-बार खटखटाने से वह जागी रहती है और रात भर आपकी रेंज खाती है। यही आख़िरी फ़ैसला इसकी वजह है कि लॉगर ने मुझे कभी रेंज का नुक़सान नहीं कराया।
पाँच सौ दिन का वह सब, पूरा और सेकंड-दर-सेकंड, कुल 1.6 GB बैठता है, जो एक अकेली फ़िल्म से भी छोटा है। मैं इंतज़ार करता रहता हूँ कि स्टोरेज समस्या बने और वह बनता ही नहीं।
ओडोमीटर के मुक़ाबले 30,144 मील ट्रैक हुए, रोज़ 60.3। 6,921 ड्राइव जो 976 घंटे के हैं, यानी स्टीयरिंग के पीछे पूरे चालीस दिन। 513 चार्जिंग सेशन में 10,016 kWh, जिनमें 458 घर पर, यानी 89.3 प्रतिशत, और EV ख़रीदने से घबराने वाले किसी भी इंसान से मैं जो सबसे काम की बात कह सकता हूँ वह यही है। पैंतीस ओवर-द-एयर अपडेट दर्ज हुए, हर एक पर समय-मुहर, जिससे मेरे पास Tesla जो कुछ भी प्रकाशित करती है उससे ज़्यादा सटीक एक निजी फ़र्मवेयर चेंजलॉग है।
पूरी अवधि में डेटा संग्रह का अपटाइम 92 प्रतिशत है। बिना निगरानी वाले, बिना ऑप्स टीम के एक सिंगल-बोर्ड कंप्यूटर के लिए मैं इसे हर बार लूँगा।
हर चार डॉलर की बिजली जो मैं ख़रीदता हूँ, उसमें से लगभग तीन असल में कार को चलाते हैं, और बाक़ी चार्जिंग हानि, एयर कंडीशनिंग और रात को कार के अपने आप जाग जाने में चला जाता है। मौसम तय करता है कि यह कितना बुरा हो, गर्म महीने मुझे सुहावने महीनों से प्रति मील 16 प्रतिशत ज़्यादा पड़ते हैं और टेक्सास की सर्दी 3 प्रतिशत।
वह बात जो कोई नहीं बताता
मैं Pi में SSH करता रहा, और लगभग कभी इसलिए नहीं कि उसे ठीक करना था। मैं इसलिए जुड़ता था क्योंकि डेटा आता हुआ देखना चाहता था, ड्राइव को टेबल में उतरते देखना चाहता था जबकि कार ड्राइववे में अभी गरम थी, यह जाँचना चाहता था कि पिछली रात की चार्ज कर्व सचमुच चार्ज कर्व जैसी दिखती है। शुरू में मैं यह इसलिए करता था क्योंकि मुझे उस पर अभी भरोसा नहीं था। बाद में इसलिए क्योंकि मैं स्कीमा समझने लगा था, और स्कीमा समझ लेना वह बिंदु है जहाँ डेटाबेस ब्लैक बॉक्स नहीं रहता और ऐसी जगह बन जाता है जहाँ आप जाकर देख सकते हैं।
यह सीख सुनने में जितनी लगती है, उससे धीमी है। आप सीखते हैं कि कार की स्थिति बदलते ही drives की पंक्ति आ जाती है, कि चार्जिंग प्रक्रिया और चार्ज नमूना अलग-अलग जीवनकाल वाली अलग वस्तुएँ हैं, कि ओडोमीटर इकलौता फ़ील्ड है जो कभी झूठ नहीं बोलता। आप सीखते हैं कि आपके अपने डेटा का मतलब क्या है, जो उसे बस रखने से अलग बात है।
इसमें से किसी को AI की ज़रूरत नहीं थी, और मैं समय-रेखा के बारे में सटीक रहना चाहता हूँ: मैं यह तब से कर रहा था जब कोई असिस्टेंट मेरे लिए क्वेरी लिख ही नहीं सकता था। सीखना ही असली काम था।
फिर क्वेरी आसान हो गईं
जो बदला वह यह है कि मैंने SQL लिखना छोड़ दिया और सवाल पूछने लगा।
एक ऐसे स्कीमा पर LLM को लगाना जिसे मैं पहले से समझता था, पाँच मिनट की क्वेरी को दस सेकंड की बना गया। इसलिए नहीं कि वह मेरा डेटा जानता है, बल्कि इसलिए कि मैं जानता हूँ, और जब वह कोई बेतुका जवाब देता है तो मैं तुरंत पहचान लेता हूँ। वही मेल काम का है। जिसने कभी टेबल खोली ही नहीं, उसे पूरे आत्मविश्वास से ग़लत जवाब मिलते हैं और उन्हें पकड़ने का कोई तरीक़ा नहीं होता। जो स्कीमा जानता है और अब अंग्रेज़ी में पूछ सकता है, वह सीधा दिलचस्प हिस्से पर पहुँच जाता है।
दिलचस्प बात यह है कि सवाल बेहतर होते जाते हैं। जब क्वेरी महँगी होती है तो आप वही पूछते हैं जिस पर आपको पहले से शक है। जब सस्ती होती है तो आप ऐसी चीज़ें पूछने लगते हैं जिनकी आपके पास कोई परिकल्पना नहीं होती, और हैरानियाँ वहीं रहती हैं। मौसमों के साथ औसत यात्रा की लंबाई कैसे बदलती है। दिन में कार असल में कब चलती है। साल की सबसे गर्म रात का चार्जिंग सेशन सबसे सुहावनी रात के मुक़ाबले कैसा दिखता है।
Tesla का ऐप इनमें से किसी का जवाब नहीं दे सकता। उसे इसके लिए बनाया ही नहीं गया था। वह आपको सारांश दिखाता है, और सारांश सिर्फ़ उन्हीं सवालों के जवाब दे सकता है जिनका अनुमान डिज़ाइन करने वाले ने लगाया था।
वह सवाल जिसने पूरे प्रोजेक्ट की क़ीमत चुका दी
इस गर्मी में मुझे यक़ीन हो गया कि मेरा वॉल कनेक्टर ख़राब हो रहा है।
गर्म रातों में ऐप में चार्जिंग सेशन ऐसे दिखते थे जैसे रुक रहे हों और दोबारा शुरू हो रहे हों। निदान अपने आप सूझ गया: थर्मल डीरेटिंग, यूनिट गरम होने पर करंट घटा रही है, कार को उस तरह साइकिल करा रही है जो सालों में बैटरी को चुपचाप बूढ़ा करता है। वॉल कनेक्टर बदलना सस्ता नहीं है।
फिर मुझे याद आया कि मुझे अंदाज़ा लगाने की ज़रूरत नहीं थी। उस चीज़ ने जितने भी चार्जिंग नमूने लिए थे, सब मेरे घर की एक डिस्क पर थे।
पायलट सिग्नल कनेक्टर का कार को यह बताना है कि वह कितने एम्पीयर खींच सकती है। डीरेटिंग का मतलब है कि वह संख्या गिरती है। घर पर लिए 217,124 नमूनों में से 217,118 में उसने 48 एम्पीयर पढ़ा। दो लाख से ऊपर में से छह रीडिंग कहीं और हैं, और सेशन के बीच में बैटरी स्तर कभी नहीं गिरा, जो तब गिरता अगर कार सचमुच कट गई होती।
कनेक्टर कभी डगमगाया ही नहीं था। सेशनों को बाहरी तापमान के साथ मिलाने पर असली बात सामने आई: सबसे गर्म रातों में कार ख़ुद नेटवर्क से कट जाती थी, इसलिए लॉगर उस सेशन को नज़र से खो देता था जो पूरी तरह ठीक चल रहा था।
मैंने पैसे नहीं ख़र्च किए। वह एक जवाब, उस डेटा से जो पहले से मेरे पास था, उस हार्डवेयर पर जो पहले से मेरे पास था, पूरे प्रोजेक्ट की लागत कई बार वसूल कर गया।
अगले बीस हज़ार
साठ मील रोज़ की रफ़्तार से पचास हज़ार अगले साल के मध्य के आसपास आएगा, और डिस्क को तब भी कोई फ़र्क़ नहीं पड़ेगा।
असल में मुझे जिसका इंतज़ार है वह तुलना है। टेक्सास की एक गर्मी गर्मी और बैटरियों के बारे में कुछ नहीं बताती। दो गर्मियाँ आपको नाप लेने देती हैं। तीस हज़ार मील लगभग वह बिंदु है जहाँ लॉग लॉग नहीं रहता और आधार-रेखा बन जाता है, और हर महीना जो मैं इसे चलता छोड़ता हूँ, मेरी किसी मेहनत के बिना तुलनाएँ और तेज़ होती जाती हैं।
Pi मेरे पास सबसे कम माँग करने वाला इन्फ़्रास्ट्रक्चर रहा है और बेशक सबसे संतोषजनक, क्योंकि वह चक्रवृद्धि होता है। उसने एक सेटअप और कभी-कभार एक SSH सेशन माँगा, और बदले में उसने चुपचाप कुछ ऐसा रच दिया जो मुझे कोई बेच नहीं सकता, कोई मुझसे रद्द नहीं कर सकता, और कोई दाम बढ़ाकर मेरी पहुँच से बाहर नहीं कर सकता: मैं अपनी ही कार को असल में कैसे इस्तेमाल करता हूँ, इसका पूरा, खोजने-योग्य रिकॉर्ड।
लेखक
Rohit BuraniAI इंजीनियर, जो लैब से लोकल-फ़र्स्ट सिस्टम, सेल्फ़-होस्टेड इंफ्रास्ट्रक्चर और स्वायत्त टूल बनाते हैं।