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.
| Approach | Platforms | KNX write method | Complexity |
|---|---|---|---|
| HTTP webhook → ARISTO BewO | Synology Surveillance, smaller NVRs | BewO receives HTTP POST → writes to KNX GA | Low |
| HTTP action → middleware | Milestone XProtect | XProtect HTTP notification → Home Assistant → KNX | Medium |
| SDK event rule → HTTP POST | Genetec Security Center | Genetec SDK event → custom service → KNX IP | High |
| ONVIF event subscription | Any ONVIF-compatible NVR/camera | Node-RED ONVIF node → KNX write | Medium |
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 typeHome 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 → ActionsSynology 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 armCommon 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 minutesMilestone XProtect + ARISTO BewO
XProtect HTTP notification → BewO HTTP listener → KNX GA write. Direct and reliable.
Integration effort: 1 hourGenetec + standalone KNX (no HA/BewO)
Genetec event → HTTP POST → Node-RED KNX node. Node-RED runs on any Docker host.
Integration effort: 3–4 hoursAny 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 dayNeed 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 →