FHEM Forum

FHEM => Automatisierung => Thema gestartet von: DieterL am 14 Juli 2015, 08:19:10

Titel: Syntaxfrage GetHttpFile
Beitrag von: DieterL am 14 Juli 2015, 08:19:10
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 ;)
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: rudolfkoenig am 14 Juli 2015, 09:43:50
"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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: DieterL am 14 Juli 2015, 10:02:27
Rudolf, recht herzlichen Dank......werd´ es heute abend ausprobieren
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: FranzB94 am 14 Juli 2015, 13:45:33
Hi!

Ich tippe mal, das unter http://182.178.15.77 keiner antworten wird!
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: DieterL am 14 Juli 2015, 14:26:21
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)
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: Hollo am 14 Juli 2015, 17:51:52
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: rudolfkoenig am 14 Juli 2015, 18:19:49
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: DieterL am 14 Juli 2015, 18:54:59
super Rudolf....hab es umgesetzt funktioniert natürlich !!!!
Vielen, vielen Dank
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: karl0123 am 14 Juli 2015, 20:44:03
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: rudolfkoenig am 14 Juli 2015, 21:36:28

...
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: karl0123 am 15 Juli 2015, 07:49:34
Vielen Dank. Das werde ich probieren.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: karl0123 am 15 Juli 2015, 08:33:59
Eine Frage habe ich noch dazu: Kann man an die Callback-Funktion weitere Parameter übergeben?
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: Hollo am 15 Juli 2015, 08:45:31
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: rudolfkoenig am 15 Juli 2015, 09:37:04
@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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: kalle322 am 24 April 2018, 20:50:19
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: rudolfkoenig am 24 April 2018, 21:20:39
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.
Titel: Antw:Syntaxfrage GetHttpFile
Beitrag von: kalle322 am 26 April 2018, 19:31:55
Hat geklappt nachdem ich das @ maskiert habe. Vielen Dank