Gauge

An arc from minimum to maximum, with the value in the middle. It shows where in the range a reading is — and that is what a temperature, a pressure or a tank level mean.
What it does
It draws the latest value of its signal on an arc that goes from the signal’s minimum to its maximum (set in the signal’s format). Half the arc means halfway through the range. The number is shown in the middle with the signal’s unit.
When to use it
- A measurement with a natural range — a tank
0 – 100 %, a temperature-10 – 50 °C. - Pressure, RPM, load — an arc says high faster than a number does.
- A battery.
Set it up
- Declare the signal — Tap the device icon at the top right, then Declare a signal: give it a name, a type and a unit, and fill in the Format — minimum, maximum, decimals — because that is what the widget will use to scale and print the value.
- Place it — Back on the dashboard, in edit mode, tap + at the bottom and choose Gauge under Displays. Six columns square shows the arc well.
- Wire it to the signal — Tap the widget: its settings open. In the Data tab, tap Pick a signal and choose the signal you declared.
- Write from the device — In the sketch, write the value to the signal’s address —
InstantIoT.write(I1, value)— and it shows up in the widget within a second.
Settings
Tap the widget in edit mode: the sheet opens with a live preview at the top, then two tabs — Data for what it reads or writes, Appearance for how it looks.
Data — what it reads
Signal
| Setting | Type | Default | What it controls |
|---|---|---|---|
| Signal | one signal | empty — Pick a signal | The signal it reads. Minimum, maximum and unit come from the signal’s format — set them on the device’s signal and the arc is scaled. Accepts an Integer or Decimal signal. The picker lists nothing else. |

Appearance — how it looks
Title
| Setting | Type | Default | What it controls |
|---|---|---|---|
| Title text | text | empty | A title above the widget. Empty means no title. |
| Alignment | Left / Center / Right | Center | Where the title sits. |
Display
| Setting | Type | Default | What it controls |
|---|---|---|---|
| Value | toggle | on | The number in the middle. |
| Signal name | toggle | off | The signal’s name under the value. |
| Needle | toggle | off | A needle on the arc instead of a filled arc. |
| Scale | toggle | on | Min and max printed under the arc. |
Colors
| Setting | Type | Default | What it controls |
|---|---|---|---|
| Active arc | colour | theme accent | The filled part. |
| Inactive arc | colour | dark | The rest of the arc. |
| Value | colour | theme | The number. |
| Scale | colour | theme | The min and max. |

States
- Waiting for data — nothing has arrived yet on this signal; the widget shows a placeholder.
- Live — every value the device writes replaces the previous one.
- Device offline — the last value stays on screen; the device’s dot is grey in the device list.
Arduino device code
The address is all the device knows — I2 here; use the one the app gave your signal. In the sketch, one line:
InstantIoT.write(I2, readHumidity());
Complete sketch — Cloud
Paste it into the Arduino IDE, put your Wi-Fi and the token the app gave you, upload. It publishes once a second.
#include <InstantIoT.h>
const char* WIFI_SSID = "MyWiFi";
const char* WIFI_PASS = "MyPassword";
const char* DEVICE_TOKEN = "PASTE_TOKEN_HERE";
InstantTimer timers;
void publish() {
InstantIoT.write(I2, readHumidity()); // a Decimal signal, 0 – 100, unit %
}
void setup() {
InstantIoT.begin(WiFiLink(WIFI_SSID, WIFI_PASS), Cloud(DEVICE_TOKEN));
timers.every(1000, publish);
}
void loop() {
InstantIoT.loop();
timers.run();
}
Other connections
The widget block never changes. Only the begin() line says how the device reaches the app:
| Connection | begin() |
Devices |
|---|---|---|
| Cloud over Wi-Fi (above) | InstantIoT.begin(WiFiLink("MyWiFi", "secret"), Cloud(DEVICE_TOKEN)); |
ESP32 family, ESP8266, UNO R4 WiFi, MKR WiFi 1010, Nano 33 IoT, UNO WiFi Rev2 |
| Cloud over Ethernet | InstantIoT.begin(EthernetLink(), Cloud(DEVICE_TOKEN)); |
any board + an Ethernet shield |
| Direct — the device’s own Wi-Fi | InstantIoT.begin(AccessPoint("MyESP32", "12345678")); |
every board with Wi-Fi |
| Direct — Bluetooth LE | InstantIoT.begin(BLELink("MyESP32")); — #include <NimBLEDevice.h> first |
ESP32 family (not the S2) |
| Direct — Bluetooth Classic | InstantIoT.begin(BluetoothLink("MyESP32")); |
the original ESP32, Android only |
| Direct — a Bluetooth module (HC-05, HM-10) | InstantIoT.begin(SerialLink(Serial1)); — or SerialLink(13, 15) on ESP8266, SerialLink(10, 11) on UNO / Nano |
every board, radio or not |
| Your own InstantIoT Server (open source, at home) | InstantIoT.begin(WiFiLink("MyWiFi", "secret"), MyServer("192.168.1.42", DEVICE_TOKEN)); |
same as Cloud |
Direct needs no token: the phone is at the other end of the wire. See Connect for TLS, timeouts and what to do when it does not connect.
Any display works at the same address. A metric, a gauge and this widget on the same signal show the same value; the device does not change. Change the widget, not the sketch.
Notes
- Set the signal’s min and max to the real range. A gauge
0 – 100for a temperature that lives between 18 and 26 barely moves. - A gauge and a chart on the same signal: the gauge for now, the chart for the trend.
Next
→ Metric — the number alone → Horizontal Level — a bar instead of an arc