Box IO

Self-hosted IoT for Arduino and ESP32.

Input box

Someone types on the dashboard and presses Send. The sketch receives that text in BOX_WRITE. Use pins 0–31 so the library can deliver it.

Sample pin: V4

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 Input box.
  4. Set Virtual pin to 4.
  5. Set Label, Color on, and Color off. Color on is the text and the Send button. Color off is the box border.
  6. Save the layout, then open Live. Edit mode does not send.
  7. Type a message and press Send. The sketch handler for V4 runs on the next BoxIO.run().
  8. 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
colorOnDashboard or sketch#RRGGBB#2ee0c5Typed text color and Send button color.
colorOffDashboard or sketch#RRGGBB#314057Border color of the text box.
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(V4, "label", "Input Lab");
  BoxIO.setProperty(V4, "colorOn", "#2ee0c5");
  BoxIO.setProperty(V4, "colorOff", "#314057");
}

void loop() {
  BoxIO.run();

}

BOX_WRITE(V4) {
  String text = param.asStr();
  Serial.println(text);
  BoxIO.virtualWrite(V1, text);
}

What you should see

Send on the dashboard prints the text on Serial and copies it to a Value box on V1 if you added one. The handler only runs when loop keeps calling BoxIO.run().