mirror of
https://github.com/BetterCorp/BetterFrame.git
synced 2026-05-26 21:26:33 +00:00
Node-RED nodes (nodered/): - bf-config: shared server URL + admin API key - bf-event-in: filter kiosk events by topic glob - bf-layout-switch: POST display layout-switch - bf-power: kiosk wake/standby - bf-fan: kiosk fan control - bf-cameras: query camera list - Drag-droppable from Node-RED palette Server: - Admin Bearer API key auth on /admin/* (NodeRED can call admin API) - GET /api/admin/cameras for bf-cameras node - Dashboard entity type: - entities.type CHECK adds 'dashboard' - entities.dashboard_id column - shared/nodered-bridge.ts listDashboards() polls /nrdp/flows - Bundle resolves dashboard entity → web cell at /dash/<id> - POST /admin/entities/sync-dashboards mirrors Node-RED tabs - EntitiesPage shows Dashboards section + Sync button - EntityEditPage for dashboard: read-only + "Open in Node-RED" - No create/delete from BF UI — managed in Node-RED - sec-config: noderedUrl on admin-http (was already on api-http)
1.6 KiB
1.6 KiB
@betterframe/nodered-nodes
BetterFrame integration nodes for Node-RED. Drag-and-droppable nodes for the BetterFrame admin REST API and kiosk event ingest.
Nodes
| Node | Type | Purpose |
|---|---|---|
bf-config |
config | Shared server URL + admin API key |
bf-event-in |
input | Filter incoming kiosk events by topic glob |
bf-layout-switch |
action | Switch a display's active layout |
bf-power |
action | Wake / standby a kiosk display |
bf-fan |
action | Set fan mode (auto/pwm) on a kiosk |
bf-cameras |
query | Fetch the camera list |
Authentication
All action/query nodes use an admin-scoped API key created in the
BetterFrame admin UI. The key is sent as Authorization: Bearer bf-....
Configure once on a bf-config node and reference it from the others.
Event ingest path
bf-event-in is a pure filter — it does not subscribe to the BF server.
Wire an upstream http in node on /in/kiosk/<topic> (BetterFrame's
authenticated kiosk-ingest endpoint, surfaced by the Angie proxy with
auth_request gating) and feed its msg.payload into bf-event-in.
Installation
Dev (single-host BetterFrame install)
# Symlink the package into Node-RED's user dir so edits hot-reload.
ln -s "$(pwd)/nodered" ~/.node-red/node_modules/@betterframe/nodered-nodes
# Restart Node-RED.
Docker compose
The compose stack mounts nodered-data as /data. Either:
- bake the package into the Node-RED image by extending the Dockerfile with
npm install /repo/nodered, or - mount
./noderedinto/data/node_modules/@betterframe/nodered-nodesand restart the container.