# इंटरनेट पर अपनी नाइटलाइट को नियंत्रित करें - वर्चुअल IoT हार्डवेयर और रास्पबेरी पाई इस पाठ के इस भाग में, आप अपने रास्पबेरी पाई या वर्चुअल IoT डिवाइस पर MQTT ब्रोकर्स से भेजे गए कमांड्स को सब्सक्राइब करेंगे। ## कमांड्स को सब्सक्राइब करें अगला कदम 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) का उपयोग करके अनुवादित किया गया है। जबकि हम सटीकता सुनिश्चित करने का प्रयास करते हैं, कृपया ध्यान दें कि स्वचालित अनुवाद में त्रुटियां या अशुद्धियां हो सकती हैं। मूल भाषा में उपलब्ध मूल दस्तावेज़ को आधिकारिक स्रोत माना जाना चाहिए। महत्वपूर्ण जानकारी के लिए, पेशेवर मानव अनुवाद की सिफारिश की जाती है। इस अनुवाद के उपयोग से उत्पन्न किसी भी गलतफहमी या गलत व्याख्या के लिए हम जिम्मेदार नहीं हैं।