Skip to content

boardCode (el objeto tpt)

This content is not available in your language yet.

Cuando un thing usa el modo Transparent, en el editor web no tienes board ni five: tienes el objeto global tpt, que trabaja con las variables que tu placa declaró con TPT_VAR. También tienes varG, pushData, console y los temporizadores, igual que en frvn.

tpt tiene cuatro cosas:

MiembroPara qué
tpt.varleer y escribir el valor de una variable
tpt.setRate(nombre, opciones)fijar la cadencia de sincronización
tpt.bindGVar(nombre[, alias u opciones])exponer una variable como clave de varG
tpt.onUpdate(nombre, cb)reaccionar a cada valor que llega de la placa

tpt.var es un objeto con tus variables declaradas. Lo lees y lo escribes por nombre:

console.log(tpt.var.temperatura); // último valor reportado por la placa
tpt.var.ledDeseado = true; // se manda a la placa (variable g2d o bi)
  • Leer tpt.var.x te da el último valor conocido de esa variable.
  • Escribir tpt.var.x manda el valor a la placa si la variable es g2d o bi. Escribir una variable d2g (que solo reporta la placa) actualiza el valor local pero no se transmite.

Controla el ritmo de sincronización de una variable, en el sentido que aplique: para d2g/bi limita cada cuánto la placa reporta; para g2d/bi limita cada cuánto el gateway envía al MCU los cambios (sea por tpt.var o por varG enlazado). El mismo mode/ms/delta gobierna ambos sentidos.

tpt.setRate("temperatura", { mode: "onChange", ms: 1000, delta: 0.5 });
tpt.setRate("uptime", { mode: "periodic", ms: 2000 });
tpt.setRate("brillo", { ms: 200 }); // g2d: no manda al MCU más de una vez cada 200 ms
  • mode: "onChange" (por defecto) sincroniza cuando el valor cambia; "periodic" lo hace cada ms aunque no cambie.
  • ms: intervalo mínimo entre envíos. Mínimo 100 ms; un valor menor se ajusta a 100 y verás un aviso en la consola. Por defecto 500 ms.
  • delta: solo para números en onChange — umbral de cambio (ignora variaciones menores, útil contra el ruido). Por defecto 0 (cualquier cambio). En periodic se ignora.

Enlaza una variable Transparent con una clave de varG (el sistema de variables del proyecto), en ambos sentidos según su dirección. El segundo argumento es opcional y puede ser un alias (string) o un objeto de opciones { alias?, initial? }:

tpt.bindGVar("temperatura"); // varG.temperatura sigue a la variable
tpt.bindGVar("objetivo", "objetivoSala"); // con alias: varG.objetivoSala
tpt.bindGVar("brillo", { initial: 0 }); // g2d/bi: valor inicial 0 → placa al conectar
tpt.bindGVar("modo", { alias: "modoSala", initial: "auto" });
  • Para variables d2g/bi: cuando la placa reporta, se escribe varG[alias].

  • Para variables g2d/bi: cuando cambia varG[alias], se manda a la placa (a la cadencia configurada).

  • Al enlazar una variable g2d/bi, siempre se crea varG[alias] para que aparezca en Telemetría desde el primer momento. El valor inicial se elige con esta precedencia:

    OrdenFuente del valor inicialCuándo aplica
    1initial explícitosi pasaste { initial: ... }
    2último valor del MCUsolo bi ya hidratada (el eco no se reenvía)
    3varG[alias] previasi esa clave ya tenía valor
    4default del tipobooleano → false, texto → "", numérico → 0
  • initial solo aplica a variables g2d/bi. Pasarlo en una d2g es un error (el MCU es la fuente de verdad). Debe ser compatible con el tipo de la variable; si no, el boardCode falla. initial: undefined también es un error explícito (evita silenciar un typo); si no querés valor inicial, no pases la clave.

  • Valores “falsy” válidos (0, false, "") se aplican como inicial.

tpt.onUpdate("temperatura", (valor) => {
pushData("historialTemp", valor); // acumula una serie temporal
});
  • Se ejecuta cada vez que la placa reporta esa variable, con el valor ya tipado.
  • Es immediate: si al registrar el callback ya había un valor recibido, se ejecuta una vez de inmediato con ese último valor.
  • Puedes registrar varios onUpdate para la misma variable.
  • Es la herramienta para lógica avanzada (condiciones, cálculos, series con pushData) que el enlace declarativo de bindGVar no cubre.

Un nombre debe empezar por una letra y tener hasta 32 caracteres, usando solo letras, números, guion (-) y guion bajo (_). Los declara la placa con TPT_VAR; si nombras algo que la placa no declaró, verás un aviso y se ignora.

Cada vez que guardas el boardCode, tus setRate, bindGVar y onUpdate anteriores se limpian y se vuelven a aplicar; la conexión con la placa y su catálogo de variables se mantienen. La placa no se reinicia (sigue corriendo tu sketch).

Si tu código falla al recargar (un error en el eval, un initial incompatible o el manifest no disponible), la sesión queda vacía: no se envía ninguna configuración ni ningún valor a la placa, igual que en frvn. No hay restauración de la configuración anterior — corrige el código y vuelve a ejecutar, o desconecta y reconecta el dispositivo.

Los tipos que puede tener cada variable están en Tipos de datos.

Una thing Transparent puede editarse de dos formas:

  • Modo visual (por defecto en things nuevas): un formulario declarativo donde eliges qué variables exponer, su alias, valor inicial (para g2d/bi), cadencia y si se registran como serie temporal (d2g/bi). No escribes código; la plataforma genera el boardCode por ti.
  • Modo código: escribes el JS con la API tpt directamente (lo que describe esta página).

El editor visual genera exactamente el mismo boardCode que escribirías a mano (setRate + bindGVar + onUpdate/pushData). Puedes ver ese código con “Ver código generado”.

Pasar a código avanzado (visual → código) vuelca el código generado al editor y te deja editarlo a mano. Al guardar, la thing queda en modo código (mientras no guardes, recargar la restaura al visual). La conversión inversa (código → visual) existe como “Reiniciar en modo visual”, pero es destructiva: descarta el código y cualquier configuración visual previa y arranca un editor visual vacío.

Guía paso a paso en Editor visual.