Timestamp Unix¶
Demonstra como buscar um timestamp Unix (um inteiro grande do tipo long) de uma API pública de horário.
Fonte: examples/UnixTimestamp/UnixTimestamp.ino
Por que long?¶
Timestamps Unix representam o número de segundos transcorridos desde 1º de janeiro de 1970. Atualmente, esse valor ultrapassa 1.700.000.000 — o que estoura um int de 32 bits em algumas plataformas. Sempre use long para timestamps.
long timestamp = 0;
// ✅ Correto — número grande cabe em um long
client.get("/time").getBody("unix_timestamp", ×tamp);
int bad = 0;
// ❌ Evitar — estourará para datas após 19 de janeiro de 2038
client.get("/time").getBody("unix_timestamp", &bad);
API Utilizada¶
Endpoint: GET https://timeapi.io/api/v1/time/current/unix
Resposta:
Sketch¶
#include <Arduino.h>
#include <WiFi.h>
#include "ESP32HTTPClient.h"
const char* ssid = "SEU_SSID";
const char* password = "SUA_SENHA";
ESP32HTTPClient client("https://timeapi.io", 443);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado ao WiFi");
}
void loop() {
long ts = 0;
Serial.println("Buscando timestamp Unix...");
client.get("/api/v1/time/current/unix")
.getBody("unix_timestamp", &ts);
if (client.getStatusCode() == 200) {
Serial.printf("Timestamp Unix: %ld\n", ts);
} else {
Serial.printf("Erro: %d\n", client.getStatusCode());
}
delay(10000);
}
Saída Esperada no Monitor Serial¶
Pontos Chave¶
- Use
%ld(e não%d) noprintfpara valores do tipolong. - A porta explícita
443é passada para o construtor — útil ao conectar-se a APIs HTTPS. - Vinculações
longsuportam valores de até2^63 - 1no ESP32 (longde 64 bits).