Dash

Graph what your board prints

Plug in an Arduino or ESP32 over USB, Bluetooth or Wi-Fi. Seelie Dash finds the fields in its output, and you click an empty box to graph them. Every reading is kept, so you can scroll back through last night.

Nothing to install on your computer. Add the Seelie Dash library to your sketch, or just print JSON.

Weather boardsimulated · live

    Temperature and humidity

        Three ways in

        The browser talks to the board directly, or the board posts to Seelie Dash on its own. Either way the dashboard shows how it’s connected.

        USB cable

        Pick the port once. After that the board reconnects by itself whenever you plug it in, and the dashboard names the chip it found: CP2102, CH340, native ESP32 USB.

        Bluetooth

        An ESP32 advertises the Nordic UART service and prints the same lines over the air. Good for boards on a battery or inside an enclosure.

        Wi-Fi

        For boards that run on their own. They post readings with a device key, and you watch them from any browser, including your phone.

        Two lines in your sketch

        The Seelie Dash library does the formatting. Add each reading with dash.add(), then dash.send(). It names the board after your sketch and tells the dashboard what it is, so the board is recognised by itself.

        1. Download the library.
        2. In the Arduino IDE, choose Sketch → Include Library → Add .ZIP Library, and pick the file.
        3. Upload a sketch like this one, then connect the board in Seelie Dash.

        USB works on any board. Bluetooth and Wi-Fi need an ESP32, S3, C3 or C6.

        #include <SeelieDash.h>
        
        SeelieDash dash;
        
        void setup() {
          dash.beginSerial();   // Bluetooth: SeelieDashBluetooth, Wi-Fi: SeelieDashWiFi
        }
        
        void loop() {
          dash.add("temp", readTemp());
          dash.add("hum", readHumidity());
          dash.send();
          delay(500);
        }

        Or print it yourself

        No library needed: print one reading per line. Each name becomes a field you can graph. Nested objects work too: {"imu":{"x":1}} becomes imu.x.

        Lines that aren’t readings, like boot messages, still show in the serial monitor with a note saying why they weren’t graphed, which makes a missing comma easy to spot.

        void loop() {
          Serial.print("{\"temp\":");
          Serial.print(readTemp(), 2);
          Serial.print(",\"hum\":");
          Serial.print(readHumidity(), 1);
          Serial.println("}");
          delay(500);
        }
        
        // prints   {"temp":23.41,"hum":51.2}
        // or keep  temp:23.41,hum:51.2

        History, kept

        Readings from USB and Bluetooth are uploaded as they arrive, so they’re saved exactly like Wi-Fi ones.

        Switch any dashboard from Live to the last 15 minutes, a day, a month or a year. Long ranges are averaged so graphs stay quick, and gaps show as gaps instead of a line drawn across the time the board was off.

        Drag across a graph to zoom in. Download any device’s readings as CSV. Raw readings are kept for 30 days and per-minute averages for a year.

        Which browsers

        A web page can only reach USB and Bluetooth where the browser allows it. Wi-Fi works everywhere.

        BrowserUSBBluetoothWi-Fi
        Chrome, Edge, Opera (computer)YesYesYes
        Chrome on AndroidNoYesYes
        Firefox 151 or newer (computer)YesNoYes
        BraveOff, enable in brave://flagsOff, enable in brave://flagsYes
        Safari, iPhone and iPadNoNoYes

        Your data stays yours

        There are no ads, trackers or third-party scripts. Passwords are salted and hashed, and device keys are stored only as fingerprints. Delete a device and its readings go with it. Delete your account and everything goes.