HttpUtils_NonblockingGet timeout inkrementieren

Begonnen von justme1968, 05 März 2018, 12:46:46

Vorheriges Thema - Nächstes Thema

justme1968

hallo rudi,

ich verwende HttpUtils_NonblockingGet um daten von einem (recht langsamen) arduino zu holen. hierbei kommen die daten über mehrere (bis viele) sekunden eingetröpfelt. nicht nur wegen der gesheindigekeit sondern auch da auf rund des wenigen speichers viele kleine pakete geschickt werden.

mit dem bisherigen timeout lässt sich das nicht besonders gut behandeln da ein kleiner timeout bei vielen daten nicht passt, ein großer timeout zwar passt, aber tatsächliche fehler zu spät bemerkt werden. auch ist der tatsächliche timeout wert schlecht zu bestimmen da die größe der antwort ziemlich variieren kann.

der folgende patch ergänzt eine incrementalTimout option mit dem der timeout jedes mal nach dem empfang von daten neu gestartet wird. so kann man mit einem recht kurzen timeout arbeiten. das passt sehr gut zum verhalten des arduino. die daten kommen zwar langsam, aber kontinuierlich.

ich könnte mir vorstellen das diese behandlung auch noch für andere embedded devices passt.

gruss
  andre

--- HttpUtils.pm (revision 16301)
+++ HttpUtils.pm (working copy)
@@ -574,6 +574,12 @@
         RemoveInternalTimer(\%timerHash);
         my ($err, $ret, $redirect) = HttpUtils_ParseAnswer($hash);
         $hash->{callback}($hash, $err, $ret) if(!$redirect);
+
+      } elsif( $hash->{incrementalTimout} ) {
+        #Log 5, "got data, incrementing timout for '$hash->{url}'";
+        RemoveInternalTimer(\%timerHash);
+        InternalTimer(gettimeofday()+$hash->{timeout},
+                      "HttpUtils_Err", \%timerHash);
       }
     };
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Danke, habs kurz getestet und eingecheckt, nur vorher ein "e" spendiert (incrementalTimeout).

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Markus Bloch

Hallo Andre,

könntest Du den Parameter im Wiki mit dokumentieren? Bevor ich was falsches schreibe.

Danke

Gruß
Markus
Developer für Module: YAMAHA_AVR, YAMAHA_BD, FB_CALLMONITOR, FB_CALLLIST, PRESENCE, Pushsafer, LGTV_IP12, version

aktives Mitglied des FHEM e.V. (Technik)

justme1968

hab mal was geschrieben. schau bitte ob es dir gefällt.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968