Docs / Building integrations

Building integrations

Every kiosk in your swarm is also a first-class building endpoint. It speaks BACnet/IP and Modbus TCP at the same time, so the systems you already run can read a screen's health and drive what it shows — with no extra hardware.

How integrations work

Each unit serves BACnet/IP and Modbus TCP concurrently. Point your BMS or SCADA at the unit's IP address and you get a live picture of the screen plus a set of writable control points.

Writes are not a side channel. A write from the building system is applied exactly like a change made in the unit's own settings: the value is committed to the kiosk's configuration and the display reconnects to the new target, just as if you had changed it in the dashboard.

Most writes take effect and reconnect the display. Brightness and volume apply live, without restarting the view. Passwords are write-only: they are applied but never read back.

BACnet/IP objects

Health surfaces as read-only Binary Inputs, live information as CharacterString Values, and control as writable Binary Values. The kiosk view itself is reprogrammable through a small set of Multistate, CharacterString and Analog Value objects.

Binary Inputs (read-only health)
  BI:1 display-running   BI:2 client-running    BI:3 usbip-running
  BI:4 zerotier-online   BI:5 wifi-connected     BI:6 network-online
CharacterString Values (read-only info)
  CSV:1 ip-address       CSV:2 current-target
Binary Values (writable control)
  BV:1 remote-input-disabled   BV:2 screen-blank
  BV:3 reboot                  BV:4 restart-display
Kiosk view programming (writable)
  MSV:1 kiosk-mode (1=VNC 2=RDP 3=Web)
  CSV:10 target-host   AV:1 target-port   CSV:11 target-url
  (passwords are write-only over BACnet; applied but never read back)

Modbus TCP registers

The same points appear over Modbus TCP. Register numbers below are 1-based, as a SCADA shows them. Health is on Discrete Inputs, momentary and latching control on Coils, and the full kiosk view — mode, geometry, brightness, volume and target — on Holding Registers.

Discrete Inputs (FC2, read-only)
  1 display-running  2 client-running  3 usbip-running
  4 zerotier-online  5 wifi-connected   6 network-online
Coils (FC1/5/15, read/write)
  1 remote-input-disabled  2 screen-blank
  3 reboot (momentary)     4 restart-display (momentary)
Holding Registers (FC3/6/16, read/write)
  1 kiosk-mode (1=VNC 2=RDP 3=Web 4=NodeRED 5=HTML)
  2 rotation (1=0 2=90 3=180 4=270)   3 mirror (1=none 2=h 3=v)
  4 brightness (0-100)   5 volume (0-100)   6 target-port
  7-22 target-host (ASCII)   23-62 target-url (ASCII)

The target-host and target-url blocks pack one ASCII character per register and are null-terminated on read. Write the host or URL across its range, set the mode and port, and the screen switches to the new target on the next reconnect.

At a glance

PointModbusAccess
Kiosk modeHR 1read/write
RotationHR 2read/write
MirrorHR 3read/write
Brightness (0-100)HR 4read/write, live
Volume (0-100)HR 5read/write, live
Target portHR 6read/write
Target host (ASCII)HR 7-22read/write
Target URL (ASCII)HR 23-62read/write
RebootCoil 3momentary
Restart displayCoil 4momentary

Node-RED bridge

Node-RED is both an integration surface and a selectable kiosk mode (mode 4 on the register map). Choose it and the screen renders your flow's dashboard directly.

Alongside that, a bridge mirrors the kiosk's state to Node-RED through a live state file, updated both ways:

  • Kiosk to flow. The current health, mode, target, brightness, volume and control state are published to a state file your flows can read.
  • Flow to kiosk. Values a flow writes back are picked up and applied on the next tick, exactly like any other write.

You can also expose your own custom registers to a flow, so purpose-built logic can read and drive the screen without touching the standard map.

HDMI-CEC

Over the HDMI cable itself, each unit uses HDMI-CEC to power the attached display on and off and to switch its inputs. That means schedules and control points can black out a wall at night or wake it in the morning with no separate control wiring run to the panel.

Getting connected

  1. Reach the unit

    Point your BMS or SCADA at the kiosk's IP address. Modbus TCP answers on the standard port 502 unless you set another. The unit reports its own address on CSV:1 and Modbus status.ip.

  2. Read health first

    Poll the Binary Inputs / Discrete Inputs to confirm the display, client and network are up before you drive anything.

  3. Drive the view

    Set the kiosk mode, target host, port or URL, then reboot or restart the display if you need to force a clean reconnect. The change persists as the unit's own setting.

Because a building write lands in the same place as a dashboard change, the two never fight: whatever was set last — from the BMS or from your dashboard — is what the screen shows.