For BESA, I built WELCO, a system that remotely monitors and controls luminaires that speak the DALI (Digital Addressable Lighting Interface) protocol. It runs as an always-on Node.js production service.
What it does
- Listens to status coming from DALI gateways/controllers over MQTT, and sends on/off commands at the fixture level while reading back status.
- Detects and surfaces faults/anomalies (a fixture not responding, an unexpected state, etc.).
- Works together with LoRaWAN-connected field panels, extending lighting control to facilities with wide, low-power wireless coverage.
Link to production
When a fixture gets a serial number on the production line, a separate bridge service automatically registers it with WELCO; units pulled off the line or decommissioned are removed the same way. This keeps production and field monitoring/control in sync without manual work (see the Production Infrastructure write-up for details).
For field integration testing (LoRaWAN + DALI panel), a separate local copy of the WELCO backend runs on a Raspberry Pi 4 panel — changes are tried there first, then rolled out to the real production server.
A minimal illustration
A tiny MQTT example capturing the idea, unrelated to the real code:
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => client.subscribe('dali/+/status'));
client.on('message', (topic, payload) => {
console.log(topic, JSON.parse(payload.toString()));
});
function setPower(fixtureId, on) {
client.publish(`dali/${fixtureId}/set`, JSON.stringify({ on }));
}