1. अवलोकन/परिचय
हालांकि, वेब, ऐप्लिकेशन सर्वर, और डेटाबेस जैसे कई लेवल वाले ऐप्लिकेशन, वेब डेवलपमेंट के बुनियादी सिद्धांत हैं और कई वेबसाइटों के लिए शुरुआती पॉइंट हैं. सफलता मिलने पर अक्सर उपयोगकर्ताओं को बेहतर अनुभव देने, इंटिग्रेशन, और बेहतर होने में कई चुनौतियां आती हैं. उदाहरण के लिए, रीयल-टाइम में डेटा को कैसे मैनेज किया जा सकता है और इसे एक से ज़्यादा मुख्य कारोबार सिस्टम में कैसे डिस्ट्रिब्यूट किया जा सकता है? इंटरनेट-स्केल वाले ऐप्लिकेशन की मांगों के साथ-साथ इन समस्याओं की वजह से, डिस्ट्रिब्यूटेड मैसेजिंग सिस्टम की ज़रूरत पड़ी. साथ ही, रीयल-टाइम सिस्टम को बेहतर बनाने के लिए, डेटा पाइपलाइन का इस्तेमाल करने के आर्किटेक्चर पैटर्न का जन्म हुआ. इसकी वजह से, यह समझना ज़रूरी है कि रीयल-टाइम डेटा को डिस्ट्रिब्यूट किए गए मैसेजिंग सिस्टम में कैसे पब्लिश किया जाए और फिर डेटा पाइपलाइन कैसे बनाई जाए, यह समझना डेवलपर और आर्किटेक्ट के लिए, समान रूप से ज़रूरी स्किल है.
आपको क्या बनाना है
इस कोडलैब में, आपको मौसम के डेटा की एक पाइपलाइन बनानी है. यह पाइपलाइन, इंटरनेट ऑफ़ थिंग्स (IoT) डिवाइस से शुरू होती है. यह डेटा पाने और डिलीवर करने के लिए, मैसेज क्यू का इस्तेमाल करती है. साथ ही, डेटा को डेटा वेयरहाउस में ले जाने के लिए, बिना सर्वर वाले फ़ंक्शन का इस्तेमाल करती है. इसके बाद, यह जानकारी दिखाने वाला डैशबोर्ड बनाती है. IoT डिवाइस के लिए, मौसम सेंसर वाले Raspberry Pi का इस्तेमाल किया जाएगा. साथ ही, Google Cloud Platform के कई कॉम्पोनेंट, डेटा पाइपलाइन बनाएंगे. Raspberry Pi को सेट अप करना इस कोडलैब का ज़रूरी हिस्सा नहीं है. हालांकि, इससे आपको फ़ायदा मिलेगा. साथ ही, मौसम की जानकारी को स्ट्रीम करने वाले डेटा को स्क्रिप्ट से बदला जा सकता है.
इस कोडलैब में दिए गए चरणों को पूरा करने के बाद, आपके पास डेटा स्ट्रीम करने वाली एक पाइपलाइन होगी. इसमें एक डैशबोर्ड फ़ीड होगा, जिसमें तापमान, नमी, ओसांक (ड्यूपॉइंट), और हवा का दबाव दिखाया जाएगा.
आपको इनके बारे में जानकारी मिलेगी
- Google Pub/Sub का इस्तेमाल करने का तरीका
- Google Cloud फ़ंक्शन को डिप्लॉय करने का तरीका
- Google BigQuery का फ़ायदा पाने का तरीका
- Google Data Studio का इस्तेमाल करके डैशबोर्ड बनाने का तरीका
- साथ ही, अगर आपने IoT सेंसर बनाया है, तो आपको यह जानकारी भी मिलेगी कि Google Cloud SDK का इस्तेमाल कैसे किया जाता है. साथ ही, आपको Google Cloud Platform पर रिमोट ऐक्सेस वाले कॉल को सुरक्षित करने के तरीके के बारे में भी जानकारी मिलेगी
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud Platform खाता. Google Cloud Platform के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने की सुविधा का फ़ायदा ले सकते हैं.
अगर आपको सैंपल डेटा और स्क्रिप्ट का इस्तेमाल करने के बजाय, इस कोडलैब का 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 के सभी प्रोजेक्ट के लिए यूनीक नाम होना चाहिए. नीचे दिया गया नाम पहले ही लिया जा चुका है और वह आपके लिए काम नहीं करेगा. अपना प्रोजेक्ट आईडी नोट कर लें. जैसे, आपका प्रोजेक्ट आईडी _____ होगा. इसकी ज़रूरत आपको बाद में पड़ेगी.
इस कोडलैब को चलाने में कुछ डॉलर से ज़्यादा खर्च नहीं होगा. हालांकि, ज़्यादा संसाधनों का इस्तेमाल करने या उन्हें चालू रहने देने पर, ज़्यादा खर्च हो सकता है. कोडलैब के आखिर में, क्लीनअप सेक्शन ज़रूर देखें.
3. BigQuery टेबल बनाना
BigQuery एक ऐसा डेटा वेयरहाउस है जिसे बिना सर्वर के इस्तेमाल किया जा सकता है और जिसे बढ़ाया जा सकता है. साथ ही, यह IoT डिवाइसों से स्ट्रीम किए जा रहे डेटा को स्टोर करने के लिए एक बेहतरीन विकल्प है. साथ ही, इसकी मदद से Analytics डैशबोर्ड को जानकारी को क्वेरी करने की अनुमति भी मिल जाती है.
चलिए, एक टेबल बनाते हैं, जिसमें IoT मौसम का पूरा डेटा रखा जाएगा. Cloud Console से BigQuery चुनें. इससे BigQuery एक नई विंडो में खुल जाएगा. ओरिजनल विंडो बंद न करें, क्योंकि आपको इसे फिर से ऐक्सेस करना होगा.
अपने प्रोजेक्ट के नाम के बगल में मौजूद, डाउन ऐरो आइकॉन पर क्लिक करें. इसके बाद, "नया डेटासेट बनाएं" चुनें
डेटासेट के लिए "weatherData" डालें, वह जगह चुनें जहां इसे सेव किया जाएगा, और "ठीक है" पर क्लिक करें
नई टेबल बनाने के लिए, अपने डेटासेट के बगल में मौजूद "+" के निशान पर क्लिक करें
सोर्स डेटा के लिए, खाली टेबल बनाएं चुनें. डेस्टिनेशन टेबल के नाम के लिए, weatherDataTable डालें. स्कीमा में जाकर, फ़ील्ड जोड़ें बटन पर तब तक क्लिक करें, जब तक कुल नौ फ़ील्ड न हो जाएं. नीचे दिखाए गए फ़ील्ड को भरकर, पक्का करें कि हर फ़ील्ड के लिए सही टाइप भी चुना गया हो. सब कुछ पूरा हो जाने के बाद, टेबल बनाएं बटन पर क्लिक करें.
आपको ऐसा नतीजा दिखेगा...
अब आपके पास मौसम का डेटा पाने के लिए, डेटा वेयरहाउस सेट अप है.
4. Pub/Sub विषय बनाना
Cloud Pub/Sub, स्ट्रीम आंकड़े और इवेंट-ड्रिवन कंप्यूटिंग सिस्टम के लिए आसान, भरोसेमंद, और स्केलेबल फ़ाउंडेशन है. इसलिए, यह इनकमिंग IoT मैसेज को हैंडल करने और डाउनस्ट्रीम सिस्टम को उन्हें प्रोसेस करने की अनुमति देने के लिए एकदम सही है.
अगर आप अब भी BigQuery की विंडो में हैं, तो Cloud Console पर वापस जाएं. अगर आपने Cloud Console बंद कर दिया है, तो https://console.cloud.google.com पर जाएं
Cloud Console में, Pub/Sub और फिर Topics चुनें.
अगर आपको 'एपीआई चालू करें' प्रॉम्प्ट दिखता है, तो 'एपीआई चालू करें' बटन पर क्लिक करें.
'कोई विषय बनाएं' बटन पर क्लिक करें
विषय के नाम के तौर पर "weatherdata" डालें और बनाएं पर क्लिक करें
आपको नया विषय दिखेगा
अब आपके पास Pub/Sub का एक विषय है, ताकि आप IoT मैसेज पब्लिश कर सकें और अन्य प्रोसेस को उन मैसेज के ऐक्सेस की अनुमति मिल सके.
विषय पर पब्लिश करने की सुविधा को सुरक्षित करना
अगर आपको Google Cloud Console से बाहर के संसाधनों (जैसे, किसी IoT सेंसर) से Pub/Sub विषय पर मैसेज पब्लिश करने हैं, तो आपको सेवा खाते का इस्तेमाल करके ऐक्सेस को ज़्यादा सख्ती से कंट्रोल करना होगा. साथ ही, ट्रस्ट सर्टिफ़िकेट बनाकर कनेक्शन की सुरक्षा को पक्का करना होगा.
Cloud Console में जाकर, IAM और एडमिन चुनें. इसके बाद, सेवा खाते चुनें
'सेवा खाता बनाएं' बटन पर क्लिक करें
'भूमिका' ड्रॉपडाउन में, Pub/Sub पब्लिशर की भूमिका चुनें
सेवा खाते का नाम (iotWeatherPublisher) टाइप करें, 'नई निजी कुंजी दें' चेकबॉक्स को चुनें, पक्का करें कि कुंजी का टाइप JSON पर सेट हो और "बनाएं" पर क्लिक करें
सुरक्षा कुंजी अपने-आप डाउनलोड हो जाएगी. सिर्फ़ एक कुंजी होती है, इसलिए इसे खोना नहीं चाहिए. बंद करें पर क्लिक करें.
आपको दिखेगा कि एक सेवा खाता बनाया गया है और उससे जुड़ा एक कुंजी आईडी है.
कुंजी को बाद में आसानी से ऐक्सेस करने के लिए, हम इसे Google Cloud Storage में सेव करेंगे. Cloud Console में जाकर, स्टोरेज चुनें. इसके बाद, ब्राउज़र चुनें.
बकेट बनाएं बटन पर क्लिक करें
स्टोरेज बकेट के लिए कोई नाम चुनें. इसके बाद, 'बनाएं' बटन पर क्लिक करें. यह नाम दुनिया भर में Google Cloud के सभी प्लैटफ़ॉर्म पर अलग-अलग होना चाहिए
अपने-आप डाउनलोड हुई सुरक्षा कुंजी ढूंढें. इसके बाद, उसे खींचकर स्टोरेज बकेट में छोड़ें या अपलोड करें
पासकोड अपलोड होने के बाद, यह Cloud Storage ब्राउज़र में दिखेगा
स्टोरेज बकेट का नाम और सुरक्षा कुंजी की फ़ाइल का नाम नोट करें, ताकि बाद में इनका इस्तेमाल किया जा सके.
5. कोई क्लाउड फ़ंक्शन बनाएं
क्लाउड कंप्यूटिंग ने कंप्यूटिंग के पूरी तरह से सर्वरलेस मॉडल को संभव बनाया है, जहां कहीं से भी शुरू होने वाले इवेंट के जवाब में तर्क को मांग पर इस्तेमाल किया जा सकता है. इस लैब के लिए, जब भी मौसम के बारे में जानकारी देने वाला मैसेज पब्लिश किया जाएगा, तब Cloud Function चालू होगा. साथ ही, वह मैसेज को पढ़ेगा और उसे BigQuery में सेव करेगा.
Cloud Console में, Cloud Functions चुनें
अगर आपको एपीआई मैसेज दिखता है, तो 'एपीआई चालू करें' बटन पर क्लिक करें
'फ़ंक्शन बनाएं' बटन पर क्लिक करें
'नाम' फ़ील्ड में, 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" में बदलें. बनाएं बटन क्लिक करें
आपके फ़ंक्शन के डिप्लॉय होने में करीब दो मिनट लगेंगे
बधाई हो! आपने अभी-अभी Pub/Sub को फ़ंक्शन के ज़रिए BigQuery से कनेक्ट किया है.
6. स्मार्ट डिवाइस का हार्डवेयर सेटअप करना (ज़रूरी नहीं)
Raspberry Pi और सेंसर को इकट्ठा करना
अगर सात से ज़्यादा पिन हैं, तो हेडर को काट-छांट करके सिर्फ़ 7 पिन करें. हेडर पिन को सेंसर बोर्ड से जोड़ें.
Raspberry Pi में सावधानी से हैमर हेडर पिन इंस्टॉल करें.
एसडी कार्ड को फ़ॉर्मैट करें और यहां दिया गया तरीका अपनाकर, NOOBS (New Out Of Box Software) इंस्टॉलर इंस्टॉल करें. SD कार्ड को Raspberry Pi में डालें और Raspberry Pi को केस में रखें.
नीचे दिए गए डायग्राम के मुताबिक, सेंसर को Raspberry Pi से जोड़ने के लिए, ब्रेडबोर्ड के तारों का इस्तेमाल करें.
Raspberry Pi पिन | सेंसर कनेक्शन |
पिन 1 (3.3V) | VIN |
पिन 3 (CPIO2) | SDI |
पिन 5 (GPIO3) | SCK |
पिन 9 (ग्राउंड) | GND |
मॉनिटर (मिनी-एचडीएमआई कनेक्टर का इस्तेमाल करके), कीबोर्ड/माउस (यूएसबी हब के साथ) और आखिर में पावर अडैप्टर को कनेक्ट करें.
Raspberry Pi और सेंसर को कॉन्फ़िगर करना
Raspberry Pi के बूट होने के बाद, अपने पसंदीदा ऑपरेटिंग सिस्टम के लिए Raspbian चुनें. पक्का करें कि आपकी पसंदीदा भाषा सही हो. इसके बाद, 'इंस्टॉल करें' (विंडो के ऊपरी बाएं हिस्से में मौजूद हार्ड ड्राइव आइकॉन) पर क्लिक करें.
स्क्रीन पर सबसे ऊपर दाईं ओर मौजूद, वाई-फ़ाई आइकॉन पर क्लिक करें और कोई नेटवर्क चुनें. अगर यह सुरक्षित नेटवर्क है, तो पासवर्ड (पहले से शेयर की गई कुंजी) डालें.
स्क्रीन के सबसे ऊपर बाईं ओर मौजूद रास्पबेरी आइकॉन पर क्लिक करें. इसके बाद, 'प्राथमिकताएं' और फिर 'रैज़बेरी पाई कॉन्फ़िगरेशन' को चुनें. इंटरफ़ेस टैब में जाकर, I2C को चालू करें. लोकलाइज़ेशन टैब से, स्थान-भाषा और टाइमज़ोन सेट करें. टाइमज़ोन सेट करने के बाद, Raspberry Pi को फिर से चालू होने दें.
रीबूट पूरा होने के बाद, टर्मिनल विंडो खोलने के लिए Terminal आइकॉन पर क्लिक करें.
यह पक्का करने के लिए कि सेंसर सही तरीके से कनेक्ट किया गया है, नीचे दिया गया निर्देश लिखें.
sudo i2cdetect -y 1
नतीजा कुछ ऐसा दिखेगा – पक्का करें कि यह 77 हो.
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 को चुनें.
बकेट बनाएं बटन पर क्लिक करें
स्टोरेज बकेट के लिए कोई नाम चुनें. याद रखें, यह नाम Google Cloud के सभी प्लैटफ़ॉर्म पर यूनीक होना चाहिए. इसके बाद, 'बनाएं' बटन पर क्लिक करें. इस स्टोरेज बकेट का नाम याद रखें, क्योंकि आपको इसकी ज़रूरत जल्द ही पड़ेगी.
Cloud Console से, Dataflow चुनें.
टेंप्लेट से जॉब बनाएं (स्क्रीन के ऊपरी हिस्से में) पर क्लिक करें
नौकरी की जानकारी नीचे दिए गए तरीके से भरें. साथ ही, इन बातों का ध्यान रखें:
- 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" की तरह दिखना चाहिए.
सभी जानकारी भरने के बाद (नीचे देखें), 'जॉब चलाएं' बटन पर क्लिक करें
Dataflow जॉब चलने लगेगी.
Dataflow जॉब को पूरा होने में करीब एक मिनट लगेगा.
8. देखें कि डेटा ट्रांसफ़र हो रहा है या नहीं
Cloud फ़ंक्शन के लॉग
पक्का करें कि Pub/Sub से क्लाउड फ़ंक्शन ट्रिगर हो रहा हो
gcloud beta functions logs read function-weatherPubSubToBQ
लॉग से यह पता चलना चाहिए कि फ़ंक्शन एक्ज़ीक्यूट किया जा रहा है, डेटा मिल रहा है, और उसे BigQuery में डाला जा रहा है
BigQuery डेटा
जांच करके पक्का करें कि डेटा, BigQuery टेबल में जा रहा है. Cloud Console में, BigQuery (bigquery.cloud.google.com) पर जाएं.
प्रोजेक्ट के नाम (विंडो की बाईं ओर) में जाकर, डेटासेट (weatherData) पर क्लिक करें. इसके बाद, टेबल (weatherDataTable) पर क्लिक करें. इसके बाद, क्वेरी टेबल बटन पर क्लिक करें
SQL स्टेटमेंट में तारे का निशान जोड़ें, ताकि उसे नीचे दिखाए गए तरीके से 'चुनें * FROM...' दिखे. इसके बाद, 'क्वेरी चलाएं' बटन पर क्लिक करें
जब आपसे कहा जाए, तब 'क्वेरी चलाएं' बटन पर क्लिक करें
अगर आपको नतीजे दिखते हैं, तो इसका मतलब है कि डेटा सही तरीके से फ़्लो हो रहा है.
डेटा मिलने के बाद, अब आपके पास आंकड़ों का डैशबोर्ड बनाने का विकल्प है.
9. Data Studio डैशबोर्ड बनाना
'Google डेटा स्टूडियो' आपके डेटा को जानकारी देने वाले डैशबोर्ड और रिपोर्ट में बदल देता है, जिसे आसानी से पढ़ा और शेयर किया जा सकता है और पूरी तरह से पसंद के मुताबिक बनाया जा सकता है.
अपने वेब ब्राउज़र से, https://datastudio.google.com पर जाएं
"नई रिपोर्ट शुरू करें" में जाकर, खाली पर क्लिक करें. इसके बाद, 'शुरू करें' बटन पर क्लिक करें
शर्तें स्वीकार करने के लिए, चेकबॉक्स पर क्लिक करें. इसके बाद, 'आगे बढ़ें' बटन पर क्लिक करें. इसके बाद, वे ईमेल चुनें जिन्हें आपको पाने हैं और 'हो गया' बटन पर क्लिक करें. दोबारा, "नई रिपोर्ट शुरू करें" में जाकर, ब्लैंक पर क्लिक करें
'नया डेटा सोर्स बनाएं' बटन पर क्लिक करें
BigQuery पर क्लिक करने के बाद, 'अनुमति दें' बटन पर क्लिक करें. इसके बाद, वह Google खाता चुनें जिसका इस्तेमाल आपको Data Studio के साथ करना है. यह वही खाता होना चाहिए जिसका इस्तेमाल कोडलैब के लिए किया जा रहा है.
'अनुमति दें' बटन पर क्लिक करें
अपने प्रोजेक्ट का नाम, डेटासेट, और टेबल चुनें. इसके बाद, 'कनेक्ट करें' बटन पर क्लिक करें.
टाइप फ़ील्ड को यहां दिखाए गए तरीके से बदलें. timecollected और sensorID को छोड़कर, बाकी सभी फ़ील्ड में संख्या होनी चाहिए. ध्यान दें कि timecollected, तारीख और घंटे पर सेट है, न कि सिर्फ़ तारीख पर. एग्रीगेशन फ़ील्ड को यहां दिखाए गए तरीके से बदलें. ड्यू पॉइंट, तापमान, आर्द्रता, और दबाव के लिए औसत वैल्यू का इस्तेमाल करें. बाकी सभी फ़ील्ड के लिए "कोई नहीं" सेट करें. 'रिपोर्ट बनाएं' बटन पर क्लिक करें.
'रिपोर्ट में जोड़ें' बटन पर क्लिक करके पुष्टि करें
अगर आपसे अपना Google खाता चुनने के लिए कहा जाए, तो 'अनुमति दें' बटन पर क्लिक करें, ताकि Data Studio अपनी रिपोर्ट Google Drive में सेव कर सके.
आपको एक खाली कैनवस दिखेगा, जिस पर अपना डैशबोर्ड बनाया जा सकता है. आइकॉन की सबसे ऊपर वाली लाइन में, टाइम सीरीज़ चुनें.
खाली शीट के सबसे ऊपर बाएं कोने में एक रेक्टैंगल बनाएं. यह पूरी खाली शीट का लगभग ¼ हिस्सा होना चाहिए.
विंडो की दाईं ओर, स्टाइल टैब चुनें. जो डेटा मौजूद नहीं है उसे "लाइन टू ज़ीरो" से "लाइन ब्रेक" में बदलें. बाएं Y-ऐक्सिस सेक्शन में, ऐक्सिस की सबसे कम वैल्यू से 0 को मिटाएं, ताकि इसे (ऑटो) में बदला जा सके.
शीट पर ग्राफ़ पर क्लिक करें और उसे तीन बार कॉपी/पेस्ट करें (Ctrl-C/Ctrl-V). ग्राफ़ को अलाइन करें, ताकि हर ग्राफ़ में लेआउट का ¼ हिस्सा हो.
हर ग्राफ़ पर क्लिक करें. इसके बाद, टाइम सीरीज़ प्रॉपर्टी और डेटा सेक्शन में मौजूद, मौजूदा मेट्रिक (ड्यूपॉइंट) पर क्लिक करें. इसके बाद, कोई दूसरी मेट्रिक चुनें. ऐसा तब तक करें, जब तक मौसम की चारों रीडिंग (ड्यूपॉइंट, तापमान, आर्द्रता, और दबाव) का अपना ग्राफ़ न बन जाए.
अब आपके पास एक बुनियादी डैशबोर्ड है!
10. बधाई हो!
आपने पूरी डेटा पाइपलाइन बना ली है! ऐसा करने के दौरान, आपने Google Pub/Sub का इस्तेमाल करने, सर्वरलेस फ़ंक्शन को डिप्लॉय करने, BigQuery का फ़ायदा पाने, और Data Studio का इस्तेमाल करके आंकड़ों का डैशबोर्ड बनाने का तरीका जाना है. साथ ही, आपने यह भी देखा है कि Google Cloud Platform में डेटा डालने के लिए, Google Cloud SDK टूल का इस्तेमाल कैसे सुरक्षित तरीके से किया जा सकता है. आखिर में, अब आपको प्रोजेक्ट के अहम पैटर्न को इस्तेमाल करने का अनुभव मिलता है. इसकी मदद से, डिवाइस की उपलब्धता बनाए रखने के साथ-साथ, ज़्यादा वॉल्यूम में भी काम किया जा सकता है.
मिटाना
मौसम के डेटा और आंकड़ों की पाइपलाइन के साथ एक्सपेरिमेंट करने के बाद, मौजूदा संसाधनों को हटाया जा सकता है.
अगर आपने IoT सेंसर बनाया है, तो उसे बंद कर दें. स्क्रिप्ट को रोकने के लिए, टर्मिनल विंडो में Ctrl-C दबाएं. इसके बाद, Raspberry Pi को बंद करने के लिए यह लिखें
shutdown -h now
Cloud Functions पर जाएं. इसके बाद, function-weatherPubSubToBQ के बगल में मौजूद चेकबॉक्स पर क्लिक करें. इसके बाद, 'मिटाएं' पर क्लिक करें
Pub/Sub पर जाएं, 'विषय' पर क्लिक करें, weatherdata विषय के बगल में मौजूद चेकबॉक्स पर क्लिक करें, और फिर 'मिटाएं' पर क्लिक करें
'स्टोरेज' में जाकर, स्टोरेज बकेट के बगल में मौजूद चेकबॉक्स पर क्लिक करें. इसके बाद, 'मिटाएं' पर क्लिक करें
bigquery.cloud.google.com पर जाएं. इसके बाद, अपने प्रोजेक्ट के नाम के बगल में मौजूद, डाउन ऐरो पर क्लिक करें. इसके बाद, weatherData डेटासेट की दाईं ओर मौजूद, डाउन ऐरो पर क्लिक करें. इसके बाद, 'डेटासेट मिटाएं' पर क्लिक करें.
डेटा मिटाने की प्रोसेस पूरी करने के लिए, जब कहा जाए, तब डेटासेट आईडी (weatherData) टाइप करें.