Skip to content

API MQTT / HTTP ​

Tabla de Contenidos ​

Resumen ​

Esta documentación de API cubre varias funcionalidades como obtener estadísticas del dispositivo, espejo de pantalla, notificaciones, apps personalizadas, reproducción de sonido e iluminación ambiental. Puedes interactuar con estas funciones tanto vía protocolos MQTT como HTTP.

Obtener Estado ​

Accede a varias estadísticas del dispositivo como batería, RAM y más:

Topic MQTTURL HTTPDescripción
[PREFIX]/statshttp://[IP]/api/statsEstadísticas generales del dispositivo (ej., batería, RAM)
[PREFIX]/stats/effectshttp://[IP]/api/effectsLista de todos los efectos
[PREFIX]/stats/transitionshttp://[IP]/api/transitionsLista de todos los efectos de transición
[PREFIX]/stats/loophttp://[IP]/api/loopLista de todas las apps en el ciclo
N/Ahttp://[IP]/api/appsLista de apps con sus datos de icono

Nota: MQTT también transmite otros datos, como pulsaciones de botones y la app actual.

Nota: GET /api/apps devuelve las apps con sus iconos. POST /api/apps (cuerpo JSON) actualiza el vector de apps; también disponible vía MQTT en [PREFIX]/apps.

Vista en Vivo ​

Obtén la pantalla actual de la matriz como un arreglo de colores de 24 bits:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/sendscreenhttp://[IP]/api/screen-GET

Al activar la API MQTT, SVITRIX envía el arreglo a [PREFIX]/screen.

Extras:

  • Accede a una vista en vivo de la pantalla en tu navegador en http://[IP] (la página principal del SPA).
  • La página de Pantalla renderiza la matriz en tiempo real en un elemento canvas con soporte de descarga PNG.

Control de Energía ​

Alterna la matriz encendido o apagado:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/powerhttp://[IP]/api/power{"power": true} o {"power": false}POST

Envía la placa a modo deep sleep (también apaga la matriz), bueno para ahorrar batería:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/sleephttp://[IP]/api/sleep{"sleep": X} donde X es número de segundosPOST

SVITRIX solo despertará después del tiempo o si presionas el botón del medio una vez. No hay forma de despertar vía API.

Reproducción de Sonido ​

Reproduce un sonido RTTTL de la carpeta MELODIES.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/soundhttp://[IP]/api/sound{"sound":"alarma"}POST

Reproduce un sonido RTTTL desde una cadena RTTTL dada:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/rtttlhttp://[IP]/api/rtttlcadena rtttlPOST

Reproduce sonidos al estilo R2-D2 generados a partir de una cadena de descripción de sonido:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/r2d2http://[IP]/api/r2d2cadena R2D2POST

Iluminación Ambiental ​

Establece toda la matriz a un color o temperatura personalizada:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/moodlighthttp://[IP]/api/moodlightVer abajoPOST

⚠️ Precaución: Usar esta función resulta en mayor consumo de corriente y calor, especialmente cuando todos los píxeles están encendidos. Asegúrate de gestionar los valores de brillo responsablemente.

Para deshabilitar moodlight, envía un payload vacío.

Ejemplo:

json
{
  "brightness": 170,
  "kelvin": 2300
}

Opciones posibles de moodlight:

json
{"brightness":170,"kelvin":2300}
o
{"brightness":170,"color":[155,38,182]}
o
{"brightness":170,"color":"#FF00FF"}

Indicadores de Color ​

Los indicadores de color sirven como pequeñas señales de notificación mostradas en áreas específicas de la pantalla:

  • Esquina superior derecha: Indicador 1
  • Lado derecho: Indicador 2
  • Esquina inferior derecha: Indicador 3
Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/indicator1http://[IP]/api/indicator1{"color":[255,0,0]}POST
[PREFIX]/indicator2http://[IP]/api/indicator2{"color":[0,255,0]}POST
[PREFIX]/indicator3http://[IP]/api/indicator3{"color":[0,255,0]}POST

Opciones de Color:

  • Usa un arreglo RGB, ej., {"color":[255,0,0]}
  • Usa cadenas de color HEX, ej., {"color":"#32a852"}

Ocultar Indicadores:

  • Para ocultar los indicadores, envía el color negro ({"color":[0,0,0]}) o usa la forma abreviada {"color":"0"}. Alternativamente, envía un payload vacío.

Efectos Adicionales:

  • Parpadeo: Para hacer que el indicador parpadee, agrega la clave "blink" con un valor especificando el intervalo de parpadeo en milisegundos.
  • Desvanecimiento: Para hacer que el indicador se desvanezca, agrega la clave "fade" con un valor especificando el intervalo de desvanecimiento en milisegundos.

Apps Personalizadas y Notificaciones ​

Con SVITRIX, puedes diseñar apps personalizadas o notificaciones para mostrar tu texto e iconos únicos.

Interacción ​

  • MQTT: Envía un objeto JSON a [PREFIX]/custom/[app], donde [app] denota el nombre de tu app (excluyendo espacios).
  • API HTTP: Incorpora el nombre de la app en el parámetro de consulta (name=[nombreapp]).
  • Actualizar: Para refrescar una página personalizada, envía un objeto JSON modificado al mismo endpoint. La pantalla se actualiza instantáneamente.
  • Notificación Única: Usa el mismo formato JSON. Dirige tu objeto JSON a [PREFIX]/notify o http://[IP]/api/notify.
Topic MQTTURL HTTPPayload/BodyParámetros de ConsultaMétodo HTTP
[PREFIX]/custom/[nombre]http://[IP]/api/customJSONname=[nombreapp]POST
[PREFIX]/notifyhttp://[IP]/api/notifyJSON-POST

Propiedades JSON ​

A continuación están las propiedades que puedes utilizar en el objeto JSON. Todas las claves son opcionales; solo incluye las propiedades que necesites.

ClaveTipoDescripciónPor defectoApp PersonalizadaNotificación
textstringEl texto a mostrar (UTF-8). Soporta caracteres ASCII, Cirílico (mayús/minús), Ucraniano y Latino Extendido. La fuente tiene ancho variable — I usa menos espacio que W, lo que afecta cuándo el texto comienza a desplazarse.N/AXX
textCaseintegerCambia la configuración de Mayúsculas. 0=configuración global, 1 = fuerza mayúsculas; 2 = muestra como se envió.0XX
topTextbooleanDibuja el texto en la parte superior.falseXX
textOffsetintegerEstablece un offset para la posición x del texto inicial.0XX
centerbooleanCentra un texto corto no desplazable.trueXX
colorstring o array de integersEl color del texto, barra o línea.N/AXX
gradientArray de string o integersColorea el texto en un gradiente de dos colores dados.N/AXX
blinkTextIntegerParpadea el texto en un intervalo dado en ms, no compatible con gradiente o arcoíris.N/AXX
fadeTextIntegerDesvanece el texto en un intervalo dado, no compatible con gradiente o arcoíris.N/AXX
backgroundstring o array de integersEstablece un color de fondo.N/AXX
rainbowbooleanDesvanece cada letra del texto diferentemente a través del espectro RGB completo.falseXX
iconstringEl ID del icono o nombre de archivo (sin extensión) para mostrar en la app. También puedes enviar un jpg 8x8 como cadena Base64.N/AXX
pushIconinteger0 = El icono no se mueve. 1 = El icono se mueve con el texto y no aparecerá de nuevo. 2 = El icono se mueve con el texto pero aparece de nuevo cuando el texto comienza a desplazarse otra vez.0XX
repeatintegerEstablece cuántas veces el texto debe desplazarse por la matriz antes de que la app termine.-1XX
durationintegerEstablece cuánto tiempo debe mostrarse la app o notificación.5XX
holdbooleanPonlo en true para mantener tu notificación en la parte superior hasta que presiones el botón del medio o la descartes vía HomeAssistant. Esta clave solo pertenece a notificación.falseX
soundstringEl nombre de archivo de tu archivo de tono RTTTL colocado en la carpeta MELODIES (sin extensión).N/AX
rtttlstringPermite enviar la cadena de sonido RTTTL con JSON.N/AX
loopSoundbooleanRepite el sonido o RTTTL mientras la notificación está ejecutándose.falseX
bararray de integersDibuja un gráfico de barras. Sin icono máximo 16 valores, con icono 11 valores.N/AXX
linearray de integersDibuja un gráfico de líneas. Sin icono máximo 16 valores, con icono 11 valores.N/AXX
autoscalebooleanHabilita o deshabilita autoescalado para gráficos de barras y líneas.trueXX
barBCstring o array de integersColor de fondo de las barras.0XX
progressintegerMuestra una barra de progreso. El valor puede ser 0–100.-1XX
progressCstring o array de integersEl color de la barra de progreso.-1XX
progressBCstring o array de integersEl color del fondo de la barra de progreso.-1XX
posintegerDefine la posición de tu página personalizada en el ciclo, comenzando en 0 para la primera posición. Esto solo se aplicará con tu primer push. Esta función es experimental.N/AX
drawarray de objetosArray de instrucciones de dibujo. Cada objeto representa un comando de dibujo. Ver las instrucciones de dibujo abajo.XX
lifetimeintegerElimina la app personalizada cuando no hay actualización después del tiempo dado en segundos.0X
lifetimeModeinteger0 = elimina la app, 1 = la marca como obsoleta con un rectángulo rojo alrededor de la app.0X
stackbooleanDefine si la notificación se apilará. false reemplazará inmediatamente la notificación actual.trueX
wakeupbooleanSi la Matriz está apagada, la notificación la despertará por el tiempo de la notificación.falseX
noScrollbooleanDeshabilita el desplazamiento de texto.falseXX
clientsarray de stringsPermite reenviar una notificación a otros dispositivos SVITRIX. Usa el prefijo MQTT para MQTT y direcciones IP para HTTP.X
scrollSpeedintegerModifica la velocidad de desplazamiento. Ingresa un valor porcentual de la velocidad de desplazamiento original.100XX
effectstringMuestra un efecto como fondo. El efecto puede eliminarse enviando una cadena vacía para effect.XX
effectSettingsmapa jsonCambia el color y velocidad del efecto.XX
savebooleanGuarda tu app personalizada en flash y la recarga después del arranque. Evita esto para apps personalizadas con alta frecuencia de actualización porque la memoria flash del ESP tiene ciclos de escritura limitados.X
layoutstringControla el posicionamiento del icono: "left" (por defecto), "right" o "none". Cuando se establece a "right", el icono aparece en el lado derecho de la pantalla. Cuando se establece a "none", el icono se oculta y el texto usa el ancho completo de 32 píxeles."left"XX
overlaystringEstablece una superposición de efecto (no puede usarse con superposiciones globales).XX

Color: Acepta una cadena hex o un arreglo R,G,B: "#FFFFFF" o [255,255,0].

Efectos de superposición:

  • "clear"
  • "snow"
  • "rain"
  • "drizzle"
  • "storm"
  • "thunder"
  • "frost"

Ejemplo ​

Aquí hay un JSON de ejemplo para presentar el texto "¡Hola, SVITRIX!" en colores arcoíris por una duración de 10 segundos:

json
{
  "text": "¡Hola, SVITRIX!",
  "rainbow": true,
  "duration": 10
}

Placeholder MQTT ​

Esta función es particularmente útil para usuarios sin un sistema de hogar inteligente completo. Elimina la necesidad de un sistema externo para mostrar datos, como de un inversor que puede enviar sus datos vía MQTT. Puedes simplemente crear un archivo [NombreApp].json en la carpeta CUSTOMAPP con tus claves JSON de app personalizada. Este archivo JSON se cargará al arrancar, así que no necesitas enviarlo desde una fuente externa. O también puedes usarlo en tu petición de API HTTP o MQTT.

Los placeholders dentro del valor text encerrados en serán reemplazados con el payload del topic MQTT especificado. Actualmente, no hay opciones disponibles para formatear el payload.

json
{"text": "Solar: {{inverter/total/P_AC}} W"}

Instrucciones de Dibujo ​

WARNING

Por favor nota: Dependiendo del número de objetos, el uso de RAM puede ser muy alto. Esto podría causar congelamientos o reinicios.

Es importante ser consciente del número de objetos y la complejidad de las instrucciones de dibujo para evitar problemas de rendimiento.

Cada instrucción de dibujo es un objeto con una clave de comando requerida y un arreglo de valores dependiendo del comando:

ComandoValores del ArregloDescripción
dp[x, y, cl]Dibuja un píxel en la posición (x, y) con color cl
dl[x0, y0, x1, y1, cl]Dibuja una línea de (x0, y0) a (x1, y1) con color cl
dr[x, y, w, h, cl]Dibuja un rectángulo con esquina superior izquierda en (x, y), ancho w, alto h, y color cl
df[x, y, w, h, cl]Dibuja un rectángulo relleno con esquina superior izquierda en (x, y), ancho w, alto h, y color cl
dc[x, y, r, cl]Dibuja un círculo con centro en (x, y), radio r, y color cl
dfc[x, y, r, cl]Dibuja un círculo relleno con centro en (x, y), radio r, y color cl
dt[x, y, t, cl]Dibuja texto t con esquina superior izquierda en (x, y) y color cl
db[x, y, w, h, [bmp]]Dibuja un arreglo de bitmap RGB888 [bmp] con esquina superior izquierda en (x, y) y tamaño de (w, h)

Ejemplo ​

Aquí hay un objeto JSON de ejemplo para dibujar un círculo rojo, un rectángulo azul y el texto "Hola" en verde:

json
{"draw":[
 {"dc": [28, 4, 3, "#FF0000"]},
 {"dr": [20, 4, 4, 4, "#0000FF"]},
 {"dt": [0, 0, "Hola", "#00FF00"]}
]}

Mostrar Texto en Fragmentos Coloreados ​

SVITRIX te permite presentar texto donde fragmentos específicos pueden colorearse. Usa un arreglo de fragmentos con "t" representando el fragmento de texto y "c" denotando el valor hex del color.

json
{
  "text": [
    {
      "t": "Hola, ",
      "c": "FF0000"
    },
    {
      "t": "mundo!",
      "c": "00FF00"
    }
  ],
  "repeat": 2
}

Enviar Múltiples Apps Personalizadas Simultáneamente ​

SVITRIX te permite enviar múltiples apps personalizadas en una sola acción. En lugar de transmitir un objeto de app personalizada, puedes reenviar un arreglo de objetos.

ej. Topic MQTT: /custom/test

json
[
  {"text":"1"},
  {"text":"2"}
]

Manejo de Múltiples Apps Personalizadas:

  • Asignación de Sufijo: Internamente, el nombre de la app recibe un sufijo, convirtiéndolo en un formato como test0, test1, etc.
  • Actualizaciones: Puedes refrescar cada app individualmente o actualizar todas colectivamente.
  • Eliminación:
    • Al borrar apps, SVITRIX no coincide con el nombre exacto de la app. En cambio, identifica apps que comienzan con el nombre especificado.
    • Para eliminar todas las apps asociadas, envía un payload vacío a /custom/test. Esta acción eliminará test0, test1, y así sucesivamente.
    • Para eliminar una sola app, dirige el comando a, por ejemplo, /custom/test1.
    • Precaución: Eliminar solo una app puede alterar la secuencia de las apps restantes en el ciclo, ya que no hay provisión para placeholders para mantener el orden.

Eliminar una App Personalizada ​

Para eliminar una app personalizada, envía un payload/body vacío al topic o URL asociado.

Descartar Notificación ​

Descarta fácilmente una notificación que fue configurada con "hold": true.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/notify/dismisshttp://[IP]/api/notify/dismissPayload/body vacíoPOST

Cambiar Apps ​

Navega a la app siguiente o anterior.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/nextapphttp://[IP]/api/nextappPayload/body vacíoPOST
[PREFIX]/previousapphttp://[IP]/api/previousappPayload/body vacíoPOST

Cambiar a App Específica ​

Transiciona directamente a una app deseada usando su nombre.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/switchhttp://[IP]/api/switch{"name":"Time"}POST

Nombres de Apps Integradas:

  • Time
  • Date
  • Temperature
  • Humidity
  • Battery

Para apps personalizadas, emplea el nombre que designaste en el topic o parámetro HTTP. En MQTT, si [PREFIX]/custom/test es tu topic, entonces test sería el nombre de la app.

Data Fetcher ​

El Data Fetcher permite que SVITRIX obtenga periódicamente datos de APIs HTTP/HTTPS externas y muestre los resultados como apps personalizadas — sin necesidad de sistema de hogar inteligente.

Gestionar Fuentes de Datos ​

URL HTTPPayload/BodyMétodo HTTPDescripción
http://[IP]/api/datafetcher-GETLista todas las fuentes configuradas
http://[IP]/api/datafetcherJSONPOSTAgrega o actualiza una fuente de datos
http://[IP]/api/datafetcher?name=X-DELETEElimina una fuente de datos
http://[IP]/api/datafetcher/fetch?name=X-POSTFuerza una obtención inmediata

Nota: Data Fetcher es solo HTTP, no hay topics MQTT.

JSON de Configuración de Fuente ​

ClaveTipoRequeridoDescripciónPor defecto
namestringSíID único de la fuente, se convierte en el nombre de la app personalizada-
urlstringSíURL HTTP/HTTPS completa-
jsonPathstringSíRuta con notación de punto para extraer de la respuesta JSON (ej., "bitcoin.usd", "data.0.price")-
displayFormatstringNoFormato estilo printf con una sola conversión (ej., "$%.0f", "%.1f°C"). Permitidos: %d %i %u %o %x %X %f %g %e %E %s con modificadores de ancho y precisión; %% para un % literal. Otros formatos son rechazados con HTTP 400.valor raw
iconstringNoNombre de icono de la carpeta ICONS (sin extensión)ninguno
colorstringNoColor de texto como hex "#RRGGBB"color de texto global
intervalintegerNoIntervalo de polling en segundos (mínimo 60)900 (15 min)

Ejemplo ​

Agregar un rastreador de precio de Bitcoin:

json
{
  "name": "btc",
  "url": "https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd",
  "jsonPath": "bitcoin.usd",
  "displayFormat": "$%.0f",
  "icon": "btc",
  "color": "#F7931A",
  "interval": 300
}

Restricciones ​

  • Máximo 8 fuentes pueden configurarse simultáneamente
  • Tamaño máximo de respuesta: 4 KB — respuestas de API más grandes serán rechazadas
  • HTTPS: soportado, pero sin validación de certificado (para APIs de terceros arbitrarias)
  • Polling round-robin: una fuente se verifica por ciclo de loop para evitar bloqueos
  • Las fuentes se persisten en flash y se restauran al arrancar
  • También puedes configurar fuentes vía la interfaz web en http://[IP]/datafetcher

Rotación (Apps + Efectos) ​

Configuración unificada de rotación: el orden de las apps y efectos, junto con la duración y el color por elemento. Reemplaza los antiguos endpoints /api/reorder y /api/playlist.

URL HTTPPayload/BodyMétodo HTTPDescripción
http://[IP]/api/rotation-GETObtiene la configuración de rotación actual
http://[IP]/api/rotationJSONPOSTGuarda la configuración de rotación

Nota: Solo HTTP, no hay topics MQTT.

El cuerpo y la respuesta usan una clave items que contiene un arreglo de elementos de rotación (apps y efectos, cada uno con su duración y color opcionales).

Ejemplo:

json
{
  "items": [
    {"type": "app", "name": "Time", "duration": 7},
    {"type": "effect", "name": "Plasma", "duration": 10, "color": "#FF00FF"}
  ]
}

Despertador y Recordatorios ​

Gestiona las alarmas del despertador y recordatorios. Funciona sin WiFi gracias al RTC. Hasta un máximo de alarmas configurables.

Topic MQTTURL HTTPPayload/BodyMétodo HTTPDescripción
N/Ahttp://[IP]/api/alarms-GETLista todas las alarmas y el estado de sonado
[PREFIX]/alarm/addhttp://[IP]/api/alarmsJSONPOSTAñade una nueva alarma (o acción snooze/dismiss)
N/Ahttp://[IP]/api/alarmsJSONPUTActualiza una alarma existente (por id)
N/Ahttp://[IP]/api/alarms?id=X-DELETEElimina la alarma con el id dado
[PREFIX]/alarm/snoozehttp://[IP]/api/alarms{"action":"snooze","minutes":N}POSTPospone la alarma que está sonando
[PREFIX]/alarm/dismisshttp://[IP]/api/alarms{"action":"dismiss"}POSTDescarta la alarma que está sonando

Propiedades JSON de la alarma ​

ClaveTipoDescripciónPor defecto
idintegerIdentificador de la alarma (solo para PUT).0
hourintegerHora (0–23).0
minuteintegerMinuto (0–59).0
daysintegerMáscara de bits de los días de la semana activos. 0x7F = todos los días.0x7F (127)
enabledbooleanSi la alarma está activa.true
oneTimebooleanAlarma de una sola vez (se desactiva tras sonar).false
snoozeMinutesintegerMinutos a posponer al usar snooze.5
labelstringEtiqueta de texto opcional.""
melodystringSonido a reproducir: nombre de archivo RTTTL de la carpeta MELODIES o cadena RTTTL completa.""

Nota: Para snooze por MQTT en [PREFIX]/alarm/snooze puedes enviar {"minutes":N}; si se omite, usa el snoozeMinutes de la alarma. La respuesta GET incluye además el campo ringing (booleano) indicando si hay una alarma sonando.

Ejemplo de alarma:

json
{
  "hour": 7,
  "minute": 30,
  "days": 127,
  "enabled": true,
  "oneTime": false,
  "snoozeMinutes": 9,
  "label": "Despertar",
  "melody": "alarma"
}

Clima ​

Configura y consulta los datos del clima exterior. La fuente puede ser WeatherAPI.com (con apiKey) o tu propio servidor (con serverUrl): si serverUrl no está vacío, el reloj consulta esa URL en lugar de WeatherAPI. Debe devolver la misma forma de WeatherAPI current.json (p. ej. https://clima.xe1e.net/api/svitrix), con campos extra opcionales (solar_radiation, precip_event_mm, rain_rate_mm). Las apps de clima (Temperatura, Humedad, Presión, ICA, UV, Viento, Radiación, Precipitación) se agregan/ordenan desde la pestaña Apps (rotación).

URL HTTPPayload/BodyMétodo HTTPDescripción
http://[IP]/api/weather-GETObtiene la configuración del clima
http://[IP]/api/weatherJSONPOSTActualiza la configuración del clima
http://[IP]/api/weather/fetch-POSTFuerza una actualización inmediata de los datos
http://[IP]/api/weather/data-GETObtiene los datos actuales del clima

Nota: Solo HTTP, no hay topics MQTT.

JSON de configuración del clima ​

ClaveTipoDescripción
apiKeystringClave API de WeatherAPI.com (si no usas servidor propio).
serverUrlstringServidor propio. Si no está vacío, el reloj consulta esta URL en vez de WeatherAPI. Debe devolver la forma WeatherAPI current.json (+ extras opcionales solar_radiation, precip_event_mm, rain_rate_mm). Vacío = usar WeatherAPI.com.
locationTypeintegerTipo de ubicación (0 = ciudad, 1 = coordenadas, 2 = ID de estación).
citystringNombre de la ciudad.
latitudefloatLatitud.
longitudefloatLongitud.
stationIdstringID de la estación meteorológica.
updateIntervalintegerIntervalo de actualización en minutos (1–120; opciones en UI: 1/2/5/10/15/30/60). Con servidor propio conviene bajo (1–2) para seguir valores que cambian rápido.
showOutdoorTempbooleanMostrar app de temperatura exterior.
showOutdoorHumiditybooleanMostrar app de humedad exterior.
showPressurebooleanMostrar app de presión.
showAirQualitybooleanMostrar app de calidad del aire (AQI).
showIndoorTempbooleanMostrar app de temperatura interior.
showIndoorHumiditybooleanMostrar app de humedad interior.
showUVbooleanMostrar app de índice UV.
outdoorTempColorintegerColor de la temperatura exterior (entero RGB).
outdoorHumColorintegerColor de la humedad exterior (entero RGB).
pressureColorintegerColor de la presión (entero RGB).
aqiColorintegerColor del AQI (entero RGB).
uvColorintegerColor del índice UV (entero RGB).
aqiAutoColorbooleanColorear automáticamente el AQI según el nivel.
aqiShowComponentsbooleanTras ICA:N, rotar los contaminantes (PM2.5, O3, NO2…) que rebasan el nivel 4, cada uno en el color de su propio nivel. Activado por defecto.
aqiComponentSecsintegerSegundos que se muestra cada contaminante en la rotación (2–10, por defecto 3).
uvAutoColorbooleanColorear automáticamente el índice UV según el nivel.
outdoorTempDurationintegerDuración de la app de temperatura exterior (segundos).
outdoorHumDurationintegerDuración de la app de humedad exterior (segundos).
pressureDurationintegerDuración de la app de presión (segundos).
aqiDurationintegerDuración de la app de AQI (segundos).
uvDurationintegerDuración de la app de índice UV (segundos).
showWindbooleanMostrar app de viento.
windColorintegerColor del viento (entero RGB).
windDurationintegerDuración de la app de viento (segundos).
windShowGustbooleanAgregar la ráfaga ( R<n>) a la línea del viento (p. ej. W 5 R4).
showRadiationbooleanMostrar app de radiación solar (W/m²).
radColorintegerColor de la radiación (entero RGB).
radAutoColorbooleanColorear automáticamente la radiación según intensidad (como UV).
radDurationintegerDuración de la app de radiación (segundos).
showPrecipbooleanMostrar app de precipitación.
precipColorintegerColor de la precipitación (entero RGB).
precipDurationintegerDuración de la app de precipitación (segundos).
precipShowRatebooleanAgregar la tasa de lluvia ( <n>/h) a la línea (p. ej. 0.0mm 0.0/h).

GET /api/weather/data devuelve los datos actuales: valid, outdoorTemp, outdoorHumidity, pressure, aqi, uv, condition, conditionCode, windSpeed (km/h), windDeg, windGust (km/h), windDir (rumbo), solarRadiation (W/m²), precipToday (mm), precipEvent (mm del evento), rainRate (mm/h), lastUpdate (millis) y failStreak (fallos de red consecutivos del fetch; 0 = último OK).

Auto-recuperación: si el fetch se atasca, el reloj primero re-asocia el WiFi (recuperación suave, tras varios fallos seguidos) y solo si aun así pasa max(15 min, 5× el intervalo) sin un fetch exitoso, con WiFi conectado, se reinicia como último recurso (limpia el stack de red/heap). Mantiene el WiFi sin ahorro de energía (el reloj es USB) para que el enlace no se ponga viejo. En operación normal no reinicia; failStreak y /api/nvs vigilan la salud.

Modo nocturno: mientras el modo nocturno está activo, el reloj pausa todos los fetches (clima + fuentes personalizadas) — solo se muestra el reloj — y congela la auto-recuperación (no se reinicia de madrugada). Al terminar la ventana nocturna re-asocia el WiFi y el fetch sale de inmediato, así que las apps reaparecen con dato fresco.

Cambiar Configuración ​

Ajusta varias configuraciones relacionadas con la visualización de apps.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/settingshttp://[IP]/api/settingsJSONGET/POST

Propiedades JSON ​

Puedes ajustar cada propiedad en el objeto JSON según tus preferencias. Incluir una propiedad es opcional.

ClaveTipoDescripciónRango de ValoresPor defecto
ATIMEnumberDuración que una app se muestra en segundos.Entero positivo7
TEFFnumberElige entre efectos de transición de app (ver lista completa en /api/transitions).0–131
TSPEEDnumberTiempo tomado para la transición a la siguiente app en milisegundos.Entero positivo500
TCOLstring/array de intsColor de texto global.Arreglo RGB o color hexN/A
TMODEintegerCambia el estilo de la app de hora.0–61
CHCOLstring/array de intsColor de encabezado del calendario de la app de hora.Arreglo RGB o color hex#FF0000
CBCOLstring/array de intsColor del cuerpo del calendario de la app de hora.Arreglo RGB o color hex#FFFFFF
CTCOLstring/array de intsColor del texto del calendario en la app de hora.Arreglo RGB o color hex#000000
WDbooleanHabilita o deshabilita la visualización del día de semana.true/falsetrue
WDCAstring/array de intsColor del día de semana activo.Arreglo RGB o color hexN/A
WDCIstring/array de intsColor del día de semana inactivo.Arreglo RGB o color hexN/A
BRInumberBrillo de la matriz.0–255N/A
ABRIbooleanControl automático de brillo.true/falseN/A
ATRANSbooleanCambio automático a la siguiente app.true/falseN/A
CCORRECTIONarray de intsCorrección de color para la matriz.Arreglo RGBN/A
CTEMParray de intsTemperatura de color para la matriz.Arreglo RGBN/A
TFORMATstringFormato de hora para la App de Hora.Varía (ver abajo)N/A
DFORMATstringFormato de fecha para la App de Fecha.Varía (ver abajo)N/A
SOMbooleanComenzar la semana en lunes.true/falsetrue
CELbooleanMuestra la temperatura en Celsius (Fahrenheit cuando es false).true/falsetrue
BLOCKNbooleanBloquea teclas de navegación física (aún envía entrada a MQTT).true/falsefalse
UPPERCASEbooleanMuestra texto en mayúsculas.true/falsetrue
TIME_COLstring/array de intsColor de texto de la app de hora. Usa 0 para color de texto global.Arreglo RGB o color hexN/A
DATE_COLstring/array de intsColor de texto de la app de fecha. Usa 0 para color de texto global.Arreglo RGB o color hexN/A
TEMP_COLstring/array de intsColor de texto de la app de temperatura. Usa 0 para color de texto global.Arreglo RGB o color hexN/A
HUM_COLstring/array de intsColor de texto de la app de humedad. Usa 0 para color de texto global.Arreglo RGB o color hexN/A
BAT_COLstring/array de intsColor de texto de la app de batería. Usa 0 para color de texto global.Arreglo RGB o color hexN/A
SSPEEDintegerModificación de velocidad de desplazamiento.Porcentaje de velocidad de desplazamiento original100
NILAYOUTstringDisposición de icono para apps nativas (Temperatura, Humedad, Batería). Controla posición del icono."left", "right", "none""left"
NMODEbooleanHabilita modo nocturno — atenuación programada con anulación de color.true/falsefalse
NSTARTintegerHora de inicio del modo nocturno en minutos desde medianoche (ej. 1260 = 21:00).0–14391260
NENDintegerHora de fin del modo nocturno en minutos desde medianoche (ej. 360 = 06:00).0–1439360
NBRIintegerBrillo durante modo nocturno.0–2555
NCOLintegerColor de texto durante modo nocturno (hex como entero, ej. 16711680 = rojo).Entero RGB16711680
NBTRANSbooleanBloquear auto-transición durante modo nocturno (solo navegación manual).true/falsetrue
TIMbooleanHabilita o deshabilita la app nativa de hora (requiere reinicio).true/falsetrue
DATbooleanHabilita o deshabilita la app nativa de fecha (requiere reinicio).true/falsetrue
HUMbooleanHabilita o deshabilita la app nativa de humedad (requiere reinicio).true/falsetrue
TEMPbooleanHabilita o deshabilita la app nativa de temperatura (requiere reinicio).true/falsetrue
BATbooleanHabilita o deshabilita la app nativa de batería (requiere reinicio).true/falsetrue
MATPbooleanHabilita o deshabilita la matriz. Similar al endpoint power pero sin la animación.true/falsetrue
VOLintegerPermite establecer el volumen del buzzer.0–3025
OVERLAYstringEstablece una superposición de efecto global (no puede usarse con superposiciones específicas de app).Varía (ver abajo)N/A
BEFFintegerÍndice de efecto de fondo — se reproduce detrás de cada app y notificación. Usa -1 para deshabilitar.-1 o un índice de efecto válido (ver /api/effects)-1
GAMMAnumberCorrección gamma de la pantalla. 1.9 = neutro; más alto = más contraste/medios más oscuros; más bajo = más plano.Flotante positivo1.9

Valores de Color: Pueden ser un arreglo RGB (ej., [255,0,0]) o un valor de color hexadecimal válido de 6 dígitos (ej., "#FF0000" para rojo).

Efectos de superposición:

  • "clear"
  • "snow"
  • "rain"
  • "drizzle"
  • "storm"
  • "thunder"
  • "frost"

Formatos de Hora Disponibles: ​

FormatoEjemploDescripción
%H:%M:%S13:30:45Hora 24h con segundos
%l:%M:%S1:30:45Hora 12h con segundos
%H:%M13:30Hora 24h
%H %M13.30Hora 24h con dos puntos parpadeantes
%l:%M1:30Hora 12h
%l %M1:30Hora 12h con dos puntos parpadeantes
%l:%M %p1:30 PMHora 12h con indicador AM/PM
%l %M %p1:30 PMHora 12h con dos puntos parpadeantes y AM/PM

Formatos de Fecha Disponibles: ​

FormatoEjemploDescripción
%d.%m.%y16.04.22Día.Mes.Año (corto)
%d.%m16.04Día.Mes
%y-%m-%d22-04-16Año-Mes-Día
%m-%d04-16Mes-Día
%m/%d/%y04/16/22Mes/Día/Año
%m/%d04/16Mes/Día
%d/%m/%y16/04/22Día/Mes/Año
%d/%m16/04Día/Mes
%m-%d-%y04-16-22Mes-Día-Año

Efectos de Transición Disponibles: ​

CódigoEfecto
0Aleatorio
1Deslizar
2Atenuar
3Zoom
4Rotar
5Pixelar
6Cortina
7Ondas
8Parpadeo
9Recargar
10Desvanecer

Actualizar ​

Puedes iniciar la actualización del firmware ya sea a través del botón de actualización en HA o usando lo siguiente:

Topic MQTTURL HTTPPayload/BodyEncabezado HTTPMétodo HTTP
[PREFIX]/doupdatehttp://[IP]/api/doupdateJSONpayload/body vacíoPOST

Reiniciar Svitrix ​

Si necesitas reiniciar el Svitrix:

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
[PREFIX]/reboothttp://[IP]/api/reboot-POST

Borrar Svitrix ​

ADVERTENCIA: Esta acción formateará la memoria flash y EEPROM pero no modificará la configuración WiFi. Esencialmente sirve como un reset de fábrica.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
N/Ahttp://[IP]/api/erase-POST

Limpiar Configuración ​

ADVERTENCIA: Esta acción restablecerá todas las configuraciones de la API de settings. No restablece los archivos flash ni la configuración WiFi.

Topic MQTTURL HTTPPayload/BodyMétodo HTTP
N/Ahttp://[IP]/api/resetSettings-POST

Configuración WiFi ​

Consulta o cambia las redes WiFi (hasta 3) por API. eraseWifi borra solo las credenciales WiFi y reinicia (más acotado que erase).

URL HTTPPayload/BodyMétodo HTTP
http://[IP]/api/wifi-GET
http://[IP]/api/wifi{"networks":[{"ssid":"MiRed","password":"..."}]}POST
http://[IP]/api/eraseWifi-POST

Respaldo y Restauración de Configuración ​

Exporta toda la configuración como JSON o restáurala desde un respaldo. Ver también Respaldo y Restauración.

URL HTTPPayload/BodyMétodo HTTP
http://[IP]/api/settings/export-GET
http://[IP]/api/settings/importJSON (respaldo previo)POST

Sistema y Archivos ​

Endpoints de sistema y acceso directo al sistema de archivos LittleFS (iconos, melodías, apps personalizadas, respaldos).

Versión del Firmware ​

URL HTTPPayload/BodyMétodo HTTP
http://[IP]/version-GET

Diagnóstico NVS (partición de ajustes) ​

Uso de la partición NVS (20 KB) donde se guardan todos los ajustes. Útil para vigilar el margen: si se llena, la NVS se corrompe y se pierden ajustes (el reloj cae en modo AP). Vigilar que usedPct no pase ~85 %.

URL HTTPPayload/BodyMétodo HTTPDescripción
http://[IP]/api/nvs-GET{used, free, total, namespaces, usedPct} (entradas de 32 B)

Aplicar Configuración de Red/Broker ​

Aplica el archivo /DoNotTouch.json (IP estática, broker MQTT, Home Assistant, NTP, auth) al sistema en caliente, sin reiniciar. Lo usa el SPA tras editar la configuración avanzada.

URL HTTPPayload/BodyMétodo HTTP
http://[IP]/saveform-dataPOST

Gestor de Archivos (LittleFS) ​

Lista, descarga, sube y elimina archivos del almacenamiento (/ICONS/, /MELODIES/, /CUSTOMAPPS/, /PALETTES/). Es lo que usa la página de Archivos del SPA.

URL HTTPPayload/BodyMétodo HTTPDescripción
http://[IP]/list?dir=/ICONS-GETLista un directorio (JSON: nombre, tipo, tamaño)
http://[IP]/<ruta>-GETDescarga un archivo (ej. /ICONS/962.jpg)
http://[IP]/edit?filename=/<ruta>multipart (campo data)POSTSube o crea un archivo
http://[IP]/editpath=/<ruta>PUTCrea un directorio
http://[IP]/editpath=/<ruta>DELETEElimina un archivo

Nota: las respuestas de archivos pueden venir comprimidas con gzip (Content-Encoding: gzip); usa un cliente que descomprima automáticamente.