Box IO

Self-hosted IoT for Arduino and ESP32.

Value box

Shows the latest text or number the sketch published. It does not send clicks back to the device.

Sample pin: V1

Set it up on the server

  1. Sign in to the Box IO dashboard and open the project that uses this device key.
  2. Turn on Edit.
  3. In Edit, add Value box.
  4. Set Virtual pin to 1 so it matches V1.
  5. Set Label and Color. Color is the text color.
  6. Save the layout, then open Live.
  7. Flash the sketch below with the same device key, host, and port 5923. Keep BoxIO.run() in loop().

Properties

Sketch values are always strings, including numbers: BoxIO.setProperty(V2, "max", "200").

PropertyWhere to set itFormatExampleEffect
colorDashboard or sketch#RRGGBB#f5b942Text color.
labelDashboard or sketchPlain textPumpCaption above the widget. On a round or oval button this is the caption, not the word on the button face.
hideLabelDashboardOn or offcheckedHides the caption. Button face text, meter numbers, and label text stay visible.
fontSizeDashboardWhole number 8 to 160, or blank for automatic size28Text size in pixels inside the widget.
opacityDashboard10% to 100%70%Lets an overlapping widget show through. 100% is solid.

Formatting

Sketch

Paste the device key over bx_paste_your_device_key_here. Wi-Fi boards include BoxIOEsp32.h. Ethernet boards use the same calls with an EthernetClient.

#define BOXIO_AUTH "bx_paste_your_device_key_here"
#define WIFI_SSID  "your-ssid"
#define WIFI_PASS  "your-password"
#define BOXIO_HOST "localhost"
#define BOXIO_PORT 5923

#include <BoxIOEsp32.h>

void setup() {
  BoxIO.begin(BOXIO_AUTH, WIFI_SSID, WIFI_PASS, BOXIO_HOST, BOXIO_PORT);
BoxIO.setProperty(V1, "label", "Value Lab");
  BoxIO.setProperty(V1, "color", "#f5b942");
  BoxIO.virtualWrite(V1, "hello-lab");
}

void loop() {
  BoxIO.run();
static uint32_t last = 0;
  if (millis() - last < 1000) return;
  last = millis();
  static int n = 0;
  n = (n + 3) % 180;
  BoxIO.virtualWrite(V1, n);
}

What you should see

The box shows hello-lab, then the counting number. Any text fits: temperatures, names, or a short status.