Skip to main content
This guide walks you through creating an account, registering your first device, and seeing live telemetry in the dashboard.
Prerequisites
  • An ESP32 or ESP8266 board
  • Arduino IDE or PlatformIO installed
  • A firmngin.dev account (sign up here)

Step 1: Create a workspace

  1. Go to firmngin.dev/register and create your account.
  2. Once logged in, create a workspace from the dashboard.
  3. Give your workspace a name — this is your project’s home for devices, automations, and billing.
A workspace isolates all resources: devices, merchants, rules, and API keys.

Step 2: Register a device

  1. In the dashboard, navigate to Devices and click Add Device.
  2. Select your board type (ESP32, ESP8266, etc.).
  3. Provide a device name and optional description.
  4. Once created, you will receive:
    • Secret ID — your device identifier
    • Secret Key — authentication key
  5. Download the keys.h file from your device page — this contains your mTLS credentials.
Never commit keys.h to a public repository. Add it to .gitignore to prevent accidental exposure.

Step 3: Install the SDK

  1. Download the library from firmngin/Firmngin-Arduino.
  2. In Arduino IDE, go to SketchInclude LibraryAdd .ZIP Library…
  3. Select the downloaded ZIP file.
  4. The library will be added to your Arduino libraries automatically.
[code:PlatformIO dependency entry for the Firmngin Arduino library]

Step 4: Connect your device

[code:minimal Arduino firmware sketch that connects Wi-Fi, authenticates with firmngin credentials, and publishes a temperature entity]
  1. Select your board and port in Arduino IDE.
  2. Click Upload.
  3. Open the Serial Monitor at 115200 baud.
  4. You should see WiFi connection messages and device status.
  5. Go to your Dashboard — the device should appear as Online with live data.
[image:device detail page showing availability and live entity updates]

Step 5: See it live

Once your device is connected:
  • Status — Online/offline indicator updates in real-time via MQTT LWT
  • Entities — GPIO states, sensor readings, and custom entities are synced via pushEntity()
Use Entity objects to define typed keys for your data, and pushEntity() to send state updates to the dashboard.

Next steps

Architecture

Understand the device, MQTT, API, Redis, WebSocket, payment, and automation service boundaries.

Devices

Learn how device identity, availability, entities, and public visibility work.

Monetization

Create service catalogs, integrated payments, sessions, and public pages for guests.

Firmware & OTA

Track firmware artifacts and plan controlled OTA rollouts for your fleet.
Monetization is currently only available for the Indonesia region.