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 öffnenAlarmanlage scharf → Bewegungserkennung der Kamera einschalten
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)
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 öffnenJemand ist zu Hause → Bewegungserkennung ausschalten, keine Fehlalarme
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)
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
Aufnahme an
Im Generator öffnenAlarm oder Abwesenheit → Aufnahme starten bzw. Aufnahmeplan aktivieren
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)
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
Aufnahme aus
Im Generator öffnenAnwesend → Aufnahme stoppen bzw. Aufnahmeplan deaktivieren
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)
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
E-Mail-Alarm an
Im Generator öffnenUrlaub → Alarm-E-Mails mit Bild einschalten
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)
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 öffnenZurück → Alarm-E-Mails ausschalten
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)
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 öffnenBewegungsmelder an der Einfahrt löst aus → Kamera schwenkt auf die gespeicherte Position
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)
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 öffnenKamera per Taster oder Programm schrittweise bewegen
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)
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 öffnenKlingel gedrückt → aktuelles Bild abrufen und per Push oder Telegram verschicken
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)
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 öffnenJemand ist zu Hause → Kamera schaut weg bzw. Bild wird abgedeckt
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)
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 öffnenAlle sind weg → Kamera wieder scharf
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)
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 öffnenBewegungsmelder im Garten → Spotlight der Kamera einschalten
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)
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 öffnenSpotlight nach einigen Minuten wieder ausschalten
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)
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 öffnenEinbruchalarm der Homematic-Alarmanlage → Sirene der Kamera auslösen
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)
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
Neustart
Im Generator öffnenKamera hängt → per Programm neu starten
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)
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 öffnenLive-Bild in Dashboard, NAS oder Tablet einbinden
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)
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
- API of HTTP Protocol Specification V3.26 (2023-02-28), Amcrest-PDF
- Amcrest Support: Amcrest HTTP API SDK
- Amcrest HTTP Protocol API Specifications Rev. 2.12 (2017), Amcrest-S3
- DAHUA HTTP API FOR IPC&SD V1.40 (Kopie, nag.wiki)
Etwas funktioniert bei dir anders? Gib uns Bescheid – wir prüfen jede Meldung.