सर्वरलेस डेटा पाइपलाइन बनाना: Analytics के लिए IoT

1. अवलोकन/परिचय

हालांकि, वेब, ऐप्लिकेशन सर्वर, और डेटाबेस जैसे कई लेवल वाले ऐप्लिकेशन, वेब डेवलपमेंट के बुनियादी सिद्धांत हैं और कई वेबसाइटों के लिए शुरुआती पॉइंट हैं. सफलता मिलने पर अक्सर उपयोगकर्ताओं को बेहतर अनुभव देने, इंटिग्रेशन, और बेहतर होने में कई चुनौतियां आती हैं. उदाहरण के लिए, रीयल-टाइम में डेटा को कैसे मैनेज किया जा सकता है और इसे एक से ज़्यादा मुख्य कारोबार सिस्टम में कैसे डिस्ट्रिब्यूट किया जा सकता है? इंटरनेट-स्केल वाले ऐप्लिकेशन की मांगों के साथ-साथ इन समस्याओं की वजह से, डिस्ट्रिब्यूटेड मैसेजिंग सिस्टम की ज़रूरत पड़ी. साथ ही, रीयल-टाइम सिस्टम को बेहतर बनाने के लिए, डेटा पाइपलाइन का इस्तेमाल करने के आर्किटेक्चर पैटर्न का जन्म हुआ. इसकी वजह से, यह समझना ज़रूरी है कि रीयल-टाइम डेटा को डिस्ट्रिब्यूट किए गए मैसेजिंग सिस्टम में कैसे पब्लिश किया जाए और फिर डेटा पाइपलाइन कैसे बनाई जाए, यह समझना डेवलपर और आर्किटेक्ट के लिए, समान रूप से ज़रूरी स्किल है.

आपको क्या बनाना है

इस कोडलैब में, आपको मौसम के डेटा की एक पाइपलाइन बनानी है. यह पाइपलाइन, इंटरनेट ऑफ़ थिंग्स (IoT) डिवाइस से शुरू होती है. यह डेटा पाने और डिलीवर करने के लिए, मैसेज क्यू का इस्तेमाल करती है. साथ ही, डेटा को डेटा वेयरहाउस में ले जाने के लिए, बिना सर्वर वाले फ़ंक्शन का इस्तेमाल करती है. इसके बाद, यह जानकारी दिखाने वाला डैशबोर्ड बनाती है. IoT डिवाइस के लिए, मौसम सेंसर वाले Raspberry Pi का इस्तेमाल किया जाएगा. साथ ही, Google Cloud Platform के कई कॉम्पोनेंट, डेटा पाइपलाइन बनाएंगे. Raspberry Pi को सेट अप करना इस कोडलैब का ज़रूरी हिस्सा नहीं है. हालांकि, इससे आपको फ़ायदा मिलेगा. साथ ही, मौसम की जानकारी को स्ट्रीम करने वाले डेटा को स्क्रिप्ट से बदला जा सकता है.

79cd6c68e83f7fea.png

इस कोडलैब में दिए गए चरणों को पूरा करने के बाद, आपके पास डेटा स्ट्रीम करने वाली एक पाइपलाइन होगी. इसमें एक डैशबोर्ड फ़ीड होगा, जिसमें तापमान, नमी, ओसांक (ड्यूपॉइंट), और हवा का दबाव दिखाया जाएगा.

e28ca9ea4abb1457.png

आपको इनके बारे में जानकारी मिलेगी

  • Google Pub/Sub का इस्तेमाल करने का तरीका
  • Google Cloud फ़ंक्शन को डिप्लॉय करने का तरीका
  • Google BigQuery का फ़ायदा पाने का तरीका
  • Google Data Studio का इस्तेमाल करके डैशबोर्ड बनाने का तरीका
  • साथ ही, अगर आपने IoT सेंसर बनाया है, तो आपको यह जानकारी भी मिलेगी कि Google Cloud SDK का इस्तेमाल कैसे किया जाता है. साथ ही, आपको Google Cloud Platform पर रिमोट ऐक्सेस वाले कॉल को सुरक्षित करने के तरीके के बारे में भी जानकारी मिलेगी

आपको इन चीज़ों की ज़रूरत होगी

अगर आपको सैंपल डेटा और स्क्रिप्ट का इस्तेमाल करने के बजाय, इस कोडलैब का IoT सेंसर हिस्सा बनाना है, तो आपको इन चीज़ों की भी ज़रूरत होगी ( इन्हें पूरी किट के तौर पर या अलग-अलग हिस्सों के तौर पर यहां ऑर्डर किया जा सकता है)...

  • Raspberry Pi Zero W, जिसमें पावर सप्लाई, एसडी मेमोरी कार्ड, और केस शामिल है
  • यूएसबी कार्ड रीडर
  • यूएसबी हब (इससे Raspberry Pi के एक ही यूएसबी पोर्ट में कीबोर्ड और माउस को कनेक्ट किया जा सकता है)
  • महिला से महिला ब्रेडबोर्ड के तार
  • GPIO हैमर हेडर
  • BME280 सेंसर
  • सोल्डर के साथ सोल्डरिंग आयरन

इसके अलावा, एचडीएमआई इनपुट वाले कंप्यूटर मॉनिटर या टीवी, एचडीएमआई केबल, कीबोर्ड, और माउस का ऐक्सेस माना जाता है.

2. सेट अप करना

अपने हिसाब से एनवायरमेंट सेट अप करना

अगर आपके पास पहले से Google खाता (Gmail या G Suite) नहीं है, तो एक खाता बनाएं. चाहे आपके पास पहले से Google खाता हो या न हो, $300 के मुफ़्त परीक्षण का लाभ ज़रूर उठाएं!

Google Cloud Platform कंसोल ( console.cloud.google.com) में साइन इन करें. इस लैब के लिए, डिफ़ॉल्ट प्रोजेक्ट ("मेरा पहला प्रोजेक्ट") का इस्तेमाल किया जा सकता है या कोई नया प्रोजेक्ट बनाया जा सकता है. अगर आपको कोई नया प्रोजेक्ट बनाना है, तो संसाधन मैनेज करें पेज का इस्तेमाल करें. प्रोजेक्ट आईडी का नाम, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक नाम होना चाहिए. नीचे दिया गया नाम पहले ही लिया जा चुका है और वह आपके लिए काम नहीं करेगा. अपना प्रोजेक्ट आईडी नोट कर लें. जैसे, आपका प्रोजेक्ट आईडी _____ होगा. इसकी ज़रूरत आपको बाद में पड़ेगी.

f414a63d955621a7.png

3415e861c09cd06a.png

इस कोडलैब को चलाने में कुछ डॉलर से ज़्यादा खर्च नहीं होगा. हालांकि, ज़्यादा संसाधनों का इस्तेमाल करने या उन्हें चालू रहने देने पर, ज़्यादा खर्च हो सकता है. कोडलैब के आखिर में, क्लीनअप सेक्शन ज़रूर देखें.

3. BigQuery टेबल बनाना

BigQuery एक ऐसा डेटा वेयरहाउस है जिसे बिना सर्वर के इस्तेमाल किया जा सकता है और जिसे बढ़ाया जा सकता है. साथ ही, यह IoT डिवाइसों से स्ट्रीम किए जा रहे डेटा को स्टोर करने के लिए एक बेहतरीन विकल्प है. साथ ही, इसकी मदद से Analytics डैशबोर्ड को जानकारी को क्वेरी करने की अनुमति भी मिल जाती है.

चलिए, एक टेबल बनाते हैं, जिसमें IoT मौसम का पूरा डेटा रखा जाएगा. Cloud Console से BigQuery चुनें. इससे BigQuery एक नई विंडो में खुल जाएगा. ओरिजनल विंडो बंद न करें, क्योंकि आपको इसे फिर से ऐक्सेस करना होगा.

12a838f78a10144a.png

अपने प्रोजेक्ट के नाम के बगल में मौजूद, डाउन ऐरो आइकॉन पर क्लिक करें. इसके बाद, "नया डेटासेट बनाएं" चुनें

27616683b64ce34a.png

डेटासेट के लिए "weatherData" डालें, वह जगह चुनें जहां इसे सेव किया जाएगा, और "ठीक है" पर क्लिक करें

62cfcbd1add830ea.png

नई टेबल बनाने के लिए, अपने डेटासेट के बगल में मौजूद "+" के निशान पर क्लिक करें

3d7bff6f9843fa3c.png

सोर्स डेटा के लिए, खाली टेबल बनाएं चुनें. डेस्टिनेशन टेबल के नाम के लिए, weatherDataTable डालें. स्कीमा में जाकर, फ़ील्ड जोड़ें बटन पर तब तक क्लिक करें, जब तक कुल नौ फ़ील्ड न हो जाएं. नीचे दिखाए गए फ़ील्ड को भरकर, पक्का करें कि हर फ़ील्ड के लिए सही टाइप भी चुना गया हो. सब कुछ पूरा हो जाने के बाद, टेबल बनाएं बटन पर क्लिक करें.

eef352614a5696a7.png

आपको ऐसा नतीजा दिखेगा...

7d10e5ab8c6d6a0d.png

अब आपके पास मौसम का डेटा पाने के लिए, डेटा वेयरहाउस सेट अप है.

4. Pub/Sub विषय बनाना

Cloud Pub/Sub, स्ट्रीम आंकड़े और इवेंट-ड्रिवन कंप्यूटिंग सिस्टम के लिए आसान, भरोसेमंद, और स्केलेबल फ़ाउंडेशन है. इसलिए, यह इनकमिंग IoT मैसेज को हैंडल करने और डाउनस्ट्रीम सिस्टम को उन्हें प्रोसेस करने की अनुमति देने के लिए एकदम सही है.

अगर आप अब भी BigQuery की विंडो में हैं, तो Cloud Console पर वापस जाएं. अगर आपने Cloud Console बंद कर दिया है, तो https://console.cloud.google.com पर जाएं

Cloud Console में, Pub/Sub और फिर Topics चुनें.

331ad71e8a1ea7b.png

अगर आपको 'एपीआई चालू करें' प्रॉम्प्ट दिखता है, तो 'एपीआई चालू करें' बटन पर क्लिक करें.

9f6fca9dc8684801.png

'कोई विषय बनाएं' बटन पर क्लिक करें

643670164e9fae12.png

विषय के नाम के तौर पर "weatherdata" डालें और बनाएं पर क्लिक करें

d7b049bc66a34db6.png

आपको नया विषय दिखेगा

7c385759f65a1031.png

अब आपके पास Pub/Sub का एक विषय है, ताकि आप IoT मैसेज पब्लिश कर सकें और अन्य प्रोसेस को उन मैसेज के ऐक्सेस की अनुमति मिल सके.

विषय पर पब्लिश करने की सुविधा को सुरक्षित करना

अगर आपको Google Cloud Console से बाहर के संसाधनों (जैसे, किसी IoT सेंसर) से Pub/Sub विषय पर मैसेज पब्लिश करने हैं, तो आपको सेवा खाते का इस्तेमाल करके ऐक्सेस को ज़्यादा सख्ती से कंट्रोल करना होगा. साथ ही, ट्रस्ट सर्टिफ़िकेट बनाकर कनेक्शन की सुरक्षा को पक्का करना होगा.

Cloud Console में जाकर, IAM और एडमिन चुनें. इसके बाद, सेवा खाते चुनें

8e2f8a1428d0feca.png

'सेवा खाता बनाएं' बटन पर क्लिक करें

60892b564e0ac140.png

'भूमिका' ड्रॉपडाउन में, Pub/Sub पब्लिशर की भूमिका चुनें

31f8c944af11270e.png

सेवा खाते का नाम (iotWeatherPublisher) टाइप करें, 'नई निजी कुंजी दें' चेकबॉक्स को चुनें, पक्का करें कि कुंजी का टाइप JSON पर सेट हो और "बनाएं" पर क्लिक करें

7e3f9d7e56a44796.png

सुरक्षा कुंजी अपने-आप डाउनलोड हो जाएगी. सिर्फ़ एक कुंजी होती है, इसलिए इसे खोना नहीं चाहिए. बंद करें पर क्लिक करें.

60a7da32dd85ba73.png

आपको दिखेगा कि एक सेवा खाता बनाया गया है और उससे जुड़ा एक कुंजी आईडी है.

b25f6f5629fe8fd7.png

कुंजी को बाद में आसानी से ऐक्सेस करने के लिए, हम इसे Google Cloud Storage में सेव करेंगे. Cloud Console में जाकर, स्टोरेज चुनें. इसके बाद, ब्राउज़र चुनें.

c4414fe61be320a9.png

बकेट बनाएं बटन पर क्लिक करें

cde91311b267fc65.png

स्टोरेज बकेट के लिए कोई नाम चुनें. इसके बाद, 'बनाएं' बटन पर क्लिक करें. यह नाम दुनिया भर में Google Cloud के सभी प्लैटफ़ॉर्म पर अलग-अलग होना चाहिए

28c10e41b401f479.png

अपने-आप डाउनलोड हुई सुरक्षा कुंजी ढूंढें. इसके बाद, उसे खींचकर स्टोरेज बकेट में छोड़ें या अपलोड करें

a0f6d069d42cec4b.png

पासकोड अपलोड होने के बाद, यह Cloud Storage ब्राउज़र में दिखेगा

55b25c8b9d73ec19.png

स्टोरेज बकेट का नाम और सुरक्षा कुंजी की फ़ाइल का नाम नोट करें, ताकि बाद में इनका इस्तेमाल किया जा सके.

5. कोई क्लाउड फ़ंक्शन बनाएं

क्लाउड कंप्यूटिंग ने कंप्यूटिंग के पूरी तरह से सर्वरलेस मॉडल को संभव बनाया है, जहां कहीं से भी शुरू होने वाले इवेंट के जवाब में तर्क को मांग पर इस्तेमाल किया जा सकता है. इस लैब के लिए, जब भी मौसम के बारे में जानकारी देने वाला मैसेज पब्लिश किया जाएगा, तब Cloud Function चालू होगा. साथ ही, वह मैसेज को पढ़ेगा और उसे BigQuery में सेव करेगा.

Cloud Console में, Cloud Functions चुनें

a14ac2e4f03bf831.png

अगर आपको एपीआई मैसेज दिखता है, तो 'एपीआई चालू करें' बटन पर क्लिक करें

40ba0a08430e0e8a.png

'फ़ंक्शन बनाएं' बटन पर क्लिक करें

5d82d8faeffa55bf.png

'नाम' फ़ील्ड में, function-weatherPubSubToBQ टाइप करें. ट्रिगर के लिए, Cloud Pub/Sub विषय चुनें. इसके बाद, विषय वाले ड्रॉपडाउन में मौसम का डेटा चुनें. सोर्स कोड के लिए, इनलाइन एडिटर चुनें. index.js टैब में, पहले से मौजूद कोड के ऊपर यह कोड चिपकाएं. प्रोजेक्ट आईडी, डेटासेट आईडी, और टेबल आईडी के कॉन्सटेंट बदलना न भूलें, ताकि आपके एनवायरमेंट के हिसाब से इसका इस्तेमाल किया जा सके.

/**
 * Background Cloud Function to be triggered by PubSub.
 *
 * @param {object} event The Cloud Functions event.
 * @param {function} callback The callback function.
 */
exports.subscribe = function (event, callback) {
  const BigQuery = require('@google-cloud/bigquery');
  const projectId = "myProject"; //Enter your project ID here
  const datasetId = "myDataset"; //Enter your BigQuery dataset name here
  const tableId = "myTable"; //Enter your BigQuery table name here -- make sure it is setup correctly
  const PubSubMessage = event.data;
  // Incoming data is in JSON format
  const incomingData = PubSubMessage.data ? Buffer.from(PubSubMessage.data, 'base64').toString() : "{'sensorID':'na','timecollected':'1/1/1970 00:00:00','zipcode':'00000','latitude':'0.0','longitude':'0.0','temperature':'-273','humidity':'-1','dewpoint':'-273','pressure':'0'}";
  const jsonData = JSON.parse(incomingData);
  var rows = [jsonData];

  console.log(`Uploading data: ${JSON.stringify(rows)}`);

  // Instantiates a client
  const bigquery = BigQuery({
    projectId: projectId
  });

  // Inserts data into a table
  bigquery
    .dataset(datasetId)
    .table(tableId)
    .insert(rows)
    .then((foundErrors) => {
      rows.forEach((row) => console.log('Inserted: ', row));

      if (foundErrors && foundErrors.insertErrors != undefined) {
        foundErrors.forEach((err) => {
            console.log('Error: ', err);
        })
      }
    })
    .catch((err) => {
      console.error('ERROR:', err);
    });
  // [END bigquery_insert_stream]


  callback();
};

package.json टैब में, प्लेसहोल्डर कोड के ऊपर यह कोड चिपकाएं

{
  "name": "function-weatherPubSubToBQ",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "dependencies": {
    "@google-cloud/bigquery": "^0.9.6"
  }
}

अगर लागू किया जाने वाला फ़ंक्शन "HelloWorld" पर सेट है, तो उसे "subscribe" में बदलें. बनाएं बटन क्लिक करें

3266d5268980a4db.png

आपके फ़ंक्शन के डिप्लॉय होने में करीब दो मिनट लगेंगे

26f45854948426d0.png

बधाई हो! आपने अभी-अभी Pub/Sub को फ़ंक्शन के ज़रिए BigQuery से कनेक्ट किया है.

6. स्मार्ट डिवाइस का हार्डवेयर सेटअप करना (ज़रूरी नहीं)

Raspberry Pi और सेंसर को इकट्ठा करना

अगर सात से ज़्यादा पिन हैं, तो हेडर को काट-छांट करके सिर्फ़ 7 पिन करें. हेडर पिन को सेंसर बोर्ड से जोड़ें.

a162e24426118c97.png

Raspberry Pi में सावधानी से हैमर हेडर पिन इंस्टॉल करें.

a3a697907fe3c9a9.png

एसडी कार्ड को फ़ॉर्मैट करें और यहां दिया गया तरीका अपनाकर, NOOBS (New Out Of Box Software) इंस्टॉलर इंस्टॉल करें. SD कार्ड को Raspberry Pi में डालें और Raspberry Pi को केस में रखें.

1e4e2459cd3333ec.png

नीचे दिए गए डायग्राम के मुताबिक, सेंसर को Raspberry Pi से जोड़ने के लिए, ब्रेडबोर्ड के तारों का इस्तेमाल करें.

392c2a9c85187094.png

Raspberry Pi पिन

सेंसर कनेक्शन

पिन 1 (3.3V)

VIN

पिन 3 (CPIO2)

SDI

पिन 5 (GPIO3)

SCK

पिन 9 (ग्राउंड)

GND

44322e38d467d66a.png

मॉनिटर (मिनी-एचडीएमआई कनेक्टर का इस्तेमाल करके), कीबोर्ड/माउस (यूएसबी हब के साथ) और आखिर में पावर अडैप्टर को कनेक्ट करें.

Raspberry Pi और सेंसर को कॉन्फ़िगर करना

Raspberry Pi के बूट होने के बाद, अपने पसंदीदा ऑपरेटिंग सिस्टम के लिए Raspbian चुनें. पक्का करें कि आपकी पसंदीदा भाषा सही हो. इसके बाद, 'इंस्टॉल करें' (विंडो के ऊपरी बाएं हिस्से में मौजूद हार्ड ड्राइव आइकॉन) पर क्लिक करें.

a16f0da19b93126.png

स्क्रीन पर सबसे ऊपर दाईं ओर मौजूद, वाई-फ़ाई आइकॉन पर क्लिक करें और कोई नेटवर्क चुनें. अगर यह सुरक्षित नेटवर्क है, तो पासवर्ड (पहले से शेयर की गई कुंजी) डालें.

17f380b2d41751a8.png

स्क्रीन के सबसे ऊपर बाईं ओर मौजूद रास्पबेरी आइकॉन पर क्लिक करें. इसके बाद, 'प्राथमिकताएं' और फिर 'रैज़बेरी पाई कॉन्फ़िगरेशन' को चुनें. इंटरफ़ेस टैब में जाकर, I2C को चालू करें. लोकलाइज़ेशन टैब से, स्थान-भाषा और टाइमज़ोन सेट करें. टाइमज़ोन सेट करने के बाद, Raspberry Pi को फिर से चालू होने दें.

14741a77fccdb7e7.png

रीबूट पूरा होने के बाद, टर्मिनल विंडो खोलने के लिए Terminal आइकॉन पर क्लिक करें.

9df6f228f6a31601.png

यह पक्का करने के लिए कि सेंसर सही तरीके से कनेक्ट किया गया है, नीचे दिया गया निर्देश लिखें.

  sudo i2cdetect -y 1

नतीजा कुछ ऐसा दिखेगा – पक्का करें कि यह 77 हो.

cd35cd97bee8085a.png

Google Cloud SDK इंस्टॉल करना

Google Cloud Platform के टूल का इस्तेमाल करने के लिए, Google Cloud SDK को Raspberry Pi पर इंस्टॉल करना होगा. SDK टूल में ऐसे टूल शामिल हैं जो Google Cloud Platform का इस्तेमाल करने और उसे मैनेज करने के लिए ज़रूरी हैं. यह कई प्रोग्रामिंग भाषाओं के लिए उपलब्ध है.

अगर Raspberry Pi में कोई टर्मिनल विंडो पहले से नहीं खुला है, तो एक टर्मिनल विंडो खोलें. साथ ही, एक ऐसा एनवायरमेंट वैरिएबल सेट करें जो Raspberry Pi में मौजूद ऑपरेटिंग सिस्टम से SDK टूल के वर्शन से मेल खाए.

  export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

अब उस जगह की जानकारी जोड़ें जहां Google Cloud SDK टूल के पैकेज सेव किए गए हैं. इससे, इंस्टॉलेशन टूल को यह पता चल पाएगा कि SDK टूल को इंस्टॉल करने के लिए कहां देखना है.

  echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" |  sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

Google के पैकेज रिपॉज़िटरी से सार्वजनिक कुंजी जोड़ें, ताकि Raspberry Pi इंस्टॉलेशन के दौरान सुरक्षा की पुष्टि कर सके और कॉन्टेंट पर भरोसा कर सके

  curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

पक्का करें कि Raspberry Pi में मौजूद सभी सॉफ़्टवेयर अप-टू-डेट हों और Google Cloud SDK टूल इंस्टॉल करें

  sudo apt-get update && sudo apt-get install google-cloud-sdk

"क्या आपको जारी रखना है?" के प्रॉम्प्ट मिलने पर, Enter दबाएं.

Python पैकेज मैनेजर का इस्तेमाल करके, Teno पैकेज इंस्टॉल करें. इस पैकेज का इस्तेमाल यह देखने के लिए किया जाता है कि कोई स्क्रिप्ट एक से ज़्यादा बार चल रही है या नहीं. साथ ही, इसे मौसम की स्क्रिप्ट पर लागू करने के लिए इंस्टॉल किया जा रहा है या नहीं.

  pip install tendo

पक्का करें कि Python के लिए Google Cloud PubSub और OAuth2 पैकेज इंस्टॉल हों और Python पैकेज मैनेजर का इस्तेमाल करके अप-टू-डेट हों

  sudo pip install --upgrade google-cloud-pubsub
  sudo pip install --upgrade oauth2client

Google Cloud SDK टूल को शुरू करना

SDK टूल, Google Cloud को रिमोट तरीके से, पुष्टि किए गए ऐक्सेस की अनुमति देता है. इस कोडलैब के लिए, इसका इस्तेमाल स्टोरेज बकेट को ऐक्सेस करने के लिए किया जाएगा, ताकि सुरक्षा कुंजी को Raspberry Pi में आसानी से डाउनलोड किया जा सके.

Raspberry Pi में स्थित कमांड लाइन से,

  gcloud init --console-only

"क्या आपको लॉग इन करना है (Y/n)?" के लिए कहा जाए, तो Enter दबाएं.

जब आपको "अपने ब्राउज़र में इस लिंक पर जाएं:" के बाद, https://accounts.google.com/o/oauth से शुरू होने वाला लंबा यूआरएल दिखे, तो माउस से यूआरएल पर कर्सर घुमाएं. इसके बाद, राइट क्लिक करके "यूआरएल कॉपी करें" को चुनें. फिर वेब ब्राउज़र खोलें (स्क्रीन के सबसे ऊपर बाएं कोने में नीला ग्लोब आइकॉन), पता बार पर राइट क्लिक करें और "चिपकाएं" पर क्लिक करें.

साइन इन करने के लिए स्क्रीन दिखने पर, अपने Google Cloud खाते से जुड़ा ईमेल पता डालें और Enter दबाएं. इसके बाद, अपना पासवर्ड डालें और 'आगे बढ़ें' बटन पर क्लिक करें.

आपसे कहा जाएगा कि Google Cloud SDK आपके Google खाते का ऐक्सेस चाहता है. अनुमति दें बटन पर क्लिक करें.

आपको पुष्टि करने के लिए कोड दिया जाएगा. माउस का इस्तेमाल करके उसे हाइलाइट करें. इसके बाद, उस पर राइट क्लिक करें और 'कॉपी करें' को चुनें. टर्मिनल विंडो पर वापस जाएं और पक्का करें कि कर्सर "पुष्टि करने के लिए कोड डालें" की दाईं ओर है. इसके बाद, माउस से राइट क्लिक करें और 'चिपकाएं' को चुनें. Enter बटन दबाएं.

अगर आपसे "इस्तेमाल करने के लिए क्लाउड प्रोजेक्ट चुनें:" के लिए कहा जाता है, तो इस कोडलैब के लिए इस्तेमाल किए जा रहे प्रोजेक्ट के नाम से जुड़ी संख्या डालें और फिर Enter दबाएं.

अगर आपसे Compute API को चालू करने के लिए कहा जाता है, तो उसे चालू करने के लिए Enter बटन दबाएं. इसके बाद, आपसे Google Compute Engine की सेटिंग कॉन्फ़िगर करने के लिए कहा जाएगा. Enter दबाएं. आपको संभावित इलाकों/ज़ोन की सूची दिखेगी – अपने आस-पास का कोई एक इलाका चुनें, उससे जुड़ा नंबर डालें, और Enter दबाएं.

कुछ समय में, आपको कुछ और जानकारी दिखेगी. Google Cloud SDK टूल को अब कॉन्फ़िगर कर दिया गया है. वेब ब्राउज़र विंडो को बंद किया जा सकता है, क्योंकि आने वाले समय में आपको इसकी ज़रूरत नहीं होगी.

सेंसर सॉफ़्टवेयर और मौसम की जानकारी देने वाले स्क्रिप्ट को इंस्टॉल करें

Raspberry Pi के कमांड लाइन से, इनपुट/आउटपुट पिन से जानकारी पढ़ने के लिए ज़रूरी पैकेज का क्लोन बनाएं.

  git clone https://github.com/adafruit/Adafruit_Python_GPIO

डाउनलोड किए गए पैकेज इंस्टॉल करें

  cd Adafruit_Python_GPIO

  sudo python setup.py install

  cd ..

मौसम सेंसर को चालू करने वाले प्रोजेक्ट कोड का क्लोन बनाएं

  git clone https://github.com/googlecodelabs/iot-data-pipeline

सेंसर ड्राइवर को उसी डायरेक्ट्री में कॉपी करें जिसमें डाउनलोड किया गया बाकी सॉफ़्टवेयर मौजूद है.

  cd iot-data-pipeline/third_party/Adafruit_BME280

  mv Adafruit_BME280.py ../..

  cd ../..

स्क्रिप्ट में बदलाव करने के लिए, ये टाइप करें...

  nano checkWeather.py

प्रोजेक्ट को अपने प्रोजेक्ट आईडी में बदलें और विषय को अपने Pub/Sub विषय के नाम में बदलें. इनके बारे में, इस कोडलैब के 'सेट अप करना' और 'Pub/Sub विषय बनाना' सेक्शन में बताया गया है.

सेंसर आईडी, सेंसरZipCode, सेंसरLat, और सेंसर लॉन्ग की वैल्यू को अपनी पसंद के मुताबिक बदलें. किसी खास जगह या पते के लिए, अक्षांश और देशांतर वैल्यू यहां देखी जा सकती हैं.

ज़रूरी बदलाव करने के बाद, नैनो एडिटर से बाहर निकलने के लिए Ctrl-X दबाएं. पुष्टि करने के लिए Y दबाएं.

# constants - change to fit your project and location
SEND_INTERVAL = 10 #seconds
sensor = BME280(t_mode=BME280_OSAMPLE_8, p_mode=BME280_OSAMPLE_8, h_mode=BME280_OSAMPLE_8)
credentials = GoogleCredentials.get_application_default()
project="myProject" #change this to your Google Cloud project id
topic = "myTopic" #change this to your Google Cloud PubSub topic name
sensorID = "s-Googleplex"
sensorZipCode = "94043"
sensorLat = "37.421655"
sensorLong = "-122.085637"

सुरक्षा कुंजी इंस्टॉल करना

"किसी विषय पर सुरक्षित तरीके से पब्लिश करना" सेक्शन में जाकर, सुरक्षा कुंजी को Raspberry Pi पर कॉपी करें.

अगर आपने सुरक्षा कुंजी को अपनी लोकल मशीन से Raspberry Pi (/home/pi डायरेक्ट्री में) पर कॉपी करने के लिए, SFTP या SCP का इस्तेमाल किया है, तो अगले चरण को छोड़ें और पाथ को एक्सपोर्ट करने के लिए नीचे जाएं.

अगर आपने सुरक्षा कुंजी को स्टोरेज बकेट में रखा है, तो आपको स्टोरेज बकेट का नाम और फ़ाइल का नाम याद रखना होगा. सुरक्षा कुंजी को कॉपी करने के लिए, gsutil कमांड का इस्तेमाल करें. यह कमांड, Google Storage को ऐक्सेस कर सकता है. इसकी वजह यह है कि इसका नाम gsutil है और फ़ाइल का पाथ gs:// से शुरू होता है. अपनी बकेट का नाम और फ़ाइल का नाम डालने के लिए, नीचे दिए गए निर्देश में बदलाव करना न भूलें.

  gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .

आपको एक मैसेज दिखेगा कि फ़ाइल कॉपी की जा रही है और फिर कार्रवाई पूरी हो गई है.

Raspberry Pi पर कमांड लाइन से, सुरक्षा कुंजी का पाथ एक्सपोर्ट करें (फ़ाइल का नाम बदलकर, अपने पास मौजूद नाम से मैच करें)

  export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json

अब आपके पास एक ऐसा IoT वेदर सेंसर है जो Google Cloud को डेटा भेजने के लिए तैयार है.

7. डेटा पाइपलाइन शुरू करना

आपको Compute API चालू करना पड़ सकता है

Raspberry Pi से डेटा स्ट्रीम करना

अगर आपने Raspberry Pi IoT वेदर सेंसर बनाया है, तो वह स्क्रिप्ट शुरू करें जो मौसम का डेटा पढ़कर, उसे Google Cloud Pub/Sub पर भेजेगी. अगर आप /home/pi/iot-data- टेबललाइन डायरेक्ट्री में नहीं हैं, तो पहले वहाँ ले जाएँ

  cd /home/pi/iot-data-pipeline

मौसम की स्क्रिप्ट शुरू करें

  python checkWeather.py

आपको टर्मिनल विंडो में, हर मिनट मौसम के डेटा के नतीजे दिखेंगे. डेटा फ़्लो होने पर, अगले सेक्शन पर जाया जा सकता है. जैसे, यह देखना कि डेटा फ़्लो हो रहा है या नहीं.

सिमुलेटेड डेटा स्ट्रीमिंग

अगर आपने IoT वेदर सेंसर नहीं बनाया है, तो Google Cloud Storage में सेव किए गए सार्वजनिक डेटासेट का इस्तेमाल करके, डेटा स्ट्रीमिंग को सिम्युलेट किया जा सकता है. इसके बाद, इस डेटासेट को मौजूदा Pub/Sub विषय में फ़ीड किया जा सकता है. Cloud Storage से कॉन्टेंट पढ़ने और Pub/Sub में, पब्लिश करने के लिए Google के दिए हुए टेंप्लेट के साथ-साथ Google Dataflow का इस्तेमाल किया जाएगा.

इस प्रोसेस के दौरान, Dataflow को कुछ समय के लिए स्टोरेज की जगह की ज़रूरत होगी. इसलिए, इस काम के लिए एक स्टोरेज बकेट बनाएं.

Cloud Console में, Storage और फिर Browser को चुनें.

c4414fe61be320a9.png

बकेट बनाएं बटन पर क्लिक करें

cde91311b267fc65.png

स्टोरेज बकेट के लिए कोई नाम चुनें. याद रखें, यह नाम Google Cloud के सभी प्लैटफ़ॉर्म पर यूनीक होना चाहिए. इसके बाद, 'बनाएं' बटन पर क्लिक करें. इस स्टोरेज बकेट का नाम याद रखें, क्योंकि आपको इसकी ज़रूरत जल्द ही पड़ेगी.

1dad4cfbccfc96b1.png

Cloud Console से, Dataflow चुनें.

43ec245b47ae2e78.png

टेंप्लेट से जॉब बनाएं (स्क्रीन के ऊपरी हिस्से में) पर क्लिक करें

da55aaf2a1b0a0d0.png

नौकरी की जानकारी नीचे दिए गए तरीके से भरें. साथ ही, इन बातों का ध्यान रखें:

  • dataflow-gcs-to-pubsub का जॉब नाम डालें
  • आपका क्षेत्र, आपके प्रोजेक्ट के होस्ट किए जाने की जगह के हिसाब से अपने-आप चुन लिया जाना चाहिए. आपको इसे बदलने की ज़रूरत नहीं है.
  • GCS टेक्स्ट से Cloud Pub/Sub में डेटा भेजने के लिए, Cloud Dataflow टेंप्लेट चुनना
  • इनपुट Cloud Storage फ़ाइलों के लिए, gs://codelab-iot-data-pipeline-sampleweatherdata/*.json डालें (यह एक सार्वजनिक डेटासेट है)
  • आउटपुट Pub/Sub विषय के लिए, सटीक पाथ आपके प्रोजेक्ट के नाम पर निर्भर करेगा. यह "projects/yourProjectName/topics/weatherdata" जैसा दिखेगा
  • आपने अभी-अभी "tmp" के फ़ाइल नाम प्रीफ़िक्स के साथ जिस Google Cloud Storage बकेट को बनाया है, उसके नाम पर अस्थायी जगह सेट करें. यह "gs://myStorageBucketName/tmp" की तरह दिखना चाहिए.

सभी जानकारी भरने के बाद (नीचे देखें), 'जॉब चलाएं' बटन पर क्लिक करें

5f8ca16672f19d9b.png

Dataflow जॉब चलने लगेगी.

e020015c369639ad.png

Dataflow जॉब को पूरा होने में करीब एक मिनट लगेगा.

218a3ff7197dcf75.png

8. देखें कि डेटा ट्रांसफ़र हो रहा है या नहीं

Cloud फ़ंक्शन के लॉग

पक्का करें कि Pub/Sub से क्लाउड फ़ंक्शन ट्रिगर हो रहा हो

  gcloud beta functions logs read function-weatherPubSubToBQ

लॉग से यह पता चलना चाहिए कि फ़ंक्शन एक्ज़ीक्यूट किया जा रहा है, डेटा मिल रहा है, और उसे BigQuery में डाला जा रहा है

d88f7831dabc8b3f.png

BigQuery डेटा

जांच करके पक्का करें कि डेटा, BigQuery टेबल में जा रहा है. Cloud Console में, BigQuery (bigquery.cloud.google.com) पर जाएं.

85627127d58f1d2e.png

प्रोजेक्ट के नाम (विंडो की बाईं ओर) में जाकर, डेटासेट (weatherData) पर क्लिक करें. इसके बाद, टेबल (weatherDataTable) पर क्लिक करें. इसके बाद, क्वेरी टेबल बटन पर क्लिक करें

44dc0f765a69580c.png

SQL स्टेटमेंट में तारे का निशान जोड़ें, ताकि उसे नीचे दिखाए गए तरीके से 'चुनें * FROM...' दिखे. इसके बाद, 'क्वेरी चलाएं' बटन पर क्लिक करें

b3a001e11c2902f2.png

जब आपसे कहा जाए, तब 'क्वेरी चलाएं' बटन पर क्लिक करें

2c894d091b789ca3.png

अगर आपको नतीजे दिखते हैं, तो इसका मतलब है कि डेटा सही तरीके से फ़्लो हो रहा है.

c8a061cebb7b528a.png

डेटा मिलने के बाद, अब आपके पास आंकड़ों का डैशबोर्ड बनाने का विकल्प है.

9. Data Studio डैशबोर्ड बनाना

'Google डेटा स्टूडियो' आपके डेटा को जानकारी देने वाले डैशबोर्ड और रिपोर्ट में बदल देता है, जिसे आसानी से पढ़ा और शेयर किया जा सकता है और पूरी तरह से पसंद के मुताबिक बनाया जा सकता है.

अपने वेब ब्राउज़र से, https://datastudio.google.com पर जाएं

10f8c27060cd7430.png

"नई रिपोर्ट शुरू करें" में जाकर, खाली पर क्लिक करें. इसके बाद, 'शुरू करें' बटन पर क्लिक करें

df1404bc0047595e.png

शर्तें स्वीकार करने के लिए, चेकबॉक्स पर क्लिक करें. इसके बाद, 'आगे बढ़ें' बटन पर क्लिक करें. इसके बाद, वे ईमेल चुनें जिन्हें आपको पाने हैं और 'हो गया' बटन पर क्लिक करें. दोबारा, "नई रिपोर्ट शुरू करें" में जाकर, ब्लैंक पर क्लिक करें

55e91d3dd88b05ca.png

'नया डेटा सोर्स बनाएं' बटन पर क्लिक करें

a22f3fac05774fc9.png

BigQuery पर क्लिक करने के बाद, 'अनुमति दें' बटन पर क्लिक करें. इसके बाद, वह Google खाता चुनें जिसका इस्तेमाल आपको Data Studio के साथ करना है. यह वही खाता होना चाहिए जिसका इस्तेमाल कोडलैब के लिए किया जा रहा है.

5ab03f341edc8964.png

'अनुमति दें' बटन पर क्लिक करें

22bcdbb5f5f1d30c.png

अपने प्रोजेक्ट का नाम, डेटासेट, और टेबल चुनें. इसके बाद, 'कनेक्ट करें' बटन पर क्लिक करें.

dc6b6b0ed9ced509.png

टाइप फ़ील्ड को यहां दिखाए गए तरीके से बदलें. timecollected और sensorID को छोड़कर, बाकी सभी फ़ील्ड में संख्या होनी चाहिए. ध्यान दें कि timecollected, तारीख और घंटे पर सेट है, न कि सिर्फ़ तारीख पर. एग्रीगेशन फ़ील्ड को यहां दिखाए गए तरीके से बदलें. ड्यू पॉइंट, तापमान, आर्द्रता, और दबाव के लिए औसत वैल्यू का इस्तेमाल करें. बाकी सभी फ़ील्ड के लिए "कोई नहीं" सेट करें. 'रिपोर्ट बनाएं' बटन पर क्लिक करें.

c60887e29c3bdf9b.png

'रिपोर्ट में जोड़ें' बटन पर क्लिक करके पुष्टि करें

5ec3888dfdd85095.png

अगर आपसे अपना Google खाता चुनने के लिए कहा जाए, तो 'अनुमति दें' बटन पर क्लिक करें, ताकि Data Studio अपनी रिपोर्ट Google Drive में सेव कर सके.

7b8006a813b3defa.png

आपको एक खाली कैनवस दिखेगा, जिस पर अपना डैशबोर्ड बनाया जा सकता है. आइकॉन की सबसे ऊपर वाली लाइन में, टाइम सीरीज़ चुनें.

c7cd97354e1cde04.png

खाली शीट के सबसे ऊपर बाएं कोने में एक रेक्टैंगल बनाएं. यह पूरी खाली शीट का लगभग ¼ हिस्सा होना चाहिए.

e0e82cb19921f835.png

विंडो की दाईं ओर, स्टाइल टैब चुनें. जो डेटा मौजूद नहीं है उसे "लाइन टू ज़ीरो" से "लाइन ब्रेक" में बदलें. बाएं Y-ऐक्सिस सेक्शन में, ऐक्सिस की सबसे कम वैल्यू से 0 को मिटाएं, ताकि इसे (ऑटो) में बदला जा सके.

c7620bfe734d546.png

शीट पर ग्राफ़ पर क्लिक करें और उसे तीन बार कॉपी/पेस्ट करें (Ctrl-C/Ctrl-V). ग्राफ़ को अलाइन करें, ताकि हर ग्राफ़ में लेआउट का ¼ हिस्सा हो.

9a7d3faa28996219.png

हर ग्राफ़ पर क्लिक करें. इसके बाद, टाइम सीरीज़ प्रॉपर्टी और डेटा सेक्शन में मौजूद, मौजूदा मेट्रिक (ड्यूपॉइंट) पर क्लिक करें. इसके बाद, कोई दूसरी मेट्रिक चुनें. ऐसा तब तक करें, जब तक मौसम की चारों रीडिंग (ड्यूपॉइंट, तापमान, आर्द्रता, और दबाव) का अपना ग्राफ़ न बन जाए.

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

अब आपके पास एक बुनियादी डैशबोर्ड है!

8f59e8f4d44b8552.png

10. बधाई हो!

आपने पूरी डेटा पाइपलाइन बना ली है! ऐसा करने के दौरान, आपने Google Pub/Sub का इस्तेमाल करने, सर्वरलेस फ़ंक्शन को डिप्लॉय करने, BigQuery का फ़ायदा पाने, और Data Studio का इस्तेमाल करके आंकड़ों का डैशबोर्ड बनाने का तरीका जाना है. साथ ही, आपने यह भी देखा है कि Google Cloud Platform में डेटा डालने के लिए, Google Cloud SDK टूल का इस्तेमाल कैसे सुरक्षित तरीके से किया जा सकता है. आखिर में, अब आपको प्रोजेक्ट के अहम पैटर्न को इस्तेमाल करने का अनुभव मिलता है. इसकी मदद से, डिवाइस की उपलब्धता बनाए रखने के साथ-साथ, ज़्यादा वॉल्यूम में भी काम किया जा सकता है.

79cd6c68e83f7fea.png

मिटाना

मौसम के डेटा और आंकड़ों की पाइपलाइन के साथ एक्सपेरिमेंट करने के बाद, मौजूदा संसाधनों को हटाया जा सकता है.

अगर आपने IoT सेंसर बनाया है, तो उसे बंद कर दें. स्क्रिप्ट को रोकने के लिए, टर्मिनल विंडो में Ctrl-C दबाएं. इसके बाद, Raspberry Pi को बंद करने के लिए यह लिखें

  shutdown -h now

Cloud Functions पर जाएं. इसके बाद, function-weatherPubSubToBQ के बगल में मौजूद चेकबॉक्स पर क्लिक करें. इसके बाद, 'मिटाएं' पर क्लिक करें

ae95f4f7178262e0.png

Pub/Sub पर जाएं, 'विषय' पर क्लिक करें, weatherdata विषय के बगल में मौजूद चेकबॉक्स पर क्लिक करें, और फिर 'मिटाएं' पर क्लिक करें

6fb0bba3163d9a32.png

'स्टोरेज' में जाकर, स्टोरेज बकेट के बगल में मौजूद चेकबॉक्स पर क्लिक करें. इसके बाद, 'मिटाएं' पर क्लिक करें

9067fb2af9f907f4.png

bigquery.cloud.google.com पर जाएं. इसके बाद, अपने प्रोजेक्ट के नाम के बगल में मौजूद, डाउन ऐरो पर क्लिक करें. इसके बाद, weatherData डेटासेट की दाईं ओर मौजूद, डाउन ऐरो पर क्लिक करें. इसके बाद, 'डेटासेट मिटाएं' पर क्लिक करें.

a952dfeec49248c4.png

डेटा मिटाने की प्रोसेस पूरी करने के लिए, जब कहा जाए, तब डेटासेट आईडी (weatherData) टाइप करें.

6310b1cc8da31a77.png