1. Übersicht/Einführung
Während mehrschichtige Anwendungen, die aus Web, Anwendungsservern und Datenbanken bestehen, die Grundlage der Webentwicklung bilden und den Ausgangspunkt für viele Websites darstellen, bringt der Erfolg oft Herausforderungen in Bezug auf Skalierbarkeit, Integration und Agilität mit sich. Wie können Daten beispielsweise in Echtzeit verarbeitet und auf mehrere wichtige Geschäftssysteme verteilt werden? Diese Probleme, zusammen mit den Anforderungen von Anwendungen im Internet, machten die Notwendigkeit eines verteilten Nachrichtensystems zur Folge und führten zu einem Architekturmuster, bei dem Datenpipelines verwendet werden, um stabile Echtzeitsysteme zu schaffen. Daher sind es sowohl für Entwickler als auch für Architekten wichtige Fähigkeiten, Echtzeitdaten in einem verteilten Nachrichtensystem zu veröffentlichen und dann eine Datenpipeline zu erstellen.
Überblick
In diesem Codelab erstellen Sie eine Wetterdatenpipeline, die mit einem IoT-Gerät (Internet der Dinge) beginnt, eine Nachrichtenwarteschlange zum Empfangen und Senden von Daten verwendet, eine serverlose Funktion nutzt, um die Daten in ein Data Warehouse zu verschieben, und dann ein Dashboard zu erstellen, das die Informationen anzeigt. Für das IoT-Gerät wird ein Raspberry Pi mit einem Wettersensor verwendet. Die Datenpipeline bilden mehrere Komponenten der Google Cloud Platform. Die Erweiterung des Raspberry Pi ist zwar von Vorteil, ist aber ein optionaler Teil dieses Codelabs. Die Streaming-Wetterdaten können durch ein Skript ersetzt werden.
Nachdem Sie die Schritte in diesem Codelab abgeschlossen haben, haben Sie eine Streaming-Datenpipeline, die ein Dashboard mit Temperatur, Luftfeuchtigkeit, Taupunkt und Luftdruck versorgt.
Aufgaben in diesem Lab
- Google Pub/Sub verwenden
- Google Cloud Functions-Funktion bereitstellen
- Google BigQuery nutzen
- Dashboard mit Google Data Studio erstellen
- Wenn Sie den IoT-Sensor entwickeln, lernen Sie außerdem, wie Sie das Google Cloud SDK nutzen und wie Sie Remotezugriffsaufrufe auf die Google Cloud Platform sichern.
Voraussetzungen
- Ein Google Cloud Platform-Konto Neue Nutzer der Google Cloud Platform haben Anspruch auf eine kostenlose Testversion mit 300$Guthaben.
Wenn Sie den IoT-Sensorteil dieses Codelabs erstellen möchten, anstatt Beispieldaten und ein Script zu verwenden, benötigen Sie außerdem Folgendes ( das hier als vollständiges Kit oder als Einzelteile bestellt werden kann).
- Raspberry Pi Zero W mit Netzteil, SD-Speicherkarte und Gehäuse
- USB-Kartenlesegerät
- USB-Hub (um eine Tastatur und eine Maus an den einzigen USB-Anschluss des Raspberry Pi anzuschließen)
- Steckplatinenkabel von Buchse zu Stecker
- GPIO-Hammer-Header
- BME280-Sensor
- Lötkolben mit Lötkolben
Außerdem wird vorausgesetzt, dass Sie Zugang zu einem Computermonitor oder Fernseher mit HDMI-Eingang, HDMI-Kabel, Tastatur und Maus haben.
2. Einrichtung
Umgebung zum selbstbestimmten Lernen einrichten
Wenn Sie noch kein Google-Konto (Gmail oder G Suite) haben, müssen Sie ein Konto erstellen. Unabhängig davon, ob Sie bereits ein Google-Konto haben oder nicht, sollten Sie die kostenlose Testversion mit 300$Guthaben nutzen.
Melden Sie sich in der Google Cloud Platform Console an ( console.cloud.google.com). Sie können das Standardprojekt („Mein erstes Projekt“) für dieses Lab verwenden oder ein neues Projekt erstellen. Wenn Sie ein neues Projekt erstellen möchten, können Sie die Seite Ressourcen verwalten verwenden. Die Projekt-ID muss in allen Google Cloud-Projekten eindeutig sein. Der unten angezeigte Name ist bereits vergeben und funktioniert nicht für Sie. Notieren Sie sich Ihre Projekt-ID (d.h. Ihre Projekt-ID wird _____), da sie später benötigt wird.
Dieses Codelab sollte nicht mehr als ein paar Euro kosten. Wenn Sie jedoch mehr Ressourcen verwenden oder sie nicht laufen lassen, kann es mehr sein. Gehen Sie unbedingt den Abschnitt „Cleanup“ am Ende des Codelabs durch.
3. BigQuery-Tabelle erstellen
BigQuery ist ein serverloses, in hohem Maße skalierbares und kostengünstiges Data Warehouse für Unternehmen. Es eignet sich ideal zum Speichern von Daten, die von IoT-Geräten gestreamt werden, und bietet gleichzeitig ein Analysedashboard, um die Informationen abzufragen.
Lassen Sie uns eine Tabelle mit allen IoT-Wetterdaten erstellen. Wählen Sie in der Cloud Console BigQuery aus. Dadurch wird BigQuery in einem neuen Fenster geöffnet. Schließen Sie das ursprüngliche Fenster nicht, da Sie noch einmal darauf zugreifen müssen.
Klicken Sie auf den Abwärtspfeil neben dem Projektnamen und wählen Sie „Neues Dataset erstellen“ aus.
Geben Sie „weatherData“ (Wetterdaten) ein. Wählen Sie einen Speicherort für das Dataset aus und klicken Sie auf "OK".
Klicken Sie auf das „+“, neben Ihrem Dataset, um eine neue Tabelle zu erstellen
Wählen Sie für Quelldaten die Option Leere Tabelle erstellen aus. Geben Sie als Namen der Zieltabelle weatherDataTable ein. Klicken Sie unter Schema auf die Schaltfläche Add Field (Feld hinzufügen), bis insgesamt neun Felder angezeigt werden. Füllen Sie die Felder wie unten gezeigt aus und achten Sie darauf, für jedes Feld den richtigen Typ auszuwählen. Wenn alles eingerichtet ist, klicken Sie auf die Schaltfläche Tabelle erstellen.
Sie sollten ein Ergebnis wie dieses sehen...
Sie haben jetzt ein Data Warehouse für den Empfang Ihrer Wetterdaten eingerichtet.
4. Pub/Sub-Thema erstellen
Cloud Pub/Sub ist eine einfache, zuverlässige und skalierbare Basis für Streamanalysen und ereignisgesteuerte Computersysteme. Daher eignet es sich perfekt für die Verarbeitung eingehender IoT-Nachrichten und die anschließende Verarbeitung dieser Nachrichten durch nachgelagerte Systeme.
Wenn Sie sich noch im Fenster für BigQuery befinden, wechseln Sie zurück zur Cloud Console. Wenn Sie die Cloud Console geschlossen haben, rufen Sie https://console.cloud.google.com auf.
Wählen Sie in der Cloud Console „Pub/Sub“ und dann „Themen“ aus.
Wenn die Aufforderung „API aktivieren“ angezeigt wird, klicken Sie auf die Schaltfläche „API aktivieren“.
Klicken Sie auf die Schaltfläche Thema erstellen .
„Wetterdaten“ eingeben als Themennamen ein und klicken Sie auf
Sie sollten das neu erstellte Thema sehen.
Sie haben jetzt ein Pub/Sub-Thema, um IoT-Nachrichten zu veröffentlichen und anderen Prozessen den Zugriff auf diese Nachrichten zu ermöglichen.
Sichere Veröffentlichung für das Thema
Wenn Sie vorhaben, Nachrichten von Ressourcen außerhalb Ihrer Google Cloud Console (z.B. von einem IoT-Sensor) an das Pub/Sub-Thema zu veröffentlichen, müssen Sie den Zugriff über ein Dienstkonto genauer steuern und die Sicherheit der Verbindung durch Erstellen eines vertrauenswürdigen Zertifikats gewährleisten.
Wählen Sie in der Cloud Console "IAM & Administrator und dann Dienstkonten
Klicken Sie auf die Schaltfläche „Dienstkonto erstellen“.
Wählen Sie im Drop-down-Menü „Rolle“ die Pub/Sub-Publisher-Rolle aus.
Geben Sie einen Dienstkontonamen ein (iotWeatherPublisher), aktivieren Sie das Kontrollkästchen "Neuen privaten Schlüssel bereitstellen", stellen Sie sicher, dass der Schlüsseltyp auf JSON festgelegt ist, und klicken Sie auf "Erstellen".
Der Sicherheitsschlüssel wird automatisch heruntergeladen. Es gibt nur einen Schlüssel. Daher ist es wichtig, dass Sie diesen nicht verlieren. Klicken Sie auf "Schließen".
Sie sollten sehen, dass ein Dienstkonto erstellt wurde und mit dem eine Schlüssel-ID verknüpft ist.
Damit Sie später problemlos auf den Schlüssel zugreifen können, werden wir ihn in Google Cloud Storage speichern. Wählen Sie in der Cloud Console „Storage“ und dann „Browser“ aus.
Klicken Sie auf die Schaltfläche "Bucket erstellen".
Wählen Sie einen Namen für den Storage-Bucket aus (es muss sich um einen Namen handeln, der global in Google Cloud eindeutig ist) und klicken Sie auf die Schaltfläche „Erstellen“
Suchen Sie den Sicherheitsschlüssel, der automatisch heruntergeladen wurde, und ziehen Sie ihn per Drag-and-drop in den Storage-Bucket oder laden Sie ihn hoch
Nachdem der Schlüssel hochgeladen wurde, sollte er im Cloud Storage-Browser angezeigt werden.
Notieren Sie sich den Namen des Storage-Buckets und den Namen der Datei mit dem Sicherheitsschlüssel für später.
5. Cloud Functions-Funktion erstellen
Cloud-Computing ermöglicht vollständig serverlose Computing-Modelle, in denen die Logik ungeachtet der Ereignisquelle nach Bedarf hochgefahren werden kann. In diesem Lab wird jedes Mal eine Cloud Functions-Funktion gestartet, wenn eine Nachricht im Wetterthema veröffentlicht wird. Sie liest die Nachricht und speichert sie anschließend in BigQuery.
Wählen Sie in der Cloud Console „Cloud Functions“ aus.
Wenn eine API-Meldung angezeigt wird, klicken Sie auf die Schaltfläche „API aktivieren“.
Klicken Sie auf die Schaltfläche „Funktion erstellen“.
Geben Sie im Feld Name den Wert „function-weatherPubSubToBQ“ ein. Wählen Sie als Trigger das Cloud Pub/Sub-Thema und im Drop-down-Menü „Thema“ die Option weatherdata aus. Wählen Sie für Quellcode den Inline-Editor aus. Fügen Sie auf dem Tab „index.js“ den folgenden Code ein. Ändern Sie unbedingt die Konstanten für „projectId“, „datasetId“ und „tableId“, um sie an Ihre Umgebung anzupassen.
/**
* 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();
};
Fügen Sie auf dem Tab „package.json“ den folgenden Code in den Platzhaltercode ein:
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
Wenn die auszuführende Funktion auf „HelloWorld“ festgelegt ist, ändern Sie sie in „Subscribe“. Auf „Erstellen“ klicken
Es dauert etwa zwei Minuten, bis in der Funktion angezeigt wird, dass sie bereitgestellt wurde
Glückwunsch! Sie haben Pub/Sub gerade über Functions mit BigQuery verbunden.
6. IoT-Hardware einrichten (optional)
Raspberry Pi und Sensor zusammenbauen
Wenn es mehr als sieben Pins gibt, kürzen Sie den Header auf nur sieben. Löten Sie die Stifte an die Sensorplatine.
Bringen Sie die Hammerkopfstifte vorsichtig im Raspberry Pi an.
Formatieren Sie die SD-Karte und installieren Sie das NOOBS-Installationsprogramm (New Out Of Box Software). Folgen Sie dazu dieser Anleitung. Legen Sie die SD-Karte in den Raspberry Pi und den Raspberry Pi in das Gehäuse ein.
Verbinden Sie den Sensor über die Steckplatinenkabel mit dem Raspberry Pi (siehe Abbildung unten).
Raspberry Pi-Pin | Sensorverbindung |
Pin 1 (3,3 V) | FIN |
Pin 3 (CPIO2) | SDI |
PIN 5 (GPIO3) | Logo: SCK |
Pin 9 (Boden) | GND |
Schließen Sie den Monitor (über den Mini-HDMI-Anschluss), die Tastatur/Maus (über den USB-Hub) und schließlich das Netzteil an.
Raspberry Pi und Sensor konfigurieren
Nachdem der Start des Raspberry Pi abgeschlossen ist, wählen Sie Raspbian für das gewünschte Betriebssystem aus, vergewissern Sie sich, dass die gewünschte Sprache korrekt ist, und klicken Sie dann auf Installieren (das Festplattensymbol oben links im Fenster).
Klicken Sie oben rechts auf das WLAN-Symbol und wählen Sie ein Netzwerk aus. Wenn es sich um ein gesichertes Netzwerk handelt, geben Sie das Passwort (vorinstallierten Schlüssel) ein.
Klicken Sie oben links auf dem Bildschirm auf das Himbeer-Symbol, wählen Sie „Einstellungen“ und dann „Raspberry-Pi-Konfiguration“ aus. Aktivieren Sie auf dem Tab „Schnittstellen“ I2C. Legen Sie auf dem Tab „Lokalisierung“ das Gebietsschema und die Zeitzone fest. Lassen Sie nach dem Festlegen der Zeitzone den Neustart des Raspberry Pi zu.
Klicken Sie nach dem Neustart auf das Terminal-Symbol, um ein Terminalfenster zu öffnen.
Geben Sie den folgenden Befehl ein, um zu prüfen, ob der Sensor richtig angeschlossen ist.
sudo i2cdetect -y 1
Das Ergebnis sollte wie folgt aussehen. Stellen Sie sicher, dass als Wert 77 angezeigt wird.
Google Cloud SDK installieren
Damit Sie die Tools auf der Google Cloud Platform nutzen können, muss das Google Cloud SDK auf dem Raspberry Pi installiert werden. Das SDK enthält die Tools, die zur Verwaltung und Nutzung der Google Cloud Platform erforderlich sind, und ist für verschiedene Programmiersprachen verfügbar.
Öffnen Sie auf dem Raspberry Pi ein Terminalfenster, falls noch nicht geschehen, und legen Sie eine Umgebungsvariable fest, die der SDK-Version dem Betriebssystem auf dem Raspberry Pi entspricht.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Fügen Sie nun den Speicherort der Google Cloud SDK-Pakete hinzu, damit die Installationstools erkennen, wo sie suchen müssen, wenn sie aufgefordert werden, das SDK zu installieren.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
Fügen Sie den öffentlichen Schlüssel aus dem Paket-Repository von Google hinzu, damit der Raspberry Pi die Sicherheit überprüft und dem Inhalt während der Installation vertraut.
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Sicherstellen, dass die gesamte Software auf dem Raspberry Pi auf dem neuesten Stand ist, und das Google Cloud SDK installieren
sudo apt-get update && sudo apt-get install google-cloud-sdk
Wenn die Aufforderung „Möchten Sie fortfahren?“ angezeigt wird, drücken Sie die Eingabetaste.
Installieren Sie das Tendo-Paket mithilfe des Python-Paketmanagers. Dieses Paket wird verwendet, um zu prüfen, ob ein Skript mehrmals ausgeführt wird und für seine Anwendung im Wetterskript installiert wird.
pip install tendo
Mit dem Python-Paketmanager prüfen, ob die Google Cloud PubSub- und OAuth2-Pakete für Python installiert und auf dem neuesten Stand sind
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
Google Cloud SDK initialisieren
Das SDK ermöglicht authentifizierten Remotezugriff auf die Google Cloud. In diesem Codelab wird sie für den Zugriff auf den Storage-Bucket verwendet, damit der Sicherheitsschlüssel einfach auf den Raspberry Pi heruntergeladen werden kann.
Geben Sie in die Befehlszeile des Raspberry Pi
gcloud init --console-only
Wenn die Aufforderung „Möchten Sie sich anmelden (J/N)?“ angezeigt wird, drücken Sie die Eingabetaste.
Wenn die Meldung „Gehe zu folgendem Link in deinem Browser“ angezeigt wird: gefolgt von einer langen URL, die mit https://accounts.google.com/o/oauth?... beginnt, bewegen Sie den Mauszeiger auf die URL, klicken Sie mit der rechten Maustaste und wählen Sie "URL kopieren" aus. Öffnen Sie dann den Webbrowser (blaues Globussymbol in der oberen linken Ecke des Bildschirms), klicken Sie mit der rechten Maustaste über die Adressleiste und klicken Sie auf "Einfügen".
Geben Sie auf dem Anmeldebildschirm die E-Mail-Adresse ein, die mit Ihrem Google Cloud-Konto verknüpft ist, und drücken Sie die Eingabetaste. Gib dann dein Passwort ein und klicke auf die Schaltfläche Next (Weiter).
Sie werden aufgefordert, dass das Google Cloud SDK auf Ihr Google-Konto zugreifen möchte. Klicken Sie auf die Schaltfläche Zulassen.
Der Bestätigungscode wird Ihnen angezeigt. Markieren Sie es mit der Maus, klicken Sie mit der rechten Maustaste darauf und wählen Sie „Kopieren“. Kehren Sie zum Terminalfenster zurück und achten Sie darauf, dass sich der Cursor rechts neben "Bestätigungscode eingeben:" befindet. Klicken Sie mit der rechten Maustaste und wählen Sie dann "Einfügen" aus. Drücken Sie die Eingabetaste.
Wenn Sie nach „Cloud-Projekt auswählen:“ gefragt werden, geben Sie die Nummer ein, die dem Projektnamen entspricht, den Sie für dieses Codelab verwendet haben, und drücken Sie dann die Eingabetaste.
Wenn Sie aufgefordert werden, die Compute API zu aktivieren, drücken Sie die Eingabetaste. Anschließend werden Sie aufgefordert, die Google Compute Engine-Einstellungen zu konfigurieren. Drücken Sie die Eingabetaste. Es wird eine Liste potenzieller Regionen/Zonen angezeigt. Wählen Sie eine in Ihrer Nähe aus, geben Sie die entsprechende Zahl ein und drücken Sie die Eingabetaste.
In Kürze werden einige zusätzliche Informationen angezeigt. Das Google Cloud SDK ist jetzt konfiguriert. Sie können das Browserfenster schließen, da Sie es nicht mehr benötigen.
Sensorsoftware und Wetterskript installieren
Klonen Sie über die Befehlszeile auf dem Raspberry Pi die erforderlichen Pakete, um Informationen von den Eingabe-/Ausgabe-Pins zu lesen.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
Heruntergeladene Pakete installieren
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
Klonen Sie den Projektcode, der den Wettersensor aktiviert
git clone https://github.com/googlecodelabs/iot-data-pipeline
Kopieren Sie den Sensortreiber in das Verzeichnis, in dem sich auch die heruntergeladene Software befindet.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
Skript durch Eingabe von...
nano checkWeather.py
Ändern Sie das Projekt in Ihre Projekt-ID und das Thema in den Namen Ihres Pub/Sub-Themas (diese wurden in diesem Codelab in den Abschnitten zum Einrichten und Erstellen eines Pub/Sub-Themas notiert).
Ändern Sie die Werte „sensorID“, „sensorZipCode“, „sensorLat“ und „sensorLong“ in einen beliebigen Wert. Die Breiten- und Längengradwerte für einen bestimmten Standort oder eine bestimmte Adresse finden Sie hier.
Wenn Sie die erforderlichen Änderungen vorgenommen haben, drücken Sie Strg + X, um den nano-Editor zu schließen. Drücken Sie zur Bestätigung „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"
Sicherheitsschlüssel installieren
Kopieren Sie den Sicherheitsschlüssel aus dem Abschnitt „Sichere Veröffentlichung zu einem Thema“ auf den Raspberry Pi.
Wenn Sie SFTP oder SCP verwendet haben, um den Sicherheitsschlüssel von Ihrem lokalen Computer auf Ihren Raspberry Pi (in das Verzeichnis /home/pi) zu kopieren, können Sie den nächsten Schritt überspringen und zum Exportieren des Pfads wechseln.
Wenn Sie den Sicherheitsschlüssel in einem Storage-Bucket abgelegt haben, müssen Sie sich den Namen des Storage-Buckets und den Namen der Datei merken. Kopieren Sie den Sicherheitsschlüssel mit dem Befehl gsutil. Dieser Befehl kann auf Google Storage zugreifen (warum es gsutil heißt und warum der Pfad zur Datei mit gs:// beginnt). Ändern Sie den Befehl unten so, dass der Bucket- und der Dateiname übernommen werden.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
Es sollte eine Meldung angezeigt werden, dass die Datei kopiert wird und der Vorgang abgeschlossen ist.
Exportieren Sie über die Befehlszeile auf dem Raspberry Pi den Pfad zum Sicherheitsschlüssel. Ändern Sie dabei den Dateinamen entsprechend.
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
Sie haben jetzt einen fertigen IoT-Wettersensor, der Daten an Google Cloud übertragen kann.
7. Datenpipeline starten
Möglicherweise muss die Compute API aktiviert werden
Datenstreaming von einem Raspberry Pi
Wenn Sie einen Raspberry Pi IoT-Wettersensor konstruiert haben, starten Sie das Skript, das die Wetterdaten liest und per Push in Google Cloud Pub/Sub überträgt. Wenn Sie sich nicht im Verzeichnis „/home/pi/iot-data-pipeline“ befinden, gehen Sie zuerst dorthin
cd /home/pi/iot-data-pipeline
Wetterskript starten
python checkWeather.py
Das Terminalfenster sollte jede Minute die Ergebnisse der Wetterdaten anzeigen. Wenn die Daten übertragen werden, können Sie mit dem nächsten Abschnitt (Überprüfen, ob die Daten übertragen werden) fortfahren.
Simuliertes Datenstreaming
Wenn Sie den IoT-Wettersensor nicht selbst entwickelt haben, können Sie das Datenstreaming simulieren, indem Sie ein öffentliches Dataset verwenden, das in Google Cloud Storage gespeichert ist und dieses in das vorhandene Pub/Sub-Thema einspeisen. Es werden Google Dataflow und eine von Google bereitgestellte Vorlage zum Lesen aus Cloud Storage und zum Veröffentlichen in Pub/Sub verwendet.
Da Dataflow einen temporären Speicherort benötigt, erstellen wir zu diesem Zweck einen Storage-Bucket.
Wählen Sie in der Cloud Console „Storage“ und dann „Browser“ aus.
Klicken Sie auf die Schaltfläche "Bucket erstellen".
Wählen Sie einen Namen für den Storage-Bucket aus (es muss ein Name sein, der global in Google Cloud eindeutig ist) und klicken Sie auf die Schaltfläche „Erstellen“. Merken Sie sich den Namen dieses Storage-Buckets, da er in Kürze benötigt wird.
Wählen Sie in der Cloud Console "Dataflow" aus.
Klicken Sie im oberen Teil des Bildschirms auf „Job aus Vorlage erstellen“.
Geben Sie die Auftragsdetails wie unten gezeigt ein. Achten Sie dabei auf Folgendes:
- Geben Sie den Jobnamen "dataflow-gcs-to-pubsub" ein
- Ihre Region sollte automatisch basierend darauf ausgewählt werden, wo Ihr Projekt gehostet wird, und sollte nicht geändert werden müssen.
- Cloud Dataflow-Vorlage von GCS Text für Cloud Pub/Sub auswählen
- Geben Sie als Eingabedatei für Cloud Storage Folgendes ein: gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (dies ist ein öffentliches Dataset).
- Der genaue Pfad für das Pub/Sub-Ausgabethema hängt vom Projektnamen ab und sieht in etwa so aus: „projects/yourProjectName/topics/weatherdata“
- Legen Sie als temporärer Speicherort den Namen des gerade erstellten Google Cloud Storage-Buckets zusammen mit dem Dateinamenspräfix „tmp“ fest. Er sollte so aussehen: „gs://myStorageBucketName/tmp“.
Wenn Sie alle Informationen ausgefüllt haben (siehe unten), klicken Sie auf die Schaltfläche Job ausführen
Der Dataflow-Job sollte jetzt ausgeführt werden.
Es sollte etwa eine Minute dauern, bis der Dataflow-Job abgeschlossen ist.
8. Prüfen, ob die Daten fließen
Cloud Functions-Logs
Achten Sie darauf, dass die Cloud Functions-Funktion von Pub/Sub ausgelöst wird
gcloud beta functions logs read function-weatherPubSubToBQ
Die Logs sollten zeigen, dass die Funktion ausgeführt wird, Daten empfangen werden und dass sie in BigQuery eingefügt werden
BigQuery-Daten
Prüfen Sie, ob Daten in die BigQuery-Tabelle fließen. Rufen Sie in der Cloud Console BigQuery (bigquery.cloud.google.com) auf.
Klicken Sie unter dem Projektnamen (auf der linken Seite des Fensters) auf das Dataset (weatherData), dann auf die Tabelle (weatherDataTable) und anschließend auf die Schaltfläche Query Table (Abfragetabelle).
Fügen Sie der SQL-Anweisung ein Sternchen ein, sodass sie wie unten gezeigt SELECT * FROM... lautet, und klicken Sie dann auf die Schaltfläche RUN QUERY (ABFRAGE AUSFÜHREN)
Wenn Sie dazu aufgefordert werden, klicken Sie auf die Schaltfläche Abfrage ausführen
Wenn Sie Ergebnisse sehen, fließen die Daten ordnungsgemäß.
Da die Daten fließen, können Sie nun ein Analyse-Dashboard erstellen.
9. Data Studio-Dashboard erstellen
Mit Google Data Studio können Sie aussagekräftige Dashboards und Berichte erstellen, teilen und entsprechend Ihren Anforderungen anpassen.
Rufen Sie in Ihrem Webbrowser https://datastudio.google.com auf.
Klicken Sie unter „Neuen Bericht starten“ auf „Leer“ und dann auf die Schaltfläche „Jetzt starten“.
Aktivieren Sie das Kontrollkästchen, um die Bedingungen zu akzeptieren, klicken Sie auf die Schaltfläche Weiter , wählen Sie die E-Mails aus, die Sie erhalten möchten, und klicken Sie auf Fertig. Klicken Sie wieder unter „Neuen Bericht starten“ auf „Leer“.
Klicken Sie auf die Schaltfläche „Neue Datenquelle erstellen“.
Klicken Sie auf „BigQuery“ und dann auf die Schaltfläche „Autorisieren“. Wählen Sie dann das Google-Konto aus, das Sie mit Data Studio verwenden möchten. Es sollte dasselbe Konto sein, das Sie für das Codelab verwendet haben.
Klicken Sie auf die Schaltfläche „Zulassen“.
Wählen Sie den Projektnamen, das Dataset und die Tabelle aus. Klicken Sie dann auf die Schaltfläche Verbinden.
Ändern Sie die Typfelder wie unten gezeigt (alles sollte eine Zahl sein, außer der zeiterfassungsbezogenen ID und der sensorID). Beachten Sie, dass timecollected auf Datum/Stunde (und nicht nur auf Datum) eingestellt ist. Ändern Sie die Felder für die Zusammenfassung wie unten dargestellt. Taupunkt, Temperatur, Luftfeuchtigkeit und Druck sollten Durchschnittswerte sein und alles andere auf „Keine“. Klicken Sie auf die Schaltfläche Bericht erstellen.
Klicken Sie zur Bestätigung auf die Schaltfläche „Zum Bericht hinzufügen“.
Wenn Sie aufgefordert werden, Ihr Google-Konto auszuwählen, klicken Sie auf die Schaltfläche „Zulassen“, damit die Berichte von Data Studio in Google Drive gespeichert werden.
Nun wird ein leerer Canvas angezeigt, auf dem Sie Ihr Dashboard erstellen können. Wählen Sie in der oberen Symbolzeile die Option Zeitreihe aus.
Zeichnen Sie ein Rechteck in die obere linke Ecke des leeren Tabellenblatts. Es sollte etwa ein Viertel des gesamten leeren Tabellenblatts einnehmen.
Wählen Sie auf der rechten Seite des Fensters die Registerkarte Stil aus. Fehlende Daten von "Zeile zu Null" ändern zu "Zeilenumbrüche". Löschen Sie im Bereich Linke Y-Achse die „0“ von „Achse (Min.)“, um sie in (Auto) zu ändern.
Klicken Sie auf die Grafik auf dem Blatt und kopieren Sie sie dreimal und fügen Sie sie mit Strg + C/Strg + V ein. Richten Sie die Diagramme so aus, dass jedes ein Viertel des Layouts hat.
Klicken Sie auf jedes Diagramm und im Abschnitt Zeitreiheneigenschaften und Daten auf den vorhandenen Messwert (Taupunkt). Wählen Sie eine andere Metrik aus, die angezeigt werden soll, bis alle vier Wettermesswerte (Taupunkt, Temperatur, Luftfeuchtigkeit und Druck) ein eigenes Diagramm haben.
Sie haben jetzt ein einfaches Dashboard!
10. Glückwunsch!
Sie haben eine komplette Datenpipeline erstellt. Dabei haben Sie gelernt, wie Sie Google Pub/Sub verwenden, eine serverlose Funktion bereitstellen, BigQuery nutzen und mit Data Studio ein Analysedashboard erstellen. Darüber hinaus haben Sie erfahren, wie Sie mit dem Google Cloud SDK Daten sicher in die Google Cloud Platform übertragen können. Schließlich haben Sie jetzt praktische Erfahrung mit einem wichtigen Architekturmuster, das große Datenmengen bewältigen kann, ohne die Verfügbarkeit zu beeinträchtigen.
Klären
Nachdem Sie mit den Wetterdaten und der Analysepipeline experimentiert haben, können Sie die laufenden Ressourcen entfernen.
Wenn Sie den IoT-Sensor selbst gebaut haben, fahren Sie ihn herunter. Drücken Sie im Terminalfenster Strg + C, um das Skript anzuhalten, und geben Sie dann Folgendes ein, um den Raspberry Pi auszuschalten
shutdown -h now
Rufen Sie Cloud Functions auf, klicken Sie auf das Kästchen neben „function-weatherPubSubToBQ“ und dann auf „Löschen“.
Rufen Sie Pub/Sub auf, klicken Sie auf „Topic“ (Thema), klicken Sie auf das Kästchen neben dem „weatherdata“-Thema und dann auf „Delete“ (Löschen).
Gehen Sie zu „Storage“, klicken Sie auf die Kästchen neben den Storage-Buckets und dann auf „Löschen“.
Rufen Sie bigquery.cloud.google.com auf, klicken Sie auf den Abwärtspfeil neben dem Projektnamen, dann auf den Abwärtspfeil rechts neben dem weatherData-Dataset und klicken Sie dann auf „Delete dataset“ (Dataset löschen).
Geben Sie bei entsprechender Aufforderung die Dataset-ID (weatherData) ein, um den Löschvorgang abzuschließen.