U-BLOX NINA W E PlatformIO - Arduino - TAGO.IO

O objetivo deste BLOG é demonstrar como é possível utilizar o Nina W para enviar dados para o servidor Tago.io. Foi utilizado o EVK-NINA-W para o teste e o método via HTTP.

A tago é uma startup localizada nos Estados Unidos que desenvolve uma plataforma para a coleta de dados de dispositivos conectados.

1) Para testes foi utilizada o PlatfformIO, na qual foi criado um projeto para NINA W com framework Arduino.


2) O código digitado executado foi


#include <Arduino.h>
#include <wifi.h>
WiFiClient client;
float temp = 0.0;
String apiKey = "4ae5ef41-2152-4d3d-85b0-bc2d81439f4a"; //o token vai aqui
const char* server = "api.tago.io";

const char* ssid = "ssid";
const char* password = "senha_ssid";
void setup() {
Serial.begin(9600);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void envia_dados(void){
//Inicia um client TCP para o envio dos dados
if (client.connect(server,80)) {
Serial.print("CONNECTED AT TAGO\n");

String postStr = "";
String postData = "variable=temp&value="+String( (float) random(00, 99) )+"\n";
postStr = "POST /data HTTP/1.1\n";
postStr += "Host: api.tago.io\n";
postStr += "Device-Token: "+apiKey+"\n";
postStr += "_ssl: false\n";
postStr += "Content-Type: application/x-www-form-urlencoded\n";
postStr += "Content-Length: "+String(postData.length())+"\n";
postStr += "\n";
postStr += postData;
client.print(postStr);
//Serial.print("%d", postStr);
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 5000) {
Serial.println(">>> Client Timeout !");
client.stop();
return;
}
}
while(client.available()){
String line = client.readStringUntil('\r');
Serial.print(line);
}
}
client.stop();
}
// the loop function runs over and over again forever
void loop() {
envia_dados();
delay(30000);
}


3) Basicamente o código se autentica numa rede local e então faz um conexão no servidor da Tago.io. O código abaixo é considerado um dos mais importantes.


String postStr = "";
String postData = "variable=temp&value="+String( (float) random(00, 99) )+"\n";
postStr = "POST /data HTTP/1.1\n";
postStr += "Host: api.tago.io\n";
postStr += "Device-Token: "+apiKey+"\n";
postStr += "_ssl: false\n";
postStr += "Content-Type: application/x-www-form-urlencoded\n";
postStr += "Content-Length: "+String(postData.length())+"\n";
postStr += "\n";
postStr += postData;
client.print(postStr);

Basicamente faz um requisição HTTP ao servidor Tago.io e passa o cabeçalho . Neste cabeçalho há Token (apiKey) o qual deve ser obtida no servidor Tago.io e que é asssociado à um campo, no caso "temp" (temperatura).

No exemplo, para testes, é criado um valor aleatório para temperatura, que vai de 00 a 99.

4) No código também há alguns detalhes a serem observados, onde deve ficar o Token e endereço da API.


String apiKey = "4ae5ef41-2152-4d3d-85b0-bc2d81439f4a"; //o token vai aqui
const char* server = "api.tago.io";


Aqui é onde tenta se conectadr com o servidor Tago.io
if (client.connect(server,80)) {


5) Um pouco mais sobre Tago.io


A plataforma Tago não é 100% gratuita ou open-source, mas dispõe de um plano gratuito com limitações. Neste plano, é possível criar até 5 dispositivos, 25 mil registros na base de dados, 100 mil requisições por mês e ainda a criação de até 5 dashboards (painéis de visualização dos dados) entre outras funções.
Frente as outras opções de plataformas gratuitas, o grande diferencial da Tago é que em um projeto maior, o plano gratuito pode ser convertido no plano pago, aumentando as capacidades da plataforma e as possibilidades do projeto.

No geral, para projetos maker, a Tago é uma excelente opção, com muitas funcionalidades interessantes.

6) Criando conta na Tago.io

Para iniciar, vamos criar uma conta na tago.io, e cadastrar o nosso primeiro device lá. Para isso, após o cadastro, faça o login e clique em “Device” e depois no sinal de mais (+) no canto superior direito para adicionar um novo dispositivo. Preencha as informações e salve.
Apos o dispositivo adicionado, acesse novamente o dispositivo no menu “Devices” e selecione a aba “Tokens”. Esse token será usado para o ESP enviar os dados para ele, no “bucket” (base de dados) correto.
Copie o token/apiKey no código abaixo, compile e grave no NINA W.
Crie conta como Desenvolvedor!

7) Compile e execute o programa
Uma vez o programa compilado, transferido para o NINA W, o mesmo irá publicar no servidor Tago.io um valor em um campo chamado temperatura, associado ao Token.
8) Crie DashBoard
Dentro do Tago.io você pode criar seu Dashboard e visualizar os dados sendo enviados pelo NINA W.


Dashboard




9) Questoes: suporte@smartcore.com.br

FONTES: