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 ইঞ্জিনিয়ার, যিনি ল্যাব থেকে লোকাল-ফার্স্ট সিস্টেম, সেলফ-হোস্টেড অবকাঠামো এবং স্বয়ংক্রিয় টুল তৈরি করেন।