Releases: Nibbels/sanlight-mesh-mqtt-gateway
Release list
v0.3.0
MQTT Gateway for SANlight Mesh 0.3.0
This release adds explicit manual lamp-clock control to the independent
community gateway. It remains pre-1.0 and is intended for the documented
Raspberry Pi / BlueZ Mesh topology.
Highlights
- Read lamp clocks as whole seconds since midnight and as
HH:MM:SSsnapshots. - Synchronize one lamp or all lamps to the gateway Raspberry Pi's current local time.
- Apply an arbitrary
0..86399seconds-since-midnight target to one lamp or all lamps. - Refresh the retained gateway local-clock snapshot without a Bluetooth Mesh operation or Sequence Number use.
- Verify every clock write by live readback with per-lamp outcomes and elapsed-time compensation for sequential all-lamp targets.
- Use clearer refresh and all-lamp result messages.
- Hardware-validate the complete workflow on two real lamps, including a power cycle and recovery synchronization.
Compatibility
The MQTT topic contract remains API v1, but this is a coordinated pre-1.0
compatibility change: external lampTimeMs is removed and replaced by
lampClockSeconds plus second-resolution lampClock. Millisecond handling
remains internal to the SANlight vendor protocol implementation. Update the
gateway and companion ioBroker.sanlightmesh adapter together to v0.3.0.
MaxBrightness, live effective-output reporting, blackout protection, queueing,
rate limits and sequence-state safety are unchanged.
Power-loss behavior
On the validated two-lamp reference setup, restoring lamp power reset both lamp
clocks to 00:00:00. The gateway deliberately does not synchronize
automatically. After a power interruption, wait until the lamps are reachable,
perform a read-only refresh where useful, and explicitly trigger clock
synchronization.
Important limitations
- Clock states are snapshots and do not tick inside MQTT or ioBroker.
- There is no automatic synchronization, drift alarm, NTP check, timezone or DST policy, or background lamp polling.
- Lamp reads and clock writes consume Bluetooth Mesh Sequence Numbers;
refresh-gateway-infodoes not. - Do not expose MQTT port 1883 to the internet.
- Do not copy Mesh keys, CDB exports or
.state/between independent active gateways.
Upgrade
Pull or extract the release, run the offline tests, then rerun the installer with
the existing configuration. Preserve the newest valid Bluetooth Mesh sequence
state during upgrades and rollbacks. See docs/RELEASES.md.
v0.2.0
MQTT Gateway for SANlight Mesh 0.2.0
This is the first public GitHub release of the independent community gateway. It remains pre-1.0 and is intended for the documented Raspberry Pi / BlueZ Mesh topology.
Highlights
- Complete Raspberry Pi installation with BlueZ Mesh, authenticated local Mosquitto and the always-on MQTT gateway.
- Native integration with
ioBroker.sanlightmeshthrough MQTT API v1. - Verified MaxBrightness reads and writes with a strict normal range of
20..100%. - Separate protected blackout and restore workflow.
- Read-only live lamp status including lamp clock, a one-decimal current-output percentage and the raw transport field retained for MQTT API v1 compatibility.
- Safe adoption of matching BlueZ identities, actionable IV Index recovery and protected sequence-state handling.
- Health, log and redacted-diagnostics helper.
- Offline tests, GitHub Actions and secret-free release archive tooling.
Compatibility
The MQTT contract remains API v1. The live-output fields are additive; older API v1 clients may ignore them. The companion adapter release is ioBroker.sanlightmesh v0.2.0.
Important limitations
- Hardware comparison confirmed
33.4%from the gateway against the SANlight app's rounded34%display; the value is still not calibrated watts, photon flux or PPFD. - Do not expose MQTT port 1883 to the internet.
- Do not copy Mesh keys, CDB exports or
.state/between independent active gateways. - Sequence recovery and destructive Mesh rebuild procedures are advanced recovery operations, not normal update steps.
Upgrade
Pull or extract the release, run the offline tests, then rerun the installer with the existing configuration. Preserve the newest valid Bluetooth Mesh sequence state during upgrades and rollbacks. See docs/RELEASES.md.