এমকিউটিটি (MQTT) একটি হালকা বার্তা-আদান-প্রদানের নিয়ম, যার মাধ্যমে আইওটি ডিভাইস ব্রোকার নামের একটি কেন্দ্রীয় সার্ভারের ভেতর দিয়ে ছোট ছোট বার্তা পাঠায় আর পায়। একটি সেন্সর তার রিডিং একটি নাম দেওয়া টপিকে "পাবলিশ" করে, যেমন farm/shed1/temperature। আর যারা ওই টপিকে "সাবস্ক্রাইব" করে রেখেছে, যেমন ড্যাশবোর্ড, অ্যালার্ট সার্ভিস বা ফ্যানের কন্ট্রোলার, তারা প্রায় সাথে সাথে সেটি পেয়ে যায়। দুর্বল ও অনির্ভরযোগ্য সংযোগ আর ছোট ডিভাইসের কথা ভেবেই এটা বানানো, তাই আইওটিতে এর এত ব্যবহার।
ডাকঘরের উদাহরণ
এমকিউটিটিকে ভাবুন নাম লেখা খোপওয়ালা একটি ডাকঘর হিসেবে।
- পাবলিশার খোপে চিঠি ফেলে। তাপমাত্রার সেন্সর তার রিডিং পাবলিশ করে।
- ব্রোকার হলো ডাকঘর। সব চিঠি সে নেয়, আর জানে কে কোন খোপের চিঠি চায়।
- সাবস্ক্রাইবার আগে থেকে বলে রেখেছে, কিছু নির্দিষ্ট খোপের সব চিঠির কপি তার চাই। ড্যাশবোর্ড তাপমাত্রার টপিকে সাবস্ক্রাইব করে; অ্যালার্ট সার্ভিসও একই টপিক নিয়ে মান যাচাই করে।
আসল কথা হলো, কে শুনছে তা সেন্সরের জানার দরকার নেই। আগামী মাসে আরেকটি ড্যাশবোর্ড বা নতুন অ্যালার্ট যোগ করলেও সেন্সরের কোড বদলাতে হয় না। এই আলাদা থাকার কারণেই ছোট ব্যবস্থা সহজ থাকে, আর সব নতুন করে না জুড়েই বড় হতে পারে।
সেন্সর থেকে ফোন পর্যন্ত একটি রিডিংয়ের পথ
ধরা যাক, নাটোরের কাছে একটি পোলট্রি শেড, সেখানে একটি তাপমাত্রার সেন্সর আর একটি এগজস্ট ফ্যান আছে।
- একটি ইএসপি৩২ বোর্ড প্রতি মিনিটে সেন্সর পড়ে।
- ওয়াই-ফাই বা মোবাইল ডেটায় ব্রোকারের
farm/shed1/temperatureটপিকে মানটি পাবলিশ করে। - ব্রোকার বার্তাটি ওই টপিকের প্রত্যেক সাবস্ক্রাইবারের কাছে পৌঁছে দেয়।
- ড্যাশবোর্ডের চার্ট হালনাগাদ হয়। অ্যালার্ট সার্ভিস মানটি খামারির ঠিক করা সীমার সাথে মেলায়।
- রিডিং সীমার বাইরে গেলে ম্যানেজারের ফোনে বার্তা যায়।
- উল্টো পথেও নির্দেশ যায়। কন্ট্রোলার
farm/shed1/fan/commandটপিকে সাবস্ক্রাইব করা থাকে, তাই ড্যাশবোর্ড থেকে "চালু" বার্তা দ্রুত পৌঁছে যায়।
এ ধরনের নিয়ন্ত্রণে সবসময় একটি নিরাপদ বিকল্প ব্যবস্থা আর হাতের সুইচ থাকা দরকার। মনিটরিং ঠিকঠাক বায়ু চলাচলের যন্ত্রপাতি আর ভালো পরিচর্যার সাথে বাড়তি সহায়তা মাত্র, বিকল্প নয়। পুরো ব্যবস্থার বিবরণ পাবেন পোলট্রি শেডের আবহাওয়া মনিটরিং পেজে।
যে শব্দগুলো শুনবেন
টপিক
স্ল্যাশ দিয়ে ভাগ করা কয়েক স্তরের একটি লেখা লেবেল, অনেকটা ফোল্ডারের পথের মতো। ভালো টপিকের নাম একটি নিয়ম মেনে চলে (জায়গা, এলাকা, ডিভাইস, কী মাপা হচ্ছে), যাতে সবাই পড়ে বুঝতে পারে। সাবস্ক্রাইবার ওয়াইল্ডকার্ড দিয়ে একসাথে পুরো এক দল টপিক নিতে পারে, যেমন একটি শেডের সব রিডিং।
কিউওএস (কোয়ালিটি অব সার্ভিস)
প্রতিটি বার্তা তিনটি স্তরের একটিতে পাঠানো যায়: বড়জোর একবার (দ্রুত, হারাতে পারে), অন্তত একবার (নিশ্চিত না হওয়া পর্যন্ত বারবার, দুবার পৌঁছাতে পারে), ঠিক একবার (সবচেয়ে ধীর, সবচেয়ে সতর্ক)। নিয়মিত রিডিং প্রায়ই সবচেয়ে নিচের স্তরে যায়; অ্যালার্ম আর নির্দেশের ক্ষেত্রে বেশি যত্ন দরকার।
রিটেইনড মেসেজ
ব্রোকার একটি টপিকের সর্বশেষ বার্তা রেখে দিতে পারে, আর পরে যে সাবস্ক্রাইব করবে তাকে সাথে সাথে দেয়। ফলে সকালে ড্যাশবোর্ড খুললে খালি পর্দা নয়, শেষ জানা মানটাই দেখা যায়।
লাস্ট উইল
সংযুক্ত হওয়ার সময় ডিভাইস ব্রোকারের কাছে একটি "শেষ ইচ্ছা" বার্তা রেখে যেতে পারে। লোডশেডিং বা সিগন্যাল হারানোর কারণে ডিভাইস না বলে চলে গেলে ব্রোকার সেই বার্তা পাবলিশ করে। কোনো ডিভাইস অফলাইন হলো কি না জানার এটা একটি সহজ উপায়।
কিপ-অ্যালাইভ
ডিভাইস নির্দিষ্ট সময় পরপর ছোট সংকেত পাঠায়, যাতে ব্রোকার বোঝে সে এখনো সংযুক্ত।
এমকিউটিটি, নাকি সাধারণ ওয়েব রিকোয়েস্ট?
অনেক ডিভাইস চাইলে ব্রাউজারের পেজ খোলার মতো করে একটি ওয়েব ঠিকানায়ও রিডিং পাঠাতে পারে। দুটোই চলে, তবে আলাদা কাজে মানায়।
| এমকিউটিটি | ওয়েব রিকোয়েস্ট (এইচটিটিপি) | |
|---|---|---|
| সংযোগ | খোলা থাকে | প্রতিবার খোলে আর বন্ধ হয় |
| ডিভাইসে নির্দেশ পাঠানো | দ্রুত পৌঁছায় | ডিভাইসকে বারবার জিজ্ঞেস করতে হয় |
| বার্তার বাড়তি বোঝা | খুব কম | বেশি |
| কোথায় মানায় | অনেক ডিভাইস, ঘন ঘন ছোট রিডিং, দুই দিকের নিয়ন্ত্রণ | মাঝেমধ্যে আপলোড, সহজ একমুখী রিপোর্ট |
এমকিউটিটির জন্য ওয়াই-ফাই বা মোবাইল ডেটার মতো ইন্টারনেট ধরনের সংযোগ লাগে। লোরার মতো খুব কম-বিদ্যুতের রেডিও সাধারণত আগে একটি গেটওয়েতে পাঠায়, আর সেই গেটওয়ে প্রায়ই এমকিউটিটি দিয়ে ডেটা সামনে পাঠায়। এই সংযোগগুলোর ব্যাখ্যা আছে আইওটি সংযোগের উপায় লেখায়।
এমকিউটিটি নিরাপদ রাখা
ইন্টারনেটে খোলা পড়ে থাকা ব্রোকার মানে বিপদ ডেকে আনা। অন্তত এগুলো করুন:
- টিএলএস দিয়ে সংযোগ এনক্রিপ্ট করুন, ওয়েবসাইট যে প্রযুক্তিতে সুরক্ষিত থাকে।
- প্রতিটি ডিভাইসকে আলাদা ইউজারনেম-পাসওয়ার্ড বা সার্টিফিকেট দিন, সবার জন্য একটি লগইন কখনো নয়।
- কোন ডিভাইস কী পাবলিশ ও সাবস্ক্রাইব করতে পারবে, তা সীমিত করুন। সেন্সর যেন ফ্যানের নির্দেশ পাঠাতে না পারে।
- ব্রোকারের সফটওয়্যার হালনাগাদ রাখুন, আর পরীক্ষার সেটিং চালু রেখে দেবেন না।
বিস্তারিত পাবেন আইওটি নিরাপত্তার মূল কথা লেখায়।
ডেভেলপারকে যা জিজ্ঞেস করবেন
- ব্রোকার কোথায় চলবে: কোনো ক্লাউড সার্ভিসে, আমাদের নিয়ন্ত্রণের সার্ভারে, নাকি জায়গাতেই একটি ডিভাইসে?
- টপিকের পরিকল্পনা কী, আর সেটা কি লিখে রাখা আছে?
- কোন বার্তা কোন কিউওএস স্তরে যাবে, আর কেন?
- কোনো ডিভাইস অফলাইন হলে আমরা কীভাবে জানব?
- ডিভাইসগুলোর পরিচয় কীভাবে যাচাই হয়, আর কোনোটি হারালে বা চুরি হলে কী হবে?
- ইন্টারনেট না থাকার সময় রিডিংগুলোর কী হয়?
উত্তরগুলো পরিষ্কার হলে ভিত্তি মজবুত। মনিটরিং বা নিয়ন্ত্রণের কোনো প্রজেক্টের নকশা নিয়ে দ্বিতীয় মতামত চাইলে আমার আইওটি ডিভাইস ডেভেলপমেন্ট সেবা কাজে আসতে পারে।