इवेंट एसिंक्रोनस होते हैं और इन्हें Google Cloud Pub/Sub मैनेज करता है. हर Projectके लिए एक विषय होता है. इवेंट, सभी डिवाइसों और स्ट्रक्चर के लिए अपडेट देते हैं. साथ ही, इवेंट मिलने की गारंटी तब तक होती है, जब तक उपयोगकर्ता ऐक्सेस टोकन को रद्द नहीं करता और इवेंट मैसेज की समयसीमा खत्म नहीं हो जाती.
SDM API में इवेंट की सुविधा का इस्तेमाल करना ज़रूरी नहीं है. इन्हें आसानी से लागू किया जा सकता है और आपके Google Cloud प्रोजेक्ट का इस्तेमाल करके इनकी पुष्टि की जा सकती है.
इवेंट सक्षम करें
इवेंट, Device Access Console में चालू किए जा सकते हैं. अगर आपने पहले से ही ऐसा नहीं किया है, तो Console में अपना प्रोजेक्ट चुनें.
Device Access Console पर जाएं
अगर आपने पहले से ही इवेंट चालू कर दिए हैं (उदाहरण के लिए, प्रोजेक्ट बनाते समय), तो इवेंट के लिए Pub/Sub विषय चालू करें सेक्शन में मौजूद Pub/Sub विषय फ़ील्ड में पहले से ही कोई वैल्यू होनी चाहिए. इसे विषय का आईडी कहा जाता है. यह इस पुराने फ़ॉर्मैट में होता है:
projects/sdm-prod/topics/enterprise-project-id
Google के होस्ट किए गए विषय से माइग्रेट करने के लिए, Device Access Console में जाकर Google के होस्ट किए गए Pub/Sub विषय को बंद करें. इसके बाद, अपने Google Cloud प्रोजेक्ट में बनाए गए, खुद के होस्ट किए गए Pub/Sub विषय का इस्तेमाल करके इवेंट फिर से चालू करें. Pub/Sub विषय के कॉन्फ़िगरेशन को माइग्रेट करने से, उपयोगकर्ता के मौजूदा ऐक्सेस टोकन या OAuth अनुमतियां अमान्य नहीं होती हैं.
खुद होस्ट किए गए Pub/Sub विषयों को अपने Google Cloud प्रोजेक्ट में बनाया या बदला जा सकता है. इन पर Google Cloud Pub/Sub की स्टैंडर्ड कीमत लागू होती है. इसमें हर महीने 10 जीबी का मुफ़्त टियर शामिल है.
Pub/Sub विषय बनाएं:
gcloud pubsub topics create {topic} --message-retention-duration=0sअपने प्रोजेक्ट के विषय के आईडी के लिए, SDM API की ज़रूरी अनुमतियां दें, ताकि इवेंट डेटा को ऐक्सेस और पब्लिश किया जा सके:
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"आपके बनाए गए नए विषय के आईडी का फ़ॉर्मैट इस तरह दिखेगा:
projects/gcp-project-name/subscriptions/topic-id
अपने विषय का आईडी नोट कर लें. इवेंट चालू करने के लिए, आपको इसकी ज़रूरत होगी. ज़्यादा जानकारी के लिए, कोई विषय बनाना लेख पढ़ें.
इवेंट चालू करने के लिए (या Google से होस्ट किए गए विषय से माइग्रेट करने के लिए):
- अगर आपको नया प्रोजेक्ट बनाना है, तो इवेंट चालू करें को चुनें. इसके बाद, प्रोजेक्ट बनाएं पर क्लिक करें. अगर आपको किसी मौजूदा प्रोजेक्ट को Google से होस्ट किए गए विषय से माइग्रेट करना है, तो सबसे पहले प्रोजेक्ट की जानकारी वाली स्क्रीन में जाकर, मौजूदा Pub/Sub विषय को बंद करें.
- Pub/Sub विषय के लिए, आइकॉन पर क्लिक करें. इसके बाद, PubSub विषय के साथ इवेंट चालू करें या मौजूदा विषय में बदलाव करें को चुनें.
- सेल्फ़-होस्ट किए गए Pub/Sub विषय का वह आईडी डालें जिसे आपने पहले बनाया था.
अपने विषय का आईडी कॉपी करें. आपको विषय की सदस्यता बनाने के लिए इसकी ज़रूरत होगी, ताकि इवेंट के मैसेज वापस पाए जा सकें.
पुल सदस्यता बनाना
पुल टाइप वाली सदस्यता में, सदस्य Pub/Sub सर्वर से इवेंट के कतार में लगे मैसेज पाने के लिए अनुरोध करता है. इससे यह पुष्टि करना आसान और तेज़ हो जाता है कि आपके अधिकृत डिवाइसों के लिए इवेंट जनरेट हो रहे हैं.
अपने Google Cloud प्रोजेक्ट के लिए Cloud Shell खोलें:
Cloud Shell प्रॉम्प्ट पर, अपने विषय के लिए पुल सदस्यता बनाने के लिए, यहां दिया गया निर्देश चलाएं. इसके लिए, अपनी पसंद का subscription-id और अपना यूनीक विषय आईडी इस्तेमाल करें:
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].इवेंट शुरू करना
Pub/Sub सदस्यता बनाने के बाद, पहली बार इवेंट शुरू करने के लिए, अपने डिवाइसों को एक बार ट्रिगर करने के तौर पर लिस्ट करने के लिए कॉल करें:
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'इस एपीआई कॉल के बाद, सभी स्ट्रक्चर और डिवाइसों के लिए इवेंट पब्लिश किए जाएंगे.
इवेंट जनरेट करना
सभी ट्रेट फ़ील्ड में हुए बदलावों के लिए इवेंट जनरेट होते हैं. इनमें से कुछ इवेंट अपने-आप जनरेट होते हैं, जबकि कुछ को मैन्युअल तरीके से जनरेट करना पड़ता है.
उदाहरण के लिए, अगर आपके Nest Thermostat के आस-पास के तापमान में बदलाव होता है, तोTemperature trait के लिए इवेंट अपने-आप भेजा जाएगा. इसमें ambientTemperatureCelsius की नई वैल्यू होगी.
इसे मैन्युअल तरीके से जनरेट करने के लिए, इनमें से कोई एक तरीका अपनाएं:
- अपने डिवाइस की स्थिति में बदलाव करना. जैसे, Nest थर्मोस्टैट का मोड बदलना.
- Google Nest Cam Indoor पर किसी इवेंट को ट्रिगर करना. जैसे, कोई हलचल, व्यक्ति या आवाज़.
- SDM API का इस्तेमाल करके, डिवाइस को निर्देश दें.
मैसेज देखें
इवेंट मैसेज को Google Cloud प्रोजेक्ट में देखा जा सकता है. इसके लिए, Pub/Sub Subscriptions सेक्शन में जाएं:
Google Cloud Pub/Sub की सदस्यताएं पर जाएं
- आपने पहले जो सदस्यता आईडी बनाया था उस पर क्लिक करें.
- आपको सदस्यता की जानकारी स्क्रीन पर, पुष्टि न किए गए मैसेज की संख्या चार्ट में गतिविधि दिखनी चाहिए. इससे पता चलता है कि आपकी सदस्यता के लिए इवेंट मैसेज मिल गए हैं. अगर आपको कोई गतिविधि नहीं दिखती है, तो कुछ देर इंतज़ार करें या कुछ और इवेंट जनरेट करें.
- मैसेज देखें पर क्लिक करके, मैसेज पैनल खोलें.
- मैसेज देखने के लिए, PULL पर क्लिक करें. ये उन कार्रवाइयों से मेल खाने चाहिए जिनका इस्तेमाल आपने इवेंट जनरेट करने के लिए किया था.
मैसेज को Cloud Shell में भी देखा जा सकता है. इसके लिए, pull कमांड का इस्तेमाल करें:
gcloud pubsub subscriptions pull subscription-idसदस्यता के टाइप के साथ-साथ SDM API से भेजे गए इवेंट के टाइप और उनके इस्तेमाल के तरीके के बारे में ज़्यादा जानने के लिए, इवेंट देखें.
मैसेज मैनेज करें
सदस्यता को साफ़-सुथरा रखने के लिए, मैसेज को नियमित तौर पर स्वीकार किया जाना चाहिए और उन्हें मिटाया जाना चाहिए. इससे, अन्य सदस्यों को डुप्लीकेट मैसेज डिलीवर होने से भी रोका जा सकेगा. Pub/Sub की सदस्यताएं सेक्शन में जाकर, सदस्यता से जुड़े सभी मैसेज को मैन्युअल तरीके से मिटाया जा सकता है:
Google Cloud Pub/Sub की सदस्यताएं पर जाएं
- सदस्यता आईडी पर क्लिक करें.
- डेटा को स्वीकार करने और मिटाने के कुछ तरीके यहां दिए गए हैं:
- मैसेज देखें पर क्लिक करके, मैसेज पैनल खोलें. पुष्टि करने वाले मैसेज चालू करें चेकबॉक्स पर सही का निशान लगाएं. इसके बाद, सभी मैसेज देखने और उनकी पुष्टि करने के लिए, PULL पर क्लिक करें.
- सभी मौजूदा मैसेज को बिना देखे मिटाने के लिए, मैसेज मिटाएं पर क्लिक करें. पुष्टि करने के लिए, PURGE पर क्लिक करें.
Cloud Shell में भी मैसेज मिटाए जा सकते हैं. इसके लिए, --auto-ack फ़्लैग का इस्तेमाल करके, pull कमांड का इस्तेमाल करें:
gcloud pubsub subscriptions pull subscription-id --auto-ackसदस्यताएं प्रबंधित करें
सदस्यताओं को कई तरीकों से कॉन्फ़िगर किया जा सकता है. इसके बारे में सदस्यता प्रॉपर्टी इस्तेमाल करना लेख में बताया गया है.
हालांकि, आपको अपनी सदस्यताएं और मैसेज कैसे मैनेज करने हैं, यह आप पर निर्भर करता है. हमारा सुझाव है कि प्रोडक्शन ऐप्लिकेशन के लिए, पुष्टि करने के लिए सेवा खातों का इस्तेमाल करें. अब तक आपने इस क्विकस्टार्ट गाइड में उपयोगकर्ता खाते का इस्तेमाल किया है. सेवा खाते का इस्तेमाल किसी ऐप्लिकेशन या वर्चुअल मशीन के लिए किया जाता है, न कि किसी व्यक्ति के लिए. साथ ही, इसकी अपनी यूनीक खाता कुंजी होती है.
Device Accessकी मदद से सेवा खाते की पुष्टि करने के बारे में ज़्यादा जानने के लिए, Events देखें.