Skip to content

feat: doorbell button-press (visitor) events over Baichuan → MQTT - #418

Open
josh-stephens wants to merge 1 commit into
QuantumEntangledAndy:masterfrom
josh-stephens:feat/baichuan-visitor-events
Open

feat: doorbell button-press (visitor) events over Baichuan → MQTT#418
josh-stephens wants to merge 1 commit into
QuantumEntangledAndy:masterfrom
josh-stephens:feat/baichuan-visitor-events

Conversation

@josh-stephens

Copy link
Copy Markdown

What

Doorbells announce a button press on the live Baichuan connection as an AlarmEvent with status="visitor" (the AItype stays e.g. people; the sequence is none → visitor → none over ~5s). This PR threads that through to MQTT as a momentary status/visitor on/off topic.

This gives working doorbell ring events without Reolink cloud or FCM — sidestepping the push-registration path that currently fails with PHONE_REGISTRATION_ERROR (#288). It appears to be the same mechanism Reolink's own NVRs/Home Hub use.

Verified on real hardware

Reolink Battery Video Doorbell 2nd Gen (hw DBB_NT19DNO34MPW6DBB3, fw v3.0.0.6304_26041428), standalone via UID/local UDP discovery, mqtt-rtsp mode:

INFO neolink_core::bc_protocol::motion] AlarmEvent ai_type=people status=visitor

neolink/doorbell/status/visitor publishes on, then off when the camera returns status=none a few seconds later. Home Assistant (MQTT binary_sensor on that topic) shows a clean ~4s pulse per press. Running in production since 2026-08-23.

Changes

  • MotionStatus::Visitor / MdState::Visitor carry the event from the alarm parser to consumers
  • MQTT: new status/visitor momentary topic (gated on enable_motion — same alarm subscription, no new config)
  • motion-gated streams treat a press as activity (wakes the stream)
  • motion_detected() counts a visitor at the door as motion present
  • the raw ai_type/status of non-none alarm events is logged at debug for future mapping

Happy to adjust naming/shape (e.g. an HA discovery entity for it) if you'd prefer.

Doorbells report a button press on the live Baichuan connection as an
AlarmEvent with status="visitor" (verified on Battery Video Doorbell 2nd
Gen, fw v3.0.0.6304, standalone via UID discovery) - no Reolink cloud or
FCM push registration needed, sidestepping the PHONE_REGISTRATION_ERROR
path entirely (QuantumEntangledAndy#288).

- MotionStatus::Visitor + MdState::Visitor thread the event from the
  alarm parser to consumers
- MQTT publishes status/visitor as a momentary on/off (gated on
  enable_motion, same alarm subscription)
- motion-gated streams treat a press as activity (wakes the stream)
- motion_detected() treats a visitor at the door as motion present
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant