Code mit HTTP-Request auf non-blocking umstellen

Begonnen von jailbreaker07, 05 März 2018, 11:55:38

Vorheriges Thema - Nächstes Thema

jailbreaker07

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

Otto123

Hi Thorsten,

im Forum gefunden: statt GetHttpFile besser HttpUtils_NonblockingGet
https://wiki.fhem.de/wiki/HttpUtils

Vielleicht kommst Du so weiter.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

jailbreaker07

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

Otto123

#3
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

#4

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jailbreaker07

Mit dem Aufruf löse ich in Automagic einen Flow aus....


Gesendet von iPhone mit Tapatalk

marvin78

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.

jailbreaker07

Die Daten die zurückkommen werden nicht verarbeitet...  Ein Ok als Feedback währe aber nicht verkehrt....


Gesendet von iPhone mit Tapatalk

CoolTux

Und AMAD möchtest Du dafür nicht nutzen? Das aktuelle AMAD kann Fotos über die Kamera machen. Darum geht es ja anscheinend oder?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jailbreaker07

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

CoolTux

#10
Ach so, na dann so

HttpUtils_NonblockingGet({url => "http://192.168.1.169:8080/automagic/Kamera",timeout => 5, callback => sub($$$){ ... })

      $          $      $
$param, $err, $data
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jailbreaker07

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

CoolTux

Du musst curl mit Optionen aufrufen das er solche Meldungen nicht bringt. Musst mal bisschen schauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

jailbreaker07

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