1. Genel Bakış/Giriş
Web, uygulama sunucusu ve veritabanından oluşan çok katmanlı uygulamalar, web geliştirmenin temelini oluşturur ve birçok web sitesinin başlangıç noktasıdır. Ancak başarı genellikle ölçeklenebilirlik, entegrasyon ve çeviklik konusunda zorluklar getirir. Örneğin, veriler anlık olarak nasıl işlenebilir ve birden fazla önemli iş sistemine nasıl dağıtılabilir? Bu sorunlar, internet ölçeğindeki uygulamaların talepleriyle birleşince dağıtılmış bir mesajlaşma sistemine ihtiyaç duyuldu ve dayanıklı, gerçek zamanlı sistemler elde etmek için veri ardışık düzenlerinin kullanıldığı bir mimari model ortaya çıktı. Bu nedenle, gerçek zamanlı verileri dağıtılmış bir mesajlaşma sisteminde nasıl yayınlayacağınızı ve ardından nasıl veri ardışık düzeni oluşturacağınızı anlamak hem geliştiriciler hem de mimarlar için çok önemlidir.
Ne oluşturacaksınız?
Bu codelab'de, Nesnelerin İnterneti (IoT) cihazıyla başlayan, veri almak ve teslim etmek için bir ileti kuyruğu kullanan, verileri bir veri ambarına taşımak için sunucusuz bir işlevden yararlanan ve ardından bilgileri görüntüleyen bir kontrol paneli oluşturan bir hava durumu verileri ardışık düzeni oluşturacaksınız. IoT cihazı için hava durumu sensörlü bir Raspberry Pi, veri ardışık düzenini oluşturmak için ise Google Cloud Platform'un çeşitli bileşenleri kullanılacak. Raspberry Pi'yi oluşturmak faydalı olsa da bu codelab'in isteğe bağlı bir bölümüdür ve hava durumu verilerinin akışı bir komut dosyasıyla değiştirilebilir.

Bu codelab'deki adımları tamamladıktan sonra, sıcaklık, nem, çiğ noktası ve hava basıncını gösteren bir kontrol paneline veri sağlayan bir akış verisi işlem hattınız olur.

Neler öğreneceksiniz?
- Google Pub/Sub'ı kullanma
- Google Cloud Functions işlevi dağıtma
- Google BigQuery'den yararlanma
- Google Data Studio'yu kullanarak kontrol paneli oluşturma
- Ayrıca IoT sensörünü oluşturursanız Google Cloud SDK'yı nasıl kullanacağınızı ve Google Cloud Platform'a yapılan uzaktan erişim çağrılarının güvenliğini nasıl sağlayacağınızı da öğreneceksiniz.
Gerekenler
- Google Cloud Platform hesabı. Google Cloud Platform'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme sürümünden yararlanabilir.
Örnek verilerden ve komut dosyasından yararlanmak yerine bu codelab'in IoT sensörü bölümünü oluşturmak istiyorsanız aşağıdakilere de ihtiyacınız olacaktır ( buradan eksiksiz bir kit veya ayrı parçalar olarak sipariş edilebilir)...
- Güç kaynağı, SD bellek kartı ve kılıfıyla Raspberry Pi Zero W
- USB kart okuyucu
- USB çoklayıcı (Raspberry Pi'deki tek USB bağlantı noktasına klavye ve fare bağlanmasına olanak tanır)
- Dişi-dişi deneysel devre kartı kabloları
- GPIO Hammer Headers
- BME280 sensörü
- Lehimli havya
Ayrıca, HDMI girişi olan bir bilgisayar monitörüne veya TV'ye, HDMI kablosuna, klavyeye ve fareye erişiminizin olduğu varsayılır.
2. Hazırlanma
Yönlendirmesiz ortam kurulumu
Google Hesabınız (Gmail veya G Suite) yoksa hesap oluşturmanız gerekir. Google Hesabınızın olup olmadığına bakılmaksızın 300 ABD doları değerindeki ücretsiz deneme teklifinden yararlanmayı unutmayın.
Google Cloud Platform Console'da ( console.cloud.google.com) oturum açın. Bu laboratuvarda varsayılan projeyi ("İlk Projem") kullanabilir veya yeni bir proje oluşturmayı seçebilirsiniz. Yeni bir proje oluşturmak isterseniz Kaynakları yönetme sayfasını kullanabilirsiniz. Proje kimliği, tüm Google Cloud projelerinde benzersiz bir ad olmalıdır (aşağıda gösterilen proje kimliği zaten alınmıştır ve sizin için çalışmaz). Daha sonra ihtiyacınız olacağından proje kimliğinizi (ör. Proje kimliğiniz _____) not edin.


Bu codelab'i tamamlamak birkaç dolardan fazla tutmaz. Ancak daha fazla kaynak kullanmaya karar verirseniz veya kaynakları çalışır durumda bırakırsanız maliyet artabilir. Codelab'in sonundaki Temizleme bölümünü inceleyin.
3. BigQuery tablosu oluşturma
BigQuery, sunucusuz, yüksek düzeyde ölçeklenebilir ve düşük maliyetli bir kurumsal veri ambarıdır. Bilgilerin sorgulanmasına olanak tanıyan bir analiz kontrol paneli sunarken IoT cihazlarından aktarılan verileri depolamak için ideal bir seçenektir.
Tüm IoT hava durumu verilerini tutacak bir tablo oluşturalım. Cloud Console'dan BigQuery'yi seçin. Bu işlem BigQuery'yi yeni bir pencerede açar (Orijinal pencereyi kapatmayın, çünkü tekrar erişmeniz gerekecek).

Proje adınızın yanındaki aşağı ok simgesini tıklayın ve "Yeni veri kümesi oluştur"u seçin.

Veri kümesi için "weatherData" girin, depolanacağı bir konum seçin ve "Tamam"ı tıklayın.

Yeni bir tablo oluşturmak için veri kümenizin yanındaki "+" işaretini tıklayın.

Kaynak Veriler için Boş tablo oluştur'u seçin. Hedef tablo adı için weatherDataTable girin. Şema bölümünde, toplam 9 alan olana kadar Alan Ekle düğmesini tıklayın. Aşağıda gösterildiği gibi alanları doldurun ve her alan için uygun Tür'ü seçtiğinizden emin olun. Her şey tamamlandığında Tablo Oluştur düğmesini tıklayın.

Şuna benzer bir sonuç görmeniz gerekir:

Artık hava durumu verilerinizi alacak bir veri ambarı kurulumunuz var.
4. Pub/Sub konusu oluşturma
Cloud Pub/Sub, akış analizi ve olay odaklı bilgi işlem sistemleri için basit, güvenilir ve ölçeklenebilir bir temel sunar. Bu nedenle, gelen IoT mesajlarını işlemek ve ardından alt sistemlerin bunları işlemesine izin vermek için idealdir.
Hâlâ BigQuery penceresindeyseniz Cloud Console'a geri dönün. Cloud Console'u kapattıysanız https://console.cloud.google.com adresine gidin.
Cloud Console'da Pub/Sub'ı ve ardından Konular'ı seçin.

API'yi etkinleştirme istemi görürseniz API'yi etkinleştir düğmesini tıklayın.

Konu oluştur düğmesini tıklayın.

Konu adı olarak "weatherdata" girin ve Oluştur'u tıklayın.

Yeni oluşturulan konuyu görmeniz gerekir.

Artık hem IoT mesajlarını yayınlamak hem de diğer işlemlerin bu mesajlara erişmesine izin vermek için bir Pub/Sub konunuz var.
Konuya güvenli yayınlama
Google Cloud Console'unuzun dışındaki kaynaklardan (ör. bir IoT sensörü) Pub/Sub konusuna mesaj yayınlamayı planlıyorsanız hizmet hesabı kullanarak erişimi daha sıkı bir şekilde kontrol etmeniz ve güvenilir sertifika oluşturarak bağlantının güvenliğini sağlamanız gerekir.
Cloud Console'da IAM ve Yönetici'yi, ardından Hizmet hesapları'nı seçin.

Hizmet hesabı oluştur düğmesini tıklayın.

Rol açılır listesinde Pub/Sub Yayıncısı rolünü seçin.

Bir hizmet hesabı adı (iotWeatherPublisher) girin, "Yeni bir özel anahtar ver" onay kutusunu işaretleyin, "Anahtar türü"nün JSON olarak ayarlandığından emin olun ve "Oluştur"u tıklayın.

Güvenlik anahtarı otomatik olarak indirilir. Tek bir anahtar olduğundan kaybetmemeniz önemlidir. Kapat'ı tıklayın.

Bir hizmet hesabının oluşturulduğunu ve bu hesapla ilişkilendirilmiş bir anahtar kimliği olduğunu görürsünüz.

Anahtara daha sonra kolayca erişebilmek için Google Cloud Storage'da saklayacağız. Cloud Console'da Depolama'yı, ardından Tarayıcı'yı seçin.

Paket Oluştur düğmesini tıklayın.

Depolama paketi için bir ad seçin (Google Cloud'un tamamında küresel olarak benzersiz bir ad olmalıdır) ve Oluştur düğmesini tıklayın.

Otomatik olarak indirilen güvenlik anahtarını bulup depolama paketine sürükleyin/bırakın veya yükleyin.

Anahtar yükleme işlemi tamamlandıktan sonra anahtar, Cloud Storage tarayıcısında görünür.

Daha sonra kullanmak üzere depolama paketi adını ve güvenlik anahtarı dosya adını not edin.
5. Bir Cloud İşlevi oluşturun
Bulut bilişim, mantığın herhangi bir yerden kaynaklanan etkinliklere yanıt olarak isteğe bağlı olarak başlatılabildiği, tamamen sunucusuz bilgi işlem modellerini mümkün kılmıştır. Bu laboratuvarda, hava durumu konusuna her mesaj yayınlandığında bir Cloud Function başlatılacak, mesaj okunacak ve ardından BigQuery'de depolanacak.
Cloud Console'da Cloud Functions'ı seçin.

API mesajı görürseniz API'yi etkinleştir düğmesini tıklayın.

İşlev oluştur düğmesini tıklayın.

Ad alanına function-weatherPubSubToBQ yazın. Tetikleyici için Cloud Pub/Sub konusu'nu seçin ve Konu açılır listesinde weatherdata'yı seçin. Kaynak kodu için satır içi düzenleyiciyi seçin. index.js sekmesinde, başlangıçta bulunan kodun üzerine aşağıdaki kodu yapıştırın. projectId, datasetId ve tableId sabitlerini ortamınıza uyacak şekilde değiştirdiğinizden emin olun.
/**
* 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 sekmesinde, aşağıdaki kodu yer tutucu kodun üzerine yapıştırın.
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
Çalıştırılacak işlev "HelloWorld" olarak ayarlanmışsa bunu "subscribe" olarak değiştirin. Oluştur düğmesini tıklayın

İşlevinizin dağıtıldığını göstermesi yaklaşık 2 dakika sürer.

Tebrikler! Pub/Sub'ı Functions aracılığıyla BigQuery'ye bağladınız.
6. IoT donanımını kurma (isteğe bağlı)
Raspberry Pi ve sensörü birleştirme
7'den fazla pin varsa başlığı yalnızca 7 pin olacak şekilde kırpın. Başlık pinlerini sensör kartına lehimleyin.

Çekiç başlıklı pinleri Raspberry Pi'ye dikkatlice takın.

SD kartı biçimlendirin ve buradaki adımları uygulayarak NOOBS (New Out Of Box Software) yükleyicisini kurun. SD kartı Raspberry Pi'ye takın ve Raspberry Pi'yi kutusuna yerleştirin.

Aşağıdaki şemaya göre sensörü Raspberry Pi'ye bağlamak için breadboard kablolarını kullanın.

Raspberry Pi pimi | Sensör bağlantısı |
Pin 1 (3,3 V) | VIN |
Pin 3 (CPIO2) | SDI |
Pin 5 (GPIO3) | SCK |
Pin 9 (Toprak) | GND |

Monitörü (mini HDMI konnektörünü kullanarak), klavye/fareyi (USB hub ile) ve son olarak güç adaptörünü bağlayın.
Raspberry Pi ve sensörü yapılandırma
Raspberry Pi başlatma işlemini tamamladıktan sonra istediğiniz işletim sistemi için Raspbian'ı seçin, istediğiniz dilin doğru olduğundan emin olun ve ardından Yükle'yi (pencerenin sol üst kısmındaki sabit sürücü simgesi) tıklayın.

Kablosuz simgesini (ekranın sağ üst kısmı) tıklayın ve bir ağ seçin. Güvenli bir ağsa şifreyi (önceden paylaşılan anahtar) girin.

Ahududu simgesini (ekranın sol üst kısmı) tıklayın, Tercihler'i ve ardından Raspberry Pi Yapılandırması'nı seçin. Arayüzler sekmesinde I2C'yi etkinleştirin. Yerelleştirme sekmesinde Yerel Ayar ve Saat Dilimi'ni ayarlayın. Saat dilimini ayarladıktan sonra Raspberry Pi'nin yeniden başlatılmasına izin verin.

Yeniden başlatma işlemi tamamlandıktan sonra Terminal simgesini tıklayarak bir terminal penceresi açın.

Sensörün doğru şekilde bağlandığından emin olmak için aşağıdaki komutu yazın.
sudo i2cdetect -y 1
Sonuç aşağıdaki gibi görünmelidir. 77 yazdığından emin olun.

Google Cloud SDK'yı yükleme
Google Cloud platformundaki araçlardan yararlanmak için Google Cloud SDK'nın Raspberry Pi'ye yüklenmesi gerekir. SDK, Google Cloud Platform'u yönetmek ve kullanmak için gereken araçları içerir ve çeşitli programlama dillerinde kullanılabilir.
Raspberry Pi'de henüz açık değilse bir terminal penceresi açın ve SDK sürümünü Raspberry Pi'deki işletim sistemiyle eşleştirecek bir ortam değişkeni ayarlayın.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Şimdi Google Cloud SDK paketlerinin depolandığı konumu ekleyin. Böylece, yükleme araçları SDK'yı yüklemeleri istendiğinde nereye bakacaklarını bilir.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
Raspberry Pi'nin kurulum sırasında güvenliği doğrulayıp içeriğe güvenmesi için Google'ın paket deposundaki ortak anahtarı ekleyin.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Raspberry Pi'deki tüm yazılımların güncel olduğundan emin olun ve temel Google Cloud SDK'yı yükleyin.
sudo apt-get update && sudo apt-get install google-cloud-sdk
"Devam etmek istiyor musunuz?" istemi gösterildiğinde Enter tuşuna basın.
Python paket yöneticisini kullanarak tendo paketini yükleyin. Bu paket, bir komut dosyasının birden fazla kez çalışıp çalışmadığını kontrol etmek için kullanılır ve hava durumu komut dosyası uygulamasına yüklenir.
pip install tendo
Python paket yöneticisini kullanarak Python için Google Cloud PubSub ve OAuth2 paketlerinin yüklendiğinden ve güncel olduğundan emin olun.
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
Google Cloud SDK'yı başlatma
SDK, Google Cloud'a uzaktan ve kimliği doğrulanmış erişim sağlar. Bu codelab'de, güvenlik anahtarının Raspberry Pi'ye kolayca indirilebilmesi için depolama paketine erişmek üzere kullanılır.
Raspberry Pi'deki komut satırına şunu girin:
gcloud init --console-only
"Oturum açmak ister misiniz (Y/n)?" istemiyle karşılaştığınızda Enter tuşuna basın.
"Tarayıcınızda aşağıdaki bağlantıya gidin:" ifadesini ve ardından https://accounts.google.com/o/oauth?... ile başlayan uzun bir URL'yi gördüğünüzde fareyle URL'nin üzerine gelin, sağ tıklayın ve "URL'yi kopyala"yı seçin. Ardından web tarayıcısını açın (ekranın sol üst köşesindeki mavi dünya simgesi), adres çubuğunu sağ tıklayın ve "Yapıştır"ı tıklayın.
Oturum açma ekranını gördüğünüzde Google Cloud hesabınızla ilişkili e-posta adresinizi girip Enter tuşuna basın. Ardından şifrenizi girip İleri düğmesini tıklayın.
Google Cloud SDK'nın Google Hesabınıza erişmek istediği sorulur. İzin ver düğmesini tıklayın.
Doğrulama kodu gösterilir. Fareyi kullanarak vurgulayın, ardından sağ tıklayıp Kopyala'yı seçin. Terminal penceresine dönün, imlecin "Doğrulama kodunu girin:" ifadesinin sağında olduğundan emin olun, fareyle sağ tıklayın ve ardından Yapıştır'ı seçin. Enter düğmesine basın.
"Kullanılacak bulut projesini seçin:" istemiyle karşılaşırsanız bu codelab için kullandığınız proje adına karşılık gelen sayıyı girip Enter tuşuna basın.
Compute API'yi etkinleştirmeniz istenirse Enter düğmesine basarak etkinleştirin. Ardından, Google Compute Engine ayarlarını yapılandırmanız istenir. Enter tuşuna basın. Olası bölgelerin/alanların listesi gösterilir. Size yakın olan birini seçin, ilgili numarayı girin ve Enter tuşuna basın.
Kısa süre içinde ek bilgiler gösterilir. Google Cloud SDK yapılandırıldı. Bundan sonra ihtiyacınız olmayacağından web tarayıcısı penceresini kapatabilirsiniz.
Sensör yazılımını ve hava durumu komut dosyasını yükleme
Raspberry Pi'deki komut satırından, giriş/çıkış pinlerinden bilgi okumak için gereken paketleri klonlayın.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
İndirilen paketleri yükleme
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
Hava durumu sensörünü etkinleştiren proje kodunu klonlayın.
git clone https://github.com/googlecodelabs/iot-data-pipeline
Sensör sürücüsünü, indirilen yazılımın geri kalanıyla aynı dizine kopyalayın.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
Komut dosyasını düzenlemek için yazın...
nano checkWeather.py
Projeyi proje kimliğinizle, konuyu ise Pub/Sub konunuzun adıyla değiştirin (bunlar, bu codelab'in İlk Adımlar ve Pub/Sub konusu oluşturma bölümlerinde belirtilmiştir).
sensorID, sensorZipCode, sensorLat ve sensorLong değerlerini istediğiniz değerle değiştirin. Belirli bir konum veya adresin enlem ve boylam değerlerini burada bulabilirsiniz.
Gerekli değişiklikleri tamamladığınızda nano düzenleyiciden çıkmaya başlamak için Ctrl-X tuşlarına basın. Onaylamak için Y tuşuna basın.
# 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"
Güvenlik anahtarını yükleme
Güvenlik anahtarını ("Bir konuya güvenli yayınlama" bölümünden) Raspberry Pi'ye kopyalayın.
Güvenlik anahtarını yerel makinenizden Raspberry Pi'nize (/home/pi dizinine) kopyalamak için SFTP veya SCP'yi kullandıysanız sonraki adımı atlayıp yolu dışa aktarma bölümüne geçebilirsiniz.
Güvenlik anahtarını bir depolama paketine yerleştirdiyseniz depolama paketinin ve dosyanın adını hatırlamanız gerekir. Güvenlik anahtarını kopyalamak için gsutil komutunu kullanın. Bu komut, Google Storage'a erişebilir (gsutil adını almasının ve dosyanın yolunun gs:// ile başlamasının nedeni budur). Aşağıdaki komutu, paketinizin adını ve dosya adını içerecek şekilde değiştirdiğinizden emin olun.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
Dosyanın kopyalandığını ve işlemin tamamlandığını belirten bir mesaj görürsünüz.
Raspberry Pi'deki komut satırından güvenlik anahtarının yolunu dışa aktarın (dosya adını, sizde bulunanla eşleşecek şekilde değiştirin).
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
Artık verileri Google Cloud'a iletmeye hazır, tamamlanmış bir IoT hava durumu sensörünüz var.
7. Veri ardışık düzenini başlatma
Compute API'yi etkinleştirmeniz gerekebilir
Raspberry Pi'den veri akışı
Raspberry Pi IoT hava durumu sensörü oluşturduysanız hava durumu verilerini okuyup Google Cloud Pub/Sub'a aktaracak komut dosyasını başlatın. /home/pi/iot-data-pipeline dizininde değilseniz önce bu dizine gidin.
cd /home/pi/iot-data-pipeline
Hava durumu komut dosyasını başlatma
python checkWeather.py
Terminal penceresinde hava durumu verilerinin sonuçlarının her dakika yansıtıldığını görürsünüz. Veri akışı olduğunda bir sonraki bölüme (Veri akışının gerçekleştiğini kontrol etme) geçebilirsiniz.
Simüle edilmiş veri akışı
IoT hava durumu sensörünü siz oluşturmadıysanız Google Cloud Storage'da depolanmış herkese açık bir veri kümesini kullanarak ve bu veri kümesini mevcut Pub/Sub konusuna aktararak veri akışını simüle edebilirsiniz. Cloud Storage'dan okuma ve Pub/Sub'a yayınlama için Google tarafından sağlanan bir şablonla birlikte Google Dataflow kullanılır.
Süreç kapsamında Dataflow'un geçici bir depolama konumuna ihtiyacı olacak. Bu nedenle, bu amaçla bir depolama paketi oluşturalım.
Cloud Console'da Depolama'yı, ardından Tarayıcı'yı seçin.

Paket Oluştur düğmesini tıklayın.

Depolama paketi için bir ad seçin (Google Cloud'un tamamında küresel olarak benzersiz bir ad olması gerektiğini unutmayın) ve Oluştur düğmesini tıklayın. Kısa süre sonra ihtiyacınız olacağından bu depolama paketinin adını unutmayın.

Cloud Console'da Dataflow'u seçin.

Şablondan İş Oluştur'u (ekranın üst kısmı) tıklayın.

Aşağıda gösterildiği gibi iş ayrıntılarını doldurun ve şunlara dikkat edin:
- dataflow-gcs-to-pubsub iş adını girin.
- Bölgeniz, projenizin barındırıldığı yere göre otomatik olarak seçilir ve değiştirilmesi gerekmez.
- GCS Metninden Cloud Pub/Sub'a Cloud Dataflow şablonu seçin
- Giriş Cloud Storage Dosyaları için gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (bu herkese açık bir veri kümesidir) girin.
- Çıkış Pub/Sub konusu için tam yol, proje adınıza bağlıdır ve "projects/yourProjectName/topics/weatherdata" gibi görünür.
- Geçici Konum'u, az önce oluşturduğunuz Google Cloud Storage paketinin adıyla ve "tmp" dosya adı önekiyle ayarlayın. "gs://myStorageBucketName/tmp" şeklinde görünmelidir.
Tüm bilgileri doldurduktan sonra (aşağıya bakın) İşi çalıştır düğmesini tıklayın.

Dataflow işi çalışmaya başlamalıdır.

Dataflow işinin tamamlanması yaklaşık bir dakika sürer.

8. Verilerin aktığını kontrol edin
Cloud Function günlükleri
Cloud Functions işlevinin Pub/Sub tarafından tetiklendiğinden emin olun.
gcloud beta functions logs read function-weatherPubSubToBQ
Günlükler, işlevin yürütüldüğünü, verilerin alındığını ve BigQuery'ye eklendiğini göstermelidir.

BigQuery verileri
Verilerin BigQuery tablosuna aktığından emin olun. Cloud Console'dan BigQuery'ye (bigquery.cloud.google.com) gidin.

Proje adının altında (pencerenin sol tarafında) Veri Kümesi'ni (weatherData), ardından tabloyu (weatherDataTable) ve ardından Tabloyu Sorgula düğmesini tıklayın.

SQL ifadesine bir yıldız işareti ekleyerek aşağıdaki gibi SELECT * FROM... ifadesini oluşturun ve ardından SORGUYU ÇALIŞTIR düğmesini tıklayın.

İstenirse Sorguyu çalıştır düğmesini tıklayın.

Sonuç görürseniz veriler düzgün şekilde aktarılıyor demektir.

Veriler akmaya başladığına göre artık bir analiz kontrol paneli oluşturmaya hazırsınız.
9. Data Studio kontrol paneli oluşturma
Google Data Studio, verilerinizi okuması ve paylaşması kolay, tamamen özelleştirilebilir bilgilendirici gösterge tablolarına ve raporlara dönüştürür.
Web tarayıcınızdan https://datastudio.google.com adresine gidin.

"Yeni bir rapor oluşturmaya başlayın" bölümünde Boş'u, ardından Başlayın düğmesini tıklayın.

Şartları kabul etmek için onay kutusunu işaretleyin, Sonraki düğmesini tıklayın, hangi e-postaları almak istediğinizi seçin ve Bitti düğmesini tıklayın. "Yeni bir rapor oluşturmaya başlayın" bölümünde tekrar Boş'u tıklayın.

Yeni Veri Kaynağı Oluştur düğmesini tıklayın.

BigQuery'yi, ardından Yetkilendir düğmesini tıklayın ve Data Studio ile kullanmak istediğiniz Google Hesabı'nı seçin (bu hesap, codelab için kullandığınız hesapla aynı olmalıdır).

İzin ver düğmesini tıklayın.

Proje adınızı, veri kümenizi ve tablonuzu seçin. Ardından Bağlan düğmesini tıklayın.

Tür alanlarını aşağıda gösterildiği gibi değiştirin (timecollected ve sensorID hariç her şey sayı olmalıdır). timecollected'ın yalnızca Tarih olarak değil, Tarih Saat olarak ayarlandığını unutmayın. Toplama alanlarını aşağıda gösterildiği gibi değiştirin (çiy noktası, sıcaklık, nem ve basınç ortalama olmalı, diğer tüm alanlar "Yok" olarak ayarlanmalıdır). Rapor Oluştur düğmesini tıklayın.

Rapora ekle düğmesini tıklayarak onaylayın.

Google Hesabınızı seçmeniz istenirse bunu yapın ve Data Studio'nun raporlarını Google Drive'da depolamasına izin vermek için İzin ver düğmesini tıklayın.

Kontrol panelinizi oluşturabileceğiniz boş bir tuval gösterilir. Üstteki simge satırından Zaman Serisi'ni seçin.

Boş sayfanın sol üst köşesine bir dikdörtgen çizin. Toplam boş sayfanın yaklaşık ¼'ünü kaplamalıdır.

Pencerenin sağ tarafında Stil sekmesini seçin. Eksik verileri "Sıfıra Çizgi"den "Çizgi Kesmeleri"ne değiştirin. Sol Y ekseni bölümünde, ekseni (Otomatik) olarak değiştirmek için Eksen Min'deki 0'ı silin.

Sayfadaki grafiği tıklayın ve 3 kez kopyalayıp yapıştırın (Ctrl-C/Ctrl-V). Grafikleri, her biri düzenin ¼'ünü kaplayacak şekilde hizalayın.

Her grafiği tıklayın ve Zaman Serisi Özellikleri ve Veriler bölümünde mevcut metriği (çiğ noktası) tıklayın, dört hava durumu ölçümünün (çiğ noktası, sıcaklık, nem ve basınç) kendi grafiği olana kadar gösterilecek farklı bir metrik seçin.


Artık temel bir kontrol paneliniz var.

10. Tebrikler!
Veri ardışık düzeninin tamamını oluşturdunuz. Bu süreçte Google Pub/Sub'ı kullanmayı, sunucusuz bir işlevi dağıtmayı, BigQuery'den yararlanmayı ve Data Studio'yu kullanarak bir analiz kontrol paneli oluşturmayı öğrendiniz. Ayrıca, Google Cloud SDK'nın verileri Google Cloud Platform'a getirmek için nasıl güvenli bir şekilde kullanılabileceğini de öğrendiniz. Son olarak, artık yüksek hacimleri işleyebilen ve kullanılabilirliği koruyabilen önemli bir mimari kalıpla ilgili uygulamalı deneyiminiz var.

Temizleme
Hava durumu verileri ve analiz işlem hattıyla denemeler yapmayı tamamladığınızda çalışan kaynakları kaldırabilirsiniz.
IoT sensörünü siz oluşturduysanız kapatın. Komut dosyasını durdurmak için terminal penceresinde Ctrl-C tuşlarına basın, ardından Raspberry Pi'yi kapatmak için aşağıdakileri yazın.
shutdown -h now
Cloud Functions'a gidin, function-weatherPubSubToBQ'nun yanındaki onay kutusunu işaretleyin ve Sil'i tıklayın.

Pub/Sub'a gidin, Konu'yu tıklayın, weatherdata konusunun yanındaki onay kutusunu işaretleyin ve Sil'i tıklayın.

Depolama alanına gidin, depolama paketlerinin yanındaki onay kutularını işaretleyin ve Sil'i tıklayın.

bigquery.cloud.google.com adresine gidin, proje adınızın yanındaki aşağı oku, weatherData veri kümesinin sağındaki aşağı oku ve ardından Veri kümesini sil'i tıklayın.

İstendiğinde, verileri silme işlemini tamamlamak için veri kümesi kimliğini (weatherData) girin.
