Sunucusuz Veri Ardışık Düzeni Oluşturma: IoT'den Analize

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 sitesi için başlangıç noktasıdır. Ancak başarı çoğu zaman ölçeklenebilirlik, entegrasyon ve çeviklik ile ilgili zorlukları da beraberinde getirir. Örneğin, veriler gerçek zamanlı olarak nasıl işlenebilir ve birden fazla temel işletme sistemine nasıl dağıtılabilir? Bu sorunlar, internet ölçeğindeki uygulamaların talepleriyle birleştiğinde, dağıtılmış mesajlaşma sistemine duyulan ihtiyacı da beraberinde getirdi ve dayanıklı, gerçek zamanlı sistemlere ulaşmak için veri ardışık düzenlerini kullanmaya yönelik mimari bir kalıbı ortaya çıkardı. Sonuç olarak, gerçek zamanlı verilerin dağıtılmış bir mesajlaşma sisteminde nasıl yayınlanacağını ve ardından bir veri ardışık düzeninin nasıl oluşturulacağını anlamak hem geliştirici hem de mimar için son derece önemli becerilerdir.

Oluşturacağınız nedir?

Bu codelab'de, Nesnelerin İnterneti (IoT) cihazıyla başlayıp veri almak ve teslim etmek için mesaj kuyruğunu kullanan, verileri bir veri ambarına taşımak için sunucusuz bir işlevden yararlanan ve ardından bilgilerin gösterildiği bir kontrol paneli oluşturan bir hava durumu veri ardışık düzeni derleyeceksiniz. IoT cihazı için hava durumu sensörlü bir Raspberry Pi kullanılacak ve Google Cloud Platform'un çeşitli bileşenleri veri ardışık düzenini oluşturacaktır. Raspberry Pi'yi oluşturmak, faydalı olsa da, bu codelab'in isteğe bağlı bir parçasıdır ve akışlı hava durumu verileri bir komut dosyasıyla değiştirilebilir.

79cd6c68e83f7fea.png

Bu codelab'deki adımları tamamladıktan sonra sıcaklık, nem, çiy noktası ve hava basıncını gösteren bir kontrol panelini besleyen bir akış verisi ardışık düzeniniz olacak.

e28ca9ea4abb1457.png

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ü geliştirirken Google Cloud SDK'dan nasıl yararlanacağınızı ve Google Cloud Platform'a yapılan uzaktan erişim aramalarının güvenliğini nasıl sağlayacağınızı da öğreneceksiniz.

Gerekenler

Örnek veriler ve bir komut dosyası kullanmak yerine bu codelab'in IoT sensörü bölümünü oluşturmak istiyorsanız aşağıdakilere de ihtiyacınız olacaktır ( tüm bir set olarak veya buradan ayrı parçalar olarak sipariş edilebilir).

  • Güç kaynağı, SD bellek kartı ve kılıflı Raspberry Pi Zero W
  • USB kart okuyucu
  • USB çoğaltıcı (Raspberry Pi'deki tek USB bağlantı noktasına klavye ve fare bağlamak için kullanılır)
  • Dişi-kadın devre tahtası kabloları
  • GPIO Çekiç Başlıkları
  • BME280 sensör
  • Lehimli havya

Ayrıca, HDMI girişli bir bilgisayar monitörü veya televizyona, HDMI kablosuna, klavyeye ve bir fareye erişiminiz olduğu varsayılır.

2. Kurulum

Kendi hızınızda ortam kurulumu

Google hesabınız (Gmail veya G Suite) yoksa hesap oluşturmanız gerekir. Google hesabınız olsun ya da olmasın 300 ABD doları değerindeki ücretsiz denemeden yararlanmayı unutmayın!

Google Cloud Platform konsolunda oturum açın ( console.cloud.google.com). Bu laboratuvar için 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ğinin tüm Google Cloud projelerinde benzersiz bir ad olması gerekir (aşağıda gösterilen kimlik daha önce alınmış ve işinize yaramayacaktır). Daha sonra gerekli olacağı için proje kimliğinizi not edin (proje kimliğiniz _____ olacaktır).

f414a63d955621a7.png

3415e861c09cd06a.png

Bu codelab'i çalıştırmanın maliyeti birkaç dolardan fazla olmayacaktır. Ancak daha fazla kaynak kullanmaya karar verirseniz veya bunları çalışır durumda bırakırsanız daha yüksek ücret ödemeniz gerekebilir. Codelab'in sonundaki Temizleme bölümünü gözden geçirin.

3. BigQuery tablosu oluşturma

BigQuery, sunucusuz, yüksek düzeyde ölçeklenebilir ve düşük maliyetli bir kurumsal veri ambarıdır. Ayrıca, IoT cihazlarından aktarılan verileri depolamak için ideal bir seçenek olacak ve aynı zamanda analiz kontrol panelinin bilgileri sorgulamasına olanak tanıyacaktır.

Tüm IoT hava durumu verilerini içerecek bir tablo oluşturalım. Cloud konsolundan BigQuery'yi seçin. Bu işlem BigQuery'yi yeni bir pencerede açar (yeniden erişmeniz gerekeceğinden orijinal pencereyi kapatmayın).

12a838f78a10144a.png

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

27616683b64ce34a.png

"weatherData" yazın için, verilerin depolanacağı konumu seçin ve "Tamam"ı tıklayın

62cfcbd1add830ea.png

Videodaki yeni bir tablo oluşturmak için Veri Kümenizin yanında oturum açın

3d7bff6f9843fa3c.png

Kaynak Veriler için Boş tablo oluştur'u seçin. Hedef tablo adı için weatherDataTable yazın. Şema altında, toplam 9 alan oluşana kadar Alan Ekle düğmesini tıklayın. Alanları aşağıda gösterildiği gibi doldurun ve her alan için uygun Type'ı (Tür) seçtiğinizden emin olun. Adımları tamamladıktan sonra Tablo Oluştur düğmesini tıklayın.

eef352614a5696a7.png

Şuna benzer bir sonuç görmeniz gerekir:

7d10e5ab8c6d6a0d.png

Artık hava durumu verilerinizi alacağınız 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ı ele almak ve aşağı akış sistemlerinin bunları işlemesini sağlamak 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'dan Pub/Sub'ı ve ardından Topics'i seçin.

331ad71e8a1ea7b.png

"API'yi Etkinleştir" istemini görürseniz API'yi Etkinleştir düğmesini tıklayın.

9f6fca9dc8684801.png

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

643670164e9fae12.png

"Hava durumu verileri" girin ve Oluştur'u tıklayarak

d7b049bc66a34db6.png

Yeni oluşturulan konuyu göreceksiniz

7c385759f65a1031.png

Artık hem IoT mesajları yayınlamak hem de diğer işlemlerin bu mesajlara erişmesine izin vermek için bir Pub/Sub konunuz var.

Konuda güvenli yayınlama

Google Cloud Console dışındaki kaynaklardan (ör. IoT sensörü) Pub/Sub konusuna mesaj yayınlamayı planlıyorsanız bir hizmet hesabı kullanarak erişimi daha sıkı bir şekilde kontrol etmeniz ve güven sertifikası oluşturarak bağlantının güvenliğini sağlamanız gerekir.

Cloud Console'dan IAM ve Yönetici ve ardından hizmet hesapları

8e2f8a1428d0feca.png

Create Service account (Hizmet hesabı oluştur) düğmesini tıklayın

60892b564e0ac140.png

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

31f8c944af11270e.png

Bir hizmet hesabı adı (iotWeatherPublisher) yazın, Furnish a new private key (Yeni bir özel anahtar hazırla) onay kutusunu işaretleyin, Key type (Anahtar türünün JSON) olarak ayarlandığından emin olun ve "Create" (Oluştur) seçeneğini tıklayın.

7e3f9d7e56a44796.png

Güvenlik anahtarı otomatik olarak indirilir. Tek bir anahtar vardır. Bu yüzden anahtarı kaybetmemek önemlidir. Kapat'ı tıklayın.

60a7da32dd85ba73.png

Bir hizmet hesabı oluşturulduğunu ve hesapla ilişkilendirilmiş bir anahtar kimliği olduğunu göreceksiniz.

b25f6f5629fe8fd7.png

Anahtara daha sonra kolayca erişmek için anahtarı Google Cloud Storage'da saklayacağız. Cloud Console'dan Storage'ı ve ardından Tarayıcı'yı seçin.

c4414fe61be320a9.png

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

cde91311b267fc65.png

Depolama paketi için bir ad seçin (bu ad, tüm Google Cloud genelinde küresel olarak benzersiz bir ad olmalıdır) ve Oluştur düğmesini tıklayın

28c10e41b401f479.png

Otomatik olarak indirilen güvenlik anahtarını bulun ve depolama paketine sürükleyip bırakın veya yükleyin

a0f6d069d42cec4b.png

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

55b25c8b9d73ec19.png

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şimi, kaynağı herhangi bir yerde olan olaylara göre mantığın isteğe bağlı olarak şekillendirilebileceği tamamen sunucusuz bilgi işlem modellerini mümkün kılmıştır. Bu laboratuvarda, hava durumu konusunda yayınlanan her mesaj için bir Cloud Functions işlevi başlatılacak, mesajı okuyacak ve BigQuery'de depolayacak.

Cloud Console'dan Cloud Functions'ı seçin.

a14ac2e4f03bf831.png

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

40ba0a08430e0e8a.png

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

5d82d8faeffa55bf.png

Name (Ad) alanına, function-weatherPubSubToBQ yazın. Tetikleyici için Cloud Pub/Sub konusunu ve Konu açılır listesinden hava durumu verilerini seçin. Kaynak kodu için satır içi düzenleyiciyi seçin. index.js sekmesinde, başlamak için oraya aşağıdaki kodu yapıştırın. projectId, datasetId ve tableId için sabit değerleri 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 mevcut yer tutucu kodunun ü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"
  }
}

Yürütülecek işlev "HelloWorld" değerine ayarlanmışsa bunu "subscribe" olarak değiştirin. Oluştur düğmesini tıklayın

3266d5268980a4db.png

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

26f45854948426d0.png

Tebrikler! Pub/Sub'ı Functions üzerinden BigQuery'ye bağladınız.

6. IoT donanımını kurun (isteğe bağlı)

Raspberry Pi'yı ve sensörü monte etme

7'den fazla raptiye varsa başlığı yalnızca 7 pime gelecek şekilde kısaltın. Başlık pimlerini sensör kartına lehimleyin.

a162e24426118c97.png

Raspberry Pi'ye çekiç başlık pimlerini dikkatlice takın.

a3a697907fe3c9a9.png

SD kartı biçimlendirin ve buradaki adımları uygulayarak NOOBS (Yeni Kutu Dışı Yazılım) yükleyiciyi yükleyin. SD kartı Raspberry Pi'ye takın ve Raspberry Pi'yi kılıfına yerleştirin.

1e4e2459cd3333ec.png

Devre tahtası kablolarını kullanarak sensörü Raspberry Pi'ye bağlayın.

392c2a9c85187094.png

Ahududu Pi PIN'i

Sensör bağlantısı

Pin 1 (3,3 V)

VIN

PIN 3 (CPIO2)

SDI

PIN 5 (GPIO3)

SCK

İğne 9 (Karayolu)

GND

44322e38d467d66a.png

Monitörü (mini HDMI konnektörünü kullanarak), klavyeyi/fareyi (USB çoğaltıcıyla) ve son olarak güç adaptörünü bağlayın.

Raspberry Pi ve sensörü yapılandırma

Raspberry Pi başlatıldı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 bölümündeki sabit disk simgesi) tıklayın.

a16f0da19b93126.png

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

17f380b2d41751a8.png

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

14741a77fccdb7e7.png

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

9df6f228f6a31601.png

Sensörün doğru şekilde bağlandığından emin olmak için aşağıdaki komutu yazın.

  sudo i2cdetect -y 1

Sonuç şu şekilde görünmelidir: 77 olduğundan emin olun.

cd35cd97bee8085a.png

Google Cloud SDK'yı yükleme

Google Cloud platformundaki araçlardan yararlanabilmek için Raspberry Pi'ye Google Cloud SDK'nın yüklenmiş olması gerekir. SDK, Google Cloud Platform'u yönetmek ve kullanmak için gereken araçları içerir ve çeşitli programlama dilleri için kullanılabilir.

Açık değilse Raspberry Pi'de 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, yükleme araçlarının SDK'yı yüklemeniz istendiğinde nereye bakacağını bilmesi için Google Cloud SDK paketlerinin depolandığı konumu ekleyin.

  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 güvenliği doğrulaması ve yükleme sırasında içeriğe güvenmesi için Google'ın paket deposundan ortak anahtarı ekleyin.

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

Raspberry Pi'daki 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?" sorusu sorulduğunda 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ı ve hava durumu komut dosyasına uygulaması için yüklenip yüklenmediğini kontrol etmek amacıyla kullanılır.

  pip install tendo

Python paket yöneticisini kullanarak Python için Google Cloud PubSub ve OAuth2 paketlerinin yüklü ve güncel olduğundan emin olun

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

Google Cloud SDK'yı ilk kullanıma hazırlama

SDK, Google Cloud'a uzaktan, kimliği doğrulanmış erişime olanak tanır. Bu codelab'de, güvenlik anahtarının Raspberry Pi'ye kolayca indirilebilmesi için depolama paketine erişmek amacıyla kullanılacaktır.

Raspberry Pi'daki komut satırından şunu girin:

  gcloud init --console-only

"Giriş yapmak istiyor musunuz (E/n)?" sorusu sorulduğunda Enter tuşuna basın.

"Tarayıcınızda aşağıdaki bağlantıya gidin:" mesajını gördüğünüzde ve ardından https://accounts.google.com/o/oauth?... ile başlayan uzun bir URL gelir, 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 yerküre simgesi), adres çubuğunu sağ tıklayın ve "Yapıştır"ı tıklayın.

Oturum Aç ekranını gördükten sonra Google Cloud hesabınızla ilişkili e-posta adresinizi girin ve Enter tuşuna basın. Ardından şifrenizi girin ve İ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 size sunulur. Fareyi kullanarak öğeyi vurgulayın, ardından sağ tıklayıp Kopyala'yı seçin. Terminal penceresine dönün, imlecin "Doğrulama kodunu girin:" seçeneğinin sağ tarafında olduğundan emin olun, fareyi sağ tıklayın ve Yapıştır'ı seçin. Enter düğmesine basın.

"Kullanılacak bulut projesini seçin:" istemini alırsanız bu codelab için kullandığınız proje adına karşılık gelen numarayı girip Enter tuşuna basın.

Compute API'yi etkinleştirmeniz istenirse etkinleştirmek için Enter düğmesine basın. Ardından, Google Compute Engine ayarlarını yapılandırmanız istenir. Enter tuşuna basın. Potansiyel bölgelerin/alt bölgelerin listesi gösterilir. Size yakın olan bir bölgeyi seçin, ilgili numarayı girin ve Enter tuşuna basın.

Birazdan bazı ek bilgilerin görüntülendiğini göreceksiniz. Google Cloud SDK artık yapılandırılmış durumda. Artık ihtiyaç duymayacağınız için web tarayıcısı penceresini kapatabilirsiniz.

Sensör yazılımını ve hava durumu komut dosyasını yükleyin

Raspberry Pi'deki komut satırından, giriş/çıkış pinlerinden bilgi okumak için gerekli paketleri klonlayın.

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

İndirilen paketleri yükleyin

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

Yazarak komut dosyasını düzenleyin...

  nano checkWeather.py

Projeyi proje kimliğinizle, konuyu Pub/Sub konunuzun adıyla değiştirin (bu bilgiler, codelab'in Kurulum ve Pub/Sub oluşturma konusu bölümlerinde belirtilmiştir).

SensörID, sensörZipCode, sensörler ve SensörLong değerlerini istediğiniz gibi 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 kullandıysanız sonraki adımı atlayıp yolu dışa aktarma aşamasına geçebilirsiniz.

Güvenlik anahtarını bir depolama paketine yerleştirdiyseniz depolama paketinin adını 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 (bu komut neden gsutil olarak adlandırılır ve dosya yolu neden gs:// ile başlar?). 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'daki komut satırından güvenlik anahtarına giden bir yol dışa aktarın (dosya adını sahip olduğunuzla eşleşecek şekilde değiştirin)

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

Artık Google Cloud'a veri iletmeye hazır bir IoT hava durumu sensörünüz var.

7. Veri ardışık düzenini başlatma

Compute API'nin etkinleştirilmesi gerekebilir

Raspberry Pi'den veri akışı

Raspberry Pi IoT hava durumu sensörü oluşturduysanız hava durumu verilerini okuyacak komut dosyasını başlatın ve Google Cloud Pub/Sub'a aktarı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şlat

  python checkWeather.py

Terminal penceresinin dakikada bir hava durumu veri sonuçlarını yansıttığını göreceksiniz. Veri akışı varken bir sonraki bölüme geçebilirsiniz (Verilerin Akışını Kontrol Edin).

Veri akışı simülasyonu

IoT hava durumu sensörünü siz geliştirmediyseniz Google Cloud Storage'da depolanan herkese açık bir 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ılacak.

Bu işlemin bir parçası olarak Dataflow'un geçici bir depolama konumuna ihtiyacı olacaktır. Bu nedenle, bu amaca yönelik bir depolama paketi oluşturalım.

Cloud Console'dan Storage'ı ve ardından Tarayıcı'yı seçin.

c4414fe61be320a9.png

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

cde91311b267fc65.png

Depolama paketi için bir ad seçin (bu adın, tüm Google Cloud genelinde küresel olarak benzersiz bir ad olması gerektiğini unutmayın) ve Oluştur düğmesini tıklayın. Kısa süre içinde gerekli olacağı için bu depolama paketinin adını unutmayın.

1dad4cfbccfc96b1.png

Cloud Console'dan Dataflow'u seçin.

43ec245b47ae2e78.png

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

da55aaf2a1b0a0d0.png

İş ayrıntılarını aşağıda gösterildiği şekilde doldurun ve aşağıdaki hususları göz önünde bulundurun:

  • dataflow-gcs-to-pubsub iş adı girin
  • Bölgeniz, projenizin barındırıldığı yere göre otomatik olarak seçilmeli ve değiştirilmesi gerekmemelidir.
  • Cloud Pub/Sub'a GCS Metni içeren bir Cloud Dataflow şablonu seçin
  • Giriş Cloud Storage Dosyaları için gs://codelab-iot-data-pipeline-sampleweatherdata/*.json yazın (bu, herkese açık bir veri kümesidir)
  • Çıktı Pub/Sub konusu için tam yol projenizin adına bağlıdır ve "projects/yourProjectName/topics/weatherdata" şeklinde görünür.
  • Geçici Konum'u, "tmp" dosya adı önekiyle birlikte yeni oluşturduğunuz Google Cloud Storage paketinin adına 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

5f8ca16672f19d9b.png

Dataflow işi çalışmaya başlar.

e020015c369639ad.png

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

218a3ff7197dcf75.png

8. Veri akışını kontrol etme

Cloud Functions işlevi 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 çalıştığını, verilerin alındığını ve BigQuery'ye eklendiğini göstermelidir

d88f7831dabc8b3f.png

BigQuery verileri

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

85627127d58f1d2e.png

Proje adının altında (pencerenin sol tarafında), Veri Kümesini (weatherData), ardından tabloyu (weatherDataTable) ve ardından Query Table (Tablo Tablosu) düğmesini tıklayın.

44dc0f765a69580c.png

SQL deyimine aşağıda gösterildiği gibi SELECT * FROM... yazması için yıldız işareti ekleyin, ardından SORGUYU ÇALIŞTIR düğmesini tıklayın

b3a001e11c2902f2.png

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

2c894d091b789ca3.png

Sonuç görürseniz veri akışı düzgün çalışıyor demektir.

c8a061cebb7b528a.png

Veri akışı olduğuna göre, artık bir analiz kontrol paneli oluşturmaya hazırsınız demektir.

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ızda https://datastudio.google.com adresine gidin.

10f8c27060cd7430.png

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

df1404bc0047595e.png

Şartları kabul etmek için onay kutusunu işaretleyin, İleri düğmesini tıklayın, almak istediğiniz e-postaları seçin ve Bitti düğmesini tıklayın. Tekrar, "Yeni bir rapor başlatın" bölümünde Boş'u tıklayın.

55e91d3dd88b05ca.png

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

a22f3fac05774fc9.png

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

5ab03f341edc8964.png

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

22bcdbb5f5f1d30c.png

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

dc6b6b0ed9ced509.png

Tür alanlarını aşağıda gösterildiği gibi değiştirin (zaman toplama ve sensör kimliği dışında her şey bir sayı olmalıdır). Toplanan zaman değerinin Tarih Saat olarak ayarlandığını (yalnızca Tarih değil) 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 değerler olmalı, diğer tüm değerler "Yok" olarak ayarlanmalıdır). Rapor Oluştur düğmesini tıklayın.

c60887e29c3bdf9b.png

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

5ec3888dfdd85095.png

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

7b8006a813b3defa.png

Kontrol panelinizi oluşturmak için kullanabileceğiniz boş bir tuval sunulur. Simgelerin üst sırasından Zaman Serisi'ni seçin.

c7cd97354e1cde04.png

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

e0e82cb19921f835.png

Pencerenin sağ tarafındaki Stil sekmesini seçin. Eksik Verileri "Satırdan Sıfıra" Yap yeni bir satır öğesi oluşturabilirsiniz. Sol Y Ekseni bölümünde, (Otomatik) şeklinde değiştirmek için Min. Eksen'den 0'ı silin.

c7620bfe734d546.png

Sayfadaki grafiği tıklayın ve 3 kez kopyalayın/yapıştırın (Ctrl-C/Ctrl-V). Grafikleri, her biri düzenin 1⁄4'üne sahip olacak şekilde hizalayın.

9a7d3faa28996219.png

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

d29b21cac9e1ef5d.png

fda75a2f2a77a323.png

Artık temel bir kontrol paneline sahipsiniz!

8f59e8f4d44b8552.png

10. Tebrikler!

Eksiksiz bir veri ardışık düzeni oluşturdunuz. Bu sayede Google Pub/Sub'ı kullanmayı, sunucusuz bir işlev dağıtmayı, BigQuery'den yararlanmayı ve Data Studio kullanarak analiz kontrol paneli oluşturmayı öğrendiniz. Buna ek olarak, Google Cloud SDK'nın Google Cloud Platform'a veri aktarmak için güvenli bir şekilde nasıl kullanılabileceğini gördünüz. Son olarak, kullanılabilirliği korurken yüksek hacimleri işleyebilen önemli bir mimari kalıpla ilgili uygulamalı bir deneyime sahipsiniz.

79cd6c68e83f7fea.png

Temizleme

Hava durumu verileri ve analiz ardışık düzeniyle ilgili denemeleri tamamladıktan sonra ç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 ve ardından Raspberry Pi'yi kapatmak için aşağıdaki komutu yazın

  shutdown -h now

Cloud Functions'a gidin, function-weatherPubSubToBQ öğesinin yanındaki onay kutusunu işaretleyip Sil'i tıklayın

ae95f4f7178262e0.png

Pub/Sub'a gidin, Konu'yu tıklayın, hava durumu verileri konusunun yanındaki onay kutusunu ve ardından Sil'i tıklayın

6fb0bba3163d9a32.png

Storage'a gidin, depolama paketlerinin yanındaki onay kutularını işaretleyin ve ardından Delete'i (Sil) tıklayın.

9067fb2af9f907f4.png

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

a952dfeec49248c4.png

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

6310b1cc8da31a77.png