ONVIF-zu-KNX-Integration: Automatisierung durch Kameraereignisse auslösen
ONVIF-Profil-T-Kameras veröffentlichen Bewegungserkennungs-, Linienüberschreitungs- und Objekterkennungsereignisse über einen standardisierten Ereignisdienst. Die Überbrückung dieser Ereignisse zu KNX-Gruppenadressen ermöglicht kameragesteuerte Gebäudeautomation – Eingangsbeleuchtung bei Türklingelerkennung, DALI-Szenenwechsel bei Perimeterverletzung, Alarmhornaktivierung – ohne Relaisverkabelung oder proprietäre APIs.
Anwendungsfallübersicht
Die drei häufigsten ONVIF-zu-KNX-Automatisierungsszenarien in intelligenten Gebäuden und gesicherten Einrichtungen sind die direkte Ereignisüberbrückung ohne Relais-Hardware:
Eingangsbeleuchtung bei Ankunft
Auslöser: Türklingelkamera erkennt sich nähernde Person
KNX-Aktion: KNX DALI Szene 3 (Eingang 100%, warmweiß) — automatische Abschaltung nach 5 Minuten über Treppenhaus-Timer
Perimetersicherheitsalarm
Auslöser: Außenkamera Linienüberschreitungsereignis (nördlicher Zaunbereich)
KNX-Aktion: KNX-Binärausgang → Alarmhorn 30s + DALI-Außenflutlicht auf 100% + BewO-E-Mail-Benachrichtigung
Parkhaus-Präsenzerkennung
Auslöser: ONVIF-Bewegungsereignis von der Überkopf-Parkkamera
KNX-Aktion: KNX DALI Zone 4 (Parkhaus) dimmt von 20% Bereitschaft auf 100% für 10 min
ONVIF-to-KNX ist eine Software-Brücke – keine Relaisverkabelung, keine Hardwareänderung an der Kamera erforderlich. Die Kamera benötigt Profile T oder Profile M Zertifizierung für standardisierte Ereignisübermittlung. Profile S Kameras haben keinen standardisierten Ereignisdienst und erfordern stattdessen herstellerspezifische APIs.
ONVIF Profile T Ereignisdienst
Profile T schreibt die Implementierung des ONVIF Event Service mit zwei Übermittlungsmechanismen vor: Pull-Point-Abonnement (Polling) und den neueren EventBroker (Push über MQTT, eingeführt in ONVIF-Spezifikation Release 21.12).
| Mechanismus | Protokoll | Funktionsweise | Minimale Latenz |
|---|---|---|---|
| PullMessages | SOAP/HTTP Polling | Client erstellt Pull-Point-Abonnement, ruft dann PullMessages in Intervallen auf – Kamera gibt bei jedem Aufruf die anstehenden Ereignisse zurück | = Abfrageintervall (min. 500 ms) |
| WS-BaseNotification | SOAP/HTTP Push | Kamera sendet Notify-Nachricht an HTTP-Endpunkt des Clients, wenn ein Ereignis ausgelöst wird – erfordert, dass der Client einen HTTP-Server bereitstellt | ~100ms (Push, keine Polling-Verzögerung) |
| EventBroker (MQTT) | MQTT 3.1.1/5.0 (21.12+) | Camera publishes ONVIF events to external MQTT broker on topic pattern onvif/events/<topic>. Client subscribes. Broker decouples camera from KNX bridge | ~50ms (MQTT-Broker-Latenz) |
Das ONVIF-Ereignisthema für Bewegungserkennung ist tns1:VideoAnalytics/tnsaxis:MotionDetection bei Axis-Kameras und tns1:RuleEngine/CellMotionDetector/Motion bei Hikvision. Themempfade variieren je nach Hersteller selbst innerhalb von Profile T – fragen Sie immer GetEventProperties auf dem spezifischen Gerät ab, um verfügbare Themen aufzulisten.
Methode 1: Home Assistant ONVIF + KNX-Integration
Home Assistant bietet eine native ONVIF-Integration und eine native KNX-Integration. Durch den Betrieb beider Integrationen in derselben HA-Instanz können ONVIF-Kameraereignisse über HA-Automatisierungen KNX-Gruppenadressen schreiben – ohne benutzerdefinierten Code.
Home Assistant configuration.yaml – ONVIF + KNX-Automatisierung
# configuration.yaml
knx:
# KNX/IP interface on the network
tunneling:
host: 192.168.1.10 # KNX/IP gateway IP (e.g. MDT SCN-IP000.03)
port: 3671
# ONVIF camera added via UI: Settings → Devices → Add Integration → ONVIF
# HA creates binary_sensor.camera_entrance_motion automatically
# automations.yaml
- alias: "ONVIF Entrance Motion → KNX DALI Scene 3"
trigger:
- platform: state
entity_id: binary_sensor.camera_entrance_motion
to: "on"
action:
- service: knx.send
data:
address: "3/0/3" # DALI scene GA — scene 3 (entrance full)
payload: 3 # DPT 5.001 scene number
response: false
- service: knx.send
data:
address: "3/0/10" # DALI brightness GA
payload: 255 # 100% brightness
response: false
- alias: "ONVIF Motion OFF → KNX DALI return to standby (5 min)"
trigger:
- platform: state
entity_id: binary_sensor.camera_entrance_motion
to: "off"
for: "00:05:00"
action:
- service: knx.send
data:
address: "3/0/10"
payload: 77 # 30% brightness (standby)Die Home Assistant ONVIF-Integration verwendet standardmäßig WS-BaseNotification-Push bei unterstützten Kameras und fällt auf PullMessages-Abfrage (Standardintervall 10 Sekunden) zurück. Für eine KNX-Antwort unter einer Sekunde setzen Sie das Abfrageintervall der ONVIF-Integration auf 1s oder verwenden Sie eine Kamera, die EventBroker MQTT unterstützt, damit HA über die MQTT-Integration abonnieren kann.
Methode 2: NVR mit nativer KNX-Ausgabe
Enterprise-VMS-Plattformen unterstützen die KNX-Integration über dedizierte Plugins, die eine direkte Ereignis-zu-KNX-Weiterleitung ohne separaten Middleware-Server ermöglichen.
Milestone XProtect + KNX-Plugin
Milestone XProtect Corporate und Expert unterstützen Integrationen von Drittanbietern über das MIP SDK. Das KNX-MIP-Plugin (erhältlich im Milestone Marketplace) ordnet XProtect-Alarmereignisse KNX-Gruppenadressen über ein KNX/IP-Gateway zu. Unterstützt DPT 1.001-Auslösetelegramme und Szenenabrufbefehle.
XProtect Management Client → Regeln und Ereignisse → Regel hinzufügen → Alarm ausgelöst → Befehl ausführen → KNX-Plugin → GA 3/0/3 = 3 schreiben (Szenenabruf)
Genetec Security Center + KNX-Connector
Genetec Security Center 5.10+ unterstützt benutzerdefinierte Ereignis-Connectors. Der KNX-Connector für Genetec (erhältlich von zertifizierten Genetec-Integratoren) ordnet Ereigniskategorien des Security Centers KNX-Gruppenadressen-Telegrammen zu. Unterstützt Videoanalyse-Ereignisse, Zutrittsverweigerungs-Ereignisse und Alarmquittierung.
Genetec Config Tool → System → Allgemeine Einstellungen → Erweiterungen → KNX-Connector hinzufügen → GA-Zuordnungstabelle pro Ereignistyp konfigurieren
Methode 3: Ajax Systems mit ONVIF-Kamerazufuhr
Ajax Hub 2 Plus unterstützt die ONVIF-Kameraintegration direkt – bis zu 25 IP-Kameras pro Hub in der Ajax-App. Ajax kann ONVIF-Bewegungsereignisse von verbundenen Kameras empfangen und als Ajax-Alarmereignisse weiterleiten. Wenn das Ajax-System über das Integreat- oder IQ Home-Gateway mit einem KNX-System verbunden ist, werden Ajax-Alarme in KNX-Telegramme umgesetzt.
Ajax Hub 2 Plus – ONVIF-Kamerakette zu KNX
- ONVIF-Kamera zu Ajax Hub 2 Plus in der Ajax PRO-App hinzufügen (Kamera-Menü → + → ONVIF)
- Bewegungserkennungsbenachrichtigungen auf dem Kamerakanal in Ajax aktivieren
- Ajax Hub löst Alarmereignis aus, wenn Kamerabewegung erkannt wird
- Ajax-System mit Integreat-Gateway (RS-485 oder IP) verbunden → KNX-Gruppenadresse schreiben bei Alarm
- KNX-Logikmodul reagiert: DALI-Szene, Hupe, BewO-Benachrichtigung
Python-Integration: onvif-zeep + xknx
Für benutzerdefinierte Bereitstellungen bietet ein Python-Skript mit der onvif-zeep -Bibliothek (ONVIF-SOAP-Client) und xknx (KNX/IP-Python-Bibliothek) eine direkte Brücke mit voller Kontrolle über Ereignisfilterung und KNX-Telegrammkonstruktion.
Python — ONVIF-Bewegungsereignis zu KNX-Telegramm
import asyncio
from onvif import ONVIFCamera
from xknx import XKNX
from xknx.dpt import DPTBinary
CAMERA_IP = "192.168.1.64"
CAMERA_PORT = 80
CAMERA_USER = "admin"
CAMERA_PASS = "yourpassword"
KNX_GATEWAY_IP = "192.168.1.10"
KNX_MOTION_GA = "8/0/1" # Motion alarm group address (DPT 1.001)
KNX_SCENE_GA = "3/0/3" # DALI scene recall GA
async def main():
# Connect to ONVIF camera
cam = ONVIFCamera(CAMERA_IP, CAMERA_PORT, CAMERA_USER, CAMERA_PASS)
await cam.update_xaddrs()
events_service = cam.create_events_service()
# Create pull-point subscription
pullpoint = await events_service.CreatePullPointSubscription()
manager = cam.create_pullpoint_service(pullpoint)
# Connect to KNX/IP gateway
xknx = XKNX(address_format="3/3/4")
xknx.knx_ip_interface.gateway_ip = KNX_GATEWAY_IP
await xknx.start()
print(f"Polling ONVIF events from {CAMERA_IP}...")
while True:
try:
messages = await manager.PullMessages({
"MessageLimit": 100,
"Timeout": "PT1S", # 1-second long-poll timeout
})
for msg in messages.NotificationMessage or []:
topic = str(msg.Topic._value_1)
# Filter for motion detection topic
if "MotionDetection" in topic or "CellMotionDetector" in topic:
data = msg.Message._value_1.Data
simple_items = data.SimpleItem or []
for item in simple_items:
if item.Name in ("IsMotion", "State", "Value"):
is_active = str(item.Value).lower() in ("true", "1")
# Send KNX telegram
await xknx.telegrams.put(
xknx.telegram_queue.telegram_received_cb
)
# Write DPT 1.001 to motion alarm GA
from xknx.telegram import Telegram, TelegramDirection
from xknx.telegram.address import GroupAddress
t = Telegram(
destination_address=GroupAddress(KNX_MOTION_GA),
payload=DPTBinary(1 if is_active else 0),
)
await xknx.telegrams.put(t)
print(f"KNX {KNX_MOTION_GA} = {1 if is_active else 0}")
except Exception as e:
print(f"Poll error: {e}")
await asyncio.sleep(2)
asyncio.run(main())Abhängigkeiten installieren: pip install onvif-zeep xknx. Die onvif-zeep-Bibliothek verwendet die offiziellen ONVIF-WSDL-Dateien – laden Sie sie einmal herunter mitpython -m onvif.generate_wsdl. Führen Sie dieses Skript als systemd-Dienst auf einem Raspberry Pi 4 oder einem kleinen Linux-Server im Gebäudeautomationsnetzwerksegment aus.
Latenzbetrachtungen
Die Gesamtlatenz von der physischen Bewegung bis zur Zustellung des KNX-Telegramms hängt von der Ereignisbereitstellungsmethode ab. Wählen Sie für sicherheitskritische Automatisierung Push- oder MQTT-Bereitstellung anstelle von Pull-Point-Abfragen.
| Segment | PullMessages (500 ms Abfrage) | MQTT EventBroker | WS-BaseNotification Push |
|---|---|---|---|
| Kamera-Videoanalyse | 50–200ms | 50–200ms | 50–200ms |
| Ereignisübermittlung an die Bridge | 0–500ms (Abfrageintervall) | ~20ms (MQTT-Broker) | ~30ms (HTTP-Push) |
| Bridge-Verarbeitung (Python) | ~5ms | ~5ms | ~5ms |
| KNX/IP-Telegramm an den Bus | ~20ms | ~20ms | ~20ms |
| Gesamt typisch | ~600ms | ~295ms | ~255ms |
Für Einbruchmeldeanwendungen ist eine Gesamtlatenz von 600 ms akzeptabel – die Aktivierung eines KNX-Alarmhorns innerhalb einer Sekunde nach Bewegungserkennung ist in EN 50131 Grad 2 Systemen Standard. Für Lichtkomfortautomatisierung (Anwesenheitserkennung) ist 600 ms nicht wahrnehmbar. ONVIF-zu-KNX ist nicht für lebensrettende Brandmeldeanwendungen geeignet – verwenden Sie dafür dedizierte Brandmeldezentralen mit zertifizierten Schnittstellen.
Benötigen Sie ONVIF-Kameraereignisse, die in Ihre KNX-Gebäudeautomation eingebunden werden?
Wir entwerfen KNX-Schaltschränke mit ONVIF-Middleware-Integration, Home Assistant oder Python-Bridge-Bereitstellung und vollständiger ETS6-Alarmlogik – vor Ort in Betrieb genommen und getestet.
Angebot anfordern →