Skip to content
UNITRONIX edited this page Jul 12, 2026 · 2 revisions

SDK

BetterDesk provides Python and Node.js SDKs for building CDAP agents and bridges that connect to the Go server CDAP gateway (port 21122).


Architecture

Your application
      │
      ▼
 CDAPBridge (SDK)  ── WebSocket ──►  Go server :21122/cdap
      │                                    │
      Widgets / metrics / commands         ▼
                                    Web Console (CDAP pages)

Python SDK

Package: betterdesk-cdap · Requires: Python 3.8+

pip install betterdesk-cdap
from betterdesk_cdap import CDAPBridge, Widget

bridge = CDAPBridge(
    server="ws://your-server:21122/cdap",
    api_key="your-api-key",
    device_id="SENSOR-001",
    device_name="Temperature Sensor",
    device_type="sensor",
)

bridge.add_widget(Widget.gauge("temperature", "Temperature", unit="°C", min=-20, max=50))
bridge.add_widget(Widget.toggle("heater", "Heater"))

@bridge.on_command("heater")
async def on_heater(action, params):
    return {"success": True}

bridge.set_value("temperature", 22.5)
await bridge.connect()

Source: sdks/python/


Node.js SDK

Package: betterdesk-cdap · Requires: Node.js 18+

npm install betterdesk-cdap
const { CDAPBridge, Widget } = require('betterdesk-cdap');

const bridge = new CDAPBridge({
  server: 'ws://your-server:21122/cdap',
  apiKey: 'your-api-key',
  deviceId: 'SENSOR-001',
  deviceName: 'Temperature Sensor',
  deviceType: 'sensor',
});

bridge.addWidget(Widget.gauge('temperature', 'Temperature', { unit: '°C' }));
bridge.setValue('temperature', 22.5);
bridge.connect();

Source: sdks/nodejs/


Key concepts

Concept Description
CDAPBridge WebSocket client — auth, heartbeat, reconnect
Widget UI element rendered in panel (gauge, toggle, button, …)
Manifest Device capabilities sent on connect
Command Panel → device action with response

Enable CDAP on the server: -cdap flag or CDAP_ENABLED=Y.


Reference bridges

Pre-built protocol bridges in the repo:

Bridge Protocol
bridges/modbus/ Modbus TCP/RTU
bridges/snmp/ SNMP v2c/v3
bridges/rest-webhook/ REST polling + webhooks

See also

Clone this wiki locally