Skip to main content

Dashboard batch flow

The Admin Dashboard can generate credentials, factory NVS binaries, QR codes, and supporting CSVs for a batch of test nodes, then register them all from a single CSV upload. No scripts, no AWS credentials, no Python environment.

This is the right flow for development and small test batches. For manufacturing runs, use the CLI batch flow, which is scriptable and produces merged flash images.

Finding the dashboard

The Admin Dashboard base URL is not fixed — it is per deployment. Take it from your deployment details. You need super-admin credentials; the pages used here live under Node management in the left sidebar.

1. Start generation

In the left sidebar, under Node management, click Generate nodes.

2. Set the batch size and download

The Generate test nodes page lists what each device will receive. Enter how many nodes you want — up to the per-batch maximum the form shows — and generate the batch. Your browser downloads a ZIP.

ZIP layout

One set of artifacts per node, plus shared files (node IDs and filenames will differ):

├── bin
│ └── node-000001-EhmLajr4a3eKDfqwQF4WPK.bin
├── common
│ ├── ca.crt
│ ├── ca.key
│ ├── config.csv
│ ├── endpoint.txt
│ ├── files_bucket.txt
│ ├── mqtt_cred_host.txt
│ ├── node_certs.csv
│ ├── node_ids.csv
│ └── values.csv
├── csv
│ └── node-000001-EhmLajr4a3eKDfqwQF4WPK.csv
├── node_details
│ └── node-000001-EhmLajr4a3eKDfqwQF4WPK
│ ├── node.crt
│ ├── node.key
│ ├── qrcode.txt
│ └── random.txt
└── qrcode
└── node-000001-EhmLajr4a3eKDfqwQF4WPK.png
PathRole
bin/*.binPer-node factory NVS image. Flash at your factory partition offset, or merge into a full-flash image — see Factory NVS.
common/node_certs.csvUpload this in the next step to register the whole batch.
common/endpoint.txt, common/mqtt_cred_host.txtMQTT endpoint references for the deployment.
common/files_bucket.txtStorage bucket for the batch's uploaded files; empty if none is configured.
common/node_ids.csv, values.csv, config.csvAggregated CSVs for automation and record-keeping.
common/ca.crt, ca.keyThe CA material for the batch. Treat as secret.
node_details/<node>/Per-node certificate, private key, QR payload text, and random material.
qrcode/*.pngQR images for provisioning — this is what you print on a label.
The ZIP contains private keys

node_details/*/node.key and common/ca.key are private keys. Do not commit the ZIP, do not paste it into a chat, and delete it when the batch is done. See Factory NVS → Security.

3. Register the batch

Under Registration, open Node Registration:

  1. Under Node certificate file, drop common/node_certs.csv from the extracted ZIP onto the upload area, or click Browse to pick it. Only CSV is accepted.
  2. Optionally use Choose node group to place the nodes in a group.
  3. Optionally use Choose capabilitiesFile Storage (S3), Camera Streaming (KVS), Bridge. Each attaches the corresponding server-side policy, so enable only the ones your firmware actually uses. Bridge nodes need Bridge.
  4. Optionally set tags.
  5. Click Register nodes.

Registration runs as a job. The new job appears in the list on the Register nodes page, where you can watch its state and download its result once it finishes.

Generation and registration are separate steps on purpose — generating credentials does not put the nodes in the cloud. A node whose certificate was never registered will fail TLS, which looks exactly like a bad mqtt_host.

4. Flash

ESP-IDF. Flash the matching bin/<node>.bin to the factory NVS partition at the offset from your partitions.csv:

esptool.py --chip <chip> -p <port> write_flash <fctry_offset> bin/node-000001-....bin

Keep track of which binary went on which board — they are not interchangeable, and a board flashed with another node's identity will connect as that node.

ESP-IDF, single-file. To flash everything at 0x0 in one operation, merge the application build with this node's factory blob using esptool.py merge_bin — see Merged full-flash image.

POSIX. The dashboard emits ESP-IDF binaries. For the POSIX nvs_persistent/ layout, use factory_nvs_gen with the per-node key and certificate from node_details/, or use the CLI batch flow, which emits both.

5. Verify

After flashing, on the serial console:

> get-node-id
node-000001-EhmLajr4a3eKDfqwQF4WPK

That should match the filename you flashed. Then search the ID under Nodes in the dashboard — a registered node appears in the list even before it first connects, showing for status.