boardCode (el objeto tpt)
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:
| Miembro | Para qué |
|---|---|
tpt.var | leer 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 |
Leer y escribir: tpt.var
Sección titulada «Leer y escribir: tpt.var»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 placatpt.var.ledDeseado = true; // se manda a la placa (variable g2d o bi)- Leer
tpt.var.xte da el último valor conocido de esa variable. - Escribir
tpt.var.xmanda el valor a la placa si la variable esg2dobi. Escribir una variabled2g(que solo reporta la placa) actualiza el valor local pero no se transmite.
Fijar la cadencia: tpt.setRate
Sección titulada «Fijar la cadencia: tpt.setRate»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 msmode:"onChange"(por defecto) sincroniza cuando el valor cambia;"periodic"lo hace cadamsaunque 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 enonChange— umbral de cambio (ignora variaciones menores, útil contra el ruido). Por defecto0(cualquier cambio). Enperiodicse ignora.
Exponer a varG: tpt.bindGVar
Sección titulada «Exponer a varG: tpt.bindGVar»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 variabletpt.bindGVar("objetivo", "objetivoSala"); // con alias: varG.objetivoSalatpt.bindGVar("brillo", { initial: 0 }); // g2d/bi: valor inicial 0 → placa al conectartpt.bindGVar("modo", { alias: "modoSala", initial: "auto" });-
Para variables
d2g/bi: cuando la placa reporta, se escribevarG[alias]. -
Para variables
g2d/bi: cuando cambiavarG[alias], se manda a la placa (a la cadencia configurada). -
Al enlazar una variable
g2d/bi, siempre se creavarG[alias]para que aparezca en Telemetría desde el primer momento. El valor inicial se elige con esta precedencia:Orden Fuente del valor inicial Cuándo aplica 1 initialexplícitosi pasaste { initial: ... }2 último valor del MCU solo biya hidratada (el eco no se reenvía)3 varG[alias]previasi esa clave ya tenía valor 4 default del tipo booleano → false, texto →"", numérico →0 -
initialsolo aplica a variablesg2d/bi. Pasarlo en unad2ges un error (el MCU es la fuente de verdad). Debe ser compatible con el tipo de la variable; si no, el boardCode falla.initial: undefinedtambié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,"") sí se aplican como inicial.
Reaccionar a cambios: tpt.onUpdate
Sección titulada «Reaccionar a cambios: tpt.onUpdate»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
onUpdatepara la misma variable. - Es la herramienta para lógica avanzada (condiciones, cálculos, series con
pushData) que el enlace declarativo debindGVarno cubre.
Nombres de variable válidos
Sección titulada «Nombres de variable válidos»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.
Recargas
Sección titulada «Recargas»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.
Modo visual
Sección titulada «Modo visual»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
tptdirectamente (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.