Owl Automata logo
  • Home
  • About Us
  • Services
  • Products
    Hotel As a Service
    Chameleon+
    Chameleon+From Room Design to Complete ETS Project - hotel automation made simple
    Fire Ant
    Fire AntAutomate the Tedious. Focus on What Matters
    Explore the HaaS concept
    Apps & Tools
    Pro Builder Ecosystem
    Pro Builder
    Pro BuilderETS app for importing generated .knxproj files into ETS.
    Application Template
    Application TemplateMicroapp for extracting, reusing, and sharing KNX application templates.
    SharkNX
    SharkNXConnect. Monitor. Control. ETS Mobile Toolkit on the Go
    View all products
  • Resources
  • Insights
  • Contact
Current versionv1.18.2
LanguageEnglishDeutschFrançaisEspañolItaliano
Documentation home

Getting Started with SharKNX

The SharKNX AssistantETS Projects in SharKNXKNX Data SecureKNX IP SecureThe Shark Hunt Concept

How to Use Assistant Aliases and ScriptsHow to Connect to a KNX GatewayHow to Create a Shark HuntHow to Export TelegramsHow to Inspect a Device's Communication ObjectsHow to Load an ETS ProjectHow to Program a Device Individual AddressHow to Read a Coupler Filter TableHow to Scan a KNX Bus LineHow to Send KNX CommandsHow to Set Up KNX Data SecureHow to Set Up KNX IP SecureHow to Use the Assistant

Project ConnectionsConnect PageDiagnostics PageMonitor PageProject PageSettings PageShark Hunts PageAssistant Page

Assistant CommandsAlias and Script File FormatDashboard File FormatExport FormatsFrequently Asked QuestionsLimitsSide Menu and ActionsMonitor Filter SyntaxSettings ReferenceSubscription PlansSupported Datapoint Types (DPTs)
Reference

Dashboard File Format

Write, export and import SharKNX dashboards in JSON. Every field, widget type, default and validation rule, with downloadable empty and house examples.

On this page
  1. Structure
  2. Dashboard
  3. Spaces and pages
  4. IDs and links
  5. Widgets
  6. Group addresses
  7. Colors and icons
  8. Widget types
  9. Connection
  10. Complete example
  11. Validation
  12. Versions

The JSON file format for SharKNX visualization dashboards: spaces, pages, widgets and the group addresses they use.

A dashboard can be exported from SharKNX as a JSON file and imported again, on the same device or another one. You can also write one in any text editor: the app exports every field, but an import needs only what it cannot work out for itself, so a hand-written design stays short.

The quickest start is the empty dashboard or the example house. Or build a small dashboard in the app, export it, and edit the file.

On this page

  1. Structure
  2. Dashboard
  3. Spaces and pages
  4. IDs and links
  5. Widgets
  6. Group addresses
  7. Colors and icons
  8. Widget types
  9. Connection
  10. Complete example
  11. Validation
  12. Versions

Structure

A dashboard holds one space, Home. Every other space sits inside Home or inside another space. A space has one or more pages that you swipe through, and each page holds widgets in a grid.

{
  "format": 1,
  "name": "Villa",
  "home": {
    "name": "Home",
    "tiles": [
      { "type": "switch", "name": "Hall light", "command": "1/0/1", "status": "1/0/2" }
    ],
    "rooms": [
      {
        "name": "Kitchen",
        "tiles": [
          { "type": "switch", "name": "Counter light", "command": "1/4/1" }
        ]
      }
    ]
  }
}

In the file, spaces are called rooms, pages panels and widgets tiles. The file is UTF-8 JSON; a byte-order mark at the start is accepted.


Dashboard

The top level of the file.

Field Required Default Description
format No 1 The file format version. See Versions
name Yes (none) The dashboard's name, at most 50 characters. Names are unique on a device: importing a name that exists offers a copy or replacing it
home Yes (none) The Home space. See Spaces and pages
theme No auto auto (follows the device's light or dark mode), light, dark, night, wave, sahara, aurora or neon
buttons No filled How buttons on widgets look: filled or plain
keepScreenOn No false true keeps the screen on while the dashboard is open
muteBanners No false true lists notifications in Activity only, without banners
favorites No [] Widget IDs shown on the Favourites page, in this order, e.g. ["t1", "t4"]
connection No automatic How the dashboard connects to the bus. See Connection

A project field in an imported file is ignored: the link to a project in the Archive belongs to the device that made it.


Spaces and pages

Field Required Default Description
id No assigned r and a number, e.g. r3. Home is always r0. Only a space that a link opens needs one. See IDs and links
name Yes (none) The space's name, at most 50 characters
icon No default An icon name, e.g. kitchen. See Colors and icons
tiles One of these (none) The widgets of a space with a single page
panels One of these (none) The pages of a space with several pages, at most 10
rooms No [] The spaces inside this one

Use either tiles or panels, not both. Each page in panels is:

Field Required Default Description
id No assigned p and a number, e.g. p2
tiles No [] The page's widgets, in order, at most 100
{
  "format": 1,
  "name": "Two pages",
  "home": {
    "name": "Home",
    "panels": [
      { "tiles": [{ "type": "switch", "name": "Hall light", "command": "1/0/1" }] },
      { "tiles": [{ "type": "switch", "name": "Porch light", "command": "1/0/5" }] }
    ]
  }
}

IDs and links

Every space, page and widget has an ID: r for spaces, p for pages, t for widgets, followed by a number up to 999999. IDs are unique within a dashboard, not across dashboards.

  • Leave IDs out and the import assigns them, continuing above the highest ID in the file.
  • Write an ID where something refers to it: a space that a navigation widget opens, and a widget listed in favorites.
  • A link or favourite must name an ID written in the file. One that names an ID the file never declares is an error, even if the import would have assigned that ID to something else.
  • An exported file always carries every ID.

Widgets

Fields every widget has:

Field Required Default Description
type Yes (none) The widget type. See Widget types
name Yes (none) Shown on the widget, at most 50 characters
id No assigned t and a number, e.g. t12
icon No the type's An icon name. See Colors and icons
size No the type's Grid cells, width × height: 1x1, 2x1, 3x1, 2x2, 3x2 or 3x3. Each type allows some sizes
Type What it is Sizes Default size
navigation Opens a space 2x1, 3x1, 2x2 2x1
switch Turns something on and off 1x1, 2x1, 2x2 2x1
statusIndicator Shows an on/off state 1x1, 2x1 1x1
valueDisplay Shows a number 1x1, 2x1, 3x1, 2x2, by view 2x1
valueControl Sends a number 1x1, 2x1, 3x1, 2x2 3x1 (2x1 without a control)
modeStatus Shows a byte as named states 1x1, 2x1, 3x1 2x1
dimmer A dimmable light 1x1, 2x1, 3x1, 2x2 2x2
blind A blind or shutter 1x1, 2x1, 3x1, 2x2, 3x2 2x2
scene Recalls one scene, or toggles two 1x1, 2x1, 2x2 2x1
scenes A row of scene buttons 2x1, 2x2, 3x2, 3x3 2x2
tunableWhite A light with color temperature 1x1, 2x1, 3x1, 2x2, 3x2 2x2
colorLight An RGB, RGBW or RGB + white light 1x1, 2x1, 3x1, 2x2, 3x2 2x1
thermostat A room temperature setpoint 1x1, 2x1, 3x1, 2x2 2x2
fanCoil A fan coil unit 1x1, 2x1, 3x1, 2x2, 3x2 (3x3 with inline functions) 2x1
airConditioner A split unit or VRV through its KNX gateway 1x1, 2x1, 3x1, 2x2, 3x3 2x2

A file with a type this version of SharKNX does not know is not imported.


Group addresses

A widget sends to some addresses (a command) and shows others (a status). Group addresses are written in three levels, e.g. "1/2/3". A DPT is written as main and subtype, e.g. "1.001" or "9.001".

Short form. Write the address alone and it takes its role's DPT: a switch command 1.001, a dimmer's brightness 5.001, a Value status the DPT of its valueType. Each widget type below lists its defaults.

{ "type": "switch", "name": "Hall light", "command": "1/0/1", "status": "1/0/2" }

Full form. To use another DPT of the same main type (a window contact's 1.019, a lux value's 9.004), to send one command to several addresses, or to stop a status being read when the dashboard opens:

{
  "type": "switch",
  "name": "All lights",
  "command": { "targets": ["1/0/1", "1/1/1", "1/4/1"], "dpt": "1.001" },
  "status": { "address": "1/0/2", "dpt": "1.001", "readOnOpen": false }
}
Field Used for Required Default Description
address Sends and statuses One of these (none) One group address
targets Sends One of these (none) Several group addresses that all receive the same value
dpt Sends and statuses No the role's The DPT the value is encoded with
readOnOpen Statuses No true false: never read the status when the dashboard opens; wait for the bus

A DPT must fit the role: a switch takes any DPT 1 (1.001 Switch, 1.008 Up/Down, …), a dimmer's brightness DPT 5.001.


Colors and icons

Colors are names: red, orange, yellow, green, blue, purple or grey. Each has a light and a dark shade, chosen by the theme.

Icons are names from the app's icon catalog, e.g. light_group, floor_lamp, table_lamp, wall_lamp, socket, shutter, curtains, heating, cooling, window, door, temperature, humidity, relax, dinner, all_off. Space icons include home, living, kitchen, dining, bedroom, bathroom, office, hallway, garage, garden and terrace. The icon picker in the app shows every name.

An unknown color or icon name is kept and drawn as the default, so a file from a newer SharKNX still imports.


Widget types

Navigation

Opens another space.

Field Required Default Description
target Yes (none) The ID of the space it opens, e.g. r1. That space must have this ID written in the file
{
  "format": 1,
  "name": "Links",
  "home": {
    "name": "Home",
    "tiles": [{ "type": "navigation", "name": "Kitchen", "icon": "kitchen", "target": "r1" }],
    "rooms": [{ "id": "r1", "name": "Kitchen", "tiles": [] }]
  }
}

Switch

A tap toggles between On and Off, or always sends the same value.

Field Required Default Description
command Yes (none) Send, DPT 1 (1.001 if left out)
status No (none) Status, DPT 1 (1.001 if left out). Without one, the widget shows what was last sent or heard on command
fixed No (none) 1 or 0: every tap sends this value instead of toggling
invertCommand No false true sends 0 for On and 1 for Off. Not with fixed
invertStatus No false true reads 0 as On
zeroLabel, oneLabel No Off, On The state names shown for 0 and 1
offIcon No the icon The icon shown while off
onColor, offColor No the theme's The icon's color while on and off
{ "type": "switch", "name": "Garden pump", "icon": "valve", "command": "1/5/1", "status": "1/5/2", "zeroLabel": "Stopped", "oneLabel": "Running" }

Status indicator

Shows an on/off state; a tap does nothing.

Field Required Default Description
status Yes (none) Status, any DPT 1 (1.001 if left out)
invertStatus, zeroLabel, oneLabel, offIcon, onColor, offColor No As for Switch
{ "type": "statusIndicator", "name": "Window", "icon": "window", "status": { "address": "6/1/1", "dpt": "1.019" }, "zeroLabel": "Closed", "oneLabel": "Open" }

Value status

Shows a number (or raw bytes) as it arrives. Its type is valueDisplay.

Field Required Default Description
status Yes (none) Status. Its DPT must fit valueType; left out, it is the type's own (none for hex)
valueType No f16 How the value is decoded, with the DPT used when none is written: percent (5.001), u8 (5.010), s8 (6.010), u16 (7.001), s16 (8.001), f16 (9.001), u32 (12.001), s32 (13.001), f32 (14.056), s64 (29.010), or hex (raw bytes). A written DPT may be any subtype of the same main type (for u8, not 5.001 or 5.003)
view No number number, bar or gauge. Bar: 2x1 or 3x1. Gauge: 1x1 or 2x2. Not for hex
unit No (none) Shown after the value, e.g. °C
decimals No as received 0 to 2
displayMin, displayMax No the type's range The range of a bar or gauge
scaleColors No the theme's A bar or gauge's colors: coolWarm, greenRed, redGreen or neutral
displayScale No 1 The received value is divided by this before it is shown, e.g. 1000 to show Wh as kWh

A 1x1 fits values of 1 or 2 bytes only.

{ "type": "valueDisplay", "name": "Power", "icon": "electricity", "valueType": "s32", "unit": "kW", "decimals": 2, "displayScale": 1000, "status": { "address": "9/1/1", "dpt": "13.010" } }

Value control

Sends a number: with − and +, a slider, or buttons for set values.

Field Required Default Description
command Yes (none) Send. Its DPT must fit valueType; left out, it is the type's own
status No (none) Status, as command
valueType No f16 As for Value status, except hex
control No stepper What the widget shows: stepper (− and +), slider, buttons, or none
min, max No the type's range The range the control moves in
step No 0.5 for floats, 10 for percent, else 1 How far − and + move
unit No (none) Shown after the value
decimals No as received 0 to 2
choices With buttons [] Up to 8 buttons: {"value": 21, "name": "Comfort"}, each value inside the range and used once
color No the theme's The icon's color
{
  "type": "valueControl",
  "name": "Hood fan",
  "valueType": "percent",
  "control": "buttons",
  "command": { "address": "6/2/1", "dpt": "5.001" },
  "status": { "address": "6/2/2", "dpt": "5.001" },
  "choices": [{ "value": 0, "name": "Off" }, { "value": 50, "name": "Half" }, { "value": 100, "name": "Full" }]
}

Mode status

Shows a byte as named states, e.g. an HVAC mode.

Field Required Default Description
status Yes (none) Status, DPT 5, 17 or 20 (5.010 if left out)
states Yes (none) 1 to 8 states: {"value": 1, "name": "Comfort", "icon": "…"}, values 0–255, each once
color No the theme's The icon's color
{
  "type": "modeStatus",
  "name": "Heating mode",
  "status": { "address": "3/1/9", "dpt": "20.102" },
  "states": [{ "value": 1, "name": "Comfort" }, { "value": 2, "name": "Standby" }, { "value": 3, "name": "Economy" }]
}

Dimmer

A dimmable light: the icon toggles it, a slider sets the brightness or − and + dim it.

Field Required Default Description
switch No (none) Send On/Off, DPT 1.001
switchStatus No (none) Status On/Off, DPT 1.001
brightness With slider (none) Send brightness, DPT 5.001
brightnessStatus No (none) Status brightness, DPT 5.001
dimming With stepper (none) Send relative dimming, DPT 3.007
control No slider with brightness, else stepper The 2x2 control. Only the send object of the chosen control may be given
stepCode No 5 Dimming step, 1–7: 1 = 100 %, 2 = 50 %, … 5 = 6.25 %, … 7 = 1.56 %
repeatMs No 500 Repeat while − or + is held: 500, 1000 or 1250 ms
offIcon, onColor, offColor No As for Switch
{ "type": "dimmer", "name": "Sofa lamp", "icon": "floor_lamp", "switch": "1/1/10", "switchStatus": "1/1/11", "brightness": "1/1/12", "brightnessStatus": "1/1/13" }

Blind

A blind or shutter: up, stop and down, or a position.

Field Required Default Description
control No step step (up, stop, down) or position (a slider)
move With step (none) Send up/down, any DPT 1 (1.008 if left out)
stop With step (none) Send stop or slat step, any DPT 1 (1.008 if left out)
position With position (none) Send position, DPT 5.001
slatAdjustment No false true for blinds with slats
slatPosition With position and slats (none) Send slat position, DPT 5.001
positionStatus, slatStatus No (none) Status position and slat position, DPT 5.001
upperEndStatus, lowerEndStatus No (none) Status of the end positions, DPT 1 (1.002 if left out)
windAlarm No (none) Status wind alarm, DPT 1 (1.005 if left out). Shown as a warning; it never blocks a command
invert No false true for actuators that count 0 % as closed
offIcon No the icon The icon shown while open
onColor, offColor No the theme's The icon's color while closed and while open

0 % is open and 100 % closed. Only the send objects of the chosen control may be given, and slat objects only with slatAdjustment.

{ "type": "blind", "name": "Terrace blind", "move": "2/1/1", "stop": "2/1/2", "positionStatus": "2/1/3" }

Scene

Recalls a scene. In toggle mode it alternates between two scenes; in threshold mode it picks one by a value, e.g. scene A at or above 20 lux.

Field Required Default Description
command Yes (none) Send, DPT 18.001
mode No single single, toggle or threshold
scene No 0 Scene A, as sent: 0–63. KNX scene 1 is 0, scene 64 is 63
sceneB With toggle and threshold (none) Scene B, 0–63
commandB No command Send scene B to its own address, DPT 18.001
nameA, nameB No (none) The two scenes' names, toggle only
iconB No the icon Scene B's icon
activation No tap tap, or hold to recall only after a hold
holdMilliseconds No 500 How long a hold lasts: 200, 300, 400, 500, 1000, 2000 or 3000
saveOnLongPress No false true: a long hold saves the current state as the scene
value With threshold (none) Status the scene is picked by. Its DPT must fit valueType; left out, it is the type's own
valueType No f16 How value is decoded, as for Value status, except hex
threshold No 0 Scene A at or above this value, scene B below
defaultScene No a a or b: the scene recalled before any value arrives
flagAbove, flagBelow No (none) Icons marking which side is active
color No the theme's The icon's color
{ "type": "scene", "name": "Cinema", "icon": "relax", "mode": "toggle", "command": "4/2/1", "scene": 4, "sceneB": 5, "nameA": "Movie", "nameB": "Lights up" }

Scenes

A set of scene buttons on one address.

Field Required Default Description
command Yes (none) Send, DPT 18.001
scenes Yes (none) 1 to 9 buttons: {"name": "Relax", "scene": 0, "icon": "relax"}. scene is the number as sent, 0–63, each once
color No the theme's The icons' color
{
  "type": "scenes",
  "name": "Moods",
  "command": "4/1/1",
  "scenes": [{ "name": "Relax", "scene": 0, "icon": "relax" }, { "name": "Dinner", "scene": 1, "icon": "dinner" }]
}

Tunable white

A light with brightness and color temperature, in one of three arrangements of objects.

Field Required Default Description
objects No brightnessTemperature brightnessTemperature, combined (one DPT 249.600 object) or warmCold (two levels)
switch, switchStatus No (none) On/Off, DPT 1.001
brightness, brightnessStatus brightnessTemperature with slider (none) Brightness, DPT 5.001
dimming brightnessTemperature with stepper (none) Relative dimming, DPT 3.007
temperature, temperatureStatus brightnessTemperature (none) Color temperature: DPT 7.600 (Kelvin) or 5.001 (percent of the range), as temperatureAs says
temperatureAs No kelvin kelvin or percent
combined, combinedStatus combined (none) Brightness and temperature together, DPT 249.600
warm, warmStatus, cold, coldStatus warmCold (none) The two white levels, DPT 5.001
warmestK, coolestK No 2700, 6500 The temperature range, 1000–20000 K. Not with warmCold
control, stepCode, repeatMs No As for Dimmer
offIcon, onColor, offColor No As for Switch

The required send objects (and their statuses, when given) depend on objects; objects of another arrangement are an error.

{ "type": "tunableWhite", "name": "Reading light", "switch": "1/2/1", "brightness": "1/2/2", "temperature": "1/2/3", "temperatureStatus": "1/2/4" }

Color light

An RGB, RGBW or RGB + tunable white light.

Field Required Default Description
light No rgb rgb, rgbw or rgbTunableWhite
control No the light's first How the color is sent: oneObject, rgbAndWhite or separate, as the table below allows
white No temperature rgbTunableWhite with rgbAndWhite: temperature or warmCold
switch, switchStatus No (none) On/Off, DPT 1.001
brightness, brightnessStatus No (none) The whole light's brightness, DPT 5.001
onFrom No switchStatus What tells the light is on: switchStatus, or switchOrLevels
temperatureAs, warmestK, coolestK No With a temperature object, as for Tunable white
offIcon, onColor, offColor No As for Switch
light control Send objects
rgb oneObject rgb (DPT 232.600)
rgb separate red, green, blue (DPT 5.001)
rgbw oneObject rgbw (DPT 251.600)
rgbw rgbAndWhite rgb, whiteLevel (5.001)
rgbw separate red, green, blue, whiteLevel
rgbTunableWhite rgbAndWhite rgb, then temperature, or warm and cold (as white says)
rgbTunableWhite separate red, green, blue, warm, cold

Each send object has a status named after it with Status added (rgbStatus, redStatus, …; the white level's is whiteStatus). Color statuses are all given or none.

{ "type": "colorLight", "name": "Accent strip", "light": "rgb", "switch": "1/3/1", "rgb": "1/3/2", "rgbStatus": "1/3/3" }

Thermostat

Shows the setpoint or the room temperature and changes the setpoint.

Field Required Default Description
shows No setpoint What the widget shows large: setpoint or roomTemperature
unit No celsius celsius (DPT 9.001) or fahrenheit (9.027). Values are never converted
control No absolute absolute (sends a temperature) or increaseDecrease (sends 1-bit steps)
setpoint With absolute (none) Send setpoint, in unit's DPT
increase, decrease With increaseDecrease (none) Send steps, DPT 1. May be the same address
increaseValue, decreaseValue No true, false The bit increase and decrease send
setpointStatus With increaseDecrease showing the setpoint (none) Status setpoint
roomTemperature When shown (none) Status room temperature
step No 0.5 With absolute: 0.1, 0.2, 0.5 or 1
min, max No 7–35 °C, 45–95 °F The setpoint's limits
color No the theme's The icon's color
{ "type": "thermostat", "name": "Living room", "setpoint": "3/1/1", "setpointStatus": "3/1/2", "roomTemperature": "3/1/3" }

Fan coil

The fan stages of a fan coil unit, with optional On/Off, Auto/Manual, Heat/Cool, HVAC modes and a thermostat. The settings decide which objects the widget has; every send object it has is required, statuses are optional.

Field Required Default Description
fanSpeed, fanSpeedStatus fanSpeed (none) The fan stage: DPT 5.001 for percent, 5.010 otherwise
stages No 3 Fan stages, 1–5
controlAs No percent How a stage is sent: percent (its percent value), value (its byte) or stageNumber (1, 2, 3 …)
statusAs No controlAs How the status is read, as controlAs
percentStages, valueStages No evenly spread Each stage's value, e.g. [33, 67, 100] or [85, 170, 255]
speedZero No nothing What fan speed 0 means: nothing, auto or manual
onOff No false true adds switchCommand and switchStatus (DPT 1.001)
autoManualObjects No (off) one: autoManual (+ autoManualStatus). two: auto and manual (+ statuses). DPT 1
autoManualInvert No false With one: true when 1 means Manual
heatCoolObjects No (off) one: heatCool (+ heatCoolStatus), DPT 1.100. two: heat and cool (+ statuses), DPT 1
heatCoolInvert No false With one: true when 1 means Cool
hvacObjects No (off) byte: hvacMode (+ hvacModeStatus), DPT 20.102. bits: one object per offered mode, hvacAuto, hvacComfort, hvacStandby, hvacEconomy, hvacProtection (+ statuses), DPT 1
hvacModes No all but auto Offered modes: auto, comfort, standby, economy, buildingProtection
thermostat No (off) An object with the Thermostat's shows, unit, control, step, min, max, increaseValue and decreaseValue. Adds setpoint or increase and decrease, setpointStatus and roomTemperature
offIcon, onColor, offColor No As for Switch
{ "type": "fanCoil", "name": "Office fan coil", "fanSpeed": "7/1/1", "fanSpeedStatus": "7/1/2", "onOff": true, "switchCommand": "7/1/3", "switchStatus": "7/1/4" }

Air conditioner

A split unit or VRV through its KNX gateway. Its type is airConditioner.

Field Required Default Description
kind No split split or vrv
switchCommand, switchStatus Yes (none) On/Off, DPT 1.001
setpoint, setpointStatus setpoint (none) Setpoint, in unit's DPT
roomTemperature When shown (none) Status room temperature
mode, modeStatus mode (none) Operating mode, DPT 20.105
fanSpeed, fanSpeedStatus fanSpeed (none) Fan stage, DPT 5.010
shows, unit, step No setpoint, celsius, 1 As for Thermostat
min, max No 16–30 °C, 61–86 °F The setpoint's limits
modes No all for split; heat, cool, fan, dry for vrv Offered modes: auto, heat, cool, fan, dry
modeValues No auto 0, heat 1, cool 3, fan 9, dry 14 The byte each mode sends, e.g. {"dry": 4}
fanStages No 3 Fan stages
fanValues No [1, 2, 3] The byte each stage sends
fanAutoValue No (none) Given, the fan offers Auto and sends this byte for it
faultAs No (none) Given, fault is required: bit (DPT 1.005), code (a byte, DPT 5.010) or text (DPT 16.000)
fault With faultAs (none) Status fault
faultInvert No false With bit: true when 0 means a fault
faultCodes No [] With code: {"value": 3, "text": "Filter"}, texts shown for known codes
offIcon, onColor, offColor No As for Switch
{ "type": "airConditioner", "name": "Bedroom AC", "switchCommand": "8/1/1", "switchStatus": "8/1/2", "setpoint": "8/1/3", "mode": "8/1/4", "fanSpeed": "8/1/5" }

Connection

How the dashboard connects when it opens. Left out, it is automatic: it keeps any connection the app has, else uses the app's selected gateway, else searches.

Field Required Default Description
mode Yes (none) automatic, gateway or multicast
gateway No (none) With gateway: the gateway it connects to. Left out, the dashboard cannot run until one is chosen in its settings
secure No false With multicast: true for KNX IP Secure routing

The gateway object:

Field Required Default Description
host Yes (none) IP address or host name
port No 3671 UDP or TCP port
name No (none) A name to show
transport No udp udp, tcp, or auto (TCP first, then UDP)
nat No false true for a gateway behind NAT
knxAddress No (none) The gateway's individual address, e.g. 1.1.250. Secure tunnelling finds its credentials by it
secure No false true for KNX IP Secure tunnelling
serial, mac No (none) The gateway's serial number and MAC address, as discovered
{
  "format": 1,
  "name": "Office",
  "connection": { "mode": "gateway", "gateway": { "name": "Office router", "host": "10.0.0.5", "transport": "tcp" } },
  "home": { "name": "Home", "tiles": [] }
}

Plain JSON exports contain no keys or credentials. Both Plain JSON and With keys use the .json extension; Import detects protection from the file contents.

Password-protected JSON

With keys encrypts the entire payload. Its JSON container can be opened in a text editor, but the dashboard definition and keys must be decrypted before they can be read or changed. The export password is required to import it and is never saved.

Container field Version 1 value or purpose
format 1
protected.version 1
protected.cipher AES-256-GCM
protected.kdf PBKDF2-HMAC-SHA256
protected.iterations 600000; fixed in this protection version
protected.salt Base64 of 16 random bytes
protected.nonce Base64 of the 12-byte encryption nonce
protected.ciphertext Base64 of the encrypted payload
protected.tag Base64 of the 16-byte authentication tag

Authentication also binds the content to SharKNX dashboard protected JSON v1. Incorrect passwords and tampered ciphertext cannot produce an imported dashboard. The selected file is limited to 32 MiB; the decrypted payload is limited to 16 MiB.

The decrypted payload has dashboard (the definition described in this reference) and, only for an owned key source, keys. An absent keys keeps Project automatic: the receiving app supplies its own security. An owned packet, even empty, becomes Imported keys, saved encrypted with this dashboard under a fresh local identity. Its source-project reference and export password never travel into app storage.

keys.groupKeys maps decimal KNX group-address numbers (0–65535, written as strings) to 32-digit hexadecimal keys. Only addresses used by the dashboard are kept. Optional keys.credentials contains devices for a configured secure gateway, with address, optional deviceAuthCode, and interfaces (userId, individualAddress, password); secure multicast instead carries backboneKeyHex and backboneSecurityEnabled. Tool Keys, unrelated addresses and gateways, and project names are excluded.

Automatic connection and Automatic project use the receiving app’s configuration. They never carry a snapshot of the exporting app’s connection or project. An owned-key dashboard with Automatic connection can carry its used group keys, but carries no gateway login. Project settings show Imported keys until Automatic or another project is saved; selecting a project also enables its address list and key refresh. Imported keys can be exported again.

Import is available under + → Add → Import dashboard. Success stays on Dashboards; a name match offers Import as copy or Replace. Import errors appear in a popup with a scrollable code section and Copy details.


Complete example

The example house: a Home with links to two spaces, a living room with two pages and a kitchen, a Moods scenes widget, two favourites and a configured gateway.

{
  "format": 1,
  "name": "Villa",
  "theme": "night",
  "keepScreenOn": true,
  "favorites": ["t1", "t4"],
  "connection": { "mode": "gateway", "gateway": { "name": "Main gateway", "host": "192.168.1.20" } },
  "home": {
    "name": "Home",
    "icon": "home",
    "tiles": [
      { "type": "navigation", "name": "Living room", "icon": "living", "target": "r1" },
      { "type": "navigation", "name": "Kitchen", "icon": "kitchen", "target": "r2" },
      { "type": "valueDisplay", "name": "Outdoor", "icon": "temperature", "valueType": "f16", "unit": "°C", "decimals": 1, "status": { "address": "5/1/1", "dpt": "9.001" } }
    ],
    "rooms": [
      {
        "id": "r1",
        "name": "Living room",
        "icon": "living",
        "panels": [
          {
            "tiles": [
              { "id": "t1", "type": "switch", "name": "Ceiling light", "icon": "light_group", "command": "1/1/1", "status": "1/1/2" },
              { "type": "dimmer", "name": "Sofa lamp", "icon": "floor_lamp", "switch": "1/1/10", "brightness": "1/1/12", "brightnessStatus": "1/1/13" },
              { "type": "blind", "name": "Terrace blind", "move": "2/1/1", "stop": "2/1/2", "positionStatus": "2/1/3" },
              { "id": "t4", "type": "thermostat", "name": "Living room", "setpoint": "3/1/1", "setpointStatus": "3/1/2", "roomTemperature": "3/1/3" }
            ]
          },
          {
            "tiles": [
              { "type": "tunableWhite", "name": "Reading light", "switch": "1/2/1", "brightness": "1/2/2", "temperature": "1/2/3" }
            ]
          }
        ]
      },
      {
        "id": "r2",
        "name": "Kitchen",
        "icon": "kitchen",
        "tiles": [
          { "type": "switch", "name": "Counter light", "command": "1/4/1", "status": "1/4/2" },
          { "type": "statusIndicator", "name": "Window", "icon": "window", "status": { "address": "6/1/1", "dpt": "1.019" }, "zeroLabel": "Closed", "oneLabel": "Open" }
        ]
      }
    ]
  }
}

Validation

An import checks the whole file and lists every problem with its place in the file, e.g. $.home.rooms[1].tiles[3].status.address. A file with any problem is not imported; nothing is stored.

Problem Example
Not JSON A missing comma or quote
A required field is missing A widget without name
A field has the wrong kind of value "size": 2 instead of "2x1"
An unknown value "control": "slide"
A widget type the app does not know A file from a newer SharKNX
A widget is missing an address it needs A dimmer with control slider but no brightness
A widget breaks its own rules A DPT that does not fit the role, a size the type does not allow, a scene number above 63
A link or favourite points at nothing "target": "r9" with no space r9
An ID is used twice Two widgets t4
A full form and its short form together tiles and panels in one space; address and targets in one send
A newer file format "format": 2

Limits

What Limit
Names (dashboard, spaces, widgets, states, buttons) 50 characters
Spaces in a dashboard, Home included 500
Space nesting below Home 8 levels
Pages in a space 10
Widgets on a page 100
Widgets in a dashboard 5000
Numbers in IDs 0–999999

Versions

Every exported file starts with "format": 1. A file without it is read as the current format. A file with a higher number was made by a newer SharKNX and is not imported; update the app.

Files keep importing as SharKNX grows: new fields are added with defaults, so an older file simply lacks them, and a field never changes its meaning under the same name. A newer file in an older app loses only the fields that app does not know.

PreviousAlias and Script File FormatNextExport Formats

On this page

  1. Structure
  2. Dashboard
  3. Spaces and pages
  4. IDs and links
  5. Widgets
  6. Group addresses
  7. Colors and icons
  8. Widget types
  9. Connection
  10. Complete example
  11. Validation
  12. Versions

← SharKNX product page

logo

Solutions

  • Services
  • Products
  • HaaS

Company

  • About Us
  • Contact

Legal

  • Privacy Policy
  • Cookie Policy
  • Terms & Conditions

Contact

  • info@owl-automata.com
  • Athens, Greece

© 2026 OWL-Automata.com. All rights reserved OWL Automata

  • Terms & Conditions
  • Privacy Policy
  • Cookie Policy