Google Sheets através da Raspberry Pi - MakerHero

Como exportar dados para Google Sheets através da Raspberry Pi 5

Uma das maiores vantagens da Raspberry Pi é, na grande maioria de seus modelos, possuir conectividade com ou sem fio à Internet. Isso expande a aplicabilidade e surgimento de novos projetos de forma significativa. Frequentemente, os projetos atuais que envolvem telemetria ou IoT necessitam gravar / enviar dados para outros servidores ou serviços via Internet, tornando assim as placas da linha Raspberry Pi ótimas (senão ideais) para esta aplicação. Este post irá abordar isso na forma do seguinte projeto: envio de temperatura e umidade para uma planilha do Google Sheets através da Raspberry Pi, de modo que você consiga usar o Google Sheets como seu data logger / banco de dados, sendo o projeto programado em linguagem Python.

Material necessário

Para fazer este projeto, em termos de hardware, você precisará de:

Google Sheets – o que é?

O Google Sheets (ou Google Planilhas, no nome em Português) é uma ferramenta online da Google para criação e edição de planilhas, totalmente grátis. O Google Sheets é, na verdade, parte de uma suite de aplicações de escritório, que atualmente conta com Google Docs (para criação e edição de textos, muito similar ao Word) e Google Presentation (para criação e edição de apresentações, muito simular ao Power Point).

A operação do Google Sheets é muito similar ao já consagrado Excel, inclusive com funções, menus e recursos com mesmo nome, incluindo a possibilidade de importar planilhas no formato do Excel. Por ser online e gratuita, seu uso é muito recomendado já que a partir de um navegador e de uma conexão à Internet já é possível trabalhar com planilhas, sendo 100% indiferente o sistema operacional utilizado (Windows, MacOS ou Linux). O armazenamento das planilhas é feito no Google Drive, espaço em disco virtual que todo usuário Google possui. Ainda, é permitido o compartilhamento das planilhas com outros usuários Google e permite a edição por mais de uma pessoa de forma simultânea.

Ainda, para empresas, há planos comerciais com preços muito convidativos. Toda essa versatilidade tem contribuído para grande aceitação e uso do Google Sheets nas empresas, com algumas delas inclusive substituindo o uso do Microsoft Office pela suite da Google.

Para utilizar o Google Planilhas, basta ter uma conta google (um e-mail GMail) e acessar.

Outro grande ponto forte do Google Sheets é a possibilidade de aplicações externas lerem e escrevem em planilhas através de APIs do Google. Isso torna possível que dispositivos conectados à Internet tenham interação com planilhas de forma simples e rápida. É justamente esse ponto que o projeto deste post explora.

Circuito esquemático

Monte o circuito esquemático do projeto conforme mostra a figura 1:

Conexão Raspberry Pi e sensor de temperatura
Figura 1 – circuito esquemático do projeto

Obtenção das credenciais para uso da API do Google

Para utilizar o google sheets através da Raspberry Pi, é necessário obter as credenciais para uso da API do Google necessária neste projeto, siga os passos abaixo:

  1. Primeiramente, faça login na sua conta Google
  2. Uma vez logado, acesse a criação de um novo projeto no site de bibliotecas de APIs do Google. Link: https://console.developers.google.com/projectcreate
  3. Na tela de criação do projeto, preencha o nome do projeto (no caso deste post, será “TesteGoogleSheets”) e clique no botão “Criar”. Aguarde alguns segundos enquanto o projeto é criado.
  4. Você será automaticamente direcionado à tela de informações do seu projeto. Na sessão “API”, clique sobre “Ir para a visão geral de APIs”. Na tela que abrir, localize no lado esquerdo o botão “Biblioteca” e clique nele.
  5. Você será direcionado ao site da biblioteca de APIs Google. No campi de busca, digite “Google Drive API” e clique sobre a primeira ocorrência (chamada “Google Drive API”, com o símbolo do Google Drive)
  6. Você serpa direcionado à tela de informações da API do Google Drive. Clique no botão “Ativar” e aguarde alguns segundos até a ativação ser concluída.
  7. Após a ativação, você será direcionado para a tela de APIs e serviços de seu projeto. Clicando novamente em “Bibliotecas”, procure pela API “Google Sheets API”, clique sobre ela e a ative.
  8. Após a ativação, você será direcionado para a tela de APIs e serviços de seu projeto. Nela, localize o botão “Criar credenciais” no lado direito da tela.
  9. Na pergunta “Qual API você usa?”, selecione “Google Drive API”
  10. Na pergunta “De onde você chamará a API?”, selecione “Servidor da web (por exemplo, node.js, Tomcat)”
  11. Na pergunta “Que dados você acessará?”, selecione “Dados do aplicativo”
  12. Na pergunta “Você planeja usar essa API com o App Engine ou o Compute Engine?”, selecione “Não, nenhum” e clique no botão “Preciso de quais credenciais?”
  13. Uma nova tela irá surgir. Nela, preencha o campo “Nome da conta de serviço” com o nome da conta de serviço da API que deseja. Nesse post, utilizei “ServicoTesteGoogleSheets” como nome de serviço.
  14. Ainda na mesma tela, em “papel”, selecione “Projeto” e depois “Editor”
  15. Em “Tipo de chave”, selecione “JSON” e clique no botão “Continuar”
  16. Será feito automaticamente o download de um arquivo JSON contendo as credenciais para o acesso à API do Google pelo seu projeto. Mude o nome do arquivo para “credenciais.json” e salve-o em local seguro.
  17. Envie o arquivo JSON para a Raspberry PI, no diretório em que ficará seu projeto. Para esse post, coloquei no diretório home do usuário padrão pi (/home/pi)
  18. Vá até o Google Sheets (www.google.com/intl/pt-BR/sheets/about/) e crie uma nova planilha chamada “Planilha teste”. Esta será a planilha a qual a Raspberry PI enviará as informações.
  19. Abra o arquivo JSON de credenciais obtido no passo 16 e busque pela informação “client_email”. Copie (sem as aspas) o e-mail que fica na frente desta informação.
  20. Na planilha criada no passo 18, localize no lado superior direito o botão “Compartilhar” e clique nele. No campo de texto, insira o e-mail copiado no passo 19 e clique no botão “Enviar”. Aguarde alguns segundos para que o compartilhamento seja concluído.

Preparação da Raspberry Pi para utilizar a API do Google e o sensor de temperatura e umidade

Uma vez obtidas as credenciais para as APIs do Google, é hora de preparar a Raspberry Pi para utilizá-las. Para isso, é preciso instalar duas bibliotecas Python através do pip: gspread e oauth2client. Faça isso utilizando os comandos abaixo no terminal da Raspberry Pi:

Para preparar a Raspberry Pi para ler o sensor de umidade e temperatura, faça o procedimento abaixo:

  • No terminal da Raspberry Pi, execute os comandos abaixo:

  • Após o downlaod terminar, execute os comandos abaixo:

  • Aguarde o fim da instalação da biblioteca do sensor de umidade e temperatura.

Preparação da planilha

Antes de prosseguirmos para o código-fonte do projeto, é necessário preparar a planilha. Esta preparação consiste em inserir os cabeçalhos, para podermos distinguir na hora da leitura da planilha o que é cada informação. Para isso, preencha as células da planilha conforme abaixo:

Célula Texto a preencher
A1 Data/Hora
B1 Temperatura
C1 Umidade

O Google Sheets salvará automaticamente a planilha após cada edição.

Código-fonte

O código-fonte do projeto está abaixo. Copie-o e salve-o como google_sheets_sensor.py na pasta da Raspberry Pi em que você colocou o arquivo JSON com as credenciais. Leia atentamente os comentários para maior compreensão do código-fonte.

Exportando dados para o Google Sheets através da Raspberry Pi

Para rodar o projeto, utilize o comando abaixo:

Feito isso, no seu computador ou smartphone abra o a planilha do Google Sheets usada no projeto e veja as informações sendo enviadas de minuto em minuto, conforme mostra a figura 2.

Google sheets através da Raspberry Pi
Figura 2 – Planilha do Google Sheets com informações lidas e enviadas pela Raspberry Pi

Gostou deste post sobre como enviar temperatura e umidade para uma planilha do Google Sheets através da Raspberry Pi? Deixe seu comentário logo abaixo.

Faça seu comentário

Acesse sua conta e participe

5 Comments

  1. Por favor atualize. pois nao esta funcionando os passos, de instalação da biblioteca gspread e aout client….
    e o link do git hub está vazio

  2. Primeiramente parabéns pelo post!
    Mas tentei fazer em um rasp Zero W e apresentou o erro:

    Python 3.5.3 (/usr/bin/python3)
    >>> %Run google_sheets_sensor.py
    File “/home/pi/google_sheets_sensor.py”, line 65
    now = datetime.now()
    ^
    SyntaxError: expected an indented block

    >>>

    Achei engraçado que o erro ocorreu já que no inicio foi importado as bibliotecas sobre tempo e data!
    Consegue me dar uma força?

    Desde já agradeço!

    1. Giovane, muito obrigado!

      O erro é de identação, ou seja, nessa linha tem algum(ns) espaços a mais ou a menos antes de “now = datetime.now()” no seu codigo. Basta deixar no mesmo alinhamento que a linha anterior ou posterior que vai funcionar.

  3. Boa tarde

    Ótimo tutorial. Existe a possibilidade de se fazer o mesmo procedimento com com um arduino? (No caso o ESP8266)

    Att,

    Edson

    1. Edson, boa tarde.

      Primeiramente, muito obrigado pela leitura e elogio.
      Sim, é possível fazer isso com um ESP8266 ou ESP32, porém pelo que sei é algo meio “indireto” (você envia dados pra um form do Google e, este por sua vez, envia para uma planilha do Google Sheets).

      Atenciosamente,
      Pedro Bertoleti