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 önemli işletme sistemine nasıl dağıtılabilir? Bu sorunlar, internet ölçeğindeki uygulamaların talepleriyle birlikte dağıtılmış bir mesajlaşma sistemine olan ihtiyacı doğurdu ve dayanıklı, gerçek zamanlı sistemler elde etmek için veri ardışık düzenlerini kullanmaya yönelik bir mimari kalıbına yol açtı. Bu nedenle, gerçek zamanlı verilerin dağıtılmış bir mesajlaşma sistemine nasıl yayınlanacağını ve ardından veri ardışık düzeninin nasıl oluşturulacağını anlamak hem geliştiriciler hem de mimarlar için önemli bir beceridir.

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ış halindeki 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 yararlanmayı ve Google Cloud Platform'a uzaktan erişim çağrılarını güvenli hale getirmeyi de öğreneceksiniz.

Gerekenler

Örnek verilerden ve komut dosyasından yararlanmak yerine bu kod laboratuvarının IoT sensör bölümünü oluşturmak istiyorsanız aşağıdakilere de ihtiyacınız olacak (buradan eksiksiz bir kit veya 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-dişi breadboard 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önetin 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. Kod laboratuvarının 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. IoT cihazlarından aktarılan verileri depolamak için ideal bir seçenek olmasının yanı sıra analitik kontrol panelinin bilgileri sorgulamasına da olanak tanır.

Tüm IoT hava durumu verilerini barındıracak 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

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

62cfcbd1add830ea.png

Yeni bir tablo oluşturmak için Veri Kümenizin yanındaki "+" işaretini tıklayı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 alacak bir veri ambarı oluşturdunuz.

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 bunları aşağı akış sistemlerinin işlemesi için izin vermek için mükemmeldir.

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 istemi görürseniz API'yi etkinleştir düğmesini tıklayın.

9f6fca9dc8684801.png

Create a topic (Konu oluştur) düğmesini tıklayın.

643670164e9fae12.png

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

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'da IAM ve Yönetici'yi, ardından Hizmet hesapları'nı seçin.

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. Yalnızca bir anahtar olduğundan kaybetmemeniz ö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

Anahtarı daha sonra kolayca erişebilmek için Google Cloud Storage'da depolarız. Cloud Console'da Depolama'yı ve ardından Tarayıcı'yı seçin.

c4414fe61be320a9.png

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

cde91311b267fc65.png

Depolama alanı paketi için bir ad seçin (bu ad, Google Cloud'un tamamında küresel olarak benzersiz 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ünür.

55b25c8b9d73ec19.png

Depolama paketi adını ve güvenlik anahtarı dosya adını daha sonra kullanmak üzere not edin.

5. Bir Cloud İşlevi oluşturun

Bulut bilişim, mantığın herhangi bir yerden gelen etkinliklere yanıt olarak isteğe bağlı olarak başlatılabileceği tamamen sunucusuz bilgi işlem modellerini mümkün kılmıştır. Bu laboratuvarda, hava durumu konusuna 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

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 kod 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" olarak ayarlanmışsa bunu "subscribe" olarak değiştirin. Oluştur düğmesini tıklayın

3266d5268980a4db.png

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

26f45854948426d0.png

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

6. IoT donanımını kurma (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 (New Out Of Box Software) yükleyicisini yükleyin. SD kartı Raspberry Pi'ye takın ve Raspberry Pi'yi kılıfına yerleştirin.

1e4e2459cd3333ec.png

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

392c2a9c85187094.png

Raspberry Pi pin'i

Sensör bağlantısı

1. pin (3,3 V)

VIN

3. pin (CPIO2)

SDI

PIN 5 (GPIO3)

SCK

9. pin (Toprak)

GND

44322e38d467d66a.png

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

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

Raspberry Pi önyüklemeyi 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 disk simgesi) tıklayın.

a16f0da19b93126.png

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

17f380b2d41751a8.png

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 sekmesinden I2C'yi etkinleştirin. Yerelleştirme sekmesinde 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 penceresi açmak için Terminal simgesini tıklayı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 değerini gördüğünüzden 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 gerekli araçları içerir ve çeşitli programlama dilleri için kullanılabilir.

Henüz açık değilse Raspberry Pi'de bir terminal penceresi açın ve Raspberry Pi'deki işletim sistemiyle SDK sürümünü eşleştirecek bir ortam değişkeni ayarlayın.

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

Ardından, yükleme araçlarının SDK'yı yüklemesi 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 yükleme sırasında güvenliği doğrulaması ve içeriğe güvenmesi için Google'ın paket deposundaki herkese açık 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?" 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ı kontrol etmek için kullanılır ve hava durumu komut dosyasına uygulanması için yüklenir.

  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 kimliği doğrulanmış uzaktan erişim sağlar. 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 ister misiniz (E/H)?" sorusunu gördüğünüzde Enter tuşuna basın.

"Tarayıcınızda şu 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ı (ekranın sol üst köşesindeki mavi küre simgesi) açın, adres çubuğunu sağ tıklayın ve "Yapıştır"ı tıklayın.

Oturum açma 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 bildirilir. İzin Ver düğmesini tıklayın.

Doğrulama kodu size sunulur. Fareyi kullanarak vurguladıktan sonra 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 tuşuna 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'a basın.

Compute API'yi etkinleştirmeniz istenirse etkinleştirmek için Enter tuşuna basın. Ardından, Google Compute Engine ayarlarını yapılandırmanız istenir. Enter tuşuna basın. Olası bölgelerin/bölgelerin listesi gösterilir. Size yakın bir bölge 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'sı yapılandırıldı. Artık ihtiyacınız olmadığı için 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 ../..

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

sensorID, sensorZipCode, sensorLat ve sensorLong değerlerini istediğiniz değere 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 çıkmak 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 nedenle gsutil olarak adlandırılır ve dosyanın yolu 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 ardından 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ı, sahip olduğunuz dosyayla 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 okuyup Google Cloud Pub/Sub'a gönderecek komut dosyasını başlatın. /home/pi/iot-data-pipeline dizininde değilseniz önce oraya gidin

  cd /home/pi/iot-data-pipeline

Hava durumu komut dosyasını başlat

  python checkWeather.py

Terminal penceresinde hava durumu veri sonuçlarının her dakika tekrarlandığını görürsünüz. 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 oluşturmadıysanız Google Cloud Storage'da depolanmış herkese açık bir veri kümesini kullanarak ve mevcut Pub/Sub konusuna besleyerek 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.

İşlem kapsamında Dataflow'un geçici bir depolama konumuna ihtiyacı olacaktır. Bu nedenle, bu amaç için bir depolama paketi oluşturalım.

Cloud Console'da Depolama'yı ve ardından Tarayıcı'yı seçin.

c4414fe61be320a9.png

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

cde91311b267fc65.png

Depolama alanı paketi için bir ad seçin (bu ad, Google Cloud'un tamamında küresel olarak benzersiz olmalıdır) ve Oluştur düğmesini tıklayın. Bu depolama alanı paketinin adını not edin. Kısa süre içinde bu ada ihtiyacınız olacak.

1dad4cfbccfc96b1.png

Cloud Console'dan Dataflow'u seçin.

43ec245b47ae2e78.png

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

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 adlı bir iş adı girin
  • Bölgeniz, projenizin barındırıldığı yere göre otomatik olarak seçilir ve değiştirilmesi gerekmez.
  • 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üklerde, işlevin çalıştığını, verilerin alındığını ve BigQuery'ye eklendiğini görebilirsiniz.

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, Sonraki 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ızı, 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 (timecollected ve sensorID hariç her şey sayı olmalıdır). timecollected değerinin yalnızca Tarih 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 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" yerine "Satır Sonları" olarak değiştirin. 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ıp yapıştırın (Ctrl-C/Ctrl-V). Grafikleri, her birinin düzenin ¼'ü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!

Tam bir veri ardışık düzeni oluşturdunuz. Bu süreçte Google Pub/Sub'u nasıl kullanacağınızı, sunucusuz işlevleri nasıl dağıtacağınızı, BigQuery'den nasıl yararlanacağınızı ve Data Studio'yu kullanarak nasıl analiz kontrol paneli oluşturacağınızı öğrendiniz. Ayrıca, Google Cloud SDK'sının Google Cloud Platform'a veri aktarmak için nasıl güvenli bir şekilde 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üzeni ile denemeleri 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 ve ardından Raspberry Pi'yi kapatmak için aşağıdaki komutu yazın

  shutdown -h now

Cloud Functions'a gidin, function-weatherPubSubToBQ işlevinin yanındaki onay kutusunu işaretleyin ve ardından Sil'i tıklayın.

ae95f4f7178262e0.png

Pub/Sub'a gidin, Konu'yu tıklayın, weatherdata konusunun yanındaki onay kutusunu işaretleyin 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, proje adınızın yanındaki aşağı oku, ardından weatherData veri kümesinin sağındaki aşağı oku ve son olarak 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