
@ -12,7 +12,7 @@
IoT শব্দে **I** হলো Internet - আইওটিতে "ইন্টারনেট" বলতে ক্লাউড এর মাধ্যমে সংযোগ এবং সেবা প্রদানের মাধ্যমে আইওটি যন্ত্রের বৈশিষ্ট্যসমূহ চালু করা, যন্ত্রের সাথে সংযুক্ত সেন্সর এর মাধ্যমে পরিমাপসমূহ সংগ্রহ করা এবং বার্তা প্রেরণের মাধ্যমে একচুয়েটরসমূহকে নিয়ন্ত্রণ করাকে বুঝায়। আইওটি যন্ত্রগুলি সাধারণত একটি স্ট্যান্ডার্ড কমিউনিকেশন প্রোটোকল ব্যবহার করে একটিমাত্র ক্লাউড আইওটি সেবাতে সংযুক্ত হয় এবং এই সেবাটি সব আইওটি এপ্লিকেশন এর সাথে সংযুক্ত থাকে যা কিনা যন্ত্রসমূহ থেকে প্রাপ্ত ডেটার মাধ্যমে এআই (কৃত্রিম বুদ্ধিমত্তা) সেবার সাহায্যে গুরুত্বপূর্ণ সিদ্ধান্ত নেওয়া থেকে শুরু করে ওয়েব এপস এর মাধ্যমে নিয়ন্ত্রণ করা বা প্রতিবেদনও তৈরি করে দিতে পারে।
> 🎓 সেন্সর এর মাধ্যমে তথ্য সংগ্রহ এবং সেই তথ্য ক্লাউডে প্রেরণ করাকে টেলেমেট্রি (Telemetry) বলে।
> 🎓 সেন্সর এর মাধ্যমে তথ্য সংগ্রহ এবং সেই তথ্য ক্লাউডে প্রেরণ করাকে টেলিমেট্রি(Telemetry) বলে।
আইওটি যন্ত্রসমূহ ক্লাউড থেকে বার্তা গ্রহণ করতে সক্ষম। তবে এই বার্তাগুলোতে আদেশ থাকে - সেটি হল অভ্যন্তরীণভাবে কোনও কাজ সম্পন্ন করার নির্দেশনাবলী (যেমন রিবুট বা ফার্মওয়্যার আপডেট করা), অথবা একচুয়েটরকে ব্যবহার করা (যেমন একটি লাইট জ্বালানো)।
@ -21,23 +21,23 @@ IoT শব্দে **I** হলো Internet - আইওটিতে "ইন্
আইওটি যন্ত্রসমূহ কয়েকটি জনপ্রিয় কমিউনিকেশন প্রটোকল ব্যবহার করে ইন্টারনেটের সাথে সংযুক্ত হয়। সবচেয়ে জনপ্রিয় হচ্ছে কোন ধরনের সার্ভার বা Broker এর মাধ্যমে বার্তা প্রচার/সাবস্ক্রাইব করা। আইওটি যন্ত্রসমূহ এই ব্রোকারের সাথে সংযুক্ত হয়ে টেলেমেট্রি প্রচার করে এবং কমান্ডগুলোতে সাবস্ক্রাইব করে। ক্লাউড সেবাগুলোও এই ব্রোকারের সাথে সংযুক্ত হয়ে সকল টেলেমেট্রি বার্তাগুলোতে সাবস্ক্রাইব করে এবং কমান্ডগুলোকে হয় একটি নির্দিষ্ট ডিভাইসে না হয় অনেকগুলো ডিভাইসের একটি গ্রুপে প্রেরণ করে।
আইওটি যন্ত্রসমূহ কয়েকটি জনপ্রিয় কমিউনিকেশন প্রটোকল ব্যবহার করে ইন্টারনেটের সাথে সংযুক্ত হয়। সবচেয়ে জনপ্রিয় হচ্ছে কোন ধরনের সার্ভার বা Broker এর মাধ্যমে বার্তা প্রচার/সাবস্ক্রাইব করা। আইওটি যন্ত্রসমূহ এই ব্রোকারের সাথে সংযুক্ত হয়ে টেলিমেট্রি প্রচার করে এবং কমান্ডগুলোতে সাবস্ক্রাইব করে। ক্লাউড সেবাগুলোও এই ব্রোকারের সাথে সংযুক্ত হয়ে সকল টেলিমেট্রি বার্তাগুলোতে সাবস্ক্রাইব করে এবং কমান্ডগুলোকে হয় একটি নির্দিষ্ট ডিভাইসে না হয় অনেকগুলো ডিভাইসের একটি গ্রুপে প্রেরণ করে।


আইওটি ডিভাইসগুলোর জন্য MQTT হলো সবচেয়ে জনপ্রিয় কমিউনিকেশন প্রটোকল যা এই পাঠে অন্তর্ভুক্ত করা হয়েছে। অন্যান্য প্রটোকলের মধ্যে AMQP এবং HTTP/HTTPS অন্তর্ভুক্ত আছে।
[MQTT](http://mqtt.org) হল লাইটওয়েট, ওপেন স্ট্যান্ডার্ড মেসেজিং প্রোটোকল যা ডিভাইসগুলোর মধ্যে বার্তা প্রেরণ করতে পারে। ১৫ বছর পরে ওপেন স্ট্যান্ডার্ড হিসাবে এটি আইবিএম দ্বারা প্রকাশিত হয় যা পূর্বে তেলের পাইপলাইনগুলি পর্যবেক্ষণ করার জন্য ১৯৯৯ সালে নকশা করা হয়েছিল ।
MQTT-র একটি ব্রোকার এবং একাধিক ক্লায়েন্ট রয়েছে। সমস্ত ক্লায়েন্ট ব্রোকারের সাথে সংযুক্ত হয় এবং ব্রোকার সংশ্লিষ্ট ক্লায়েন্টদের বার্তা প্রেরণ করে। বার্তাগুলো কোনো বিশেষ গ্রাহককে সরাসরি প্রেরণ না করে বরং নামকরণ করা টপিকগুলি ব্যবহার করে একটি নির্দিষ্ট পথে পাঠানো হয়। একটি ক্লায়েন্ট একটি টপিক প্রচার করতে পারে এবং যেকোনো ক্লায়েন্ট যে ওই টপিকে সাবস্ক্রাইব করে তা সেই টপিক সম্প্রর্কিত বার্তা গ্রহণ করে।
MQTT এর একটি ব্রোকার এবং একাধিক ক্লায়েন্ট রয়েছে। সমস্ত ক্লায়েন্ট ব্রোকারের সাথে সংযুক্ত হয় এবং ব্রোকার সংশ্লিষ্ট ক্লায়েন্টদের বার্তা প্রেরণ করে। বার্তাগুলো কোনো বিশেষ গ্রাহককে সরাসরি প্রেরণ না করে বরং নামকরণ করা টপিকগুলি ব্যবহার করে একটি নির্দিষ্ট পথে পাঠানো হয়। একটি ক্লায়েন্ট একটি টপিক প্রচার করতে পারে এবং যেকোনো ক্লায়েন্ট যে ঐ টপিকে সাবস্ক্রাইব করে তা সে সম্পর্কিত বার্তা গ্রহণ করে।

@ -51,7 +51,7 @@ MQTT-র একটি ব্রোকার এবং একাধিক ক্
আইওটি ডিভাইসটি MQTT-ব্রোকার এ সংযুক্ত করা।
পাঠের এই অংশটিতে আইওটি নাইটলাইটিকে ইন্টারনেটে সংযুক্ত করি যাতে করে সেটিকে দূর থেকে নিয়ন্ত্রণ করা যায়। এই পরবর্তী পাঠে, আইওটি ডিভাইসটি MQTT-র মাধ্যমে একটি টেলেমেট্রি বার্তা লাইটের লেভেলসহ(সেন্সর এর ভ্যালু) পাবলিক MQTT ব্রোকারে পাঠাবে এবং সেটি কতিপয় সার্ভার দ্বারা নেওয়া হবে যেটাতে কোডটি লেখা হয়েছিলো। এই কোডটি লাইটের লেভেল/সেন্সর ভ্যালু যাচাই করবে এবং যাচাই করার পর একটি আদেশমূলক বার্তা আইওটি লাইটটিতে/ডিভাইসে পাঠাবে যাতে আদেশ হিসেবে বলা থাকবে যে এলইডিটি অন না অফ হবে।
পাঠের এই অংশটিতে আইওটি নাইটলাইটিকে ইন্টারনেটে সংযুক্ত করি যাতে করে সেটিকে দূর থেকে নিয়ন্ত্রণ করা যায়। এই পরবর্তী পাঠে, আইওটি ডিভাইসটি MQTT-র মাধ্যমে একটি টেলিমেট্রি বার্তা লাইটের লেভেলসহ(সেন্সর এর ভ্যালু) পাবলিক MQTT ব্রোকারে পাঠাবে এবং সেটি কতিপয় সার্ভার দ্বারা নেওয়া হবে যেটাতে কোডটি লেখা হয়েছিলো। এই কোডটি লাইটের লেভেল/সেন্সর ভ্যালু যাচাই করবে এবং যাচাই করার পর একটি আদেশমূলক বার্তা আইওটি লাইটটিতে/ডিভাইসে পাঠাবে যাতে আদেশ হিসেবে বলা থাকবে যে এলইডিটি অন না অফ হবে।
বাস্তবিক ক্ষেত্রে এমন অবস্থা হতে পারে যেখানে অনেক লাইট সেন্সর রয়েছে (যেমন স্ট্যাডিয়াম) এবং সেই লাইটগুলো অন করার সিদ্ধান্ত নেওয়ার পূর্বে ওই একাধিক লাইট সেন্সর এর তথ্য সংগ্রহ করার প্রয়োজন হতে পারে। শুধুমাত্র একটি সেন্সর মেঘ বা পাখি দ্বারা আবৃত থাকে লাইটগুলি অন হওয়া থেকে বন্ধ রাখতে পারে, যদিও অন্য সেন্সরগুলি পর্যাপ্ত আলো শনাক্ত করেও।
@ -70,15 +70,15 @@ MQTT-র একটি ব্রোকার এবং একাধিক ক্
### MQTT এর আরো গভীরে
টপিকগুলোতে শ্রেণিবিন্যাস থাকতে পারে যাতে ক্লায়েন্টরা ওয়াইল্ডকার্ড ব্যবহার করে এই শ্রেণিবিন্যাসের বিভিন্ন স্তরে সাবস্ক্রাইব করতে পারে। যেমন, তাপমাত্রার টেলেমেট্রি বার্তাগুলো `/telemetry/temperature` এই টপিকে এবং আর্দ্রতার বার্তাগুলো `/telemetry/humidity` এই টপিকে পাঠানো, তারপর ক্লাউড এপটি `/telemetry/*` এই টপিকে সাবস্ক্রাইব করে তাপমাত্রা এবং আর্দ্রতা উভয়ের টেলেমেট্রি বার্তাগুলো গ্রহণ করবে।
টপিকগুলোতে শ্রেণিবিন্যাস থাকতে পারে যাতে ক্লায়েন্টরা ওয়াইল্ডকার্ড ব্যবহার করে এই শ্রেণিবিন্যাসের বিভিন্ন স্তরে সাবস্ক্রাইব করতে পারে। যেমন, তাপমাত্রার টেলিমেট্রি বার্তাগুলো `/telemetry/temperature` এই টপিকে এবং আর্দ্রতার বার্তাগুলো `/telemetry/humidity` এই টপিকে পাঠানো, তারপর ক্লাউড এপটি `/telemetry/*` এই টপিকে সাবস্ক্রাইব করে তাপমাত্রা এবং আর্দ্রতা উভয়ের টেলিমেট্রি বার্তাগুলো গ্রহণ করবে।
বার্তা গ্রহণের নিশ্চয়তা প্রদান করতে বার্তাগুলো কোয়ালিটি অফ সার্ভিস(QoS) এর সাথে পাঠানো হয়।
* সর্বাধিক একবার – বার্তা শুধুমাত্র একবারই পাঠানো হয় এবং ক্লায়েন্ট আর ব্রোকার বার্তাটি ডেলিভারীর প্রাপ্তি স্বীকার করতে কোনো অতিরিক্ত পদক্ষেপ নেয় না (fire and forget)।
* অন্তত একবার – স্বীকারোক্তি গৃহীত না হওয়া পর্যন্ত বার্তা প্রেরক একাধিকবার বার্তা প্রেরণের চেষ্টা করেছিল (acknowledged delivery)।
* ঠিক একবার – শুধু একটি বার্তা গৃহীত হয়েছে নিশ্চিত করতে প্রাপক এবং প্রেরক একটি দ্বি-স্তরের হ্যান্ডসেক এ জড়িত হয় (assured delivery)।
* ঠিক একবার – শুধু একটি বার্তা গৃহীত হয়েছে তা নিশ্চিত করতে প্রাপক এবং প্রেরক একটি দ্বি-স্তরের যোগাযোগ করে যাকে হ্যান্ডশেক এর সাথে তুলনা করা যায় (assured delivery)।
✅ কোন পরিস্থিতিতে (fire and forget)-বার্তার পরেও একটি (assured delivery)-এর বার্তা প্রয়োজন হতে পারে?
✅ কোন পরিস্থিতিতে fire and forget বার্তার পরেও একটি assured delivery এর বার্তা প্রয়োজন হতে পারে?
যদিও নামটি মেসেজ কিউয়িং (ইংরেজি প্রথম অক্ষরগুলো নিয়ে MQTT), এটি আসলে বার্তার সারিকে বুঝায় না। এর অর্থ হল যদি কোন ক্লায়েন্ট সংযোগ বিচ্ছিন্ন করে পুনরায় সংযোগ স্থাপন করার সময় QoS প্রসেস ব্যবহার করে ইতোমধ্যে প্রসেসকৃত বার্তাগুলো বাদে বিচ্ছিন্ন অবস্থায় প্রেরিত বার্তাগুলো গৃহীত হবে না। ওই বার্তাগুলোকে মনে রাখাতে একটি ফ্ল্যাগ সেট করা হয়। যদি এই ফ্ল্যাগ সেট করা থাকে তবে MQTT-ব্রোকার একটি টপিকে প্রেরিত সর্বশেষ বার্তাটি ওই ফ্ল্যাগসহিত জমা রাখবে এবং পরবর্তীতে কোনো ক্লায়েন্ট যদি এই টপিকে সাবস্ক্রাইব করে তাকে প্রেরণ করা হয়। এই পদ্ধতিতে ক্লায়েন্টগুলো সবর্দা সর্বশেষ বার্তাগুলো পেয়ে থাকে।
@ -90,7 +90,7 @@ MQTT- সংযোগসমূহ পাবলিক ও উন্মুক্
> 💁 MQTT TCP/IP এর মাধ্যমে যোগাযোগ করে, এটি HTTP এর মতোই একটি নেটওয়ার্ক প্রোটকল তবে একটি ভিন্ন পোর্টবেইজড। ব্রাউজারে চলমান ওয়েব অ্যাপ্লিকেশনগুলির সাথে যোগাযোগের জন্য ওয়েবসকেটের পরিবর্তে বা ফায়ারওয়ালগুলি বা অন্যান্য নেটওয়ার্কিং রুলস যা স্ট্যান্ডার্ড সংযোগগুলিতে MQTT ব্লক করে এমন পরিস্থিতিতে MQTT ব্যবহার করা যাবে।
## টেলেমেট্রি
## টেলিমেট্রি
টেলিমেট্রি শব্দটি গ্রীক থেকে উদ্ভূত হয়েছিলো যার অর্থ দূরবর্তী থেকে পরিমাপ করা। টেলিমেট্রি হল সেন্সর থেকে ডেটা সংগ্রহ এবং সেই ডেটা ক্লাউডে প্রেরণ করা ।
@ -102,7 +102,7 @@ MQTT- সংযোগসমূহ পাবলিক ও উন্মুক্
টেলিমেট্রি সংগ্রহের জন্য থার্মোস্ট্যাট এর তাপমাত্রাভিত্তিক সেন্সর রয়েছে। এটিতে একটি তাপমাত্রাভিত্তিক সেন্সর বিল্টইন থাকে এবং ওয়ারলেস প্রোটোকল যেমন [ব্লুটুথ লো এনার্জি](https://wikipedia.org/wiki/Bluetooth_Low_Energy) (BLE) এর মাধ্যমে একাধিক তাপমাত্রাভিত্তিক সেন্সর এর সাথে সংযুক্ত হতে পারে।
An example of the telemetry data it would send could be:
উদাহরণস্বরূপ একটি টেলিমেট্রি ডেটা যা প্রেরণ করা হবে, তা হলো
| নাম | মান | বর্ণনা |
| ---- | ----- | ----------- |
@ -112,13 +112,13 @@ An example of the telemetry data it would send could be:
ক্লাউড সেবা এই টেলিমেট্রি ডেটা ব্যবহার করে তাপকে নিয়ন্ত্রণ করতে কী আদেশ পাঠাবে তার সিদ্ধান্ত নিতে পারে।
### টেলেমেট্রি আইওটি ডিভাইসে প্রেরণ
### টেলিমেট্রি আইওটি ডিভাইসে প্রেরণ
নাইটলাইটটিকে ইন্টারনেটের মাধ্যমে নিয়ন্ত্রণ করার পরবর্তী অংশটি হলো লাইট লেভেল টেলেমেট্রি MQTT- ব্রোকারের টেলেমেট্রি টপিকে পাঠানো।
নাইটলাইটটিকে ইন্টারনেটের মাধ্যমে নিয়ন্ত্রণ করার পরবর্তী অংশটি হলো লাইট লেভেল টেলিমেট্রি MQTT- ব্রোকারের টেলিমেট্রি টপিকে পাঠানো।
#### কাজ
লাইট লেভেল টেলেমেট্রি MQTT- ব্রোকারে পাঠানো।
লাইট লেভেল টেলিমেট্রি MQTT- ব্রোকারে পাঠানো।
ডেটা JSON হিসাবে এনকোড করে পাঠানো হয় – JSON হলো JavaScript Object Notation এর সংক্ষিপ্ত রূপ, যা কী/ভ্যালু পেয়ার ব্যবহার করে ডেটাকে এনকোডেড টেক্সট এ রূপান্তরের জন্য একটি স্ট্যান্ডার্ড ।
@ -129,11 +129,11 @@ An example of the telemetry data it would send could be:
* [সিংগেল বোর্ড কম্পিউটার - রাস্পবেরি পাই/ভার্চুয়াল আইওটি ডিভাইস](single-board-computer-telemetry.bn.md)
### MQTT ব্রোকার হতে টেলেমেট্রি গ্রহণ
### MQTT ব্রোকার হতে টেলিমেট্রি গ্রহণ
টেলিমেট্রি পাঠানোর কোন অর্থ নেই যদি অন্য প্রান্তে এটি listen-করার মতো কিছু না থাকে। লাইট লেভেল টেলিমেট্রিটির ডেটা প্রক্রিয়া করার জন্য এটিকে কিছু লিসেনিং(listening) এর প্রয়োজ়নীয়তা আছে । এই 'সার্ভার' কোডটি সেই ধরণের কোড যা বৃহত্তর আইওটি অ্যাপ্লিকেশনের অংশ হিসাবে একটি ক্লাউড সেবাতে স্থাপন করবো, তবে এখানে স্থানীয়ভাবে এই কোডটি লোকাল কম্পিউটারে চালাতে পারবো (বা আমাদের Pi-তে সরাসরি কোডিং করতে পারবো) । সার্ভার কোডে একটি পাইথন অ্যাপ থাকে যা MQTT-র মাধ্যমে লাইটে লেভেলগুলোর টেলেমেট্রি বার্তা listen করতে পারে । এই পাঠের পরবর্তীতে, এটিতে কমান্ডের মেসেজ রিপ্লেতে পাঠাবো যাতে নির্দেশনা থাকবে যে এলইডি অন না অফ হবে।
টেলিমেট্রি পাঠানোর কোন অর্থ নেই যদি অন্য প্রান্তে এটি listen-করার মতো কিছু না থাকে। লাইট লেভেল টেলিমেট্রিটির ডেটা প্রক্রিয়া করার জন্য এটিকে কিছু লিসেনিং(listening) এর প্রয়োজ়নীয়তা আছে । এই 'সার্ভার' কোডটি সেই ধরণের কোড যা বৃহত্তর আইওটি অ্যাপ্লিকেশনের অংশ হিসাবে একটি ক্লাউড সেবাতে স্থাপন করবো, তবে এখানে স্থানীয়ভাবে এই কোডটি লোকাল কম্পিউটারে চালাতে পারবো (বা আমাদের Pi-তে সরাসরি কোডিং করতে পারবো) । সার্ভার কোডে একটি পাইথন অ্যাপ থাকে যা MQTT-র মাধ্যমে লাইটে লেভেলগুলোর টেলিমেট্রি বার্তা listen করতে পারে । এই পাঠের পরবর্তীতে, এটিতে কমান্ডের মেসেজ রিপ্লেতে পাঠাবো যাতে নির্দেশনা থাকবে যে এলইডি অন না অফ হবে।
✅ কিছু গবেষনা করিঃ MQTT বার্তাগুলোর কী হবে যদি কোনো listener না থাকে?
✅ কিছু গবেষনা করিঃ MQTT বার্তাগুলোর কী হবে যদি কোনো গ্রাহক না থাকে?
#### পাইথন এবং ভিএস কোড ইন্সটল করি
@ -303,7 +303,7 @@ Python এবং VS Code ইন্সটল করি।
এপটি আইওটি ডিভাইসের মেসেজসমূহ লিসেন করতে শুরু করবে।
1. আমাদের অব্যশই নিশ্চিত হতে হবে যে ডিভাইসটি রান করছে কিনা এবং টেলেমেট্রি মেসেজ সেন্ড করছে কিনা। বাহ্যিক বা ভার্চুয়াল ডিভাইস হতে শনাক্তকৃত লাইট লেভেলটিকে এডজাস্ট করি। গৃহীত বার্তাসমূহ নিচের মতো টার্মিনালে প্রিন্ট হবে।
1. আমাদের অব্যশই নিশ্চিত হতে হবে যে ডিভাইসটি রান করছে কিনা এবং টেলিমেট্রি মেসেজ সেন্ড করছে কিনা। বাহ্যিক বা ভার্চুয়াল ডিভাইস হতে শনাক্তকৃত লাইট লেভেলটিকে এডজাস্ট করি। গৃহীত বার্তাসমূহ নিচের মতো টার্মিনালে প্রিন্ট হবে।
```output
(.venv) ➜ nightlight-server python app.py
@ -315,13 +315,13 @@ Python এবং VS Code ইন্সটল করি।
টেলিমেট্রিতে একটি গুরুত্বপূর্ণ বিষয় হল কতবার ডেটা পরিমাপ এবং প্রেরণ করা উচিত? উত্তরটি হল, এটি পরিস্থিতিভেদে নির্ভরশীল। যেমনঃ আমরা যদি প্রায়ই পরিমাপ করি তবে পরিমাপ পরিবর্তনের প্রতি দ্রুত সারা দিতে পারবো কিন্তু আমরা যদি আরও পাওয়ার, ব্যান্ডউইথ, ডেটা ব্যাবহার করি তাহলে এইগুলো প্রসেস করার জন্য আরও ক্লাউড রিসোর্সের প্রয়োজন হবে যার ফলে আমাদের প্রায়ই যথেষ্ট পরিমাণে পরিমাপ করা প্রয়োজন তবে তা খুব বেশি নয়।
একটি থার্মোস্ট্যাট যদি কয়েক মিনিট পর পর তাপমাত্রা পরিমাপ করে তবে তা প্রয়োজনের অতিরিক্ত কারণ তাপমাত্রা প্রতিনিয়ত পরিবর্তিত হয় না। যদি আমরা দৈনিক একবার তাপমাত্রা পরিমাপ করি তবে ভরদুপুরে নাইটটাইমের তাপমাত্রায় আমাদের ঘরটিকে উত্তপ্ত করে বসবো। অপরপক্ষে আমরা যদি প্রতি সেকেন্ডে পরিমাপ করি তবে অপ্রয়োজনীয় সহস্রাধিক তাপমাত্রার পরিমাপের ডেটা তৈরি হবে যাতে ইউজারের ইন্টারনেট এবং ব্যান্ডউইথ বেশি ব্যবহৃত হবে (যা লিমিটেড ব্যান্ডউইথ প্ল্যানে চলা ইউজারদের সমস্যা হতে পারে) এবং আরও পাওয়ার ব্যবহার করবে যা ব্যাটারি চালিত ডিভাইসের জন্য সমস্যা হতে পারে (যেমনঃ রিমোট সেন্সর) যার ফলে ক্লাউড প্রোভাইডারে কম্পিউটিং রিসোর্সের প্রসেসিং এবং স্টোরিং এর ব্যয় বেড়ে যাবে।
যদি কোন ফ্যাক্টরিতে কোন মেসিনারি ডেটা পর্যবেক্ষণ করা হয় এবং যদি এই মেসিনটি নষ্ট হয় তবে বিপজ্জনক ক্ষতি হতে পারে তার সাথে কয়েক মিলিয়ন ডলারের রাজস্বও নষ্ট হতে পারে। তাই এমন পরিস্থিতে প্রতি সেকেন্ডে একাধিকবার পরিমাপ করা অবশ্যই যুক্তিযুক্ত। টেলেমেট্রি যেকোন যন্ত্র নষ্ট হওয়ার আগে সেটিকে বন্ধ এবং ঠিক করা প্রয়োজন তা ইন্ডিকেট করে দেয়, তাই টেলিমেট্রি মিস হওয়ার চেয়ে ব্যান্ডউইথ নষ্ট হওয়া ভাল।
যদি কোন ফ্যাক্টরিতে কোন মেসিনারি ডেটা পর্যবেক্ষণ করা হয় এবং যদি এই মেসিনটি নষ্ট হয় তবে বিপজ্জনক ক্ষতি হতে পারে তার সাথে কয়েক মিলিয়ন ডলারের রাজস্বও নষ্ট হতে পারে। তাই এমন পরিস্থিতে প্রতি সেকেন্ডে একাধিকবার পরিমাপ করা অবশ্যই যুক্তিযুক্ত। টেলিমেট্রিযেকোন যন্ত্র নষ্ট হওয়ার আগে সেটিকে বন্ধ এবং ঠিক করা প্রয়োজন তা ইন্ডিকেট করে দেয়, তাই টেলিমেট্রি মিস হওয়ার চেয়ে ব্যান্ডউইথ নষ্ট হওয়া ভাল।
> 💁 এই পরিস্থিতিতে,ইন্টারনেটের উপর নির্ভরতা হ্রাস করতে প্রথম টেলিমেট্রি প্রসেস করার জন্য একটি এজ(edge) ডিভাইস রাখা যেতে পারে।
@ -331,9 +331,9 @@ Python এবং VS Code ইন্সটল করি।
একটি থার্মোস্ট্যাট এর নতুন তাপমাত্রা পরিমাপ করা মাত্রই আগের পরিমাপ করা ডেটাটি হারিয়ে যেতে পারে। ২০ মিনিট পূর্বে তাপমাত্রা ২০.৫°C ছিল বা এখন তাপমাত্রা ১৯°C তা নিয়ে হিটিং সিস্টেম পরোয়া করে না, বর্তমান মুহূর্তের তাপমাত্রাই নির্ধারণ করবে যে হিটিং সিস্টেমটি অন হবে নাকি অফ থাকবে।
মেশিনারির জন্য ডেটা রাখা যেতে পারে বিশেষত যদি এটি ট্রেন্ডস(trends) সন্ধানে ব্যবহৃত হয়। এমন কিছু মেশিন লার্নিং মডেল রয়েছে যা নির্ধারিত সময়ের মধ্যে(যেমন শেষ ঘন্টায়) ডেটা সন্ধান করে ডেটার স্ট্রিমসমূহে এনোম্যালি চিহ্নিত করে এনোম্যালাস ডেটা শনাক্ত করতে পারে। এটি প্রায়ই predictive maintenance এর জন্য ব্যবহৃত হয়, এমন কিছু লক্ষণের সন্ধান করে যাতে দ্রুত কোনও কিছু ভেঙে যাওয়ার আগেই এটি মেরামত বা রিপ্লেস করা যায় । এনোমলি ডিটেকশনের জন্য একটি মেশিনের প্রেরিত টেলেমেট্রির প্রতিটি বিটকে প্রসেস করা হয় তাই যখন আইওটি ডিভাইসটি পুনরায় ইন্টারনেটের সাথে সংযোগ স্থাপন করে তখন ইন্টারনেট আউটেজের সময় তৈরি হওয়া সমস্ত টেলিমেট্রি প্রেরণ করতে পারে।
মেশিনারির জন্য ডেটা রাখা যেতে পারে বিশেষত যদি এটি ট্রেন্ডস(trends) সন্ধানে ব্যবহৃত হয়। এমন কিছু মেশিন লার্নিং মডেল রয়েছে যা নির্ধারিত সময়ের মধ্যে(যেমন শেষ ঘন্টায়) ডেটা সন্ধান করে ডেটার স্ট্রিমসমূহে এনোম্যালি চিহ্নিত করে এনোম্যালাস ডেটা শনাক্ত করতে পারে। এটি প্রায়ই predictive maintenance এর জন্য ব্যবহৃত হয়, এমন কিছু লক্ষণের সন্ধান করে যাতে দ্রুত কোনও কিছু ভেঙে যাওয়ার আগেই এটি মেরামত বা রিপ্লেস করা যায় । এনোমলি ডিটেকশনের জন্য একটি মেশিনের প্রেরিত টেলিমেট্রিটির প্রতিটি বিটকে প্রসেস করা হয় তাই যখন আইওটি ডিভাইসটি পুনরায় ইন্টারনেটের সাথে সংযোগ স্থাপন করে তখন ইন্টারনেট আউটেজের সময় তৈরি হওয়া সমস্ত টেলিমেট্রি প্রেরণ করতে পারে।
আইওটি ডিভাইস ডিজাইনারদের বিবেচনা করা উচিত যাতে ইন্টারনেট আউটেজের সময় বা অবস্থানজনিত কারণে সিগন্যাল লসের সময় আইওটি ডিভাইস ব্যবহার করা যাবে কিনা। একটি স্মার্ট থার্মোস্ট্যাট যদি আউটেজের কারনে ক্লাউডে টেলেমেট্রি প্রেরণ করতে না পারে তবে হিটিং সিস্টেমকে কন্ট্রোল করতে তাতে অবশ্যই সীমিত সংখ্যক সিদ্ধান্ত নেওয়ার সক্ষমতা থাকতে হবে।
আইওটি ডিভাইস ডিজাইনারদের বিবেচনা করা উচিত যাতে ইন্টারনেট আউটেজের সময় বা অবস্থানজনিত কারণে সিগন্যাল লসের সময় আইওটি ডিভাইস ব্যবহার করা যাবে কিনা। একটি স্মার্ট থার্মোস্ট্যাট যদি আউটেজের কারনে ক্লাউডে টেলিমেট্রি প্রেরণ করতে না পারে তবে হিটিং সিস্টেমকে কন্ট্রোল করতে তাতে অবশ্যই সীমিত সংখ্যক সিদ্ধান্ত নেওয়ার সক্ষমতা থাকতে হবে।
[](https://twitter.com/internetofshit/status/1315736960082808832)
@ -341,11 +341,11 @@ Python এবং VS Code ইন্সটল করি।
## কমান্ডস
কমান্ডস হচ্ছে মেসেজ যা ক্লাউড দ্বারা কোন ডিভাইসে প্রেরণ করা হয় যাতে কিছু করার নির্দেশনা দেওয়া থাকে। বেশিরভাগক্ষেত্রে একচুয়েটরের আউটপুট সম্বলিত কিছু থাকে কিন্তু এতে ডিভাইসের নিজের জন্য কিছু নির্দেশনাও থাকতে পারে (যেমনঃ রিব্যুট করা) বা এক্সট্রা টেলেমেট্রি জড়ো করা এবং রেসপন্স হিসেবে কমান্ডকে রিটার্ন করা।
কমান্ডস হচ্ছে মেসেজ যা ক্লাউড দ্বারা কোন ডিভাইসে প্রেরণ করা হয় যাতে কিছু করার নির্দেশনা দেওয়া থাকে। বেশিরভাগক্ষেত্রে একচুয়েটরের আউটপুট সম্বলিত কিছু থাকে কিন্তু এতে ডিভাইসের নিজের জন্য কিছু নির্দেশনাও থাকতে পারে (যেমনঃ রিব্যুট করা) বা এক্সট্রা টেলিমেট্রি জড়ো করা এবং রেসপন্স হিসেবে কমান্ডকে রিটার্ন করা।

হিটিং সিস্টেম চালু করার জন্য একটি থার্মোস্ট্যাট ক্লাউ থেকে কমান্ড গ্রহণ করতে পারে। যদি ক্লাউড সার্ভিস সমস্ত সেন্সর হতে প্রাপ্ত টেলেমেট্রি ডাটার উপর ভিত্তি করে সিদ্ধান্ত নেয় যে হিটিং সিস্টেমটি চালু করা জরুরি তবে তা সে অনুযায়ী কমান্ড প্রেরণ করবে।
হিটিং সিস্টেম চালু করার জন্য একটি থার্মোস্ট্যাট ক্লাউ থেকে কমান্ড গ্রহণ করতে পারে। যদি ক্লাউড সার্ভিস সমস্ত সেন্সর হতে প্রাপ্ত টেলিমেট্রি ডাটার উপর ভিত্তি করে সিদ্ধান্ত নেয় যে হিটিং সিস্টেমটি চালু করা জরুরি তবে তা সে অনুযায়ী কমান্ড প্রেরণ করবে।
### কমান্ডসমূহ MQTT ব্রোকারে প্রেরণ
@ -382,7 +382,7 @@ Python এবং VS Code ইন্সটল করি।
Sending message: {'led_on': False}
```
> 💁 প্রতিটি সিংগেল টপিকে টেলেমেট্রি এবং কমান্ডসমূহ প্রেরণ করা হচ্ছে। যার অর্থ দাঁড়ায় একাধিক ডিভাইস থেকে টেলমেট্রি একই টেলিমেট্রি টপিকের উপর প্রকাশিত হবে এবং একাধিক ডিভাইসের কমান্ডগুলিও একই কমান্ডের টপিকে প্রকাশিত হবে। যদি কোন নির্দিষ্ট ডিভাইসে কমান্ড প্রেরণ করতে চাই তবে একটি ইউনিক ডিভাইস আইডি নামকরণ (যেমনঃ `/commands/device1`, `/commands/device2`) করে একাধিক টপিক ব্যবহার করে পারবো। এইভাবে কোন ডিভাইস কেবল সেই এক ডিভাইসের জন্য বরাদ্দকৃত বার্তাগুলি লিসেন করতে পারে।
> 💁 প্রতিটি সিংগেল টপিকে টেলিমেট্রি এবং কমান্ডসমূহ প্রেরণ করা হচ্ছে। যার অর্থ দাঁড়ায় একাধিক ডিভাইস থেকে টেলিমেট্রি একই টেলিমেট্রি টপিকের উপর প্রকাশিত হবে এবং একাধিক ডিভাইসের কমান্ডগুলিও একই কমান্ডের টপিকে প্রকাশিত হবে। যদি কোন নির্দিষ্ট ডিভাইসে কমান্ড প্রেরণ করতে চাই তবে একটি ইউনিক ডিভাইস আইডি নামকরণ (যেমনঃ `/commands/device1`, `/commands/device2`) করে একাধিক টপিক ব্যবহার করে পারবো। এইভাবে কোন ডিভাইস কেবল সেই এক ডিভাইসের জন্য বরাদ্দকৃত বার্তাগুলি লিসেন করতে পারে।
> 💁 আমরা [code-commands/server](code-commands/server) এই ফোল্ডারে কোডটি পাবো।
@ -413,7 +413,7 @@ MQTT ব্রোকার হতে কমান্ডসমূহ লিসে
শেষ তিনটি পাঠ্যের মধ্যে চ্যালেঞ্জটি ছিল আমাদের বাড়ি, স্কুল বা কর্মক্ষেত্রে যতগুলো আইওটি ডিভাইস রয়েছে তার একটি তালিকা তৈরি করা এবং তারা মাইক্রোকন্ট্রোলার বা একক-বোর্ড কম্পিউটার বা উভয়ের মিশ্রণে নির্মিত কিনা তার সিদ্ধান্তে উপনিত হওয়া এবং তারা কী ধরনের সেন্সর ও একচুয়েটর ব্যবহার করছে তা নিয়ে চিন্তা করা।
চিন্তা করে দেখি যে এই ডিভাইসগুলো কী ধরনের মেসেজ প্রেরণ বা গ্রহণ করছে। কি ধরনের টেলেমেট্রি প্রেরণ করছে? কি মেসেজ বা কমান্ড রিসিভ করতে পারে? চিন্তা করে দেখি এগুলো কি সত্যিই সুরক্ষিত?
চিন্তা করে দেখি যে এই ডিভাইসগুলো কী ধরনের মেসেজ প্রেরণ বা গ্রহণ করছে। কি ধরনের টেলিমেট্রি প্রেরণ করছে? কি মেসেজ বা কমান্ড রিসিভ করতে পারে? চিন্তা করে দেখি এগুলো কি সত্যিই সুরক্ষিত?