১. সংক্ষিপ্ত বিবরণ/ভূমিকা
ওয়েব, অ্যাপ্লিকেশন সার্ভার এবং ডাটাবেস সমন্বিত বহু-স্তরের অ্যাপ্লিকেশনগুলি ওয়েব ডেভেলপমেন্টের ভিত্তি এবং অনেক ওয়েবসাইটের সূচনা বিন্দু হলেও, সাফল্য প্রায়শই স্কেলেবিলিটি, ইন্টিগ্রেশন এবং তত্পরতার চারপাশে চ্যালেঞ্জ নিয়ে আসে। উদাহরণস্বরূপ, কীভাবে রিয়েল-টাইমে ডেটা পরিচালনা করা যায় এবং কীভাবে এটি একাধিক মূল ব্যবসায়িক সিস্টেমে বিতরণ করা যায়? ইন্টারনেট-স্কেল অ্যাপ্লিকেশনগুলির চাহিদার সাথে মিলিত এই সমস্যাগুলি একটি বিতরণযোগ্য মেসেজিং সিস্টেমের প্রয়োজনীয়তা তৈরি করে এবং স্থিতিস্থাপক, রিয়েল-টাইম সিস্টেম অর্জনের জন্য ডেটা পাইপলাইন ব্যবহারের একটি স্থাপত্যিক প্যাটার্নের জন্ম দেয়। ফলস্বরূপ, বিতরণযোগ্য মেসেজিং সিস্টেমে রিয়েল-টাইম ডেটা কীভাবে প্রকাশ করতে হয় এবং তারপরে কীভাবে একটি ডেটা পাইপলাইন তৈরি করতে হয় তা বোঝা ডেভেলপার এবং স্থপতি উভয়ের জন্যই অত্যন্ত গুরুত্বপূর্ণ দক্ষতা।
তুমি কী তৈরি করবে
এই কোডল্যাবে, আপনি একটি আবহাওয়া ডেটা পাইপলাইন তৈরি করতে যাচ্ছেন যা একটি ইন্টারনেট অফ থিংস (IoT) ডিভাইস দিয়ে শুরু হয়, ডেটা গ্রহণ এবং বিতরণের জন্য একটি বার্তা কিউ ব্যবহার করে, ডেটা গুদামে স্থানান্তর করার জন্য একটি সার্ভারলেস ফাংশন ব্যবহার করে এবং তারপরে তথ্য প্রদর্শন করে এমন একটি ড্যাশবোর্ড তৈরি করে। IoT ডিভাইসের জন্য একটি আবহাওয়া সেন্সর সহ একটি রাস্পবেরি পাই ব্যবহার করা হবে এবং গুগল ক্লাউড প্ল্যাটফর্মের বেশ কয়েকটি উপাদান ডেটা পাইপলাইন তৈরি করবে। রাস্পবেরি পাই তৈরি করা, যদিও উপকারী, এই কোডল্যাবের একটি ঐচ্ছিক অংশ এবং স্ট্রিমিং আবহাওয়া ডেটা একটি স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করা যেতে পারে।

এই কোডল্যাবের ধাপগুলি সম্পন্ন করার পরে, আপনার কাছে একটি স্ট্রিমিং ডেটা পাইপলাইন থাকবে যা একটি ড্যাশবোর্ড সরবরাহ করবে যা তাপমাত্রা, আর্দ্রতা, শিশিরবিন্দু এবং বায়ুচাপ প্রদর্শন করবে।

তুমি কি শিখবে
- গুগল পাব/সাব কীভাবে ব্যবহার করবেন
- গুগল ক্লাউড ফাংশন কীভাবে স্থাপন করবেন
- গুগল বিগকুয়েরি কীভাবে কাজে লাগাবেন
- গুগল ডেটা স্টুডিও ব্যবহার করে কীভাবে একটি ড্যাশবোর্ড তৈরি করবেন
- এছাড়াও, যদি আপনি IoT সেন্সর তৈরি করেন, তাহলে আপনি Google Cloud SDK কীভাবে ব্যবহার করবেন এবং Google Cloud Platform-এ দূরবর্তী অ্যাক্সেস কলগুলি কীভাবে সুরক্ষিত করবেন তাও শিখবেন।
তোমার যা লাগবে
- একটি গুগল ক্লাউড প্ল্যাটফর্ম অ্যাকাউন্ট। গুগল ক্লাউড প্ল্যাটফর্মের নতুন ব্যবহারকারীরা $300 এর বিনামূল্যে ট্রায়ালের জন্য যোগ্য।
যদি আপনি এই কোডল্যাবের IoT সেন্সর অংশটি নমুনা ডেটা এবং স্ক্রিপ্ট ব্যবহার করার পরিবর্তে তৈরি করতে চান, তাহলে আপনার নিম্নলিখিতগুলিও প্রয়োজন হবে ( যা সম্পূর্ণ কিট হিসাবে বা এখানে পৃথক অংশ হিসাবে অর্ডার করা যেতে পারে )...
- পাওয়ার সাপ্লাই, এসডি মেমোরি কার্ড এবং কেস সহ রাস্পবেরি পাই জিরো ডাব্লু
- ইউএসবি কার্ড রিডার
- USB হাব (রাস্পবেরি পাই-তে একমাত্র USB পোর্টে একটি কীবোর্ড এবং মাউস সংযোগ করার অনুমতি দেওয়ার জন্য)
- মহিলা থেকে মহিলা রুটিবোর্ডের তার
- জিপিআইও হ্যামার হেডার
- BME280 সেন্সর
- সোল্ডারিং লোহা সোল্ডার সহ
এছাড়াও, HDMI ইনপুট, HDMI কেবল, কীবোর্ড এবং একটি মাউস সহ একটি কম্পিউটার মনিটর বা টিভিতে অ্যাক্সেস থাকার কথা ধরে নেওয়া হয়।
2. সেট আপ করা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
যদি আপনার ইতিমধ্যেই একটি Google অ্যাকাউন্ট (Gmail বা G Suite) না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে। আপনার ইতিমধ্যেই একটি Google অ্যাকাউন্ট থাকুক বা না থাকুক, $300 বিনামূল্যের ট্রায়ালের সুবিধা নিতে ভুলবেন না!
গুগল ক্লাউড প্ল্যাটফর্ম কনসোলে সাইন-ইন করুন ( console.cloud.google.com )। আপনি এই ল্যাবের জন্য ডিফল্ট প্রকল্প ("আমার প্রথম প্রকল্প") ব্যবহার করতে পারেন অথবা আপনি একটি নতুন প্রকল্প তৈরি করতে পারেন। আপনি যদি একটি নতুন প্রকল্প তৈরি করতে চান, তাহলে আপনি সম্পদ পরিচালনা পৃষ্ঠাটি ব্যবহার করতে পারেন। সমস্ত গুগল ক্লাউড প্রকল্পের জন্য প্রকল্প আইডির একটি অনন্য নাম হওয়া প্রয়োজন (নীচে দেখানো নামটি ইতিমধ্যেই নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না)। আপনার প্রকল্প আইডিটি নোট করুন (অর্থাৎ আপনার প্রকল্প আইডি _____ হবে) কারণ এটি পরে প্রয়োজন হবে।


এই কোডল্যাবটি চালাতে কয়েক ডলারের বেশি খরচ হবে না, তবে আপনি যদি আরও বেশি রিসোর্স ব্যবহার করার সিদ্ধান্ত নেন অথবা সেগুলি চালু রেখে দেন তবে এটি আরও বেশি হতে পারে। কোডল্যাবের শেষে পরিষ্কারকরণ বিভাগটি অবশ্যই দেখতে ভুলবেন না।
৩. একটি BigQuery টেবিল তৈরি করুন
BigQuery হল একটি সার্ভারলেস, অত্যন্ত স্কেলেবল, কম খরচের এন্টারপ্রাইজ ডেটা গুদাম এবং IoT ডিভাইস থেকে স্ট্রিম করা ডেটা সংরক্ষণের জন্য এটি একটি আদর্শ বিকল্প হবে এবং একই সাথে একটি অ্যানালিটিক্স ড্যাশবোর্ড তথ্য অনুসন্ধানের সুযোগ দেবে।
আসুন একটি টেবিল তৈরি করি যেখানে সমস্ত IoT আবহাওয়ার তথ্য থাকবে। ক্লাউড কনসোল থেকে BigQuery নির্বাচন করুন। এটি একটি নতুন উইন্ডোতে BigQuery খুলবে (মূল উইন্ডোটি বন্ধ করবেন না কারণ আপনাকে এটি আবার অ্যাক্সেস করতে হবে)।

আপনার প্রকল্পের নামের পাশে নিচের তীর আইকনে ক্লিক করুন এবং তারপর "নতুন ডেটাসেট তৈরি করুন" নির্বাচন করুন।

ডেটাসেটের জন্য "weatherData" লিখুন, একটি স্থান নির্বাচন করুন যেখানে এটি সংরক্ষণ করা হবে এবং "OK" ক্লিক করুন।

একটি নতুন টেবিল তৈরি করতে আপনার ডেটাসেটের পাশে "+" চিহ্নে ক্লিক করুন।

সোর্স ডেটার জন্য, খালি টেবিল তৈরি করুন নির্বাচন করুন। গন্তব্য টেবিলের নামের জন্য, weatherDataTable লিখুন। Schema এর অধীনে, Add Field বোতামে ক্লিক করুন যতক্ষণ না মোট 9টি ক্ষেত্র থাকে। নীচে দেখানো ক্ষেত্রগুলি পূরণ করুন এবং প্রতিটি ক্ষেত্রের জন্য উপযুক্ত প্রকার নির্বাচন করুন। সবকিছু সম্পন্ন হলে, Create Table বোতামে ক্লিক করুন।

তোমার ফলাফল এরকম দেখা উচিত...

আপনার আবহাওয়ার তথ্য গ্রহণের জন্য এখন আপনার কাছে একটি ডেটা গুদাম সেটআপ আছে।
৪. একটি পাব/সাব বিষয় তৈরি করুন
ক্লাউড পাব/সাব হল স্ট্রিম অ্যানালিটিক্স এবং ইভেন্ট-চালিত কম্পিউটিং সিস্টেমের জন্য একটি সহজ, নির্ভরযোগ্য, স্কেলেবল ভিত্তি। ফলস্বরূপ, এটি আগত IoT বার্তাগুলি পরিচালনা করার জন্য এবং তারপরে ডাউনস্ট্রিম সিস্টেমগুলিকে সেগুলি প্রক্রিয়া করার অনুমতি দেওয়ার জন্য উপযুক্ত।
যদি আপনি এখনও BigQuery উইন্ডোতে থাকেন, তাহলে Cloud Console-এ ফিরে যান। যদি আপনি Cloud Console বন্ধ করে থাকেন, তাহলে https://console.cloud.google.com-এ যান।
ক্লাউড কনসোল থেকে, পাব/সাব নির্বাচন করুন এবং তারপর টপিকস নির্বাচন করুন।

যদি আপনি একটি Enable API প্রম্পট দেখতে পান, তাহলে Enable API বোতামে ক্লিক করুন।

একটি বিষয় তৈরি করুন বোতামে ক্লিক করুন

বিষয়ের নাম হিসেবে "weatherdata" লিখুন এবং Create এ ক্লিক করুন।

আপনার নতুন তৈরি বিষয়টি দেখা উচিত

এখন আপনার কাছে একটি Pub/Sub বিষয় আছে যেখানে আপনি IoT বার্তা প্রকাশ করতে পারবেন এবং অন্যান্য প্রক্রিয়াগুলিকে সেই বার্তাগুলিতে অ্যাক্সেস করতে পারবেন।
বিষয়টির নিরাপদ প্রকাশনা
যদি আপনি আপনার গুগল ক্লাউড কনসোলের বাইরের রিসোর্স (যেমন একটি IoT সেন্সর) থেকে Pub/Sub বিষয়ে বার্তা প্রকাশ করার পরিকল্পনা করেন, তাহলে একটি পরিষেবা অ্যাকাউন্ট ব্যবহার করে অ্যাক্সেসকে আরও কঠোরভাবে নিয়ন্ত্রণ করা এবং একটি বিশ্বাস শংসাপত্র তৈরি করে সংযোগের নিরাপত্তা নিশ্চিত করা প্রয়োজন।
ক্লাউড কনসোল থেকে, IAM & Admin নির্বাচন করুন এবং তারপর Service accounts নির্বাচন করুন।

পরিষেবা অ্যাকাউন্ট তৈরি করুন বোতামে ক্লিক করুন।

ভূমিকা ড্রপডাউনে, পাব/সাব প্রকাশক ভূমিকা নির্বাচন করুন।

একটি পরিষেবা অ্যাকাউন্টের নাম (iotWeatherPublisher) টাইপ করুন, Furnish a new private key চেকবক্সটি চেক করুন, নিশ্চিত করুন যে Key type JSON এ সেট করা আছে এবং "Create" এ ক্লিক করুন।

নিরাপত্তা কীটি স্বয়ংক্রিয়ভাবে ডাউনলোড হবে। কেবল একটি কী আছে, তাই এটি হারানো উচিত নয়। বন্ধ করুন ক্লিক করুন।

আপনার দেখতে হবে যে একটি পরিষেবা অ্যাকাউন্ট তৈরি করা হয়েছে এবং এর সাথে একটি কী আইডি যুক্ত রয়েছে।

পরবর্তীতে সহজেই কীটি অ্যাক্সেস করার জন্য, আমরা এটি গুগল ক্লাউড স্টোরেজে সংরক্ষণ করব। ক্লাউড কনসোল থেকে, স্টোরেজ এবং তারপর ব্রাউজার নির্বাচন করুন।

বাকেট তৈরি করুন বোতামে ক্লিক করুন।

স্টোরেজ বাকেটের জন্য একটি নাম নির্বাচন করুন (এটি এমন একটি নাম হতে হবে যা সমগ্র গুগল ক্লাউড জুড়ে বিশ্বব্যাপী অনন্য) এবং তৈরি করুন বোতামে ক্লিক করুন।

স্বয়ংক্রিয়ভাবে ডাউনলোড হওয়া নিরাপত্তা কীটি সনাক্ত করুন এবং এটিকে টেনে আনুন/ছেড়ে দিন অথবা স্টোরেজ বাকেটে আপলোড করুন।

কী আপলোড সম্পূর্ণ হওয়ার পরে, এটি ক্লাউড স্টোরেজ ব্রাউজারে প্রদর্শিত হবে

পরবর্তীতে ব্যবহারের জন্য স্টোরেজ বাকেটের নাম এবং সিকিউরিটি কী ফাইলের নাম লিখে রাখুন।
৫. একটি ক্লাউড ফাংশন তৈরি করুন
ক্লাউড কম্পিউটিং সম্পূর্ণরূপে সার্ভারবিহীন কম্পিউটিং মডেলগুলিকে সম্ভব করে তুলেছে যেখানে যেকোনো স্থান থেকে উদ্ভূত ইভেন্টের প্রতিক্রিয়ায় চাহিদা অনুসারে যুক্তি তৈরি করা যেতে পারে। এই ল্যাবের জন্য, আবহাওয়ার বিষয়ে কোনও বার্তা প্রকাশিত হলেই একটি ক্লাউড ফাংশন শুরু হবে, বার্তাটি পড়বে এবং তারপর এটি BigQuery-তে সংরক্ষণ করবে।
ক্লাউড কনসোল থেকে, ক্লাউড ফাংশন নির্বাচন করুন

যদি আপনি একটি API বার্তা দেখতে পান, তাহলে Enable API বোতামে ক্লিক করুন।
![40ba0a08430e0e8a.png - [অনলাইন].](https://codelabs.developers.google.com/static/codelabs/iot-data-pipeline/img/40ba0a08430e0e8a.png?hl=bn)
ফাংশন তৈরি করুন বোতামে ক্লিক করুন।
![5d82d8faeffa55bf.png - [অনলাইন].](https://codelabs.developers.google.com/static/codelabs/iot-data-pipeline/img/5d82d8faeffa55bf.png?hl=bn)
Name ফিল্ডে, function-weatherPubSubToBQ টাইপ করুন। Trigger এর জন্য Cloud Pub/Sub topic নির্বাচন করুন এবং Topic ড্রপডাউনে weatherdata নির্বাচন করুন। সোর্স কোডের জন্য, inline editor নির্বাচন করুন। 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" তে পরিবর্তন করুন। তৈরি করুন বোতামে ক্লিক করুন।

আপনার ফাংশনটি যে স্থাপন করা হয়েছে তা দেখাতে প্রায় ২ মিনিট সময় লাগবে।

অভিনন্দন! আপনি Functions এর মাধ্যমে Pub/Sub কে BigQuery এর সাথে সংযুক্ত করেছেন।
৬. IoT হার্ডওয়্যার সেটআপ করুন (ঐচ্ছিক)
রাস্পবেরি পাই এবং সেন্সর একত্রিত করুন
যদি ৭টির বেশি পিন থাকে, তাহলে হেডারটি ছোট করে ৭টি পিনে নামিয়ে আনুন। হেডার পিনগুলি সেন্সর বোর্ডে সোল্ডার করুন।

রাস্পবেরি পাইতে হাতুড়ি হেডার পিনগুলি সাবধানে ইনস্টল করুন ।

এসডি কার্ডটি ফরম্যাট করুন এবং এখানে দেওয়া ধাপগুলি অনুসরণ করে NOOBS (নতুন আউট অফ বক্স সফটওয়্যার) ইনস্টলারটি ইনস্টল করুন। রাস্পবেরি পাইতে এসডি কার্ডটি ঢোকান এবং রাস্পবেরি পাইটি তার কেসে রাখুন।

নিচের চিত্র অনুসারে রাস্পবেরি পাই-এর সাথে সেন্সর সংযোগ করতে ব্রেডবোর্ড তারগুলি ব্যবহার করুন।

রাস্পবেরি পাই পিন | সেন্সর সংযোগ |
পিন ১ (৩.৩V) | ভিআইএন |
পিন ৩ (CPIO2) | এসডিআই |
পিন ৫ (GPIO3) | SCK সম্পর্কে |
পিন ৯ (মাটি) | জিএনডি |

মনিটর (মিনি-এইচডিএমআই সংযোগকারী ব্যবহার করে), কীবোর্ড/মাউস (ইউএসবি হাব সহ) এবং অবশেষে, পাওয়ার অ্যাডাপ্টার সংযুক্ত করুন।
রাস্পবেরি পাই এবং সেন্সর কনফিগার করুন
রাস্পবেরি পাই বুট করা শেষ হওয়ার পর, পছন্দসই অপারেটিং সিস্টেমের জন্য রাস্পবিয়ান নির্বাচন করুন, আপনার পছন্দসই ভাষাটি সঠিক কিনা তা নিশ্চিত করুন এবং তারপরে ইনস্টল (উইন্ডোর উপরের বাম অংশে হার্ড ড্রাইভ আইকন) এ ক্লিক করুন।

স্ক্রিনের উপরের ডানদিকে Wifi আইকনে ক্লিক করুন এবং একটি নেটওয়ার্ক নির্বাচন করুন। যদি এটি একটি সুরক্ষিত নেটওয়ার্ক হয়, তাহলে পাসওয়ার্ড (প্রি-শেয়ারড কী) লিখুন।

রাস্পবেরি আইকনে (স্ক্রিনের উপরে বাম দিকে) ক্লিক করুন, পছন্দ নির্বাচন করুন এবং তারপর রাস্পবেরি পাই কনফিগারেশন নির্বাচন করুন। ইন্টারফেস ট্যাব থেকে, I2C সক্ষম করুন। স্থানীয়করণ ট্যাব থেকে, লোকেল এবং টাইমজোন সেট করুন। টাইমজোন সেট করার পরে, রাস্পবেরি পাই রিবুট করার অনুমতি দিন।

রিবুট সম্পন্ন হওয়ার পর, টার্মিনাল উইন্ডো খুলতে টার্মিনাল আইকনে ক্লিক করুন।

সেন্সরটি সঠিকভাবে সংযুক্ত আছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডটি টাইপ করুন।
sudo i2cdetect -y 1
ফলাফলটি এরকম দেখা উচিত - নিশ্চিত করুন যে এটি 77 পড়ছে।

গুগল ক্লাউড এসডিকে ইনস্টল করুন
গুগল ক্লাউড প্ল্যাটফর্মের টুলগুলিকে কাজে লাগানোর জন্য, রাস্পবেরি পাইতে গুগল ক্লাউড SDK ইনস্টল করতে হবে। SDK-তে গুগল ক্লাউড প্ল্যাটফর্ম পরিচালনা এবং লিভারেজ করার জন্য প্রয়োজনীয় টুলগুলি অন্তর্ভুক্ত রয়েছে এবং এটি বেশ কয়েকটি প্রোগ্রামিং ভাষার জন্য উপলব্ধ।
যদি রাস্পবেরি পাই ইতিমধ্যে খোলা না থাকে, তাহলে একটি টার্মিনাল উইন্ডো খুলুন এবং একটি পরিবেশ ভেরিয়েবল সেট করুন যা রাস্পবেরি পাই-তে অপারেটিং সিস্টেমের সাথে SDK সংস্করণের সাথে মেলে।
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
এখন গুগল ক্লাউড এসডিকে প্যাকেজগুলি কোথায় সংরক্ষণ করা হয়েছে তার অবস্থান যুক্ত করুন যাতে ইনস্টলেশন সরঞ্জামগুলি জানতে পারে যে এসডিকে ইনস্টল করার জন্য জিজ্ঞাসা করা হলে কোথায় দেখতে হবে।
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
গুগলের প্যাকেজ রিপোজিটরি থেকে পাবলিক কী যোগ করুন যাতে রাস্পবেরি পাই ইনস্টলেশনের সময় সুরক্ষা যাচাই করতে পারে এবং সামগ্রীটি বিশ্বাস করতে পারে।
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
রাস্পবেরি পাই-এর সমস্ত সফ্টওয়্যার আপ টু ডেট আছে কিনা তা নিশ্চিত করুন এবং মূল গুগল ক্লাউড এসডিকে ইনস্টল করুন।
sudo apt-get update && sudo apt-get install google-cloud-sdk
"আপনি কি চালিয়ে যেতে চান?" জিজ্ঞাসা করা হলে, এন্টার টিপুন।
পাইথন প্যাকেজ ম্যানেজার ব্যবহার করে টেন্ডো প্যাকেজটি ইনস্টল করুন। এই প্যাকেজটি পরীক্ষা করতে ব্যবহৃত হয় যে কোনও স্ক্রিপ্ট একাধিকবার চলছে কিনা এবং আবহাওয়া স্ক্রিপ্টে প্রয়োগের জন্য এটি ইনস্টল করা হচ্ছে কিনা।
pip install tendo
পাইথন প্যাকেজ ম্যানেজার ব্যবহার করে নিশ্চিত করুন যে পাইথনের জন্য Google Cloud PubSub এবং OAuth2 প্যাকেজগুলি ইনস্টল করা আছে এবং আপ টু ডেট আছে।
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
গুগল ক্লাউড এসডিকে আরম্ভ করুন
SDK গুগল ক্লাউডে দূরবর্তী, প্রমাণীকরণকৃত অ্যাক্সেসের অনুমতি দেয়। এই কোডল্যাবের জন্য, এটি স্টোরেজ বাকেট অ্যাক্সেস করতে ব্যবহার করা হবে যাতে নিরাপত্তা কীটি সহজেই রাস্পবেরি পাইতে ডাউনলোড করা যায়।
রাস্পবেরি পাই-এর কমান্ড লাইন থেকে, লিখুন
gcloud init --console-only
"আপনি কি লগ ইন করতে চান (Y/n)?" জিজ্ঞাসা করা হলে, এন্টার টিপুন।
যখন আপনি "আপনার ব্রাউজারে নিম্নলিখিত লিঙ্কে যান:" দেখতে পাবেন, তারপরে https://accounts.google.com/o/oauth ?... দিয়ে শুরু হওয়া একটি দীর্ঘ URL আসবে, তখন মাউস দিয়ে URL এর উপর কার্সার রাখুন, ডান ক্লিক করুন এবং "URL কপি করুন" নির্বাচন করুন। তারপর ওয়েব ব্রাউজারটি খুলুন (স্ক্রিনের উপরের বাম কোণে নীল গ্লোব আইকন), ঠিকানা বারের উপর ডান ক্লিক করুন এবং "পেস্ট করুন" এ ক্লিক করুন।
সাইন ইন স্ক্রিনটি দেখা মাত্র, আপনার গুগল ক্লাউড অ্যাকাউন্টের সাথে সম্পর্কিত ইমেল ঠিকানাটি লিখুন এবং এন্টার টিপুন। তারপর আপনার পাসওয়ার্ডটি লিখুন এবং পরবর্তী বোতামে ক্লিক করুন।
আপনাকে বলা হবে যে Google Cloud SDK আপনার Google অ্যাকাউন্ট অ্যাক্সেস করতে চায়। অনুমতি দিন বোতামে ক্লিক করুন।
আপনাকে যাচাইকরণ কোডটি দেখানো হবে। মাউস ব্যবহার করে এটি হাইলাইট করুন, তারপর ডান ক্লিক করুন এবং কপি করুন নির্বাচন করুন। টার্মিনাল উইন্ডোতে ফিরে যান, নিশ্চিত করুন যে কার্সারটি "যাচাইকরণ কোড লিখুন:" এর ডানদিকে আছে, মাউস দিয়ে ডান ক্লিক করুন এবং তারপর পেস্ট করুন নির্বাচন করুন। এন্টার বোতাম টিপুন।
যদি আপনাকে "ব্যবহারের জন্য ক্লাউড প্রকল্পটি বেছে নিন:" বলতে বলা হয়, তাহলে এই কোডল্যাবের জন্য আপনি যে প্রকল্পের নামটি ব্যবহার করছেন তার সাথে সম্পর্কিত নম্বরটি লিখুন এবং তারপর এন্টার টিপুন।
যদি আপনাকে কম্পিউট এপিআই সক্রিয় করতে বলা হয়, তাহলে এটি সক্রিয় করতে এন্টার বোতাম টিপুন। এর পরে, আপনাকে গুগল কম্পিউট ইঞ্জিন সেটিংস কনফিগার করতে বলা হবে। এন্টার টিপুন। আপনাকে সম্ভাব্য অঞ্চল/জোনের একটি তালিকা উপস্থাপন করা হবে - আপনার কাছাকাছি একটি নির্বাচন করুন, সংশ্লিষ্ট নম্বরটি লিখুন এবং এন্টার টিপুন।
কিছুক্ষণের মধ্যেই, আপনি কিছু অতিরিক্ত তথ্য প্রদর্শিত দেখতে পাবেন। Google Cloud SDK এখন কনফিগার করা হয়েছে। আপনি ওয়েব ব্রাউজার উইন্ডোটি বন্ধ করতে পারেন কারণ ভবিষ্যতে আপনার এটির প্রয়োজন হবে না।
সেন্সর সফটওয়্যার এবং আবহাওয়া স্ক্রিপ্ট ইনস্টল করুন
রাস্পবেরি পাই-এর কমান্ড লাইন থেকে, ইনপুট/আউটপুট পিন থেকে তথ্য পড়ার জন্য প্রয়োজনীয় প্যাকেজগুলি ক্লোন করুন।
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
প্রকল্পটি আপনার প্রকল্প আইডিতে এবং বিষয়বস্তুকে আপনার পাব/সাব বিষয়ের নাম দিন (এই কোডল্যাবের সেট-আপ করা এবং একটি পাব/সাব বিষয় তৈরি করুন বিভাগে এগুলি উল্লেখ করা হয়েছে)।
sensorID, sensorZipCode, sensorLat এবং sensorLong এর মান আপনার পছন্দের যেকোনো মান পরিবর্তন করুন। একটি নির্দিষ্ট অবস্থান বা ঠিকানার জন্য অক্ষাংশ এবং দ্রাঘিমাংশের মান এখানে পাওয়া যাবে।
প্রয়োজনীয় পরিবর্তনগুলি সম্পন্ন করার পরে, ন্যানো এডিটর থেকে বেরিয়ে আসতে 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"
নিরাপত্তা কী ইনস্টল করুন
রাস্পবেরি পাইতে নিরাপত্তা কী ("নিরাপদ প্রকাশনা থেকে একটি বিষয়ে" বিভাগ থেকে) কপি করুন।
যদি আপনি আপনার স্থানীয় মেশিন থেকে আপনার রাস্পবেরি পাইতে (/home/pi ডিরেক্টরিতে) সুরক্ষা কী অনুলিপি করার জন্য SFTP বা SCP ব্যবহার করে থাকেন, তাহলে আপনি পরবর্তী ধাপটি এড়িয়ে যেতে পারেন এবং পথটি রপ্তানি করতে পারেন।
যদি আপনি সিকিউরিটি কীটি স্টোরেজ বাকেটে রাখেন, তাহলে আপনাকে স্টোরেজ বাকেটের নাম এবং ফাইলের নাম মনে রাখতে হবে। সিকিউরিটি কীটি কপি করতে gsutil কমান্ড ব্যবহার করুন। এই কমান্ডটি গুগল স্টোরেজ অ্যাক্সেস করতে পারে (কেন এটিকে gsutil বলা হয়েছে এবং কেন ফাইলের পথ gs:// দিয়ে শুরু হয়)। আপনার বাকেটের নাম এবং ফাইলের নাম রাখতে নীচের কমান্ডটি পরিবর্তন করতে ভুলবেন না।
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
আপনি একটি বার্তা দেখতে পাবেন যে ফাইলটি অনুলিপি করা হচ্ছে এবং তারপরে অপারেশনটি সম্পন্ন হয়েছে।
রাস্পবেরি পাই-এর কমান্ড লাইন থেকে, সিকিউরিটি কী-তে একটি পাথ এক্সপোর্ট করুন (আপনার কাছে যা আছে তার সাথে মেলে ফাইলের নাম পরিবর্তন করুন)
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
আপনার কাছে এখন একটি সম্পূর্ণ IoT আবহাওয়া সেন্সর আছে যা Google ক্লাউডে ডেটা প্রেরণের জন্য প্রস্তুত।
৭. ডেটা পাইপলাইন শুরু করুন
কম্পিউট এপিআই সক্ষম করার প্রয়োজন হতে পারে
রাস্পবেরি পাই থেকে ডেটা স্ট্রিমিং
যদি আপনি একটি 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 বিষয়ের মধ্যে এটি ফিড করে ডেটা স্ট্রিমিং সিমুলেট করতে পারেন। ক্লাউড স্টোরেজ থেকে পড়ার জন্য এবং Pub/Sub-তে প্রকাশের জন্য Google-প্রদত্ত টেমপ্লেট সহ Google Dataflow ব্যবহার করা হবে।
প্রক্রিয়ার অংশ হিসেবে, ডেটাফ্লোর একটি অস্থায়ী স্টোরেজ লোকেশনের প্রয়োজন হবে, তাই আসুন এই উদ্দেশ্যে একটি স্টোরেজ বাকেট তৈরি করি।
ক্লাউড কনসোল থেকে, স্টোরেজ এবং তারপর ব্রাউজার নির্বাচন করুন।

বাকেট তৈরি করুন বোতামে ক্লিক করুন।

স্টোরেজ বাকেটের জন্য একটি নাম নির্বাচন করুন (মনে রাখবেন, এটি এমন একটি নাম হতে হবে যা সমগ্র গুগল ক্লাউড জুড়ে বিশ্বব্যাপী অনন্য) এবং তৈরি করুন বোতামে ক্লিক করুন। এই স্টোরেজ বাকেটের নাম মনে রাখবেন কারণ এটি শীঘ্রই প্রয়োজন হবে।

ক্লাউড কনসোল থেকে, ডেটাফ্লো নির্বাচন করুন।

স্ক্রিনের উপরের অংশে (টেমপ্লেট থেকে কাজ তৈরি করুন) ক্লিক করুন।

নিচের বিষয়গুলো মনোযোগ দিয়ে নীচে দেখানো কাজের বিবরণ পূরণ করুন:
- dataflow-gcs-to-pubsub-এর একটি কাজের নাম লিখুন
- আপনার প্রকল্পটি কোথায় হোস্ট করা হবে তার উপর নির্ভর করে আপনার অঞ্চলটি স্বয়ংক্রিয়ভাবে নির্বাচন করা উচিত এবং এটি পরিবর্তন করার প্রয়োজন হবে না।
- GCS টেক্সট টু ক্লাউড পাব/সাবের একটি ক্লাউড ডেটাফ্লো টেমপ্লেট নির্বাচন করুন
- ইনপুট ক্লাউড স্টোরেজ ফাইল(গুলি) এর জন্য, gs://codelab-iot-data-pipeline-sampleweatherdata/*.json লিখুন (এটি একটি পাবলিক ডেটাসেট)
- আউটপুট পাব/সাব টপিকের জন্য, সঠিক পথটি আপনার প্রকল্পের নামের উপর নির্ভর করবে এবং "projects/yourProjectName/topics/weatherdata" এর মতো দেখতে হবে।
- "tmp" এর একটি ফাইলের নাম সহ আপনার তৈরি করা Google Cloud Storage বাকেটের নাম অনুসারে Temporary Location সেট করুন। এটি "gs://myStorageBucketName/tmp" এর মতো দেখাবে।
যখন আপনার সমস্ত তথ্য পূরণ হয়ে যাবে (নীচে দেখুন), তখন Run job বোতামে ক্লিক করুন।

ডেটাফ্লো কাজটি শুরু হওয়া উচিত।

ডেটাফ্লো কাজটি সম্পূর্ণ হতে প্রায় এক মিনিট সময় লাগবে।

৮. ডেটা প্রবাহিত হচ্ছে কিনা তা পরীক্ষা করুন
ক্লাউড ফাংশন লগ
নিশ্চিত করুন যে ক্লাউড ফাংশনটি Pub/Sub দ্বারা ট্রিগার করা হচ্ছে।
gcloud beta functions logs read function-weatherPubSubToBQ
লগগুলিতে দেখানো উচিত যে ফাংশনটি কার্যকর হচ্ছে, ডেটা গ্রহণ করা হচ্ছে এবং এটি BigQuery-তে সন্নিবেশ করা হচ্ছে।

BigQuery ডেটা
BigQuery টেবিলে ডেটা প্রবেশ করছে কিনা তা পরীক্ষা করে দেখুন। ক্লাউড কনসোল থেকে, BigQuery (bigquery.cloud.google.com) এ যান।

প্রকল্পের নামের অধীনে (উইন্ডোর বাম দিকে), ডেটাসেট (weatherData) এ ক্লিক করুন, তারপর টেবিলে (weatherDataTable) এবং তারপর Query Table বোতামে ক্লিক করুন।

SQL স্টেটমেন্টে একটি তারকাচিহ্ন যোগ করুন যাতে এটি "SELECT * FROM..." লেখা থাকে, যেমনটি নিচে দেখানো হয়েছে এবং তারপর RUN QUERY বোতামে ক্লিক করুন।

যদি অনুরোধ করা হয়, তাহলে রান কোয়েরি বোতামে ক্লিক করুন।

যদি আপনি ফলাফল দেখতে পান, তাহলে তথ্য সঠিকভাবে প্রবাহিত হচ্ছে।

ডেটা প্রবাহের সাথে সাথে, আপনি এখন একটি বিশ্লেষণ ড্যাশবোর্ড তৈরি করতে প্রস্তুত।
৯. একটি ডেটা স্টুডিও ড্যাশবোর্ড তৈরি করুন
গুগল ডেটা স্টুডিও আপনার ডেটা তথ্যবহুল ড্যাশবোর্ড এবং প্রতিবেদনে রূপান্তরিত করে যা পড়া সহজ, ভাগ করা সহজ এবং সম্পূর্ণরূপে কাস্টমাইজযোগ্য।
আপনার ওয়েব ব্রাউজার থেকে, https://datastudio.google.com এ যান।

"একটি নতুন প্রতিবেদন শুরু করুন" এর অধীনে, ফাঁকা ক্লিক করুন এবং তারপর শুরু করুন বোতামে ক্লিক করুন।

শর্তাবলী গ্রহণ করতে চেকবক্সে ক্লিক করুন, পরবর্তী বোতামে ক্লিক করুন, আপনি কোন ইমেলগুলি পেতে আগ্রহী তা নির্বাচন করুন এবং সম্পন্ন বোতামে ক্লিক করুন। আবারও, "একটি নতুন প্রতিবেদন শুরু করুন" এর অধীনে, ফাঁকা ক্লিক করুন।
![55e91d3dd88b05ca.png - [অনলাইন].](https://codelabs.developers.google.com/static/codelabs/iot-data-pipeline/img/55e91d3dd88b05ca.png?hl=bn)
নতুন ডেটা সোর্স তৈরি করুন বোতামে ক্লিক করুন।

BigQuery-তে ক্লিক করুন, তারপর Authorize বোতামে ক্লিক করুন এবং তারপরে Data Studio-তে আপনি যে Google অ্যাকাউন্টটি ব্যবহার করতে চান তা নির্বাচন করুন (এটি কোডল্যাবের জন্য আপনি যে অ্যাকাউন্টটি ব্যবহার করছেন সেটিই হওয়া উচিত)।

অনুমতি দিন বোতামে ক্লিক করুন।

আপনার প্রকল্পের নাম, ডেটাসেট এবং টেবিল নির্বাচন করুন। তারপর সংযোগ বোতামে ক্লিক করুন।

নিচে দেখানো টাইপ ফিল্ডগুলো পরিবর্তন করুন (টাইম কালেক্টেড এবং সেন্সরআইডি ছাড়া সবকিছুই একটি সংখ্যা হওয়া উচিত)। মনে রাখবেন টাইম কালেক্টেড তারিখ ঘন্টা (শুধু তারিখ নয়) তে সেট করা আছে। নিচে দেখানো অ্যাগ্রিগেশন ফিল্ডগুলো পরিবর্তন করুন (শিশিরবিন্দু, তাপমাত্রা, আর্দ্রতা এবং চাপ গড় হওয়া উচিত এবং বাকি সবকিছু "কিছুই নয়" তে সেট করা উচিত)। রিপোর্ট তৈরি করুন বোতামে ক্লিক করুন।

রিপোর্টে যোগ করুন বোতামে ক্লিক করে নিশ্চিত করুন।

যদি আপনার গুগল অ্যাকাউন্ট নির্বাচন করতে বলা হয়, তাহলে তা করুন এবং তারপর অ্যালাউ বোতামে ক্লিক করুন যাতে ডেটা স্টুডিও তার রিপোর্টগুলি গুগল ড্রাইভে সংরক্ষণ করতে পারে।
![7b8006a813b3defa.png - [অনলাইন].](https://codelabs.developers.google.com/static/codelabs/iot-data-pipeline/img/7b8006a813b3defa.png?hl=bn)
আপনার ড্যাশবোর্ড তৈরি করার জন্য আপনাকে একটি ফাঁকা ক্যানভাস উপস্থাপন করা হবে। আইকনের উপরের সারি থেকে, টাইম সিরিজ নির্বাচন করুন।

খালি শীটের উপরের বাম কোণে একটি আয়তক্ষেত্র আঁকুন। এটি মোট খালি শীটের প্রায় ¼ অংশ দখল করবে।

উইন্ডোর ডান দিকে, স্টাইল ট্যাবটি নির্বাচন করুন। মিসিং ডেটা "লাইন থেকে শূন্য" থেকে "লাইন ব্রেকস" এ পরিবর্তন করুন। বাম Y-অক্ষ বিভাগে, অক্ষ মিন থেকে 0 মুছে ফেলুন (অটো) এ পরিবর্তন করুন।

শীটের গ্রাফটিতে ক্লিক করুন এবং ৩ বার কপি/পেস্ট করুন (Ctrl-C/Ctrl-V)। গ্রাফগুলি এমনভাবে সারিবদ্ধ করুন যাতে প্রতিটিতে লেআউটের ¼ অংশ থাকে।

প্রতিটি গ্রাফে ক্লিক করুন এবং টাইম সিরিজ প্রোপার্টিজ এবং ডেটা বিভাগের অধীনে বিদ্যমান মেট্রিক (শিশিরবিন্দু) এ ক্লিক করুন, চারটি আবহাওয়ার রিডিং (শিশিরবিন্দু, তাপমাত্রা, আর্দ্রতা এবং চাপ) এর নিজস্ব গ্রাফ না পাওয়া পর্যন্ত প্রদর্শিত একটি ভিন্ন মেট্রিক নির্বাচন করুন।


এখন আপনার কাছে একটি মৌলিক ড্যাশবোর্ড আছে!

১০. অভিনন্দন!
তুমি একটা সম্পূর্ণ ডেটা পাইপলাইন তৈরি করে ফেলেছো! এটা করার মাধ্যমে তুমি শিখেছো কিভাবে গুগল পাব/সাব ব্যবহার করতে হয়, কিভাবে সার্ভারলেস ফাংশন স্থাপন করতে হয়, কিভাবে বিগকুয়েরি ব্যবহার করতে হয় এবং ডেটা স্টুডিও ব্যবহার করে কিভাবে একটি অ্যানালিটিক্স ড্যাশবোর্ড তৈরি করতে হয়। তাছাড়া, তুমি দেখেছো কিভাবে গুগল ক্লাউড SDK নিরাপদে গুগল ক্লাউড প্ল্যাটফর্মে ডেটা আনা যায়। অবশেষে, এখন তোমার হাতে একটি গুরুত্বপূর্ণ স্থাপত্য নকশার কিছু অভিজ্ঞতা আছে যা প্রাপ্যতা বজায় রেখে উচ্চ ভলিউম পরিচালনা করতে পারে।

পরিষ্কার-পরিচ্ছন্নতা
একবার আবহাওয়ার তথ্য এবং বিশ্লেষণ পাইপলাইন নিয়ে পরীক্ষা-নিরীক্ষা শেষ হয়ে গেলে, আপনি চলমান সংস্থানগুলি সরিয়ে ফেলতে পারেন।
যদি আপনি IoT সেন্সর তৈরি করে থাকেন, তাহলে এটি বন্ধ করে দিন। স্ক্রিপ্টটি বন্ধ করতে টার্মিনাল উইন্ডোতে Ctrl-C টিপুন এবং তারপর Raspberry Pi বন্ধ করতে নিম্নলিখিতটি টাইপ করুন।
shutdown -h now
ক্লাউড ফাংশনে যান, function-weatherPubSubToBQ এর পাশের চেকবক্সে ক্লিক করুন এবং তারপর Delete এ ক্লিক করুন।

পাব/সাব-এ যান, টপিক-এ ক্লিক করুন, ওয়েদারডেটা টপিকের পাশে থাকা চেকবক্সে ক্লিক করুন এবং তারপর ডিলিট-এ ক্লিক করুন।

স্টোরেজে যান, স্টোরেজ বাকেটের পাশে থাকা চেকবক্সগুলিতে ক্লিক করুন এবং তারপর ডিলিট এ ক্লিক করুন।

bigquery.cloud.google.com এ যান, আপনার প্রকল্পের নামের পাশের নিম্নমুখী তীরটিতে ক্লিক করুন, weatherData ডেটাসেটের ডানদিকের নিম্নমুখী তীরটিতে ক্লিক করুন এবং তারপর Delete dataset এ ক্লিক করুন।

অনুরোধ করা হলে, ডেটা মুছে ফেলা শেষ করতে ডেটাসেট আইডি (weatherData) টাইপ করুন।
