#include <Arduino.h>
#include <ArduinoJson.h>
#include <WiFi.h>
#include <HTTPClient.h>
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* registrosEndpoint = "https://opensheet.elk.sh/1_BXCMTy_jb7ujJQK0x407Wy5ivHaqX3vK5ec8eQZQwU/Folha1";
DynamicJsonDocument registros(1024); // Armazenar registros da base de dados
void lerBaseDeDadosRegistros() {
HTTPClient http;
http.begin(registrosEndpoint);
int httpResponseCode = http.GET();
if (httpResponseCode == 200) {
String payload = http.getString();
DeserializationError error = deserializeJson(registros, payload);
if (error) {
Serial.print(F("deserializeJson() falhou: "));
Serial.println(error.c_str());
}
} else {
Serial.print(F("Falha ao obter dados da base de dados. Código de resposta HTTP: "));
Serial.println(httpResponseCode);
}
http.end();
}
String obterNomeAssociado(String rfid) {
// Procura o nome associado ao UID da tag RFID na lista de registros
for (JsonObject registro : registros.as<JsonArray>()) {
for (JsonPair kvp : registro) {
String nomeRfid = kvp.key().c_str();
if (nomeRfid.endsWith(rfid)) {
return nomeRfid.substring(0, nomeRfid.indexOf(':'));
}
}
}
return ""; // Retorna vazio se não encontrado
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando ao WiFi...");
}
Serial.println("Conectado ao WiFi.");
}
void loop() {
if (Serial.available() > 0) {
String payload = Serial.readStringUntil('\n');
payload.trim(); // Remove espaços em branco extras
String nomeRfid = payload.substring(0, payload.indexOf(':'));
String rfid = payload.substring(payload.indexOf(':') + 1);
lerBaseDeDadosRegistros(); // Realiza a leitura dos registros da base de dados
String nomeAssociado = obterNomeAssociado(rfid);
if (nomeAssociado != "") {
Serial.println("Nome associado à tag RFID '" + rfid + "': " + nomeAssociado);
} else {
Serial.println("Tag RFID '" + rfid + "' não registrada.");
}
}
}