Skip to content

node-red-contrib-rosepetal-basler-camera

Basler camera support for Rosepetal via Dockerized services + Node-RED nodes, following the same architecture as the Irayple and Omron camera repositories:

  • Discovery service (C++ / Docker) – enumerates Basler cameras via the pylon SDK, publishes inventory to NATS, and starts/stops per-camera publisher containers.
  • Camera publisher (C++ / Docker) – grabs frames, writes them to POSIX shared memory (/dev/shm), publishes per-frame metadata on NATS, and listens for trigger/config messages.
  • Node-RED package – three custom nodes that expose discovery, trigger, and configuration workflows inside Node-RED.

Prerequisites

  • Docker Engine
  • Local NATS server on nats://127.0.0.1:4222 (override by setting NATS_URL)
  • Node-RED running on the same host (collector reads /dev/shm)
  • Basler pylon SDK archive present at basler-driver/pylon-25.11.0_linux-x86_64.tar.gz (or provide a different path to basler-driver/install.sh)

Repository Layout

.
├── install.sh
├── basler-driver/
│   ├── install.sh
│   └── pylon-sdk/                # extracted SDK (gitignored)
├── node-red/
│   ├── package.json
│   ├── basler-collector/
│   ├── basler-trigger/
│   └── basler-config/
└── rosepetal-basler-engine/
    ├── main/                     # discovery service + Dockerfile
    └── camera/                   # publisher service + Dockerfile

Install

bash
./install.sh

For “Node-RED nodes only”:

bash
./install.sh --node-red-only

Node-RED nodes

The Node-RED package registers:

  • basler-collector (0-in / 1-out): starts/stops services, subscribes to basler/<MAC-HYPHEN>/notification, reads segment from /dev/shm, outputs {payload.data: Buffer, width, height, ...}.
  • basler-trigger (1-in / 0-out): publishes {} to basler/<MAC-HYPHEN>/trigger for each selected camera.
  • basler-config (1-in / 1-out): publishes {params:{...}} to basler/<MAC-HYPHEN>/config (supports presets + custom GenICam node names).

NATS subjects

  • basler/broadcast – request camera scan
  • basler/cameras – discovery publishes camera list
  • basler/up – start camera container ({mac,ninterface})
  • basler/down – stop camera container ({mac})
  • basler/fix – best-effort IP repair ({mac})
  • basler/<MAC-HYPHEN>/notification – per-frame metadata (includes segment and size)
  • basler/<MAC-HYPHEN>/trigger – software trigger
  • basler/<MAC-HYPHEN>/config – parameter updates ({params:{...}})