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

1. खास जानकारी/परिचय

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

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

इस कोडलैब में, आपको मौसम के डेटा की पाइपलाइन बनानी है. यह पाइपलाइन, इंटरनेट ऑफ़ थिंग्स (आईओटी) डिवाइस से शुरू होती है. इसमें डेटा पाने और भेजने के लिए, मैसेज क्यू का इस्तेमाल किया जाता है. साथ ही, डेटा को डेटा वेयरहाउस में ले जाने के लिए, बिना सर्वर वाले फ़ंक्शन का इस्तेमाल किया जाता है. इसके बाद, एक ऐसा डैशबोर्ड बनाया जाता है जिस पर जानकारी दिखती है. 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 ( console.cloud.google.com) में साइन इन करें. इस लैब के लिए, डिफ़ॉल्ट प्रोजेक्ट ("My First Project") का इस्तेमाल किया जा सकता है. इसके अलावा, नया प्रोजेक्ट भी बनाया जा सकता है. अगर आपको नया प्रोजेक्ट बनाना है, तो संसाधन मैनेज करें पेज का इस्तेमाल करें. प्रोजेक्ट आईडी, सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होना चाहिए. यहां दिखाया गया प्रोजेक्ट आईडी पहले से इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. अपने प्रोजेक्ट आईडी (जैसे, आपका प्रोजेक्ट आईडी _____ होगा) को नोट कर लें, क्योंकि बाद में इसकी ज़रूरत पड़ेगी.

f414a63d955621a7.png

3415e861c09cd06a.png

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

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

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

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

12a838f78a10144a.png

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

27616683b64ce34a.png

डेटासेट के लिए "weatherData" डालें. इसके बाद, वह जगह चुनें जहां इसे सेव किया जाएगा और "OK" पर क्लिक करें

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 में जाकर, Storage और फिर Browser को चुनें.

c4414fe61be320a9.png

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

cde91311b267fc65.png

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

28c10e41b401f479.png

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

a0f6d069d42cec4b.png

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

55b25c8b9d73ec19.png

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

5. Cloud फ़ंक्शन बनाना

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

Cloud Console में जाकर, Cloud Functions चुनें

a14ac2e4f03bf831.png

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

40ba0a08430e0e8a.png

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

5d82d8faeffa55bf.png

नाम फ़ील्ड में, function-weatherPubSubToBQ टाइप करें. ट्रिगर के लिए, Cloud Pub/Sub टॉपिक चुनें. इसके बाद, टॉपिक ड्रॉपडाउन में जाकर, weatherdata चुनें. सोर्स कोड के लिए, इनलाइन एडिटर चुनें. index.js टैब में, यहां दिया गया कोड चिपकाएं. पक्का करें कि आपने projectId, datasetId, और tableId के कॉन्स्टेंट को अपने एनवायरमेंट के हिसाब से बदल दिया हो.

/**
 * 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

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

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

Raspberry Pi और सेंसर को असेंबल करना

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

a162e24426118c97.png

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

a3a697907fe3c9a9.png

एसडी कार्ड को फ़ॉर्मैट करें और NOOBS (न्यू आउट ऑफ़ बॉक्स सॉफ़्टवेयर) इंस्टॉलर इंस्टॉल करें. इसके लिए, यहां दिया गया तरीका अपनाएं. एसडी कार्ड को 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

रास्पबेरी आइकॉन (स्क्रीन पर सबसे ऊपर बाईं ओर) पर क्लिक करें. इसके बाद, Preferences और फिर Raspberry Pi Configuration को चुनें. इंटरफ़ेस टैब में जाकर, I2C चालू करें. स्थानीय भाषा टैब में जाकर, स्थान-भाषा और टाइमज़ोन सेट करें. टाइमज़ोन सेट करने के बाद, Raspberry Pi को रीबूट करने की अनुमति दें.

14741a77fccdb7e7.png

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

9df6f228f6a31601.png

सेंसर सही तरीके से कनेक्ट है या नहीं, यह पक्का करने के लिए यह कमांड टाइप करें.

  sudo i2cdetect -y 1

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

cd35cd97bee8085a.png

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

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

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

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

अब उस जगह की जानकारी जोड़ें जहां Google Cloud 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 पैकेज मैनेजर का इस्तेमाल करके, tendo पैकेज इंस्टॉल करें. इस पैकेज का इस्तेमाल यह देखने के लिए किया जाता है कि कोई स्क्रिप्ट एक से ज़्यादा बार चल रही है या नहीं. साथ ही, इसे मौसम की स्क्रिप्ट के लिए इंस्टॉल किया जा रहा है.

  pip install tendo

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

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

Google Cloud 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 verification code:" के दाईं ओर हो. इसके बाद, माउस से राइट क्लिक करें और फिर चिपकाएं चुनें. Enter बटन दबाएं.

अगर आपसे "Pick cloud project to use:" पूछा जाता है, तो उस प्रोजेक्ट के नाम के हिसाब से नंबर डालें जिसका इस्तेमाल आपने इस कोडलैब के लिए किया है. इसके बाद, 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 विषय बनाना' सेक्शन में दिए गए थे.

sensorID, sensorZipCode, sensorLat, और sensorLong की वैल्यू को अपनी पसंद के मुताबिक बदलें. किसी जगह या पते के अक्षांश और देशांतर की वैल्यू यहां देखी जा सकती हैं.

ज़रूरी बदलाव करने के बाद, nano एडिटर से बाहर निकलने के लिए 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 पर सुरक्षा कुंजी को कॉपी करने के लिए, SFTP या SCP का इस्तेमाल किया है (इसे /home/pi डायरेक्ट्री में कॉपी किया गया है), तो अगले चरण को छोड़कर, सीधे पाथ एक्सपोर्ट करने पर जाएं.

अगर आपने सुरक्षा कुंजी को किसी स्टोरेज बकेट में रखा है, तो आपको स्टोरेज बकेट और फ़ाइल का नाम याद रखना होगा. सुरक्षा कुंजी को कॉपी करने के लिए, 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-pipeline डायरेक्ट्री में नहीं हैं, तो पहले वहां जाएं

  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 डालें. यह एक सार्वजनिक डेटासेट है
  • Output Pub/Sub विषय के लिए, पूरा पाथ आपके प्रोजेक्ट के नाम पर निर्भर करेगा. यह कुछ इस तरह दिखेगा: "projects/yourProjectName/topics/weatherdata"
  • अस्थायी जगह की जानकारी को, Google Cloud Storage बकेट के उस नाम पर सेट करें जिसे आपने अभी बनाया है. साथ ही, फ़ाइल के नाम का प्रीफ़िक्स "tmp" भी सेट करें. यह "gs://myStorageBucketName/tmp" जैसा दिखना चाहिए.

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

5f8ca16672f19d9b.png

Dataflow जॉब चलना शुरू हो जाएगा.

e020015c369639ad.png

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

218a3ff7197dcf75.png

8. देखें कि डेटा इकट्ठा हो रहा है या नहीं

Cloud Functions के लॉग

पक्का करें कि Cloud Function, 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 स्टेटमेंट में तारे का निशान जोड़ें, ताकि यह SELECT * FROM... की तरह दिखे. इसके बाद, 'क्वेरी चलाएं' बटन पर क्लिक करें

b3a001e11c2902f2.png

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

2c894d091b789ca3.png

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

c8a061cebb7b528a.png

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

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 का इस्तेमाल करके Analytics डैशबोर्ड बनाने का तरीका सीखा. इसके अलावा, आपने यह भी देखा कि Google Cloud SDK का इस्तेमाल, Google Cloud Platform में डेटा लाने के लिए सुरक्षित तरीके से कैसे किया जा सकता है. आखिर में, अब आपके पास एक अहम आर्किटेक्चरल पैटर्न का कुछ व्यावहारिक अनुभव है. यह पैटर्न, उपलब्धता बनाए रखते हुए ज़्यादा वॉल्यूम को हैंडल कर सकता है.

79cd6c68e83f7fea.png

मिटाना

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

अगर आपने 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