# ইন্টারনেটের মাধ্যমে আপনার নাইটলাইট নিয়ন্ত্রণ করুন - ভার্চুয়াল IoT হার্ডওয়্যার এবং রাস্পবেরি পাই এই পাঠের এই অংশে, আপনি MQTT ব্রোকার থেকে আপনার রাস্পবেরি পাই বা ভার্চুয়াল IoT ডিভাইসে পাঠানো কমান্ডগুলোর সাবস্ক্রিপশন করবেন। ## কমান্ডগুলোর সাবস্ক্রিপশন করুন পরবর্তী ধাপ হলো MQTT ব্রোকার থেকে পাঠানো কমান্ডগুলোর সাবস্ক্রিপশন করা এবং সেগুলোর প্রতিক্রিয়া জানানো। ### কাজ কমান্ডগুলোর সাবস্ক্রিপশন করুন। 1. VS Code-এ নাইটলাইট প্রকল্পটি খুলুন। 1. যদি আপনি ভার্চুয়াল IoT ডিভাইস ব্যবহার করেন, তাহলে নিশ্চিত করুন যে টার্মিনাল ভার্চুয়াল এনভায়রনমেন্ট চালাচ্ছে। যদি আপনি রাস্পবেরি পাই ব্যবহার করেন, তাহলে ভার্চুয়াল এনভায়রনমেন্ট ব্যবহার করা হবে না। 1. `client_telemetry_topic` এর সংজ্ঞাগুলোর পরে নিচের কোডটি যোগ করুন: ```python server_command_topic = id + '/commands' ``` `server_command_topic` হলো MQTT টপিক, যেখানে ডিভাইসটি LED কমান্ড গ্রহণ করার জন্য সাবস্ক্রাইব করবে। 1. প্রধান লুপের ঠিক উপরে, `mqtt_client.loop_start()` লাইনের পরে নিচের কোডটি যোগ করুন: ```python def handle_command(client, userdata, message): payload = json.loads(message.payload.decode()) print("Message received:", payload) if payload['led_on']: led.on() else: led.off() mqtt_client.subscribe(server_command_topic) mqtt_client.on_message = handle_command ``` এই কোডটি একটি ফাংশন, `handle_command`, সংজ্ঞায়িত করে যা একটি বার্তাকে JSON ডকুমেন্ট হিসেবে পড়ে এবং `led_on` প্রপার্টির মান খুঁজে। যদি এটি `True` সেট করা থাকে, তাহলে LED চালু হয়, অন্যথায় এটি বন্ধ হয়। MQTT ক্লায়েন্ট সেই টপিকে সাবস্ক্রাইব করে যেখানে সার্ভার বার্তা পাঠাবে এবং বার্তা পাওয়া গেলে `handle_command` ফাংশনটি কল করার জন্য সেট করে। > 💁 `on_message` হ্যান্ডলারটি সাবস্ক্রাইব করা সমস্ত টপিকের জন্য কল করা হয়। যদি আপনি পরে এমন কোড লিখেন যা একাধিক টপিকের জন্য শোনে, তাহলে আপনি বার্তাটি কোন টপিকে পাঠানো হয়েছে তা `message` অবজেক্ট থেকে পেতে পারেন যা হ্যান্ডলার ফাংশনে পাঠানো হয়। 1. আগের অংশের কোড চালানোর মতো একইভাবে কোডটি চালান। যদি আপনি ভার্চুয়াল IoT ডিভাইস ব্যবহার করেন, তাহলে নিশ্চিত করুন যে CounterFit অ্যাপটি চালু আছে এবং লাইট সেন্সর এবং LED সঠিক পিনে তৈরি করা হয়েছে। 1. আপনার শারীরিক বা ভার্চুয়াল ডিভাইস দ্বারা সনাক্ত করা লাইট লেভেল সামঞ্জস্য করুন। বার্তা গ্রহণ এবং কমান্ড পাঠানোর তথ্য টার্মিনালে লেখা হবে। লাইট লেভেলের উপর নির্ভর করে LED চালু এবং বন্ধ হবে। > 💁 আপনি এই কোডটি [code-commands/virtual-device](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/virtual-device) ফোল্ডারে বা [code-commands/pi](../../../../../1-getting-started/lessons/4-connect-internet/code-commands/pi) ফোল্ডারে খুঁজে পেতে পারেন। 😀 আপনি সফলভাবে আপনার ডিভাইসকে MQTT ব্রোকার থেকে পাঠানো কমান্ডগুলোর প্রতিক্রিয়া জানাতে কোড করেছেন। --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসম্ভব সঠিক অনুবাদের চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। নথিটির মূল ভাষায় লেখা সংস্করণটিকেই প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ ব্যবহার করার পরামর্শ দেওয়া হচ্ছে। এই অনুবাদ ব্যবহারের ফলে সৃষ্ট কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়ী নই।