Code: Alles auswählen
curl --user user:passwort http://192.168.1.99/mjpeg/snap.cgi?chn=0 --digest -o /home/pi/virtual/webcam1.jpg >/dev/null 2>&1 >/dev/null 2>&1 >/dev/null 2>&1 >/dev/null 2>&1 >/dev/null 2>&1 >/dev/null 2>&1
Das wird mit cron jede Minute aufgerufen und funktioniert bis auf ein paar Kleinigkeiten, so wird zum Beispiel bei fehlender Kamera statt des jpgs eine Textdatei geschrieben. Nun möchte ich die Bilder mit einem Freepascal-Programm abholen, um damit etwas flexibler zu sein: Zeitstempel zufügen, als Bildserie abspeichern, bei fehlender Verbindung Fehler loggen...
Deswegen habe ich mir was mit fphttpclient zusammengebastelt. Ich habe die Prozedur zum Senden von Bildern per POST versucht herumzudrehen, um die Bilder zu empfangen, aber ich komme da nicht weiter:
Code: Alles auswählen
procedure Tcam.ReadCamera();
var
httpClient : TFPHTTPClient;
param : TStringList;
respo : TStringStream;
fname : string;
url : string;
txt : string = '';
begin
url := 'http://192.168.1.99/mjpeg/snap.cgi';
fname := '/home/pi/virtual/webcam1.jpg';
try
httpClient := TFPHTTPClient.Create(nil);
try
param := TStringList.Create();
param.Values['user'] := 'user';
param.Values['pwd'] := 'passwort';
param.Values['chn'] := '0';
respo := TStringStream.Create('');
==> wie hier weiter?
httpClient.FileFormPost(url, param, 'photo', fname, respo);
respo.Destroy;
param.Free;
except
log.Message('Fehler beim Senden');
end;
finally
httpClient.Free;
end;
end;
end;
Ich denke, ich bräuchte was, um an der markierten Stelle die Anfrage rauszuschicken, auf ein Response zu warten, wenn dabei eine Fehlermeldung kommt darauf zu reagieren und wenn ein Bild empfangen wird, sollte das in respo liegen und ich könnte das als Datei abspeichern.
Nur was wäre hiervon geeignet: https://svn.freepascal.org/svn/fpc/tags/release_3_0_0/packages/fcl-web/src/base/fphttpclient.pp? FileFormPost, FormPost, HTTPMethod?