Frage D4s, Auslösen über Ethernet?

Thread Status
Hello, There was no answer in this thread for more than 30 days.
It can take a long time to get an up-to-date response or contact with relevant users.

24ThoR

NF Mitglied
Registriert
Hallo,
ich hab da folgendes Problem. Eine D4s soll per Kabel an einem Netzwerk angeschlossen werden und ereignisgesteuert (Bewegungsmeldung von einer Überwachungskamera) ausgelöst werden. Vorstellen könnte ich mir das per Batchdatei zu realisieren, die ersten Versuche laufen aber ins Leere weil nach dem senden der cgi Befehle per wget ein Authorisierungsfehler kommt. Hat jemand schon mal etwas ähnliches realisiert? Oder gibt es Vorschläge wie man so etwas sonst lösen könnte?
Vielen Dank schon mal.
 
Anzeigen
Vorstellen könnte ich mir das per Batchdatei zu realisieren, die ersten Versuche laufen aber ins Leere weil nach dem senden der cgi Befehle per wget ein Authorisierungsfehler kommt.

Wo liegt jetzt das eigentliche Problem, denn die Lösung Deines Problems beschreibst Du ja prinzipiell schon in Deiner Frage :nixweiss:?
 
Kommentar
Ich bekomme den Authorisierungsfehler nicht weg, Auch wenn ich die Anmeldeinformationen im HTTP Server der Kamera lösche, kommt (auch im IE) eine Anfrage. Die kann ich per cgi nicht bestätigen. Zumindest weiß ich nicht wie.
 
Kommentar
Ich bekomme den Authorisierungsfehler nicht weg, Auch wenn ich die Anmeldeinformationen im HTTP Server der Kamera lösche, kommt (auch im IE) eine Anfrage. Die kann ich per cgi nicht bestätigen. Zumindest weiß ich nicht wie.

Der Sinn und die Lösung besteht ja nicht im Deaktivieren der Anmeldung des Clients an der Kameras, sondern das der Client, in Deinem Fall also WGET, die Anmeldedaten bei jedem Aufruf mit an die Kamera übergibt. Und ja: WGET kann das ;).
 
Kommentar
Das hab ich vermutet, aber nicht gefunden wie das funktioniert. Hast Du einen Tipp wie das funktioniert oder wo ich das nachlesen kann?

edit:
Ich hab jetzt auch gefunden wie man die Anmeldeinformationen mitgibt und die Kamera schluckt den Login Befehl auch, aber den Befehl zum auslösen beantwortet sie mit einem 403 Fehler.
 
Kommentar
Ich hab jetzt auch gefunden wie man die Anmeldeinformationen mitgibt und die Kamera schluckt den Login Befehl auch, aber den Befehl zum auslösen beantwortet sie mit einem 403 Fehler.

Das Problem ist, dass der D4s-Webserver die Anmeldung nur einmal benötigt und die folgenden Anfragen nur noch per Session-Cookie authentifiziert. Die "403'er Forbidden"-Meldung bekommst Du dann folgerichtig auch deswegen, da in Deiner WGET-Anfrage einfach der Keks fehlt ;). Der "Authorization-Header" ist im übrigen sogar völlig überflüssig in der Anfrage und kann komplett weggelassen werden.

Frei in die Tastatur gehackt dürfte Dich folgendes auf den richtigen Weg bringen:

wget --save-cookies cookies.txt --post-data 'user=nikon&password=' http://D4s-IP/
wget --load-cookies cookies.txt -p http://D4s-IP/cgi/capstill?rec=on&af=on&_=1
 
Kommentar
Ich hab heute mal versucht Dein Vorschlag umzusetzen. Der cgi/capstill Befehl wird immer noch mit 403 beantwortet, wenn ich in den Cookie mal reinsehe, steht da aber auch nichts von der Authorisaton drin. Da ist zwar die Session ID drin, aber viel mehr nicht.
Ich habs dann weiter versucht mit keep-session-cookie und auth-no-challenge. alles ohne Erfolg.
Hast Du noch eine Idee wie man da weiterkommen könnte?
 
Kommentar
Ich hab heute mal versucht Dein Vorschlag umzusetzen. Der cgi/capstill Befehl wird immer noch mit 403 beantwortet, wenn ich in den Cookie mal reinsehe, steht da aber auch nichts von der Authorisaton drin. Da ist zwar die Session ID drin, aber viel mehr nicht.

Wenn Du die SessionID sehen solltest, dann funktioniert schon einmal Dein WGET-Script. Ob diese dann gültig ist, steht auf einem anderen Blatt.

Wie loggst Du Dich ein, per:

"http://D4s-IP/cgi/login"

oder

"http://D4s-IP/"

Bei letzterer URL könnte vermutlich die JavaScript-Abfrage bei WGET den Ärger erzeugen, bevor es zur Login-Seite geht. Der echte Cookie wird aber durch erste URL gesetzt, grumpf.
 
Kommentar
Ich habs auf beiden Wegen probiert. Im Cookie steht nur der folgende Text:

# HTTP cookie file.
# Generated by Wget on 2015-09-18 13:14:25.
# Edit at your own risk.

192.168.178.38 FALSE / FALSE 0 sessionid 97ffd60ab3971b34

Kann es sein das Wget einfach mit Java nicht umgehen kann?
 
Kommentar
Kann es sein das Wget einfach mit Java nicht umgehen kann?

WGET kann natürlich nicht mir JavaScript umgehen, aber das ist auch egal.

Ich habe mir das ganze Übel nun etwas genauer angesehen und ein wenig ins Protokoll gesehen. Scheinbar initialisiert die shoot.html noch einige Parameter intern per JavaScript in der D4s, aber das lies sich auch elegant lösen.

Nach Abruf folgender URLs löst die D4s dann brav aus, sofern man ihr bei weiteren Aufrufen den passenden Keks vom Login verabreicht :D:

"/"
"/top.html"
"/shoot.html"
"/cgi/getmodel?_=1442850297790"
"/cgi/chckmrs?_=1442850297793"
"/cgi/chckrgt?_=1442850297871"
"/cgi/dmndrgt?_=1442850299191"
"/cgi/mntrdpchgd?ope=start&_=1442850299494"
"/cgi/mntrdpchgd?ope=get&_=1"
"/cgi/capstill?rec=on&af=on&_=1"

Inwieweit der Parameter des URL-Aufrufs Kamera-spezifisch ist, kann ich nicht sagen, vermutlich sind da aber nur die Kamera-Einstellungen kodiert. Ich habe jetzt auch keine Lust die 307k JavaScript der D4s durch zu arbeiten ;). Die Werte kannst Du aber ohne weiteres im HTTP-Log/Debug Deines Browsers finden.

Eines noch: Der D4s-Webserver scheint bei Anmeldefehlern, bzw. bei falschen Abläufen, auch gerne einmal komplett auf "Forbidden" zu gehen. Aus- und Einschalten hilft dann für den nächsten Versuch ...
 
Kommentar
Ich bin jetzt dazu gekommen mein Skript mit den Empfehlungen mal neu zu schreiben und siehe da.... es funktioniert. Allerdings dauert es von der Bewegungserkennung durch die Überwachungskamera bis zur Auslösung der D4s knappe 3 Sekunden. Das passt nur in Ausnahmefällen mal um das gewünschte Objekt auch zu erwischen. Vielleicht kann ich noch irgendwo ein bisschen Zeit rausoptimieren.
Auf jeden Fall schon mal vielen Dank für die Hilfe. Alleine wäre ich wohl noch ziemlich lange am probieren gewesen.
 
Kommentar
Allerdings dauert es von der Bewegungserkennung durch die Überwachungskamera bis zur Auslösung der D4s knappe 3 Sekunden. Das passt nur in Ausnahmefällen mal um das gewünschte Objekt auch zu erwischen. Vielleicht kann ich noch irgendwo ein bisschen Zeit rausoptimieren.

Die Login-, Initialisierung- und Setup-Phase musst Du in jedem Fall nur einmal durchlaufen, zu mindestens bis die D4s die Verbindung trennt. Wenn die D4s einmal ausgelöst hat, dann reicht auch der Aufruf der "../capstill"-URL.
 
Kommentar
-Anzeige-
Zurück
Oben Unten