Ir al contenido

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.

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 placa

Booleano — 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");

Booleano (g2d) — sketch: bool ledDeseado; + TPT_VAR(tpt, ledDeseado, GATEWAY_TO_DEVICE);

tpt.bindGVar("ledDeseado", { initial: false }); // aparece en Telemetría; apagado al conectar
tpt.var.ledDeseado = true; // o escríbela directo cuando quieras

Número (g2d) — sketch: int brillo; + TPT_VAR(tpt, brillo, GATEWAY_TO_DEVICE);

tpt.bindGVar("brillo", { initial: 0 }); // 0–255; varG.brillo controla el actuador

Sketch 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: sensor
bool 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
}
// boardCode
tpt.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ía

Sketch 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();
}
// boardCode
tpt.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 27016
int 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).