Goal
Validate neolink's real MQTT behavior against a real Reolink before building the actuator-control backend in #25. The exact topic strings are documented, but the behaviors the backend depends on (floodlight revert semantics, siren timing, and whether control messages are retained) are not — and building against assumptions would produce wrong or unsafe code. This blocks #25's backend.
Hands-on hardware task (no agent can watch a physical light/siren). Run against one mains-powered Reolink that has a floodlight and/or siren.
Confirmed topic map (source: neolink README, to be verified live)
Prefix neolink/{CAMERANAME}.
Control:
/control/floodlight [on|off] — direct lamp on/off (the on-demand button; separate from auto)
/control/floodlight_tasks [on|off] — automatic triggers only
/control/ir [on|off|auto] — IR lights (note the explicit auto = revert value)
/control/led [on|off]
/control/pir [on|off]
/control/siren on — one-shot, no off (self-terminates)
/control/reboot
Status: /status (connection + LastWill = offline detection), /status/motion [on|off], /status/pir (XML), /status/battery_level, /status/floodlight_tasks.
Docs are silent on retained/QoS — that is the single most important thing to nail.
Runbook
- Point neolink at one camera + an MQTT broker (see neolink's
sample_config.toml; Reolink Baichuan port is 9000). Run it (Docker). Note and pin the neolink image tag used.
- Subscribe to the full tree:
mosquitto_sub -h <broker> -v -t 'neolink/#'. Confirm the topics above appear.
- Run each test and record the result:
| Test |
Command |
Record |
| Floodlight on-demand |
mosquitto_pub -t neolink/<cam>/control/floodlight -m on |
Lamp on now? Command→light latency? |
| Floodlight revert |
... control/floodlight -m off |
Lamp off? Does the auto night/motion behavior still work afterward? |
| IR revert value |
... control/ir -m auto |
Returns to auto light-detection? |
| Siren |
... control/siren -m on |
Sounds? Duration? Any stop/off? Retrigger interval? |
| Retained (safety) |
publish floodlight on, restart the broker, reconnect |
Does neolink re-fire it? (retained ON re-firing a siren after a broker restart would be a real hazard — the backend must publish non-retained) |
| Status echoes |
watch status/motion, status, status/floodlight_tasks |
What updates, how fast? |
Deliverable
The filled-in table above + the pinned image tag. That converts #25's assumptions into confirmed facts; the #25 backend build proceeds from there.
Open questions this resolves (that shape #25's design)
- Floodlight momentary/revert model (publish
on, TTL, publish off; does auto behavior resume cleanly?).
- Siren state model (confirm one-shot self-terminating → trigger + Crumb-side cooldown, no revert).
- Retained/QoS (determines the boot-sweep + non-retained publish requirements).
- Actuation latency (optimistic vs confirmed UI state).
Blocks #25.
Goal
Validate neolink's real MQTT behavior against a real Reolink before building the actuator-control backend in #25. The exact topic strings are documented, but the behaviors the backend depends on (floodlight revert semantics, siren timing, and whether control messages are retained) are not — and building against assumptions would produce wrong or unsafe code. This blocks #25's backend.
Hands-on hardware task (no agent can watch a physical light/siren). Run against one mains-powered Reolink that has a floodlight and/or siren.
Confirmed topic map (source: neolink README, to be verified live)
Prefix
neolink/{CAMERANAME}.Control:
/control/floodlight [on|off]— direct lamp on/off (the on-demand button; separate from auto)/control/floodlight_tasks [on|off]— automatic triggers only/control/ir [on|off|auto]— IR lights (note the explicitauto= revert value)/control/led [on|off]/control/pir [on|off]/control/siren on— one-shot, no off (self-terminates)/control/rebootStatus:
/status(connection + LastWill = offline detection),/status/motion [on|off],/status/pir(XML),/status/battery_level,/status/floodlight_tasks.Docs are silent on retained/QoS — that is the single most important thing to nail.
Runbook
sample_config.toml; Reolink Baichuan port is9000). Run it (Docker). Note and pin the neolink image tag used.mosquitto_sub -h <broker> -v -t 'neolink/#'. Confirm the topics above appear.mosquitto_pub -t neolink/<cam>/control/floodlight -m on... control/floodlight -m off... control/ir -m auto... control/siren -m onfloodlight on, restart the broker, reconnectstatus/motion,status,status/floodlight_tasksDeliverable
The filled-in table above + the pinned image tag. That converts #25's assumptions into confirmed facts; the #25 backend build proceeds from there.
Open questions this resolves (that shape #25's design)
on, TTL, publishoff; does auto behavior resume cleanly?).Blocks #25.