Device Views (DVs)
A Device View (DV) is a JSON file that defines everything the device
shows on its e‑paper screen: pages, widgets, fonts, and interactions.
Each DV is stored in the /dvs/ directory on the device’s USB filesystem
and is activated by the allocation process.
How DVs are loaded:
- The
allocdata.json(orunallocdata.json) file lists which DVs to use and maps them to internal names likehome,duress,syscfg, etc. - A DV can be embedded directly in the allocdata (
"src":"inline") or loaded from a local file ("src":"local"→/dvs/<name>.json).
What a DV looks like
Section titled “What a DV looks like”Every DV follows this skeleton:
{ "displayName": "Human-readable name", "displayIcon": "icon_name", "target_size": { "w": 176, "h": 264 }, "infopages": [ { "id": "1", "infowidgets": [ ... ] } ]}Each widget has:
- type –
dynamic(value changes) orstatic(fixed) - interaction –
static,dynamic,button,editable - value – the initial or fixed value
- format –
text,graphic,bool,number,msglist - formatter – how the value is displayed (font, alignment, outlines, etc.)
Where widget data comes from
Section titled “Where widget data comes from”Not all widget values are hard‑coded. The data source can be identified by
the widget’s name and the DV’s documentation:
| Source | Example |
|---|---|
| Static JSON | A fixed label like "Config Duress" |
| Device config | vname in the duress DV user data |
| duress_appMQTT | subj and location in the alerts msglist |
| Device sensors | Battery gauge, BLE scan results |
Key for troubleshooting: A widget that shows a person’s name may get that name from the device’s own data (e.g.,
duresshome→user_name) or from the portal (e.g.,duress→alerts→subj). The individual DV pages explain exactly which source each widget uses.
DV inventory (from a live device)
Section titled “DV inventory (from a live device)”| DV File | Category | Display Name (if known) | Page |
|---|---|---|---|
duress.json | Duress | Duress | duress |
duresshome.json | Duress | Home (wearer) | duresshome |
duresstest.json | Duress | (test variant) | duresstest |
allocated_home.json | Home screens | Allocated Home | allocated-home |
unallocated_home.json | Home screens | Unallocated Home | unallocated-home |
badge_lock.json | System | Badge Lock | badge-lock |
emptydv.json | System | (empty placeholder) | – |
syscfg.json | System | System Config | syscfg |
sysctrl.json | System | System Control | sysctrl |
sysfns.json | System | System Functions | sysfns |
syshome.json | System | System Home | syshome |
sysinfo.json | System | System Info | sysinfo |
syslock.json | System | System Lock | syslock |
systest.json | System | System Test | systest |
visite.json | Apps | Visite | visite |
wallet.json | Apps | Wallet | wallet |
(Files starting with ._ are macOS resource forks – ignore.)
Working with DVs
Section titled “Working with DVs”- To list installed DVs on a device: Send an
fgetcommand for/dvsvia MQTT. The device returns a directory listing with all DV files and sizes. - To inspect a specific DV: Read the individual DV page (like
duress.mdx) — each page documents every widget, its purpose, and its data source. - To diagnose a portal/device mismatch: Cross‑reference the DV’s documented data source with the portal’s behaviour. For example, if a notification shows the wrong name, check whether the widget’s data comes from the device config or from the portal’s MQTT commands.
Related
Section titled “Related”- Duress DV – the alert management interface
- Duress Home DV – the wearer’s home screen
- duress_appuser association
- Allocation config – how DVs are assigned