# MQTT Bridge Module **Version:** 0.1.0 **Status:** Draft SecuBox MQTT Bridge exposes USB dongles and IoT sensors through a themed LuCI interface. ## Components - **Overview** – broker health, connected adapters, recent payloads. - **Devices** – paired USB devices with status (online/offline). - **Settings** – broker credentials, base topic templates, retention. ## RPC API (`luci.mqtt-bridge`) | Method | Description | |--------|-------------| | `status` | Broker metrics, stored payloads, and current settings. | | `list_devices` | Enumerates paired USB/sensor nodes. | | `trigger_pairing` | Opens pairing window (2 minutes). | | `apply_settings` | Persists broker/bridge configuration. | `status` now also includes a `profiles` array describing detected USB/Zigbee presets. Each entry exposes: | Field | Description | | ----- | ----------- | | `id` | Internal preset identifier (e.g. `zigbee_usb2134`). | | `label` | Friendly adapter name from USB descriptors. | | `vendor` / `product` | USB VID:PID pair. | | `bus` / `device` | Linux bus/device numbers as seen in `dmesg`/`lsusb`. | | `port` | Resolved `/dev/tty*` path when available. | | `detected` | Boolean flag (`true` when the dongle is currently attached). | | `notes` | Human readable hints rendered in the Devices view. | ## Files ``` luci-app-mqtt-bridge/ ├── htdocs/luci-static/resources/view/mqtt-bridge/*.js ├── htdocs/luci-static/resources/mqtt-bridge/common.css ├── root/usr/libexec/rpcd/luci.mqtt-bridge ├── root/usr/share/luci/menu.d/luci-app-mqtt-bridge.json ├── root/usr/share/rpcd/acl.d/luci-app-mqtt-bridge.json └── root/etc/config/mqtt-bridge ``` ## Zigbee / SMSC USB2134B profile The Devices tab now surfaces a preset for the "Bus 003 Device 002: ID 0424:2134 SMSC USB2134B" bridge that is commonly flashed with Zigbee coordinator firmware. The LuCI view consumes the `profiles` array explained above and displays the current detection state together with the tty hint. To verify the dongle manually: ```bash dmesg | tail -n 40 | grep -E '0424:2134|usb 3-1' lsusb -d 0424:2134 ls /dev/ttyACM* /dev/ttyUSB* 2>/dev/null ``` Typical kernel log: ``` [ 6456.735692] usb 3-1.1: USB disconnect, device number 3 [ 6459.021458] usb 3-1.1: new full-speed USB device number 4 using xhci-hcd ``` Match the reported Bus/Device numbers with `/sys/bus/usb/devices/*/busnum` and `/sys/bus/usb/devices/*/devnum`; the RPC helper inspects those files and publishes the resolved `/dev/tty*` path (when exported under `/sys/bus/usb/devices/*/tty`). If the adapter is not plugged in, the UI still renders the preset so operators know exactly which VID/PID pair to look for. Once the tty node is confirmed, update `/etc/config/mqtt-bridge` and restart the bridge service to bind Zigbee traffic to the MQTT topics defined in the Settings tab. ## Next steps - Add real daemon integration with Mosquitto. - Support TLS and per-device topics. - Emit SecuBox alerts on sensor thresholds. See `.codex/apps/mqtt-bridge/TODO.md` for the evolving backlog.