-
Notifications
You must be signed in to change notification settings - Fork 1
Action Editor and Command Library
The action editor is where you decide what NaviCore does when a button is tapped, a switch moves, or a knob turns. It works command-first: you pick a real droid command from a browsable Command Library, fill in its parameters, and choose where to send it. You never pick an "action type" — the tool sets that from the command and destination you chose.
This page covers the editor UI and command routing. For each action type's parameters (HCR functions, MP3 functions, Maestro verbs), see Actions Reference. For opening the editor and the live monitor, see Config Tool Guide.
Open a control's action editor from the mapping grid in the Config Tool Guide. The tabs depend on the control:
| Control | Tabs | Meaning |
|---|---|---|
| Button | Single tap / Double tap / Triple tap | One tier per tap count; each tab shows a live saved-count badge |
| Switch | Position tabs (p0 / p1 / p2) |
SW Down (Mode 1) / SW Mid (Mode 2) / SW Up (Mode 3) |
| Knob | Mode 1 / Mode 2 / Mode 3 | Outputs while the 3-way mode switch is down / mid / up |
Each tier holds up to 5 actions. Add rows with + Add action; the button stops at five.
Every action row carries two extra fields:
-
Delay(ms) —
0–10000, in 50 ms steps. See Delays run in parallel below. - Note — a short optional comment, max 19 characters.
Each tier also has its own cheat-sheet Note (a plain-language caption like "Happy greeting"), also capped at 19 characters. These captions feed the printable Cheat Sheet.
Click 📚 Command Builder on any action row (it reads 📚 Change once a command is set) to open the 📚 Command Library modal. Search by command name, category, or board, or expand a board section to browse its commands.
The catalog is assembled from three sources at page load:
-
An inline curated seed (
navicore-command-library/v1, version0.4.0-wled-id) — always available with zero delay, and the only source under a barefile://open. It ships three boards:-
WLED Lighting (
;L<id>,VERB) - Maestro (Pololu servo) — the local/remote servo command set
-
Maestro (via WCB) — the
;Msequence trigger plus servo/script verbs
-
WLED Lighting (
-
The vendored DroidNet Command Library, auto-loaded from
cmdlib/droidnet/manifest.json(a same-origin static read — no manual Fetch needed). -
NaviCore's controller-native commands from
cmdlib/navicore/manifest.json(Record / Play / Stop).
The DroidNet library is version 4.2.0, generated from C2B5 firmware + WIPDocs, R2UppitySpinnerV3 ALT 3.5.3, Printed Droid Magic Panel, and WCB 6.1.5. It supplies HCR, MP3, AstroPixels, FlthyHPs, PSI, R-Series logics, magic panels, Roam-A-Dome, CHiRP, and more.
HCR and MP3 commands come from the vendored DroidNet library — a firmware-accurate superset. If the vendored files can't load (e.g. a bare
file://open with no server), the picker is sparse until you Import or Fetch.
- The six AstroPixels boards fold into one collapsible AstroPixels group.
- Two DroidNet boards are hidden in favor of NaviCore's own:
maestro→ Maestro (via WCB), andmaestro-native→ Maestro (Pololu servo). - Board order is pinned — audio/servo boards up top, WLED and low-level WCB config at the bottom; unlisted boards sort into the middle.
Click a command to open its composer. Fill the parameters, then click Use command → (or ← Back to reselect, ✕ to cancel). A live monospace preview shows the exact wire string as you type.
Parameter fields render by type:
| Param type | Field |
|---|---|
| Enum | Dropdown showing a friendly label + the underlying code |
| Int | Number field with the command's min/max |
| Servo position | Two linked fields — see below |
| Bool | Checkbox |
| Text | Free text |
Servo positions (unit:'servoPulse') show two linked fields that update each other: PWM µs (500–2500) and the raw Maestro value (2000–10000, = µs × 4). The command stores the Maestro quarter-µs value.
Re-open the builder on a row that already has a command and it decodes the wire string back to its library command, dropping you into the composer pre-filled — so re-editing is an edit, not a from-scratch pick. Ambiguous templates refuse to guess and send you back to the list. A ;W<wcb>;S<port> device prefix is stripped before decoding.
You can also skip the builder: type or paste a command straight into the Command field (max 95 characters). A decoded-command hint (📚 Board · Command) appears under the row when the string matches a known library entry.
Two dropdowns on the row decide where the command goes; they set the action type for you.
WCB (the target):
| Value | Meaning |
|---|---|
| All boards (broadcast) | Send to every WCB on the network |
WCB <n> |
A specific WCB (labeled with its alias when known) |
| This controller | Run it locally on this NaviCore |
Serial (dependent on the target):
| Value | Meaning |
|---|---|
| Auto-route (by type) | Let the receiving WCB route the command by its type (no explicit port) |
Serial 0–5 |
A specific serial port on that WCB (0 = USB console; labeled with the device the WCB advertises, e.g. Serial 3 · H-CR) |
| S3 / S4 / S5 | A local aux serial port — only when the target is This controller |
The two dropdowns map to a firmware action type:
| WCB | Serial | Firmware action |
|---|---|---|
| This controller |
S3/S4/S5
|
serial (+ that aux port) |
| All boards | — | wcb_broadcast |
| A WCB | Auto-route |
wcb_unicast (+ that WCB) |
| A WCB | A real port |
wcb_broadcast whose command is prefixed ;W<wcb>;S<port>
|
A command sent to a specific WCB serial port is stored as a broadcast with a
;W<wcb>;S<port>prefix, not a unicast. If you hand-type your own;W…routing into the Command field, the tool won't double-prefix it.
Two special cases have no WCB/Serial pair:
-
Maestro commands pick a Maestro slot (
1–8) instead. Each option is labeledMaestro N — Local/Remote · dev X(ordisabled). A slot's wiring — Local Serial2 vs Remote ESP-NOW by device number — is set in the Maestro tab; see Maestro Setup. -
WLED commands have no picker — they route by the WLED id inside the command (
;L<id>,…), wired in the WLED tab. The row just shows a note. See WLED and HCR Audio.
When you author a command fresh from a blank row, the tool pre-fills its destination to where that device actually lives:
-
WDP port labels — each WCB advertises a device label per serial port over WDP (from the device's own
@WDP1announce), surfaced inWCB_STATUS.portLabels. If a WCB advertises a label matching the board you picked, the command routes to that WCB · serial port. The match is case- and punctuation-insensitive. This is the only auto-route for raw-serial devices (Magic Panel, PSI, R-Series…) that have no native WCB routing. -
Configured device home — HCR and MP3 commands fall back to their global destination (
config.hcrDest/config.mp3Dest) when no live WDP label is found.
⚠️ Auto-routing happens only on fresh authoring from a blank row. Re-editing (📚 Change) a row keeps the destination you chose — it does not re-route.
⚠️ WDP device-label auto-routing and theSerial 3 · H-CRdropdown text need a direct USB connection. Over Via-WCB the 252-byte bridge frame can't carry the port labels, so the tool shows plainSerial <n>and WDP auto-route is unavailable. It also needs firmware that emitsportLabels. See Remote Management over WCB and Connecting.
Each action has a type, one of wcb_unicast, wcb_broadcast, maestro, serial, hcr, mp3, wled, record, play, stop. The firmware dispatches each:
| Type | What the firmware does |
|---|---|
wcb_unicast |
Sends cmd to one WCB — boardId 1–20 |
wcb_broadcast |
Sends cmd to every WCB |
maestro |
Runs on Maestro slot 1–8; the slot's wiring (Local Serial2 or Remote ESP-NOW) is set in the Maestro tab |
serial |
Writes the command to local aux port S3, S4, or S5
|
hcr |
HCR vocalizer (destination config.hcrDest) |
mp3 |
MP3 Trigger (destination config.mp3Dest) |
dfplayer |
DFPlayer Mini (destination config.dfpDest) |
wled |
WLED — routed by the WLED id in the command |
record / play / stop
|
Controller-local record & replay (below) |
There are 8 Maestro slots; an action just references a slot. A disabled slot drives nothing, and remote slots go out over ESP-NOW with no return path.
Record, Play, and Stop are NaviCore Controller library commands — they run on this controller, not a WCB:
-
Record clip (toggle) — a blank clip name auto-saves as
rec_N. -
Play clip — carries a Loop checkbox (stored as
fn = 1). - Stop record / playback — an explicit halt.
Clip names are sanitized to [A-Za-z0-9_-] and truncated to 32 characters on save, so what you type may differ slightly from what's stored. Full workflow is in Record and Replay.
The catalog can grow at runtime from the library modal:
-
Import… a
.jsonfile — either NaviCore's ownboards[]schema or a DroidNetcomponents[]board file. -
Fetch a DroidNet-shaped manifest + boards from a URL (default:
travisccook/Droidnet-Command-Library) under Check online for a newer library.
Boards merge by id — an incoming board with the same id replaces the existing one. Imported input is shape-validated before it's accepted.
The library and Send-to dropdowns use live mesh status (WCB_STATUS):
-
Aliases — friendly names a board reports via
?WHOAMI, shown next toWCB <n>in the target dropdown. -
Temporary peers — a WDP "temporary" peer (a management relay etc.) shows up in
WCB_STATUS.temporary[]; the tool tags it· tempand hides its Forget button (it ages out on its own). Shown only when the firmware reports it.
See WCB Network for the mesh model behind these.
-
Delays run in parallel, not cumulative. Every action in a tier fires the moment the trigger fires; each Delay(ms) schedules that action for
trigger_time + delay. Two actions both set to3000both fire 3 s after the press — a common sequencing footgun. - HCR/MP3 fn/chan/track editors appear only for actions saved in that direct form. Author new HCR/MP3 actions from the library; their destination auto-fills from the HCR/MP3 tabs.
-
The skip-if-running gate is hidden. For
;MMaestro verbs the firmware can still skip an already-running move, but the UI checkbox is hidden (the controller can't reliably tell whether a Maestro script is running). A saved value round-trips, and the fail-open window isrcConfig.maeGateMs(default 250 ms). - Save from the top-bar Save (or the mapping Apply) to write the config to the board. The on-disk action shape is in Configuration Schema; the wire protocol is in Serial JSON Protocol.
Next: Actions Reference · Maestro Setup · Record and Replay · See also: Config Tool Guide · Cheat Sheet
NaviCore — Astromech Animation Controller · Home · WCB v3.2 / ESP32‑S3
Setup
- Setup Guide — start here
- PCB Assembly and BOM
- Hardware and Wiring
- Flashing the Firmware
- Transmitter Setup
- Connecting
- Config Tool Guide
- Maestro Setup
Reference
- Action Editor and Command Library
- Actions Reference
- WLED and HCR Audio
- Record and Replay
- Cheat Sheet
- Configuration Schema
- WCB Network
- Remote Management over WCB
- Serial JSON Protocol
- CLI Commands
- Failsafe and Signal Loss
- Glossary
Help