Skip to content

El runtime gVar

This content is not available in your language yet.

Todo artefacto arranca con las variables globales del proyecto ya cargadas en un objeto global:

gVar.temperatura; // se lee en la primera línea, sin esperar nada

gVar no es una API de red: es un espejo local del estado del proyecto que la plataforma mantiene al día. Lo lees y lo escribes como cualquier objeto de JavaScript, de forma síncrona.

La plataforma no ejecuta tu JavaScript hasta que el espejo está cargado. Mientras tanto muestra un indicador de carga. Por eso no hay nada que esperar: no existe ready() ni promesas de lectura.

GlobalQué hace
gVarLee y escribe variables del proyecto, de forma síncrona.
pushData(clave, valor)Agrega un dato a una serie, con su marca de tiempo.
plotSerie(clave, opts)Proyecta una serie para graficarla. null si no hay datos.
gVarStatusEstado de la conexión y del rol de escritura (solo lectura).
gVarSeriesMetadata de cada serie: totalLength y originTimestamp.
requestWriter(clave, opts)Pide el rol de escritura de una serie. Devuelve una promesa.
releaseWriter(clave)Suelta ese rol. Devuelve una promesa.

Un motor de diferencias local compara tu estado con el confirmado cada 500 ms y envía solo lo que cambió, agrupado en un lote. Las consecuencias prácticas:

  • Escribir es optimista: gVar.encender = true se lee de inmediato en tu propia pantalla, aunque el viaje al hardware tarde un momento.
  • Si la plataforma corrige el valor (por ejemplo, un thing normaliza true a 255), tu variable adopta el valor real cuando llega la confirmación.
  • Si tu artefacto queda sin conexión, los cambios se acumulan y salen al reconectar.

gVarStatus es una foto del estado actual:

gVarStatus.connected; // hay conexión con la plataforma
gVarStatus.hydrated; // el espejo ya tiene datos
gVarStatus.gatewayOnline; // el gateway del proyecto está en línea
gVarStatus.writer; // { keys, forced, claimed } — ver Series y gráficas

Cuando gatewayOnline es false, los things no están en línea: gVar conserva el último estado conocido. Muestra ese estado en tu UI en vez de datos congelados.

gVarSeries describe cada serie del proyecto:

gVarSeries.temperaturas; // { totalLength: 1600, originTimestamp: 1753627800123 }

totalLength es el total de la serie completa en la plataforma, que puede ser mayor que los puntos que tienes en memoria: tu artefacto trabaja con una ventana de los más recientes.

El runtime compara el reloj del navegador con el del servidor al arrancar. Si la diferencia supera 25 segundos, muestra un error y no ejecuta el artefacto: con el reloj mal puesto, las marcas de tiempo de las series quedarían inservibles. La solución es corregir la hora del dispositivo.