Wir verwirklichen Ihre Ideen!Raum Heilbronn · info@appproject.de
AppProjectApp-Entwicklung · Smart Home · 3D-Druck
HTTP-API

Dahua-Kameras per URL steuern

Dahua-Kameras haben mit HTTP-API eine lokale Schnittstelle. Du steuerst sie direkt im Heimnetz per HTTP-Befehl – aus dem Browser, per curl oder aus einem Programm deiner Homematic-Zentrale. Hier findest du alle Befehle, die wir belegen konnten, sortiert nach Funktion.

Befehl für meine Dahua erzeugen

Schnittstelle
HTTP API (CGI, configManager.cgi / ptz.cgi / magicBox.cgi)
Anmeldung
Digest
Standard
http://…:80
Auch für
Amcrest
Funktionen
16 von 21
Stand
November 2026

Gut zu wissen

  • Laut Doku nutzen die Befehle HTTP-Digest-Auth (RFC 7616); curl braucht dafür --digest -u {user}:{pass}.
  • Index-Zählung beachten: In configManager-Parametern ist [0] Kanal 1. Bei ptz.cgi, snapshot.cgi und RTSP beginnt channel bei 1.
  • Eckige Klammern in der URL müssen für curl mit -g (--globoff) übergeben oder als %5B/%5D kodiert werden. Leerzeichen als %20.
Alle Hinweise (7)
  • Eine Einstellung auslesen: /cgi-bin/configManager.cgi?action=getConfig&name=<Name>, z. B. MotionDetect, RecordMode, Lighting, Email, VideoWidget.
  • Funktionsumfang je Modell abfragen, z. B. über VideoInputCaps (caps.InfraRed = IR-Kompensation unterstützt).
  • Push-Benachrichtigungen (App DMSS bzw. Amcrest-App) sind in der HTTP-API V3.26 nicht als eigener Schalter beschrieben, deshalb als nicht möglich geführt.
  • Direkte CGI-Aufrufe je Gerät und Firmware testen, nicht jede Funktion ist auf jedem Modell vorhanden.

Bewegungserkennung an

Im Generator öffnen

Alarmanlage scharf → Bewegungserkennung der Kamera einschalten

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=true'

[0] = Kanal 1.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=true'");

Quelle: cdn.shopify.com

Bewegungserkennung aus

Im Generator öffnen

Jemand ist zu Hause → Bewegungserkennung ausschalten, keine Fehlalarme

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false'

Parameter laut Doku-Tabelle (head.Enable bool); Beispiel zeigt nur true.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&MotionDetect[0].Enable=false'");

Quelle: cdn.shopify.com

Alarm oder Abwesenheit → Aufnahme starten bzw. Aufnahmeplan aktivieren

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&RecordMode[0].Mode=1'

Mode=1 = manuelle Aufnahme; [0] = Kanal 1 (Index ab 0). Mode=0 = automatische Aufnahme (Zeitplan/Ereignis).

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&RecordMode[0].Mode=1'");

Quelle: cdn.shopify.com

Anwesend → Aufnahme stoppen bzw. Aufnahmeplan deaktivieren

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&RecordMode[0].Mode=2'

Mode=2 = Aufnahme gestoppt. Zurück zur automatischen Aufnahme mit Mode=0.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&RecordMode[0].Mode=2'");

Quelle: cdn.shopify.com

Urlaub → Alarm-E-Mails mit Bild einschalten

Laut Herstellerdokualle Modelle· HTTP API V2.12 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&Email.Enable=true'

Schaltet den E-Mail-Dienst global (Tabelle S. 145). Pro Ereignis alternativ MotionDetect[0].EventHandler.MailEnable=true.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&Email.Enable=true'");

Quelle: cdn.shopify.com

E-Mail-Alarm aus

Im Generator öffnen

Zurück → Alarm-E-Mails ausschalten

Laut Herstellerdokualle Modelle· HTTP API V2.12 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&Email.Enable=false'

Nur für Bewegung: MotionDetect[0].EventHandler.MailEnable=false (EventHandler-Tabelle S. 158 f.).

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&Email.Enable=false'");

Quelle: cdn.shopify.com

Position anfahren

Im Generator öffnen

Bewegungsmelder an der Einfahrt löst aus → Kamera schwenkt auf die gespeicherte Position

Laut HerstellerdokuDahua PTZ-/Speed-Dome-Kameras· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/ptz.cgi?action=start&channel=1&code=GotoPreset&arg1=0&arg2=1&arg3=0'

channel und Preset-Nummer zählen ab 1.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/ptz.cgi?action=start&channel=1&code=GotoPreset&arg1=0&arg2=1&arg3=0'");

Quelle: cdn.shopify.com

Schwenken / Neigen

Im Generator öffnen

Kamera per Taster oder Programm schrittweise bewegen

Laut HerstellerdokuDahua PTZ-/Speed-Dome-Kameras· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/ptz.cgi?action=start&channel=1&code=WERT&arg1=0&arg2=4&arg3=0'

{wert} = Up, Down, Left, Right (arg2 = Tempo 1–8). Bei LeftUp, RightUp, LeftDown, RightDown muss arg1 das vertikale Tempo (1–8) enthalten, arg2 das horizontale. ZoomWide/ZoomTele: arg1–arg3 = 0. Stoppen: /cgi-bin/ptz.cgi?action=stop&channel={kanal}&code={wert}&arg1=0&arg2=0&arg3=0

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/ptz.cgi?action=start&channel=1&code=WERT&arg1=0&arg2=4&arg3=0'");

Quelle: cdn.shopify.com

Schnappschuss (Bild-URL)

Im Generator öffnen

Klingel gedrückt → aktuelles Bild abrufen und per Push oder Telegram verschicken

Laut Herstellerdokualle Modelle· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/snapshot.cgi?channel=1&type=0'

channel ab 1, Standard 1; beide Parameter sind optional.

Erwartete Antwort: JPEG-Bilddaten (Content-Type: image/jpeg)

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/snapshot.cgi?channel=1&type=0'");

Quelle: cdn.shopify.com

Privatsphäre-Modus an

Im Generator öffnen

Jemand ist zu Hause → Kamera schaut weg bzw. Bild wird abgedeckt

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&VideoWidget[0].Covers[0].EncodeBlend=true'

Blendet Abdeckzone 1 (Covers[0]) in den Videostream ein; die Zone muss vorher eingerichtet sein. Bei PTZ: PrivacyMasking[0][0].Enable=true (S. 95).

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&VideoWidget[0].Covers[0].EncodeBlend=true'");

Quelle: cdn.shopify.com

Privatsphäre-Modus aus

Im Generator öffnen

Alle sind weg → Kamera wieder scharf

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&VideoWidget[0].Covers[0].EncodeBlend=false'

Covers[0] bis [3] = Zonen 1–4.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/configManager.cgi?action=setConfig&VideoWidget[0].Covers[0].EncodeBlend=false'");

Quelle: cdn.shopify.com

Licht / Spotlight an

Im Generator öffnen

Bewegungsmelder im Garten → Spotlight der Kamera einschalten

Laut HerstellerdokuDahua mit Weißlicht/Sirene (Full-Color, TiOC, Active Deterrence)· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/coaxialControlIO.cgi?action=control&channel=1&info[0].Type=1&info[0].IO=1&info[0].TriggerMode=2'

Type=1 = Weißlicht, IO=1 = an, TriggerMode=2 = manuell. Steht unter „Coaxial Control IO“; ob IP-Kameras das unterstützen, ist nicht angegeben, daher testen. Status: …action=getstatus&channel={kanal}.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/coaxialControlIO.cgi?action=control&channel=1&info[0].Type=1&info[0].IO=1&info[0].TriggerMode=2'");

Quelle: cdn.shopify.com

Licht / Spotlight aus

Im Generator öffnen

Spotlight nach einigen Minuten wieder ausschalten

Laut HerstellerdokuDahua mit Weißlicht/Sirene (Full-Color, TiOC, Active Deterrence)· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/coaxialControlIO.cgi?action=control&channel=1&info[0].Type=1&info[0].IO=2&info[0].TriggerMode=2'

IO=2 = aus. Mit Type=2 statt 1 wird der Lautsprecher geschaltet.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/coaxialControlIO.cgi?action=control&channel=1&info[0].Type=1&info[0].IO=2&info[0].TriggerMode=2'");

Quelle: cdn.shopify.com

Sirene / Alarmton auslösen

Im Generator öffnen

Einbruchalarm der Homematic-Alarmanlage → Sirene der Kamera auslösen

Laut HerstellerdokuDahua mit Weißlicht/Sirene (Full-Color, TiOC, Active Deterrence)· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' -X POST -H 'Content-Type: application/json' --data-binary '{"Path":"/Audio_Path","FileName":"WERT","PlayTimes":1}' 'http://KAMERA-IP/cgi-bin/api/Speak/startPlayByTime'

Spielt eine Audiodatei auf der Kamera ab (Doku-Beispiel: alarm.wav), keine eigene Sirenen-Funktion. Pfad und Dateiname sind gerätespezifisch. Antwort „Busy“ = spielt bereits. Alternativ Lautsprecher per coaxialControlIO (Type=2).

Erwartete Antwort: {"Status":"OK"}

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("printf '{\042Path\042:\042/Audio_Path\042,\042FileName\042:\042WERT\042,\042PlayTimes\042:1}' | curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' -X POST -H 'Content-Type: application/json' --data-binary @- 'http://KAMERA-IP/cgi-bin/api/Speak/startPlayByTime'");

Quelle: cdn.shopify.com

Kamera hängt → per Programm neu starten

Laut Herstellerdokualle Modelle· HTTP API V1.40 bis V3.26

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/magicBox.cgi?action=reboot'

Optional &delay=<Sekunden> (ab V3.26 dokumentiert). Fehler: Antwort „Error“.

Erwartete Antwort: OK

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cgi-bin/magicBox.cgi?action=reboot'");

Quelle: cdn.shopify.com

Videostream (RTSP)

Im Generator öffnen

Live-Bild in Dashboard, NAS oder Tablet einbinden

Laut Herstellerdokualle Modelle· HTTP API V3.26 (2023)

curl
curl -s --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cam/realmonitor?channel=1&subtype=0'

Kein HTTP-Aufruf: Protokoll RTSP (DESCRIBE/SETUP/PLAY), Standardport 554, Digest-Auth. rtsp://{user}:{pass}@{ip}:554/cam/realmonitor?channel={kanal}&subtype=0. subtype 0 = Hauptstream, 1 = Substream 1, 2 = Substream 2.

Erwartete Antwort: RTSP-Stream

Als Homematic-Skript (CCU3/OpenCCU)
HM-Skript
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl -s -m 10 --digest -u 'BENUTZER:PASSWORT' 'http://KAMERA-IP/cam/realmonitor?channel=1&subtype=0'");

Quelle: cdn.shopify.com

Was per URL nicht geht

Push-Benachrichtigung an, Push-Benachrichtigung aus – laut Dokumentation gibt es dafür keinen URL-Befehl.

Modellreihen

  • Dahua IP-Kameras (Bullet/Dome/Eyeball)IPC-HFW, IPC-HDW, IPC-HDBW, IPC-EB
  • Dahua PTZ-/Speed-Dome-KamerasSD, PTZ
  • Dahua mit Weißlicht/Sirene (Full-Color, TiOC, Active Deterrence)-PV, -IL, -LED, TiOC
  • Amcrest IP-Kameras (OEM, gleiche CGI-API)IP2M, IP4M, IP5M, IP8M, AD410

Häufige Fragen

Wie melde ich mich bei Dahua-Befehlen an?

Dahua nutzt Digest. Im Generator wird die passende Anmeldung automatisch in den curl- und CCU-Befehl eingebaut.

Funktionieren die Befehle mit jedem Dahua-Modell?

Nicht immer. Je Befehl steht dabei, für welche Modellreihe und Firmware er dokumentiert ist. Im Zweifel den Befehl einmal im Browser oder per curl testen und die Antwort der Kamera prüfen.

Quellen

Etwas funktioniert bei dir anders? Gib uns Bescheid – wir prüfen jede Meldung.