Skip to content

Apps Nativas ​

Hora ​

La app nativa de Hora ofrece amplias opciones de personalización. Casi todo puede configurarse vía la API, y la mayoría de las configuraciones también pueden ajustarse a través de la app SVITRIX. El formato de hora puede personalizarse según tus preferencias. Por defecto, está configurado a HH:mm. Si el formato seleccionado no cabe en la pantalla, automáticamente volverá a este valor por defecto. Podrás notar algunas líneas en la parte inferior de la pantalla. Estas líneas representan los días de la semana, con el día actual resaltado más brillante. También es posible desactivar esta barra de días de semana. También puedes personalizar los colores para el icono del calendario, la barra de días de semana y también el color del texto con la API de Settings o la app móvil.

La configuración TMODE determina el diseño y estilo de la App de Hora.

TMODE=0 Muestra la hora junto con una barra de días de semana en la parte inferior de la pantalla.

TMODE=1 Muestra la hora con la barra de días de semana en la parte inferior y un cuadro de calendario que resalta el día actual del mes.

TMODE=2 Similar a TMODE=1, pero coloca la barra de días de semana en la parte superior.

TMODE=3 Muestra la hora con la barra de días de semana en la parte inferior y un icono de calendario diferente.

TMODE=4 Similar a TMODE=3, pero coloca la barra de días de semana en la parte superior.

TMODE=5 Introduce una visualización de "hora grande", utilizando una fuente grande para la hora. Si existe un GIF de 32x8 llamado bigtime.gif en el directorio raíz, se reproducirá en el fondo. Por favor nota: Una vez que el GIF se muestra en modo BigTime, no puede reemplazarse directamente porque el archivo está en uso. Para reemplazar el icono, cambia el modo a TMODE primero, y luego podrás actualizar el GIF. Si no se encuentra ningún GIF, se usa el color de texto global.

Puedes obtener algunos ejemplos de GIFs bigtime aquí.

TMODE=6 Muestra la hora en formato binario: La fila superior muestra la hora, la fila del medio muestra los minutos, y la fila inferior muestra los segundos. Cada fila tiene seis puntos, donde los puntos encendidos representan "1" binario y los puntos blancos representan "0" binario. Para leer la hora, convierte los puntos encendidos en cada fila a un número decimal.

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

Fecha ​

La app de Fecha muestra la fecha actual por supuesto. Hay varios formatos de fecha 'DFORMAT' que puedes elegir:

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

Temperatura ​

La App de Temperatura muestra la lectura actual del sensor de temperatura integrado. Sin embargo, debido a la ubicación del sensor dentro de la carcasa, la medición puede no ser completamente precisa. Factores como la placa de alimentación, la matriz LED, el brillo, el color y el número de píxeles encendidos pueden afectar la lectura de temperatura. Para una medición más precisa, puedes calibrar la temperatura con el campo Compensación (offset) de esta misma app en la interfaz web, o con la clave temp_offset del dev.json.


Humedad ​

La app de Humedad muestra la lectura actual del sensor de humedad integrado. Sin embargo, debido a la ubicación del sensor dentro de la carcasa, la medición puede no ser completamente precisa. Factores como la placa de alimentación, la matriz LED, el brillo, el color y el número de píxeles encendidos pueden afectar la lectura de humedad. Para una medición más precisa, puedes utilizar el dev.json para calibrar la humedad con la clave hum_offset.


Batería ​

La App de Batería muestra el nivel de carga actual de la batería integrada con un icono de batería vertical dinámico: se llena de abajo hacia arriba en proporción a la carga y cambia de color por nivel (verde ≥75 %, amarillo 50–74 %, naranja 20–49 %, rojo <20 %). Debido a diferencias en lotes de baterías y la degradación de la batería barata con el tiempo, puede que necesites calibrarla manualmente.

  1. Usa la API de Estado para obtener las lecturas de bat_raw.
  2. Abre el archivo dev.json para configurar los valores min_battery y max_battery:
    • min_battery: Ingresa el valor bat_raw cuando la batería está vacía.
    • max_battery: Ingresa el valor bat_raw cuando la batería está completamente cargada.

Apps del Clima ​

Las apps del clima también son nativas (integradas en el firmware), pero requieren configurar la API del Clima (una clave de weatherapi.com + ubicación) en Settings → API del Clima. Una vez activas, comparten el mismo ciclo de rotación que las demás apps y se pueden reordenar libremente (ver Orden de Apps en el manual de la interfaz web).

AppDescripción
Temp. ExteriorTemperatura exterior. Color configurable; respeta la escala Celsius/Fahrenheit.
Humedad ExteriorHumedad relativa exterior (%). Color configurable.
PresiónPresión atmosférica (mb/hPa). Color configurable.
Calidad del Aire (AQI)Índice de calidad del aire (US EPA, 1–6). Color automático según el nivel (verde → amarillo → naranja → rojo) o color fijo. Con el interruptor de color automático activado, el color del nivel tiene prioridad y anula cualquier color fijo o por elemento configurado (sigue respetando el modo nocturno). Puede además desglosar los contaminantes fuera de rango (ver más abajo).
Índice UVÍndice ultravioleta (0–11+). Color automático según el nivel o color fijo. Con el interruptor de color automático activado, el color del nivel tiene prioridad y anula cualquier color fijo o por elemento configurado (sigue respetando el modo nocturno).

Cada app del clima tiene su propia duración configurable y se activa/desactiva de forma individual. El intervalo de actualización de los datos se ajusta en la sección de API del Clima.

Desglose de contaminantes (Calidad del Aire) ​

Cuando la opción Mostrar componentes está activada (activada por defecto), tras mostrar ICA:N la app recorre los contaminantes individuales que están fuera del rango saludable por sí mismos (nivel EU EAQI ≥ 4): PM2.5, PM10, O3, NO2, SO2 y CO. Se muestran de peor a mejor, hasta un máximo de 3, y cada uno se dibuja con el color de su propio nivel. El disparo depende del valor de cada contaminante de forma independiente del índice general: así, un contaminante puede aparecer en rojo aunque el índice global sea moderado (p. ej. ICA:2 pero O3 en rojo).

El tiempo que se muestra cada contaminante es configurable con Seg. por componente (2–10 s, por defecto 3). Toda la secuencia (índice + contaminantes señalados) se reproduce dentro de una sola aparición de la app; su tiempo en pantalla se extiende automáticamente para que quepa.

Estas opciones viven en Apps → AirQuality (expande el elemento en la lista de rotación): Auto color, Mostrar componentes y el campo de segundos.

TIP

Si una actualización del clima falla (p. ej. internet intermitente), se mantiene en pantalla el último valor leído en lugar de mostrar --, y se reintenta automáticamente al cabo de ~1 minuto. El indicador WiFi (esquina superior izquierda) parpadea en rojo mientras las descargas fallan.


Luna ​

La app de Luna muestra la fase lunar actual con uno de 8 iconos de fase diseñados (set LaMetric), uno por cada fase lunar (nueva → llena → menguante), dibujado sobre un fondo de estrellas azules titilantes. Las esquinas del disco son transparentes para que las estrellas se vean alrededor, y en el hemisferio sur el icono se refleja.

Junto a la luna rotan, de forma configurable, hasta tres datos:

  • Nombre de fase (p. ej. "Cuarto creciente", "Llena")
  • Edad lunar en días
  • Porcentaje de iluminación

Se configura desde Apps → Moon (expandiendo el elemento en la rotación):

OpciónDescripción
HemisferioNorte o Sur — invierte el lado iluminado de la luna.
Mostrar nombre de fase / edad / %Activa o desactiva cada dato del texto rotativo.

Si desactivas los tres datos, se muestra solo la luna, centrada en la pantalla y con las estrellas azules ocupando todo el ancho.

La duración y el color del texto se ajustan por elemento en la rotación, como en las demás apps. El cálculo de la fase es astronómico (basado en UTC), por lo que no requiere conexión a internet.


Apps Personalizadas ​

Además de las apps nativas, SVITRIX está diseñado para integrarse perfectamente con tu ecosistema de hogar inteligente, se pueden crear aplicaciones adicionales usando peticiones MQTT o HTTP.

WARNING

En SVITRIX, el término 'Apps Personalizadas' no se refiere a aplicaciones tradicionales de smartphone que descargas e instalas. En cambio, en SVITRIX, las CustomApps funcionan más como páginas dinámicas que rotan dentro del ciclo de rotación de apps de la pantalla. Estas páginas no almacenan ni ejecutan su propia lógica; en cambio, muestran contenido que se envía desde un sistema externo, como un hogar inteligente. Este contenido debe transmitirse usando protocolos MQTT o HTTP vía la API de CustomApp. Es importante notar que toda la lógica para gestionar el contenido mostrado en estas CustomApps necesita ser manejada por tu sistema externo. SVITRIX solo proporciona la plataforma para mostrar la información. Tienes la flexibilidad de actualizar el contenido mostrado en tus CustomApps en tiempo real en cualquier momento, convirtiéndolo en una herramienta versátil para mostrar información personalizada en tu configuración de hogar inteligente.

Hay numerosos beneficios de este enfoque:

  • Personalización: Personaliza cada aplicación según tus preferencias y necesidades.
  • Flexibilidad: Desarrolla tus propias aplicaciones sin necesidad de modificar el firmware.
  • Gestión eficiente de recursos: Ahorra valioso espacio de memoria flash en el módulo ESP.
  • Adaptabilidad: No es necesario reescribir el firmware si una API sufre cambios.

Puedes usar cualquier sistema que te guste que sea capaz de construir cadenas JSON y enviarlas a un topic MQTT.

SVITRIX FLOWS ​

Este es tu centro principal para compartir y descubrir automatizaciones de SVITRIX, también conocidas como Apps personalizadas para varios servicios. Mejora tu experiencia SVITRIX, intercambia ideas e inspírate. ¡Vamos a dar vida a nuestras automatizaciones creativas juntos! No es necesario iniciar sesión, ni siquiera para crear nuevos flows. Como creador obtendrás un enlace con el que siempre podrás editar tu flow. ¡Guárdalo bien! Puedes subir tus iconos a tu flow, y los usuarios pueden copiarlos directamente a su SVITRIX con un clic! Los nuevos flows son moderados regularmente. https://flows.svitrix.dev/

Ejemplo de Flow con Node-RED ​

Node-RED sirve como una solución de software ideal para crear estas aplicaciones. Está disponible como un programa independiente o como un plugin para Home Assistant y ioBroker, permitiéndote mejorar aún más las capacidades de tu sistema SVITRIX.

Aquí hay una demo, por favor presiona el triángulo para desplegar.

Ejemplo para agregar una App de Youtube como flow de NodeRED

[
  {
    "id": "2a59d30d07abe14f",
    "type": "group",
    "z": "54b42d8d.cda474",
    "style": {
      "stroke": "#999999",
      "stroke-opacity": "1",
      "fill": "none",
      "fill-opacity": "1",
      "label": true,
      "label-position": "nw",
      "color": "#a4a4a4"
    },
    "nodes": [
      "f0f17299.3736c",
      "dc7878f9.4756c8",
      "f234aae371d72680",
      "555bb8624b88c9c3",
      "69c388146e28049d",
      "a349ade5a57f7537"
    ],
    "x": 34,
    "y": 39,
    "w": 892,
    "h": 122
  },
  {
    "id": "f0f17299.3736c",
    "type": "inject",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "",
    "props": [],
    "repeat": "3600",
    "crontab": "",
    "once": true,
    "onceDelay": 0.1,
    "topic": "",
    "x": 130,
    "y": 120,
    "wires": [
      [
        "a349ade5a57f7537"
      ]
    ]
  },
  {
    "id": "dc7878f9.4756c8",
    "type": "http request",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "",
    "method": "GET",
    "ret": "obj",
    "paytoqs": "query",
    "url": "https://youtube.googleapis.com/youtube/v3/channels",
    "tls": "",
    "persist": false,
    "proxy": "",
    "insecureHTTPParser": false,
    "authType": "",
    "senderr": false,
    "headers": [],
    "x": 430,
    "y": 120,
    "wires": [
      [
        "f234aae371d72680"
      ]
    ]
  },
  {
    "id": "f234aae371d72680",
    "type": "function",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "parser",
    "func": "var json = msg.payload;\nvar subscriberCount = json.items[0].statistics.subscriberCount;\n\nmsg.payload = { \"text\": subscriberCount, \"icon\": 5029};\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 590,
    "y": 120,
    "wires": [
      [
        "555bb8624b88c9c3"
      ]
    ]
  },
  {
    "id": "555bb8624b88c9c3",
    "type": "mqtt out",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "",
    "topic": "ulanzi/custom/youtube",
    "qos": "",
    "retain": "",
    "respTopic": "",
    "contentType": "",
    "userProps": "",
    "correl": "",
    "expiry": "",
    "broker": "346df2a95aac5785",
    "x": 800,
    "y": 120,
    "wires": []
  },
  {
    "id": "69c388146e28049d",
    "type": "comment",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "Youtube Follower",
    "info": "Just enter your channelID and Youtube API key in the \"Data\" node  and set your SVITRIX MQTT prefix.\nUses Icon 5029 (LM)",
    "x": 140,
    "y": 80,
    "wires": []
  },
  {
    "id": "a349ade5a57f7537",
    "type": "function",
    "z": "54b42d8d.cda474",
    "g": "2a59d30d07abe14f",
    "name": "Data",
    "func": "msg.payload = { \"id\": \"UCpGLALzRO0uaasWTsm9M99w\", \"key\": \"XXX\", \"part\":\"statistics\"}\nreturn msg;",
    "outputs": 1,
    "noerr": 0,
    "initialize": "",
    "finalize": "",
    "libs": [],
    "x": 270,
    "y": 120,
    "wires": [
      [
        "dc7878f9.4756c8"
      ]
    ]
  },
  {
    "id": "346df2a95aac5785",
    "type": "mqtt-broker",
    "name": "",
    "broker": "localhost",
    "port": "1883",
    "clientid": "",
    "autoConnect": true,
    "usetls": false,
    "protocolVersion": "4",
    "keepalive": "60",
    "cleansession": true,
    "birthTopic": "",
    "birthQos": "0",
    "birthPayload": "",
    "birthMsg": {},
    "closeTopic": "",
    "closeQos": "0",
    "closePayload": "",
    "closeMsg": {},
    "willTopic": "",
    "willQos": "0",
    "willPayload": "",
    "willMsg": {},
    "userProps": "",
    "sessionExpiry": ""
  }
]
  

Este flow de Node-RED obtiene y muestra el conteo de suscriptores de un canal de YouTube especificado en un dispositivo SVITRIX. El flow consiste en los siguientes nodos:

  1. Inject: Este nodo dispara el flow periódicamente (cada hora) o manualmente.
  2. Data (Function): Este nodo contiene el ID del canal de YouTube y la API key de YouTube. Reemplaza "XXX" con tu API key de YouTube e ID de Youtube. El nodo construye un payload que contiene el ID del canal, API key y estadísticas requeridas y lo envía al nodo "HTTP request".
  3. HTTP request: Este nodo envía una petición GET a la API de YouTube para obtener las estadísticas del canal. La respuesta se devuelve como un objeto JavaScript y se pasa al nodo "parser".
  4. parser (Function): Este nodo extrae el conteo de suscriptores de las estadísticas del canal recibidas y construye un payload que contiene el conteo y un icono (Icono 5029). El payload se envía al nodo "MQTT out".
  5. MQTT out: Este nodo publica el payload en el topic MQTT "ulanzi/custom/youtube" en un broker MQTT local. También debes cambiar el topic en este nodo para que coincida con tu prefijo MQTT.
  6. Comment (Youtube Follower): Este nodo contiene información adicional sobre el flow. No afecta la funcionalidad del flow.

Para usar este flow, reemplaza "XXX" en el nodo "Data" con tu API key de YouTube y asegúrate de que la configuración del broker MQTT en el nodo "MQTT out" sea correcta. El flow entonces obtendrá el conteo de suscriptores del canal de YouTube especificado y lo mostrará en tu dispositivo SVITRIX junto con el icono. Este Flow usa el icono 5029 de LM (Solo descárgalo desde la interfaz web de SVITRIX). Puedes cambiar el icono en el flow por tu favorito.