Skip to content

Data Fetcher ​

El Data Fetcher permite que SVITRIX automáticamente obtenga datos de APIs HTTP/HTTPS externas y muestre los resultados en la matriz LED — sin necesidad de un sistema de hogar inteligente.

Cómo Funciona ​

  1. Configuras una o más fuentes de datos, cada una apuntando a una API externa
  2. SVITRIX obtiene periódicamente cada fuente y extrae un valor de la respuesta JSON
  3. El valor extraído se formatea y muestra como una app personalizada en el ciclo de apps

Interfaz Web ​

Navega a http://[IP]/datafetcher en tu navegador para gestionar fuentes de datos a través de una interfaz visual. Puedes agregar, editar y eliminar fuentes sin escribir ninguna llamada API.

Configuración ​

Cada fuente de datos tiene las siguientes configuraciones:

ConfiguraciónDescripción
NombreIdentificador único — se convierte en el nombre de la app mostrada en el ciclo
URLURL completa HTTP o HTTPS del endpoint de la API
Ruta JSONRuta con notación de punto al valor en la respuesta (ej., bitcoin.usd o data.0.price)
Formato de VisualizaciónFormato opcional estilo printf para un solo valor (ej., $%.0f para "$67432", %.1f°C para "23.5°C"). Especificadores permitidos: %d %i %u %o %x %X %f %g %e %E %s con ancho y precisión opcionales (1–2 dígitos cada uno). Usa %% para un % literal (ej., %d%% → "85%").
IconoNombre de icono opcional de la carpeta ICONS
ColorColor de texto opcional como hex #RRGGBB
IntervaloIntervalo de polling en segundos (mínimo 60, por defecto 900)
DuraciónTiempo de visualización en segundos (0 = usar valor global de timePerApp)
ActivoCuando está desactivado, la fuente se guarda pero no se muestra en rotación

Ruta JSON ​

La Ruta JSON indica dónde está el valor que quieres extraer dentro de la respuesta de la API. Usa notación de punto para navegar por la estructura.

Cómo encontrar la ruta ​

  1. Abre la URL de la API en tu navegador
  2. Observa la estructura del JSON
  3. Escribe la ruta usando puntos para separar niveles

Ejemplos de rutas ​

Si la API devuelve:

json
{
  "rates": {
    "MXN": 17.45,
    "EUR": 0.92
  }
}

→ Ruta: rates.MXN → Resultado: 17.45

Para arrays, usa el índice numérico:

json
{
  "data": [
    { "price": 67000 },
    { "price": 3400 }
  ]
}

→ Ruta: data.0.price → Resultado: 67000 (primer elemento)


Formato de Visualización ​

El Formato de Visualización usa sintaxis printf para dar estilo al valor extraído.

Referencia rápida ​

FormatoEjemplo de salidaDescripción
$%.2f$17.45Moneda con 2 decimales
$%.0f$67432Moneda sin decimales
%.1f°C23.5°CUn decimal con unidad
%d%%85%Entero con símbolo %
%stextoTexto sin modificar
(vacío)17.45Valor crudo

Especificadores permitidos ​

  • Números: %d %i (enteros), %f %g %e (decimales)
  • Texto: %s (cadena)
  • Literal %: %% (muestra un solo %)

Modificadores opcionales ​

  • Ancho mínimo: %8d → " 42" (8 caracteres)
  • Precisión decimal: %.2f → "3.14" (2 decimales)
  • Combinado: %8.2f → " 3.14"

Icono ​

El campo Icono acepta:

  • Nombre de archivo: nombre de un icono en la carpeta /ICONS/ (sin extensión)
  • Número LaMetric: ID numérico de LaMetric Icon Gallery — el sistema busca [número].gif en /ICONS/

Ejemplos: bitcoin, 16437, weather

Tip: Descarga iconos desde la sección de Iconos en la interfaz web antes de usarlos.


Ejemplos ​

Precio de Bitcoin ​

  • Nombre: btc
  • URL: https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd
  • Ruta JSON: bitcoin.usd
  • Formato: $%.0f
  • Color: #F7931A
  • Intervalo: 300

Tipo de cambio USD/MXN ​

  • Nombre: USDMXN
  • URL: https://open.er-api.com/v6/latest/USD
  • Ruta JSON: rates.MXN
  • Formato: $%.2f
  • Color: #00AA00
  • Intervalo: 3600

Precio de Ethereum ​

  • Nombre: eth
  • URL: https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd
  • Ruta JSON: ethereum.usd
  • Formato: $%.0f
  • Color: #627EEA
  • Intervalo: 300

GitHub Stars de un repositorio ​

  • Nombre: stars
  • URL: https://api.github.com/repos/USUARIO/REPO
  • Ruta JSON: stargazers_count
  • Formato: %d ★
  • Color: #FFD700
  • Intervalo: 3600

Tu IP pública ​

  • Nombre: myip
  • URL: https://api.ipify.org?format=json
  • Ruta JSON: ip
  • Formato: %s
  • Intervalo: 86400

Fuentes de APIs Públicas ​

Estas colecciones contienen cientos de APIs gratuitas compatibles con SVITRIX:

RecursoURLDescripción
Public APIshttps://github.com/public-apis/public-apis1400+ APIs en 50 categorías, filtrable por autenticación
API Listhttps://apilist.funBúsqueda por tema y popularidad
Free APIshttps://free-apis.github.ioListado curado de APIs gratuitas
No Auth APIshttps://mixedanalytics.com/blog/list-actually-free-open-no-auth-needed-apis/APIs sin autenticación
RapidAPI Freehttps://rapidapi.com/collection/list-of-free-apisCon ejemplos y documentación

Requisitos de compatibilidad ​

Para que una API funcione con SVITRIX:

  • ✅ Sin autenticación o API key en la URL (no headers personalizados)
  • ✅ Respuesta JSON menor a 4 KB
  • ✅ Valor extraíble con notación de punto (data.value, items.0.price)
  • ✅ Endpoint público accesible desde tu red

Ideas por categoría ​

CategoríaAPIs sugeridas
FinanzasCoinGecko, ExchangeRate-API, Alpha Vantage
ClimaOpen-Meteo, WeatherAPI (ya integrado)
MonitoreoUptimeRobot, Pi-hole, Home Assistant
DesarrolloGitHub API, GitLab API
EntretenimientoSpotify (con token), Twitch
Utilidadesipify, WorldTimeAPI

Activar / Desactivar Fuentes ​

Puedes desactivar temporalmente una fuente sin eliminarla:

  • En la interfaz web, cada fuente tiene un botón Activar/Desactivar
  • Las fuentes desactivadas permanecen guardadas pero no se obtienen ni se muestran
  • Al reactivar una fuente, se obtiene inmediatamente y vuelve a la rotación
  • Útil para pausar fuentes durante mantenimiento de APIs o para reducir tráfico

Limitaciones ​

  • Máximo 8 fuentes de datos simultáneamente
  • La respuesta de la API debe ser menor a 4 KB
  • Solo se soportan APIs públicas (sin encabezados de autenticación personalizados)
  • Intervalo mínimo de polling es 60 segundos
  • HTTPS está soportado pero sin validación de certificado

API ​

Las fuentes de datos también pueden gestionarse vía el API HTTP.