El runtime gVar
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 nadagVar 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.
Tu código corre cuando los datos ya están
Sección titulada «Tu código corre cuando los datos ya están»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.
La API de un vistazo
Sección titulada «La API de un vistazo»| Global | Qué hace |
|---|---|
gVar | Lee 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. |
gVarStatus | Estado de la conexión y del rol de escritura (solo lectura). |
gVarSeries | Metadata 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. |
Cómo se sincroniza
Sección titulada «Cómo se sincroniza»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 = truese 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
truea255), 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.
Estado del runtime
Sección titulada «Estado del runtime»gVarStatus es una foto del estado actual:
gVarStatus.connected; // hay conexión con la plataformagVarStatus.hydrated; // el espejo ya tiene datosgVarStatus.gatewayOnline; // el gateway del proyecto está en líneagVarStatus.writer; // { keys, forced, claimed } — ver Series y gráficasCuando 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.
Metadata de series
Sección titulada «Metadata de series»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.
Reloj del dispositivo
Sección titulada «Reloj del dispositivo»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.