/*
Código demonstrativo para a aula de Bancos de Dados aplicados à Internet das Coisas,
Curso de Engenharia e Administração de Sistemas de Banco de Dados,
Faculdade de Tecnologia - UNICAMP.
*/
#include <WiFi.h>
#include <HTTPClient.h>
// Substitua sua_url pela url fornecida pelo InfluxDB (Cluster URL - Host Name) localizada em Organizacion Profile
// Substitua sua_organizacao pela fornecida pelo InfluxDB (Name) localizada em Organizacion Profile
const char* influxUrl = "https://sua_url/api/v2/query?org=sua_organizacao";
// Substitua seu_token pelo fornecido pelo InfluxDB em Load Data - API Token
const char* token = "seu_token";
// Substitua seu_bucket pela fornecida pelo InfluxDB localizada em Load Data - Buckets
const char* bucket = "seu_bucket";
char str[600], campos[50][10];
char *pch;
int contador = 0;
void setup() {
Serial.begin(115200);
while (!Serial) { }
WiFi.begin("Wokwi-GUEST", "");
while (WiFi.status() != WL_CONNECTED) {
delay(250);
}
Serial.println("-----------------------------------------------");
Serial.print("Endereco IP: ");
Serial.println(WiFi.localIP());
Serial.println("-----------------------------------------------");
delay(1000);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
http.begin(influxUrl);
http.addHeader("Authorization", "Token " + String(token));
http.addHeader("Content-Type", "application/vnd.flux");
String fluxQuery =
" from(bucket: \"" + String(bucket) + "\")"
" |> range(start: -72h)"
" |> filter(fn: (r) => r._measurement == \"valores\")"
//" |> filter(fn: (r) => r._field == \"a0\")"
" |> filter(fn: (r) => r.dispositivo == \"hwxx\")"
" |> last()";
int httpResponseCode = http.POST(fluxQuery);
if (httpResponseCode > 0) {
contador = 1;
String payload = http.getString();
//Serial.print("Resposta do InfluxDB:");
//Serial.println(payload);
strcpy(str, payload.c_str());
pch = strtok (str, ",");
while (pch != NULL) {
strcpy(campos[contador], pch);
//Serial.print(contador);
//Serial.print(" -> ");
//Serial.println(pch);
pch = strtok (NULL, ",");
contador++;
}
Serial.print("Dispositivo: ");
Serial.print(campos[18]);
Serial.println("-----------------------------------------------");
Serial.print("A0: ");
Serial.println(campos[15]);
Serial.print("A1: ");
Serial.println(campos[24]);
Serial.print("A2: ");
Serial.println(campos[33]);
Serial.print("A3: ");
Serial.println(campos[42]);
Serial.println();
} else {
Serial.print("Erro na requisição: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("Wi-Fi desconectado");
}
delay(15000);
}