NVR · VMS · Milestone · Genetec · Synology · KNX · 10 min read

NVR and VMS KNX Event Forwarding: Milestone, Genetec and Synology Surveillance Station

Enterprise NVR and VMS platforms already perform sophisticated motion detection and event analytics at the software level. Forwarding these software-generated events to KNX — via HTTP webhook, SDK integration or middleware — creates a far richer trigger source than camera relay outputs, with per-camera, per-zone and time-filtered events.

NVR/VMS event forwarding approaches

Three distinct integration patterns cover the range of NVR/VMS platforms encountered in commercial and residential installations. The right approach depends on which platform is installed and what KNX infrastructure is available for receiving the events.

ApproachPlatformsKNX write methodComplexity
HTTP webhook → ARISTO BewOSynology Surveillance, smaller NVRsBewO receives HTTP POST → writes to KNX GALow
HTTP action → middlewareMilestone XProtectXProtect HTTP notification → Home Assistant → KNXMedium
SDK event rule → HTTP POSTGenetec Security CenterGenetec SDK event → custom service → KNX IPHigh
ONVIF event subscriptionAny ONVIF-compatible NVR/cameraNode-RED ONVIF node → KNX writeMedium

Milestone XProtect HTTP notification integration

Milestone XProtect Corporate and Expert editions include an HTTP notification action in their Event Rules engine. This allows any VMS-level event — motion, bookmarks, analytics, door access — to trigger an HTTP POST to an external receiver, which can then write to KNX group addresses.

Milestone XProtect event rule configuration

XProtect Management Client → Rules and Events → Rules → New Rule

Rule name: CAM-01 Motion → KNX Alarm
Trigger: Event → Devices → Camera → Motion Started
  Camera: [CAM-01 Entrance]
  Schedule: Always (or restricted hours for arming logic)

Actions:
  Action type: Send HTTP notification
  URL: http://<ARISTO-BewO-IP>:8080/knx/write
  Method: POST
  Content-Type: application/json
  Body:
  {
    "groupAddress": "8/0/1",
    "value": 1,
    "dpt": "1.001"
  }

Second rule for Motion Stopped:
  Trigger: Motion Stopped → same camera
  Body: { "groupAddress": "8/0/1", "value": 0, "dpt": "1.001" }

Note: XProtect Express does not include HTTP notification actions
— requires at least XProtect Professional for HTTP action type

Home Assistant alternative: if ARISTO BewO is not available, configure the XProtect HTTP notification to target a Home Assistant webhook. A Home Assistant automation then calls the knx.send service to write to the KNX group address. This requires HA with KNX integration and KNXnet/IP tunnelling.

Genetec Security Center SDK event integration

Genetec Security Center uses a proprietary SDK (Security Center SDK) for external integrations. The recommended approach for KNX integration is a lightweight Windows service or Python script that subscribes to Genetec events via the SDK and translates them to KNXnet/IP group address writes.

Genetec → KNX Python middleware skeleton

# Genetec SDK events → KNX via knx-stack (xknx Python library)
# Requires: Genetec Security Center SDK licence + xknx

from xknx import XKNX
from xknx.core import XknxConnectionState
import Genetec.Sdk  # Genetec SDK .NET assembly via pythonnet

GA_MOTION_CAM01 = "8/0/1"

async def on_genetec_event(event):
    if event.EntityType == "Camera" and event.EventType == "MotionDetected":
        camera_name = event.Entity.Name
        if camera_name == "CAM-01 Entrance":
            async with XKNX() as xknx:
                await xknx.core.start()
                from xknx.remote_value import RemoteValueSwitch
                await xknx.telegrams.put(
                    Telegram(
                        destination_address=GroupAddress(GA_MOTION_CAM01),
                        payload=GroupValueWrite(DPTBinary(1))
                    )
                )

# Alternatively: Genetec → HTTP POST → ARISTO BewO
# Using Genetec Event-to-Action: HTTP action on motion event
# POST to BewO endpoint with JSON body (same as Milestone approach)
# Requires Genetec Config Tool → System → General Settings → Actions

Synology Surveillance Station webhook to Home Assistant KNX

Synology DSM Surveillance Station supports outgoing webhooks for motion alert events — making it the easiest NVR platform to integrate with KNX for small and medium residential or commercial sites. The webhook targets a Home Assistant webhook trigger, which then writes to KNX via the HA KNX integration.

Synology → Home Assistant → KNX configuration

Step 1: Synology Surveillance Station
  Notification > Push Service > Webhook
  URL: http://<HA-IP>:8123/api/webhook/synology_motion_cam01
  Method: POST
  Trigger: Motion Detected — Camera: CAM-01 Entrance

Step 2: Home Assistant automation (automations.yaml)
  trigger:
    - platform: webhook
      webhook_id: synology_motion_cam01
      local_only: true
  action:
    - service: knx.send
      data:
        address: "8/0/1"
        payload: 1
        type: "1byte_unsigned"

  # Clear alarm after 30 seconds:
    - delay: "00:00:30"
    - service: knx.send
      data:
        address: "8/0/1"
        payload: 0
        type: "1byte_unsigned"

Step 3: KNX integration (configuration.yaml)
  knx:
    tunneling:
      host: <KNX-IP-router-address>
      port: 3671
      local_ip: <HA-machine-IP>

Synology limitation: Surveillance Station webhooks do not include motion end events — only motion start. The Home Assistant automation must implement a fixed-duration timer (30–60 seconds) to clear the KNX alarm GA, rather than waiting for a motion-stopped webhook.

ARISTO BewO receiving HTTP POST and writing to KNX GA

ARISTO BewO is a KNX-native building management server that includes a built-in HTTP server for receiving external POST requests and converting them directly to KNX group address writes. This makes it the most straightforward integration path when BewO is already part of the KNX installation.

ARISTO BewO HTTP → KNX configuration

BewO web interface → Interfaces → HTTP Listener

Endpoint definition:
  Path: /knx/write
  Method: POST
  Authentication: Basic auth (configure username/password)

JSON body mapping:
  { "groupAddress": "8/0/1", "value": 1, "dpt": "1.001" }
  → BewO parses groupAddress and value
  → Writes DPT 1.001 value 1 to GA 8/0/1 on KNX bus

Test with curl:
  curl -X POST http://<BewO-IP>:8080/knx/write     -H "Content-Type: application/json"     -u admin:password     -d '{"groupAddress":"8/0/1","value":1,"dpt":"1.001"}'

  Expected: HTTP 200 OK
  ETS6 Group Monitor: GA 8/0/1 telegram appears within 200ms

Reverse direction — KNX-driven recording trigger:
  BewO monitors GA 8/3/0 (Alarm Armed = 1)
  → BewO HTTP client POSTs to NVR API:
    Milestone: XProtect REST API /recording/start
    Synology: http://<NAS>/webapi/entry.cgi (surveillance API)
  → Camera starts continuous recording on alarm arm

Common integration patterns and topology

The choice of integration pattern should be driven by the existing infrastructure rather than adding new hardware. The following decision logic covers the most common site configurations.

Synology NAS + HA already on site

Synology webhook → HA → KNX. Zero additional hardware. KNX integration already configured.

Integration effort: 30 minutes

Milestone XProtect + ARISTO BewO

XProtect HTTP notification → BewO HTTP listener → KNX GA write. Direct and reliable.

Integration effort: 1 hour

Genetec + standalone KNX (no HA/BewO)

Genetec event → HTTP POST → Node-RED KNX node. Node-RED runs on any Docker host.

Integration effort: 3–4 hours

Any NVR + no existing middleware

Deploy ARISTO BewO or HA. BewO preferred for pure KNX sites — HA preferred when home automation is already planned.

Integration effort: Full day

Need NVR–KNX event forwarding integrated into a panel built to spec?

We design KNX installations with Milestone, Genetec and Synology event integration, ARISTO BewO configuration and full commissioning documentation — delivered tested to your site.

Request a quote →
Loading...
Back to top