1. Visão geral/Introdução
Embora aplicativos de vários níveis compostos de Web, servidor de aplicativos e banco de dados sejam fundamentais para o desenvolvimento da Web e sejam o ponto de partida de muitos sites, o sucesso muitas vezes traz desafios relacionados à escalonabilidade, integração e agilidade. Por exemplo, como os dados podem ser processados em tempo real e distribuídos para vários sistemas de negócios importantes? Esses problemas, juntamente com as demandas de aplicativos em escala de Internet, geraram a necessidade de um sistema de mensagens distribuído e deram origem a um padrão de arquitetura para usar pipelines de dados e alcançar sistemas resilientes em tempo real. Como resultado, entender como publicar dados em tempo real em um sistema de mensagens distribuído e como criar um pipeline de dados são habilidades cruciais para desenvolvedores e arquitetos.
O que você criará
Neste codelab, você criará um pipeline de dados meteorológicos que começa com um dispositivo de Internet das Coisas (IoT), utiliza uma fila de mensagens para receber e entregar dados, aproveita uma função sem servidor para movê-los para um data warehouse e, em seguida, cria um painel que exibe as informações. Um Raspberry Pi com um sensor meteorológico será usado para o dispositivo IoT, e vários componentes do Google Cloud Platform vão formar o pipeline de dados. Criar o Raspberry Pi, embora seja benéfico, é uma parte opcional deste codelab, e os dados meteorológicos de streaming podem ser substituídos por um script.
Depois de concluir as etapas deste codelab, você terá um pipeline de dados de streaming alimentando um painel que exibe temperatura, umidade, ponto de orvalho e pressão do ar.
O que você vai aprender
- Como usar o Pub/Sub do Google
- Como implantar uma Função do Google Cloud
- Como aproveitar o Google BigQuery
- Como criar um painel usando o Google Data Studio
- Além disso, se você criar o sensor de IoT, também vai aprender a usar o SDK do Google Cloud e a proteger chamadas de acesso remoto ao Google Cloud Platform.
O que é necessário
- Uma conta do Google Cloud Platform. Novos usuários do Google Cloud Platform estão qualificados para um teste sem custo financeiro de US$300.
Se você quiser criar a parte do sensor de IoT deste codelab em vez de usar dados de amostra e um script, também vai precisar do seguinte ( que pode ser solicitado como um kit completo ou como partes individuais).
- Raspberry Pi Zero W com fonte de alimentação, cartão de memória SD e estojo
- Leitor de cartão USB
- Hub USB (para conectar um teclado e um mouse à única porta USB do Raspberry Pi)
- Fios de breadboard fêmea para fêmea
- Cabeçalhos GPIO Hammer
- Sensor BME280
- Ferro de solda com solda
Além disso, é necessário ter acesso a um monitor de computador ou TV com entrada HDMI, um cabo HDMI, um teclado e um mouse.
2. Etapas da configuração
Configuração de ambiente personalizada
Crie uma se você ainda não tem uma Conta do Google (Gmail ou G Suite). Independente de você já ter uma Conta do Google ou não, aproveite o teste gratuito de US$ 300.
Faça login no console do Google Cloud Platform ( console.cloud.google.com). Você pode usar o projeto padrão ("My First Project") para este laboratório ou criar um novo. Se você quiser criar um novo projeto, use a página "Gerenciar recursos". O ID do projeto precisa ser um nome exclusivo em todos os projetos do Google Cloud (o nome mostrado abaixo já foi usado e não vai funcionar para você). Anote o ID do projeto (ou seja, o ID do projeto será _____), porque ele será necessário mais tarde.
A execução por meio deste codelab não vai custar mais do que alguns dólares, mas pode ser mais se você decidir usar mais recursos ou se deixá-los em execução. Não deixe de conferir a seção "Limpeza" no final do codelab.
3. Criar uma tabela do BigQuery
O BigQuery é um data warehouse corporativo sem servidor, altamente escalonável e de baixo custo. Ele é a opção ideal para armazenar dados transmitidos de dispositivos de IoT, além de permitir que um painel de análise consulte as informações.
Vamos criar uma tabela para armazenar todos os dados climáticos de IoT. Selecione o BigQuery no console do Cloud. O BigQuery será aberto em uma nova janela. Não feche a janela original, porque você vai precisar acessá-la novamente.
Clique no ícone de seta para baixo ao lado do nome do projeto e selecione "Create new dataset"
Insira "weatherData" para o conjunto de dados, selecione um local onde ele será armazenado e clique em "OK".
Clique no sinal de "+" ao lado do conjunto de dados para criar uma nova tabela.
Em Dados de origem, selecione Criar tabela vazia. Em "Nome da tabela de destino", insira weatherDataTable. Em Esquema, clique no botão Adicionar campo até que haja um total de nove campos. Preencha os campos conforme mostrado abaixo e selecione também o Tipo apropriado para cada um deles. Quando tudo estiver pronto, clique no botão Criar tabela.
O resultado será parecido com este...
Agora você tem um data warehouse configurado para receber dados meteorológicos.
4. Criar um tópico do Pub/Sub
O Cloud Pub/Sub é uma base simples, confiável e escalonável para a análise de streams e sistemas de computação voltados a eventos. Por isso, ele é perfeito para lidar com mensagens de IoT recebidas e permitir que os sistemas downstream as processem.
Se você ainda estiver na janela do BigQuery, volte ao console do Cloud. Se você tiver fechado o console do Cloud, acesse https://console.cloud.google.com
No console do Cloud, selecione Pub/Sub e Tópicos.
Se um prompt "Ativar API" aparecer, clique no botão "Ativar API".
Clique no botão "Criar um tópico".
Insira "weatherdata" como o nome do tópico e clique em "Criar".
O tópico recém-criado deve aparecer
Agora você tem um tópico do Pub/Sub para publicar mensagens de IoT e permitir que outros processos as acessem.
Publicação segura no tópico
Se você planeja publicar mensagens no tópico do Pub/Sub de recursos fora do console do Google Cloud (por exemplo, um sensor de IoT), será necessário controlar o acesso com mais rigor usando uma conta de serviço e garantir a segurança da conexão criando um certificado de confiança.
No Console do Cloud, selecione "IAM e administrador" e "Contas de serviço".
Clique no botão "Criar conta de serviço"
No menu suspenso Papel, selecione o papel Editor do Pub/Sub.
Digite um nome de conta de serviço (iotWeatherPublisher), marque a caixa de seleção "Fornecer uma nova chave privada", verifique se o tipo de chave está definido como JSON e clique em "Criar".
O download da chave de segurança será feito automaticamente. Como há apenas uma chave, é importante não perdê-la. Clique em "Fechar".
Uma conta de serviço foi criada e um ID de chave foi associado a ela.
Para facilitar o acesso à chave mais tarde, vamos armazená-la no Google Cloud Storage. No Console do Cloud, selecione "Armazenamento" e "Navegador".
Clique no botão "Criar bucket".
Escolha um nome para o bucket de armazenamento (ele precisa ser globalmente exclusivo em todo o Google Cloud) e clique no botão "Criar".
Localize a chave de segurança que foi salva automaticamente e arraste/solte ou faça upload dela para o bucket de armazenamento
Depois que o upload da chave for concluído, ela vai aparecer no navegador do Cloud Storage.
Anote o nome do bucket de armazenamento e do arquivo de chave de segurança para uso posterior.
5. Criar um Cloud Function
A computação em nuvem possibilitou modelos de computação totalmente sem servidor, em que a lógica pode ser ativada sob demanda em resposta a eventos originados de qualquer lugar. Neste laboratório, uma Função do Cloud vai ser iniciada toda vez que uma mensagem for publicada no tópico de clima, vai ler a mensagem e a armazenar no BigQuery.
No console do Cloud, selecione Cloud Functions
Se aparecer uma mensagem de API, clique no botão "Ativar API".
Clique no botão Criar função
No campo Nome, digite function-weatherPubSubToBQ. Em "Acionador", selecione "Tópico do Cloud Pub/Sub" e, no menu suspenso "Tópico", selecione "weatherdata". Para o código-fonte, selecione o editor in-line. Na guia index.js, cole o código abaixo sobre o que está lá para começar. Altere as constantes de projectId, datasetId e tableId para se adequar ao seu ambiente.
/**
* 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();
};
Na guia "package.json", cole o código abaixo no marcador de posição.
{
"name": "function-weatherPubSubToBQ",
"version": "0.0.1",
"private": true,
"license": "Apache-2.0",
"author": "Google Inc.",
"dependencies": {
"@google-cloud/bigquery": "^0.9.6"
}
}
Se a função a ser executada estiver definida como "HelloWorld", mude para "subscribe". Clique no botão "Criar"
Levará cerca de dois minutos até que a função mostre que foi implantada.
Parabéns! Você acabou de conectar o Pub/Sub ao BigQuery usando as Funções.
6. Configurar o hardware de IoT (opcional)
Montar o Raspberry Pi e o sensor
Se houver mais de sete pinos, corte o cabeçalho para apenas sete pinos. Solde os pinos de cabeçalho na placa do sensor.
Instale com cuidado os pinos do cabeçalho do martelo no Raspberry Pi.
Formate o cartão SD e instale o instalador do novo software pronto para uso (NOOBS, na sigla em inglês) seguindo estas etapas. Insira o cartão SD no Raspberry Pi e coloque o Raspberry Pi no estojo.
Use os fios da placa de ensaio para conectar o sensor ao Raspberry Pi, de acordo com o diagrama abaixo.
Pino do Raspberry Pi | Conexão do sensor |
Pino 1 (3,3 V) | VIN |
Pino 3 (CPIO2) | SDI |
Pin 5 (GPIO3) | SCK |
Pino 9 (terra) | GND |
Conecte o monitor (usando o conector mini-HDMI), o teclado/mouse (com o hub USB) e, por fim, o adaptador de energia.
Configurar o Raspberry Pi e o sensor
Depois que o Raspberry Pi terminar de inicializar, selecione Raspbian para o sistema operacional desejado, verifique se o idioma está correto e clique em "Instalar" (ícone do disco rígido no canto superior esquerdo da janela).
Clique no ícone de Wi-Fi no canto superior direito da tela e selecione uma rede. Se for uma rede segura, digite a senha (chave pré-compartilhada).
Clique no ícone de framboesa no canto superior esquerdo da tela, selecione "Preferências" e depois "Configuração do Raspberry Pi". Na guia "Interfaces", ative o I2C. Na guia "Localização", defina a localidade e o fuso horário. Depois de definir o fuso horário, reinicie o Raspberry Pi.
Depois que a reinicialização for concluída, clique no ícone do terminal para abrir uma janela.
Digite o comando a seguir para garantir que o sensor esteja conectado corretamente.
sudo i2cdetect -y 1
O resultado será semelhante a este: verifique se o valor é 77.
Instalar o SDK do Google Cloud
Para aproveitar as ferramentas do Google Cloud Platform, o SDK Google Cloud precisará ser instalado no Raspberry Pi. O SDK inclui as ferramentas necessárias para gerenciar e aproveitar o Google Cloud Platform e está disponível para várias linguagens de programação.
Se ainda não tiver feito isso, abra uma janela do terminal no Raspberry Pi e defina uma variável de ambiente que corresponda a versão do SDK ao sistema operacional no Raspberry Pi.
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"
Agora adicione o local onde os pacotes do SDK Google Cloud estão armazenados para que as ferramentas de instalação saibam onde procurar quando forem solicitadas a instalar o SDK.
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
Adicione a chave pública do repositório de pacotes do Google para que o Raspberry Pi verifique a segurança e confie no conteúdo durante a instalação
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
Verifique se todos os softwares do Raspberry Pi estão atualizados e instale o SDK principal do Google Cloud.
sudo apt-get update && sudo apt-get install google-cloud-sdk
Quando a mensagem "Do you want to continue?", pressione Enter.
Instale o pacote do tendão usando o gerenciador de pacotes do Python. Esse pacote é usado para verificar se um script está sendo executado mais de uma vez e sendo instalado para seu aplicativo no script climático.
pip install tendo
Verifique se os pacotes Google Cloud PubSub e OAuth2 para Python estão instalados e atualizados usando o gerenciador de pacotes Python
sudo pip install --upgrade google-cloud-pubsub
sudo pip install --upgrade oauth2client
Inicializar o SDK do Google Cloud
Com o SDK, é possível ter acesso remoto e autenticado ao Google Cloud. Para este codelab, ele será usado para acessar o bucket de armazenamento, para que a chave de segurança possa ser transferida facilmente para o Raspberry Pi.
Na linha de comando do Raspberry Pi, digite
gcloud init --console-only
Quando for exibida a mensagem "Quer fazer login (Y/n)?", pressione Enter.
Quando você vir "Acesse o link a seguir no seu navegador:" seguido por um URL longo que começa com https://accounts.google.com/o/oauth?..., passe o cursor sobre o URL com o mouse, clique com o botão direito do mouse e selecione "Copiar URL". Em seguida, abra o navegador da Web (ícone de globo azul no canto superior esquerdo da tela), clique com o botão direito do mouse na barra de endereço e clique em "Colar".
Quando a tela de login aparecer, digite o endereço de e-mail associado à sua conta do Google Cloud e pressione Enter. Em seguida, digite sua senha e clique no botão "Próxima".
Você verá um aviso de que o SDK Google Cloud quer acessar sua Conta do Google. Clique no botão "Permitir".
O código de verificação vai aparecer. Usando o mouse, destaque-o, clique com o botão direito do mouse e escolha Copiar. Volte para a janela do terminal, verifique se o cursor está à direita de "Insira o código de verificação:", clique com o botão direito do mouse e escolha "Colar". Pressione o botão Enter.
Se você receber a mensagem "Selecione o projeto do Cloud a ser usado:", insira o número correspondente ao nome do projeto que você está usando neste codelab e pressione Enter.
Se você receber uma solicitação para ativar a API Compute, pressione o botão Enter para ativar. Em seguida, você precisará definir as configurações do Google Compute Engine. Pressione Enter. Uma lista de possíveis regiões/zonas vai aparecer. Escolha uma perto de você, insira o número correspondente e pressione Enter.
Em instantes, serão exibidas algumas informações adicionais. O SDK do Google Cloud está configurado. Você pode fechar a janela do navegador da Web, porque não vai precisar dela daqui para frente.
Instalar o software do sensor e o script de clima
Na linha de comando do Raspberry Pi, clone os pacotes necessários para ler informações dos pinos de entrada/saída.
git clone https://github.com/adafruit/Adafruit_Python_GPIO
Instalar os pacotes transferidos
cd Adafruit_Python_GPIO
sudo python setup.py install
cd ..
Clone o código do projeto que ativa o sensor de clima
git clone https://github.com/googlecodelabs/iot-data-pipeline
Copie o driver do sensor para o mesmo diretório do restante do software transferido por download.
cd iot-data-pipeline/third_party/Adafruit_BME280
mv Adafruit_BME280.py ../..
cd ../..
Para editar o script, digite...
nano checkWeather.py
Mude o projeto para o ID do projeto e o tópico para o nome do tópico do Pub/Sub. Eles foram anotados nas seções "Configuração inicial" e "Criar um tópico do Pub/Sub" deste codelab.
Mude os valores de sensorID, sensorZipCode, sensorLat e sensorLong para o que quiser. Os valores de latitude e longitude de um local ou endereço específico podem ser encontrados aqui.
Quando terminar de fazer as alterações necessárias, pressione Ctrl-X para começar a sair do editor nano. Pressione Y para confirmar.
# 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"
Instalar a chave de segurança
Copie a chave de segurança da seção "Publicação segura em um tópico" para o Raspberry Pi.
Se você usou SFTP ou SCP para copiar a chave de segurança da máquina local para o Raspberry Pi (no diretório /home/pi), pule a próxima etapa e exporte o caminho.
Se você colocou a chave de segurança em um bucket de armazenamento, precisará lembrar o nome do bucket de armazenamento e do arquivo. Use o comando gsutil para copiar a chave de segurança. Esse comando pode acessar o Google Storage (por isso é chamado de gsutil e o caminho do arquivo começa com gs://). Mude o comando abaixo para incluir o nome do bucket e do arquivo.
gsutil cp gs://nameOfYourBucket/yourSecurityKeyFilename.json .
Uma mensagem vai aparecer informando que o arquivo está sendo copiado e que a operação foi concluída.
Na linha de comando do Raspberry Pi, exporte um caminho para a chave de segurança (mude o nome do arquivo para corresponder ao que você tem)
export GOOGLE_APPLICATION_CREDENTIALS=/home/pi/iot-data-pipeline/yourSecurityKeyFilename.json
Agora você tem um sensor climático de IoT completo pronto para transmitir dados ao Google Cloud.
7. Iniciar o pipeline de dados
Talvez seja necessário ativar a API Compute
Streaming de dados de um Raspberry Pi
Se você criou um sensor de clima IoT Raspberry Pi, inicie o script que vai ler os dados meteorológicos e enviá-los ao Google Cloud Pub/Sub. Se você não estiver no diretório /home/pi/iot-data-pipeline, vá para lá primeiro.
cd /home/pi/iot-data-pipeline
Iniciar o script de previsão do tempo
python checkWeather.py
A janela do terminal vai transmitir os resultados dos dados meteorológicos a cada minuto. Se os dados estiverem fluindo, pule para a próxima seção: "Verificar se os dados estão fluindo".
Streaming de dados simulado
Se você não criou o sensor de clima da IoT, é possível simular o streaming de dados usando um conjunto de dados público armazenado no Google Cloud Storage e alimentando-o no tópico do Pub/Sub. O Google Dataflow será usado com um modelo fornecido pelo Google para leitura no Cloud Storage e publicação no Pub/Sub.
Como parte do processo, o Dataflow vai precisar de um local de armazenamento temporário. Vamos criar um bucket de armazenamento para essa finalidade.
No Console do Cloud, selecione "Armazenamento" e "Navegador".
Clique no botão "Criar bucket".
Escolha um nome para o bucket de armazenamento (ele precisa ser exclusivo globalmente em todo o Google Cloud) e clique no botão "Criar". Não se esqueça do nome deste bucket de armazenamento, porque ele será necessário em breve.
No Console do Cloud, selecione Dataflow.
Clique em "Criar job usando um modelo" (parte de cima da tela).
Preencha os detalhes do job conforme mostrado abaixo, prestando atenção ao seguinte:
- Insira um nome de job de dataflow-gcs-to-pubsub
- Sua região precisa ser selecionada automaticamente de acordo com o local em que seu projeto está hospedado e não precisa ser alterada.
- Selecione um modelo do Cloud Dataflow de texto do GCS para o Cloud Pub/Sub
- Para os arquivos de entrada do Cloud Storage, insira gs://codelab-iot-data-pipeline-sampleweatherdata/*.json (este é um conjunto de dados público).
- Para o tópico de saída do Pub/Sub, o caminho exato dependerá do nome do seu projeto e será algo como "projects/yourProjectName/topics/weatherdata"
- Defina o local temporário como o nome do bucket do Google Cloud Storage que você acabou de criar com o prefixo de nome de arquivo "tmp". Ele deve ter esta aparência: "gs://myStorageBucketName/tmp".
Quando todas as informações estiverem preenchidas (veja abaixo), clique no botão "Executar job".
O job do Dataflow começará a ser executado.
Leva cerca de um minuto para que o job do Dataflow seja concluído.
8. Verificar se os dados estão fluindo
Registros de funções do Cloud
Verifique se a Função do Cloud está sendo acionada pelo Pub/Sub
gcloud beta functions logs read function-weatherPubSubToBQ
Os registros precisam mostrar que a função está sendo executada, que os dados estão sendo recebidos e que eles estão sendo inseridos no BigQuery.
Dados do BigQuery
Verifique se os dados estão fluindo para a tabela do BigQuery. No console do Cloud, acesse o BigQuery (bigquery.cloud.google.com).
No nome do projeto (no lado esquerdo da janela), clique no Conjunto de dados (weatherData), na tabela (weatherDataTable) e, em seguida, clique no botão Query Table
Adicione um asterisco à instrução SQL para ler SELECT * FROM... conforme mostrado abaixo e depois clique no botão EXECUTAR CONSULTA
Se solicitado, clique no botão "Executar consulta".
Se você encontrar resultados, os dados estão fluindo corretamente.
Com os dados fluindo, você já pode criar um painel de análise.
9. Criar um painel do Data Studio
O Google Data Studio transforma os dados em relatórios e painéis informativos, fáceis de ler e de compartilhar e totalmente personalizáveis.
No seu navegador da Web, acesse https://datastudio.google.com.
Em "Iniciar um novo relatório", clique em "Em branco" e no botão "Começar"
Clique na caixa de seleção para aceitar os termos, clique no botão Avançar, selecione quais e-mails você está interessado em receber e clique no botão Concluído. Mais uma vez, em "Iniciar um novo relatório", clique em "Em branco".
Clique no botão "Criar nova fonte de dados".
Clique no BigQuery e, em seguida, no botão "Autorizar" e escolha a Conta do Google que você quer usar com o Data Studio (precisa ser a mesma usada no codelab).
Clique no botão "Permitir".
Selecione o nome do projeto, o conjunto de dados e a tabela. Em seguida, clique no botão "Conectar".
Mude os campos de tipo conforme mostrado abaixo. Tudo precisa ser um número, exceto timecollected e sensorID. Observe que a variável timecollected é definida como "Data e hora" (e não apenas "Data"). Altere os campos de agregação como mostrado abaixo (ponto de condensação, temperatura, umidade e pressão devem ser as médias e todo o restante deve ser definido como "Nenhum"). Clique no botão Criar relatório.
Confirme clicando no botão "Adicionar ao relatório".
Se for solicitado, selecione sua Conta do Google e clique no botão "Permitir" para que o Data Studio armazene os relatórios no Google Drive.
Você vai encontrar uma tela em branco para criar seu painel. Na linha superior de ícones, selecione "Série temporal".
Desenhe um retângulo no canto superior esquerdo da folha em branco. Ela deve ocupar cerca de 1⁄4 da folha em branco total.
No lado direito da janela, selecione a guia Style. Mude os dados ausentes de "Linha para zero" para "Quebras de linha". Na seção "Eixo Y à esquerda", exclua o 0 do valor mínimo do eixo para mudar para "(Automático)".
Clique no gráfico na planilha e copie/cole (Ctrl-C/Ctrl-V) três vezes. Alinhe os gráficos para que cada um tenha 1⁄4 do layout.
Clique em cada gráfico e, na seção "Propriedades e dados da série temporal", clique na métrica atual (ponto de orvalho) e escolha outra métrica para ser exibida até que as quatro leituras do tempo (ponto de orvalho, temperatura, umidade e pressão) tenham gráficos próprios.
Agora você tem um painel básico.
10. Parabéns!
Você criou um pipeline de dados inteiro. Ao fazer isso, você aprendeu a usar o Google Pub/Sub, a implantar uma função sem servidor, a aproveitar o BigQuery e a criar um painel de análise usando o Data Studio. Além disso, você aprendeu a usar o SDK do Google Cloud de forma segura para trazer dados para o Google Cloud Platform. Por fim, agora você tem uma experiência prática com um padrão de arquitetura importante que pode lidar com altos volumes e, ao mesmo tempo, manter a disponibilidade.
Limpeza
Depois de terminar de testar os dados meteorológicos e o pipeline de análise, remova os recursos em execução.
Se você criou o sensor de IoT, desligue-o. Pressione Ctrl-C na janela do terminal para interromper o script e digite o seguinte para desligar o Raspberry Pi
shutdown -h now
Acesse o Cloud Functions, clique na caixa de seleção ao lado de function-weatherPubSubToBQ e clique em "Excluir".
Acesse o Pub/Sub, clique em "Tópico", marque a caixa de seleção ao lado do tópico "weatherdata" e clique em "Excluir".
Acesse "Armazenamento", clique nas caixas de seleção ao lado dos buckets de armazenamento e em "Excluir".
Acesse bigquery.cloud.google.com, clique na seta para baixo ao lado do nome do projeto, clique na seta para baixo à direita do conjunto de dados weatherData e, em seguida, clique em Excluir conjunto de dados.
Quando solicitado, digite o ID do conjunto de dados (weatherData) para concluir a exclusão dos dados.