Lee el estado del temporizador desde otra app, un script o un dispositivo como un ESP32.
No necesita autenticación y acepta peticiones desde cualquier sitio (CORS abierto).
Estado actual
GET /api/state
El estado ya calculado. Es lo más simple para un dispositivo: no necesita reloj sincronizado.
Cargando respuesta en vivo…
active | true si está sonando. |
seconds_to_change | Segundos hasta que pase de sonar a silencio, o al revés. |
position | Segundos transcurridos dentro del ciclo; el ciclo empieza cuando arranca el ruido. |
progress | Avance de 0 a 1 dentro de la fase actual. |
server_time | Hora del servidor en milisegundos (epoch), para corregir relojes desfasados. |
config | Duraciones y ancla, para seguir contando sin volver a preguntar. |
Configuración
GET /api/config
Devuelve cycle_duration y active_duration en segundos, y anchor:
el instante (milisegundos epoch, UTC) en que empezó un ciclo de ruido. Con eso se calcula todo:
posición = ((ahora − anchor) / 1000) mod cycle_duration
sonando = posición < active_duration
Ejemplo para ESP32 (Arduino)
Consulta cada 30 a 60 segundos y cuenta localmente con seconds_to_change mientras tanto.
HTTPClient http;
http.begin("/api/state");
if (http.GET() == 200) {
JsonDocument doc; // ArduinoJson
deserializeJson(doc, http.getString());
bool active = doc["active"];
float secondsToChange = doc["seconds_to_change"];
// encender un LED o actualizar una pantalla
}
http.end();
Cambiar la configuración
Solo el administrador puede cambiarla, desde /admin con inicio de sesión.
Un dispositivo puede escribir si se le da un service token de Cloudflare Access.