These tables are generated from the parser contract. additionalProperties: false marks typos and firmware-ignored fields as warnings; only invalid JSON or a non-object top-level value blocks a write.
controller, wifi, rtc, pwm, ports, io, segments, canvases, temperature, script, scripts, plugins, sensors, ble, console, serial, espnow, ethernet
Keyword Type / allowed values Status namestring /^[A-Za-z0-9_]{1,5}$/supported brightnessinteger [0..255]supported powerinteger [0..255]supported fpsinteger [0..100]supported upsinteger [10..100]supported updateablebooleansupported autosaveboolean or integer [1000..∞]supported debugboolean or integer [0..5]supported wifibooleansupported websocketbooleansupported btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported !btn+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported _btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported led-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported !led+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported _led-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported button-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated
Keyword Type / allowed values Status channelinteger [1..13]supported
Keyword Type / allowed values Status type"SYSTEM" | "DS1307" | "PCF8563"supported sda-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported scl-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported
Keyword Type / allowed values Status frequencyinteger [1..∞]supported
Keyword Type / allowed values Status tagstring /^[A-Za-z0-9_]?$/supported type"WS2805" | "WS2811" | "WS2812" | "WS2812B" | "WS2812D" | "WS2813" | "WS2814" | "WS2815" | "SK6812" | "GS8208" | "APA106"supported pin-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported tx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported txinvertedbooleansupported rx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported rxinvertedbooleansupported mappingarray<integer>supported orderstring (one or two 1–4 character RGBW orders separated by a vertical bar)supported variantstringsupported t1integer [0..∞]supported t2integer [0..∞]supported t3integer [0..∞]supported sizeinteger [1..2048]supported reversedbooleansupported
Keyword Type / allowed values Status <LABEL>string /^[A-Za-z0-9_]{1,5}$/supported typestringsupported tagstring /^(?:$|[A-Za-z0-9_].*)$/supported labelstring /^[A-Za-z0-9_]{1,5}$/supported namestringsupported
Keyword Type / allowed values Status idinteger [0..255]supported iostring /^[A-Za-z0-9_]{1,5}$/supported sizeinteger [1..2048]supported frominteger [1..2048]supported tointeger [1..2048]supported stepinteger [1..2048]supported
Reserved for future firmware
Reserved forward-compatible canvas map. Each canvas label lists segment labels. Firmware 0.12.11 preserves but does not act on this section.
Keyword Type / allowed values Status <LABEL>array<string /^[A-Za-z0-9_]{1,5}$/>reserved
Reserved for future firmware
Reserved forward-compatible Controller temperature sensor configuration. Firmware 0.12.11 preserves but does not act on it; a future firmware can publish temperature warnings through Controller notifications without rewriting the config.
Keyword Type / allowed values Status type"NTC"reserved pin-1 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39reserved resistanceinteger [1..∞]reserved
This section is a scalar value or collection; see the JSON Schema for its exact shape.
This section is a scalar value or collection; see the JSON Schema for its exact shape.
Keyword Type / allowed values Status type"PowerManage"supported holdtimeinteger [1..65535]supported alive-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33deprecated en-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported !en+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported _en-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported !btn+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported _btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported pin-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated !pin+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated _pin-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported button-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated
Keyword Type / allowed values Status type"PowerManage"supported holdtimeinteger [1..65535]supported alive-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33deprecated en-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported !en+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported _en-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33supported btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported !btn+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported _btn-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported pin-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated !pin+-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated _pin-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported button-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39deprecated
Keyword Type / allowed values Status powerinteger [-128..127]supported disablebooleansupported enablebooleansupported advertisebooleansupported timeoutinteger [0..∞]supported
Keyword Type / allowed values Status debugboolean or integer [0..5]supported tx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported rx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported baudrateinteger [1..5000000]supported
Keyword Type / allowed values Status baudrateinteger [1..5000000]supported debugbooleansupported tx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported rx-1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39supported enablebooleansupported
Keyword Type / allowed values Status datarate"250K" | "500K" | "1M" | "2M" | "2M_S" | "11M" | "11M_S" | "48M" | "24M" | "12M" | "6M" | "54M" | "36M" | "18M" | "9M"supported channelinteger [1..11]supported powerinteger [-128..127]supported repetitionsinteger [1..24]supported floorinteger [-128..127]supported tresholdinteger [-128..127]supported rebroadcastsinteger [0..24]supported disablebooleansupported enablebooleansupported isolatebooleansupported timeoutinteger [0..∞]supported advertisebooleansupported
Keyword Type / allowed values Status variant"LAN8720" | "OLIMEXPOE2" | "OLIMEXPOE"supported type"IP101" | "RTL8201" | "LAN8720" | "DP83848" | "KSZ8041" | "KSZ8081"supported ipstring /^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$/supported gatewaystring /^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$/supported maskstring /^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$/supported dnsstring /^(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])(?:\.(?:25[0-5]|2[0-4][0-9]|1?[0-9]?[0-9])){3}$/supported hostnamestringsupported phydetintegersupported phymdcintegersupported phymdiointegersupported phyenintegersupported phyrstintegersupported rmiipinintegersupported rmiimodeintegersupported timeoutintegersupported enablebooleansupported
io.*.fade — Use fadetime; fade is not a firmware 0.12.11 keyword.
segments.*.brightness — Segment brightness is not supported. Set brightness on the referenced io.<label> object instead.
controller.!button — Decorated button is invalid. Use !btn; only bare button remains as a deprecated alias.
controller.button! — Decorated button is invalid. Use btn!; only bare button remains as a deprecated alias.
controller.!button+ — Decorated button is invalid. Use !btn+; only bare button remains as a deprecated alias.
controller.button- — Decorated button is invalid. Use btn-; only bare button remains as a deprecated alias.
controller._button — Decorated button is invalid. Use _btn; only bare button remains as a deprecated alias.
plugins.*.!button — Decorated button is invalid. Use !btn; only bare button remains as a deprecated alias.
plugins.*.button! — Decorated button is invalid. Use btn!; only bare button remains as a deprecated alias.
plugins.*.!button+ — Decorated button is invalid. Use !btn+; only bare button remains as a deprecated alias.
plugins.*.button- — Decorated button is invalid. Use btn-; only bare button remains as a deprecated alias.
plugins.*._button — Decorated button is invalid. Use _btn; only bare button remains as a deprecated alias.
sensors.*.!button — Decorated button is invalid. Use !btn; only bare button remains as a deprecated alias.
sensors.*.button! — Decorated button is invalid. Use btn!; only bare button remains as a deprecated alias.
sensors.*.!button+ — Decorated button is invalid. Use !btn+; only bare button remains as a deprecated alias.
sensors.*.button- — Decorated button is invalid. Use btn-; only bare button remains as a deprecated alias.
sensors.*._button — Decorated button is invalid. Use _btn; only bare button remains as a deprecated alias.
I/O and segment labels contain 1..5 characters from A-Z, a-z, 0-9 or underscore.
A longer segment-map key is truncated to its first five characters by firmware. Studio warns but keeps the config writable so multiple definitions can intentionally share one five-character segment identifier.
Only one I2C I/O entry can be active.
DALI maxcolortemp must be greater than or equal to mincolortemp.
The I/O referenced by this segment is not defined in this Controller config.
Segment size is shorthand for from=1,to=size.
Segment brightness is unsupported; brightness belongs on the referenced I/O object.
Pin value -1 means not connected for every GPIO pin schema.
A leading underscore disables a decorated GPIO member while preserving its pin and electrical decorators in JSON. It must be the first character; use type NC to disable a complete I/O because an underscore in an I/O label is an ordinary label character.
DAC order W requires exactly one GPIO 25/26 or -1; RB or an omitted order requires two values from -1, 25 and 26, and connected GPIOs must be unique.
ADC inputs are limited to ADC1 GPIOs 32..39 or -1; RTC I2C pins must be output-capable or -1.
controller.btn wins over deprecated bare controller.button when both are present. Decorated button aliases are invalid for authoring and must use the btn base; firmware 0.12.11 still tolerates deployed occurrences with a warning.
A disabled controller._btn member does not override a separate deprecated controller.button member; remove or rename the legacy member when disabling the button.
plugins PowerManage btn wins over deprecated bare button and pin aliases. Decorated button aliases are invalid for authoring and must use the btn base; firmware 0.12.11 still tolerates deployed occurrences with a warning.
Generated from the versioned Spectoda/firmware contract for FW 0.12.11. Do not maintain these tables separately from the firmware contract.