From 513c0a8473e3e40f955e645c3dbcb4eba9faae45 Mon Sep 17 00:00:00 2001 From: "T. Tradesman" <184814242+ttradesman@users.noreply.github.com> Date: Thu, 23 Jul 2026 11:52:43 +0200 Subject: [PATCH] fix(event/stream): classify AXIS VMD 3 topics as motion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VMD 3 is the firmware-builtin motion rule, published as tns1:RuleEngine/tnsaxis:VMD3/vmd3_video_. It predates the VMD 4 ACAP and lives under RuleEngine rather than CameraApplicationPlatform, so the VMD 4 rule added in the previous commit does not cover it. Confirmed against a deployed AXIS camera: with debug logging on, its event stream emits vmd3_video_1 on every motion trigger, and every one was discarded as KindUnknown. The VMD 4 rule stays — both generations are in the field. --- event/stream/topics.go | 9 ++++++++- event/stream/topics_test.go | 6 ++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/event/stream/topics.go b/event/stream/topics.go index 552c132..1345233 100644 --- a/event/stream/topics.go +++ b/event/stream/topics.go @@ -79,7 +79,14 @@ var topicRules = []struct { // https://developer.axis.com/vapix/network-video/event-and-action-services/ {"MotionRegionDetector/Motion", KindMotion}, - // AXIS ACAP motion apps with CameraProfile suffixes. VMD is + // tns1:RuleEngine/tnsaxis:VMD3/vmd3_video_ — AXIS VMD 3, the + // firmware-builtin predecessor of the VMD 4 ACAP. It lives under + // RuleEngine, not CameraApplicationPlatform, so the VMD rule below + // does not cover it. Still shipping on deployed cameras. + // https://developer.axis.com/vapix/network-video/event-and-action-services/ + {"RuleEngine/VMD3/", KindMotion}, + + // AXIS ACAP motion apps with CameraProfile suffixes. VMD 4 is // the stock app shipped on the camera; the Guard suite are the // paid analytics products. Prefix-match because of the suffix. // https://developer.axis.com/vapix/applications/vmd4 diff --git a/event/stream/topics_test.go b/event/stream/topics_test.go index 617bf5b..8e12e26 100644 --- a/event/stream/topics_test.go +++ b/event/stream/topics_test.go @@ -31,6 +31,12 @@ func TestClassifyTopic(t *testing.T) { {"axis_vmd4_profile_any", "tnsaxis:CameraApplicationPlatform/VMD/Camera1ProfileANY", KindMotion}, {"axis_vmd4_profile_numbered", "tnsaxis:CameraApplicationPlatform/VMD/Camera1Profile1", KindMotion}, + // AXIS VMD 3 — the firmware-builtin predecessor, published under + // RuleEngine rather than CameraApplicationPlatform. Still shipping + // on deployed cameras; observed on site-07 camera-10. + {"axis_vmd3_video_1", "tns1:RuleEngine/tnsaxis:VMD3/vmd3_video_1", KindMotion}, + {"axis_vmd3_video_2", "tns1:RuleEngine/tnsaxis:VMD3/vmd3_video_2", KindMotion}, + // --- Tampering -------------------------------------------------- {"tamper_detector", "tns1:RuleEngine/TamperDetector/Tamper", KindTampering},