Ejemplos
El sketch es igual en serial y WiFi (solo cambia el constructor). En la placa declaras
variables con TPT_VAR y las editas/lees; en el boardCode fijas cadencia, las expones a
varG y reaccionas con onUpdate.
Un ejemplo por tipo (placa → thing)
Sección titulada «Un ejemplo por tipo (placa → thing)»A la izquierda, la variable del sketch; a la derecha, el boardCode que la usa.
Decimal — sketch: float voltaje; + TPT_VAR(tpt, voltaje, DEVICE_TO_GATEWAY);
tpt.setRate("voltaje", { ms: 1000, delta: 0.05 });tpt.bindGVar("voltaje");tpt.onUpdate("voltaje", (v) => pushData("historialVoltaje", v));Entero — sketch: int rpm; + TPT_VAR(tpt, rpm, DEVICE_TO_GATEWAY);
tpt.bindGVar("rpm"); // varG.rpm sigue el valor de la placaBooleano — sketch: bool boton; + TPT_VAR(tpt, boton, DEVICE_TO_GATEWAY);
tpt.onUpdate("boton", (v) => { varG.botonPresionado = v; });Texto — sketch: String estado; + TPT_VAR(tpt, estado, DEVICE_TO_GATEWAY);
tpt.bindGVar("estado");Órdenes desde el thing (thing → placa)
Sección titulada «Órdenes desde el thing (thing → placa)»Booleano (g2d) — sketch: bool ledDeseado; + TPT_VAR(tpt, ledDeseado, GATEWAY_TO_DEVICE);
tpt.bindGVar("ledDeseado", { initial: false }); // aparece en Telemetría; apagado al conectartpt.var.ledDeseado = true; // o escríbela directo cuando quierasNúmero (g2d) — sketch: int brillo; + TPT_VAR(tpt, brillo, GATEWAY_TO_DEVICE);
tpt.bindGVar("brillo", { initial: 0 }); // 0–255; varG.brillo controla el actuadorSketch completo 1 — sensor + botón + LED + objetivo (Arduino Uno, USB)
Sección titulada «Sketch completo 1 — sensor + botón + LED + objetivo (Arduino Uno, USB)»#include <Transparent.h>
Transparent tpt(Serial);
float temperatura = 0; // d2g: sensorbool boton = false; // d2g: pulsador (pin 2)bool ledDeseado = false; // g2d: actuador (LED pin 13)int objetivo = 22; // bi: setpoint editable en ambos lados
void setup() { Serial.begin(115200); pinMode(2, INPUT_PULLUP); pinMode(13, OUTPUT);
TPT_VAR(tpt, temperatura, DEVICE_TO_GATEWAY); TPT_VAR(tpt, boton, DEVICE_TO_GATEWAY); TPT_VAR(tpt, ledDeseado, GATEWAY_TO_DEVICE); TPT_VAR(tpt, objetivo, BIDIRECTIONAL);
tpt.begin();}
void loop() { tpt.update();
temperatura = analogRead(A0) * 0.0488f; // reporta según su cadencia boton = !digitalRead(2);
digitalWrite(13, ledDeseado); // aplicado por el thing}// boardCodetpt.setRate("temperatura", { ms: 1000, delta: 0.5 });tpt.bindGVar("temperatura");tpt.onUpdate("temperatura", (v) => pushData("historialTemp", v));
tpt.bindGVar("boton");tpt.bindGVar("objetivo", "objetivoSala"); // bi: editable desde ambos lados
tpt.bindGVar("ledDeseado", { initial: false }); // g2d: apagado al cargar, visible en TelemetríaSketch completo 2 — estado de un ESP32 (uptime, memoria, temperatura)
Sección titulada «Sketch completo 2 — estado de un ESP32 (uptime, memoria, temperatura)»#include <Transparent.h>
Transparent tpt(Serial); // ESP32-S3 por USB nativo (CDC On Boot: Enabled)
unsigned long uptime = 0;unsigned long heapLibre = 0;float tempInterna = 0;
void setup() { Serial.begin(115200); TPT_VAR(tpt, uptime, DEVICE_TO_GATEWAY); TPT_VAR(tpt, heapLibre, DEVICE_TO_GATEWAY); TPT_VAR(tpt, tempInterna, DEVICE_TO_GATEWAY); tpt.begin();}
void loop() { tpt.update(); uptime = millis(); heapLibre = ESP.getFreeHeap(); tempInterna = temperatureRead();}// boardCodetpt.setRate("uptime", { mode: "periodic", ms: 2000 });tpt.bindGVar("uptime");tpt.bindGVar("heapLibre");tpt.onUpdate("tempInterna", (v) => pushData("temperaturas", v));Sketch completo 3 — sensor a alta frecuencia por WiFi (ESP32)
Sección titulada «Sketch completo 3 — sensor a alta frecuencia por WiFi (ESP32)»Lo único distinto es el constructor (con puerto) y conectar el WiFi en setup(). La
API es la misma. La frecuencia real de reporte la controla el thing con setRate.
#include <WiFi.h>#include <Transparent.h>
#define WIFI_SSID "TU_RED"#define WIFI_PASSWORD "TU_CONTRASENA"
Transparent tpt(27016); // servidor TCP en el puerto 27016int muestra = 0;
void setup() { Serial.begin(115200); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(500); } TPT_VAR(tpt, muestra, DEVICE_TO_GATEWAY); tpt.begin(); // imprime la IP:puerto en el monitor serial}
void loop() { tpt.update(); muestra = analogRead(34);}// boardCode: reportar cada 100 ms (10 por segundo)tpt.setRate("muestra", { mode: "periodic", ms: 100 });tpt.onUpdate("muestra", (v) => pushData("muestras", v));Tras subir el sketch, copia la IP:puerto que imprime el monitor serial al config del thing (modo WiFi).