Box IO

Self-hosted IoT for Arduino and ESP32.

Bar meter

A vertical bar from min to max. Same color rules as the circle meter. The sketch publishes the number.

Sample pin: V3

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 Bar meter.
  4. Set Virtual pin to 3.
  5. Set Min and Max. The sample below is 10 to 90.
  6. Choose Color by and set the color stops.
  7. Save the layout, then open Live. Drag the corner handle if you want a taller bar. The gauge scales with the box.
  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
minDashboard or sketchNumber0Low end of the gauge.
maxDashboard or sketchNumber200High end of the gauge. The arc or bar is the span from min to max.
colorDashboard or sketch#RRGGBB#2ee0c5Color used when no color stop matches.
colorModeDashboard or sketchpercentage or valuespercentagepercentage compares stops to 0–100 percent of the min/max span. values compares stops to the raw number.
colorStopsDashboard or sketchat:#hex joined by semicolons0:#2ee0c5;60:#f5b942;85:#ff5d73The highest stop that is still at or below the reading wins. In percentage mode, 60 means 60 percent. In values mode, 60 means the number 60.
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 "boxio.krmsproducts.net"
#define BOXIO_PORT 5923

#include <BoxIOEsp32.h>

void setup() {
  BoxIO.begin(BOXIO_AUTH, WIFI_SSID, WIFI_PASS, BOXIO_HOST, BOXIO_PORT);
BoxIO.setProperty(V3, "label", "Bar Lab");
  BoxIO.setProperty(V3, "min", "10");
  BoxIO.setProperty(V3, "max", "90");
  BoxIO.setProperty(V3, "color", "#7aa2ff");
  BoxIO.setProperty(V3, "colorMode", "percentage");
  BoxIO.setProperty(V3, "colorStops", "0:#2ee0c5;60:#f5b942;85:#ff5d73");
  BoxIO.virtualWrite(V3, 40);
}

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

What you should see

The bar grows from the bottom. At about 85 percent of the 10–90 range the color is the last stop.