Hallo,
Mit den unten stehenden Code schaltet ich bei drei Tablets per HTTP Request auf Kameraansicht um. Bei einen Tab geht das noch ganz gut, bei dreien jedoch wird fhem für einige Sekunden komplett blockiert....
Wie stelle ich den unten stehen Code auf non-blocking um?
([Kamera_Ost] eq "on" or [Kamera_West] eq "on")
{GetFileFromURL("http://192.168.1.169:8080/automagic/Kamera")}
{GetFileFromURL("http://192.168.1.139:8080/automagic/Kamera")}
{GetFileFromURL("http://192.168.1.136:8080/automagic/Kamera")}
DOELSEIF
([Kamera_Ost] eq "off" and [Kamera_West] eq "off")
{GetFileFromURL("http://192.168.1.169:8080/automagic/Wetter")}
{GetFileFromURL("http://192.168.1.139:8080/automagic/Wetter")}
{GetFileFromURL("http://192.168.1.136:8080/automagic/Wetter")}
Vielen Dank für die Hilfe
Gruß
Thorsten
Gesendet von iPhone mit Tapatalk
Hi Thorsten,
im Forum gefunden: statt GetHttpFile besser HttpUtils_NonblockingGet
https://wiki.fhem.de/wiki/HttpUtils
Vielleicht kommst Du so weiter.
Gruß Otto
Hallo,
Das habe ich auch schon gefunden.... nur weis ich nicht wie ich das anwenden
muss..... So geht es schonmal nicht....:
([Kamera_Ost] eq "on" or [Kamera_West] eq "on")
{HttpUtils_NonblockingGet("http://192.168.1.169:8080/automagic/Kamera")}
Gesendet von iPhone mit Tapatalk
Kann ich Dir leider auch nicht exakt sagen, aber in meinem Link ist sogar BeispielCode - ja, der ist viel aufwendiger. Aber einmal gemacht und gut, schreibst Du einfach in die 99_myUtils.pm
Oder Du nimmst wie viele einfach curl oder wget und einen Systemaufruf in "", der ist non blocking.
("curl http://192.168.1.169:8080/automagic/Kamera")
Ich bin etwas unsicher wegen dem Syntax im DOIF, aber probieren ...
Gruß Otto
HttpUtils_NonblockingGet({url => "http://192.168.1.169:8080/automagic/Kamera",timeout => 15, callback => sub($$$){ ... })
Versuche das mal. Die Frage ist ja was passiert dann mit den Daten. Im Moment wird die url aufgerufen und das war es. callback ist die Funktion in der drin steht was mit den Daten passieren soll. Hier muss also wohl noch was gemacht werden.
Mit dem Aufruf löse ich in Automagic einen Flow aus....
Gesendet von iPhone mit Tapatalk
Die Frage zielte darauf ab, ob du dann auch Daten zurück bekommst, die du verarbeiten musst/kannst (sowas, wie ein 'ok'). Das würde im Callback geschehen.
Die Daten die zurückkommen werden nicht verarbeitet... Ein Ok als Feedback währe aber nicht verkehrt....
Gesendet von iPhone mit Tapatalk
Und AMAD möchtest Du dafür nicht nutzen? Das aktuelle AMAD kann Fotos über die Kamera machen. Darum geht es ja anscheinend oder?
Im Tablett wir ein Live Bild der Kameras eingeblendet die viewer App dafür wird dann halt über automagic gestartet... brauche halt nur einen Aufruf der non-blockin ist... die nächste Baustelle wird dann Pushover und Pushbullet sein.... die blockieren ja auch ziemlich...
Gesendet von iPhone mit Tapatalk
Ach so, na dann so
HttpUtils_NonblockingGet({url => "http://192.168.1.169:8080/automagic/Kamera",timeout => 5, callback => sub($$$){ ... })
$ $ $
$param, $err, $data
Zitat von: Otto123 am 05 März 2018, 13:52:26
Kann ich Dir leider auch nicht exakt sagen, aber in meinem Link ist sogar BeispielCode - ja, der ist viel aufwendiger. Aber einmal gemacht und gut, schreibst Du einfach in die 99_myUtils.pm
Oder Du nimmst wie viele einfach curl oder wget und einen Systemaufruf in "", der ist non blocking.
("curl http://192.168.1.169:8080/automagic/Kamera")
Ich bin etwas unsicher wegen dem Syntax im DOIF, aber probieren ...
Gruß Otto
So funktioniert das ganze ohne blocking, jedoch kommt bei jeden Aufruf folgendes im Logfile:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Verbose habe ich im ausführenden DOIF auf 0 gestellt, aber die Meldung kommt immer noch....
Gruß
Thorsten
Du musst curl mit Optionen aufrufen das er solche Meldungen nicht bringt. Musst mal bisschen schauen.
-s für Silent dürfte passen.
Ich habe jetzt die wget variante genommen...
([Kamera_Ost] eq "on" or [Kamera_West] eq "on")
("wget -q http://192.168.1.139:8080/automagic/Kamera")
So bleibt das Logfile schön leer.... und kein blocking.... vielen dank für die Unterstüzung