guten morgen allerseits.....
ich habe dies im Einsatz:
define HeizungKuechewSprache notify Heiz_Kue:on {GetHttpFile("182.178.15.77", "/Heiz_Kueche_an.php") }
dies blockiert FHEM bis das Script abgearbeitet ist.
wie müsste ich dies denn anpassen das dies nicht der fall ist !?
Vielen Dank für jeglichen Input ;)
"wget -q -O /dev/null http://182.178.15.77/Heiz_Kueche_an.php"
oder
{ HttpUtils_NonblockingGet( { url=>"http://182.178.15.77/Heiz_Kueche_an.php", callback=>sub() { } }) }
Falls man an Ergebnis/Fehler interessiert ist, dann sollte man sub(){} z.Bsp. durch folgendes ersetzen:
sub($$$) { my ($hash, $err, $data) = @_;; Log 1, "$err/$data" }
Natuerlich kann man hier eine "echte" Funktion mit Namen angeben.
Rudolf, recht herzlichen Dank......werd´ es heute abend ausprobieren
Hi!
Ich tippe mal, das unter http://182.178.15.77 keiner antworten wird!
Zitat von: FranzB94 am 14 Juli 2015, 13:45:33
Ich tippe mal, das unter http://182.178.15.77 keiner antworten wird!
oh, entschuldige...ich werde beim nächsten post meine IP Adresse hier hinterlegen 8)
Auch der System-Aufruf von wget kann scheinbar im Fehlerfall FHEM blockieren.
Hilfreich könnte daher im Aufruf ein zusätzliches "-T 10" (Timeout/Abbruch nach 10 Sekunden) sein.
ZitatAuch der System-Aufruf von wget kann scheinbar im Fehlerfall FHEM blockieren.
Was genau heisst scheinbar?
Das "" startet die Befehle im Hintergrund, und sollte deswegen nicht blockieren.
super Rudolf....hab es umgesetzt funktioniert natürlich !!!!
Vielen, vielen Dank
Ich möchte dafür keinen neuen Thread eröffnen. Kann mit jemand ein Beispiel geben, wie ich mit HttpUtils_NonblockingGet ein Bild (z.B. von einer Kamera - JPG) holen und abspeichern kann? Wenn ich das bspw. so mache:
my $param = {
url => $camURI,
timeout => 5,
callback => sub() { },
};
my($err,$data) = HttpUtils_NonblockingGet($param);
enthält $data kein Bild, dass ich abspeichern könnte. Ich habe den Eindruck, ich stehe hier auf dem Schlauch.
...
HttpUtils_NonblockingGet({url=>$camURI, timeout=>5, callback=>\&StoreFile});
...
sub
StoreFile($$$)
{
my ($hash, $err, $data) = @_;
open(FH, ">File.jpg");
print FH $data;
close(FH);
}
StoreFile wird _asynchron_, irgendwannmal ausgefuehrt. Auf HttpUtils_NonblockingGet
zu warten ist sinnlos, sonst waere es blocking.
Fehlerabfrage nicht vergessen, das habe ich ausgelassen, um das Beispiel verstaendlich zu halten.
Vielen Dank. Das werde ich probieren.
Eine Frage habe ich noch dazu: Kann man an die Callback-Funktion weitere Parameter übergeben?
Zitat von: rudolfkoenig am 14 Juli 2015, 18:19:49
Was genau heisst scheinbar?
Das "" startet die Befehle im Hintergrund, und sollte deswegen nicht blockieren.
Ich nutze wget für API-Befehle an meine alte dBox.
Wenn die mal zickt, habe ich mehrfach Probleme gehabt, dass die weitere Abarbeitung von FHEM stockte.
Da ich das noch nicht genau verifizieren konnte, habe ich "scheinbar" geschrieben.
@karl0123: Dafuer ist $hash da. Das ist das Argument zu HttpUtils_NonblockingGet, und kann beliebig viele Eintraege haben. Man kann es auch umdrehen, und man nimmt z.Bsp. den device hash ($defs{MeinGeraet}, und packt die vom HttpUtils_NonblockingGet benoetigten Eintraege dazu.
@Hollo: wenn man wget mit `` oder system() startet, ohne es ins Hintergrund zu schicken, dann ist das klar, wget kann auch nicht zaubern.
Hallo,
ich versuche den Alarm einer instar Kamera zu aktivieren. Leider ohne Erfolg.
Wget Command funktioniert im Terminal jedoch nicht wenn ich den Schalter auf On stelle. Script wird aufgerufen.
KameraAlarm:on { "wget -q -O '/dev/null' 'http://admin:instar@192.168.155.41:80/cgi-bin/hi3510/param.cgi?cmd=setmdattr&-enable=0&-name=1'" }
ohne die ' ' bringt wget im Terminal einen Fehler.
habe auch über HttpUtils_NonblockingGet veruscht, auch ohne Erfolg
KameraAlarm:on { HttpUtils_NonblockingGet( { url=>"http://admin:instar@192.168.155.41:80/cgi-bin/hi3510/param.cgi?cmd=setmdattr&-enable=1&-name=1", callback=>sub() { } })
Der Link funktioneirt auch wenn ich den im Browser eingebe.
Kann mir jemand sagen, wo der Fehler liegt ?
Vielen Dank schon mal im voraus.
Bei beiden Varianten muss man das @ schuetzen, ich wuerde " und ' vertauschen.
Und falls HttpUtils_NonblockingGet immer noch nicht klappt, dann ein "attr global verbose 5" Mitschnitt hier anhaengen.
Hat geklappt nachdem ich das @ maskiert habe. Vielen Dank