(beendet) WiFi timed out ESP8266; SUB HttpUtils_NonblockingGet

Begonnen von tgv_boost, 14 Juni 2020, 22:22:49

Vorheriges Thema - Nächstes Thema

tgv_boost

Hallo Gemeinde,
ich bastle immer noch an den sehr seltenen, aber nervenden "WiFi Timeouts" meiner diversen ESP8266 auf Arduino Basis.

Mittels "NonblockingGet" schicke ich ein Kommando ...
{ HttpUtils_NonblockingGet( { url=>"http://192.168.0.172:80/?=/Fauf", incrementalTimout=>"1", callback=>sub($$$) { my ($hash, $err, $data) = @_;; {if ("$err" eq "") {Log 1, "Fauf: ".("$data")} };; {if ("$err" ne "") {Log 1, "Fauf: ".("$err")} } }} )};;\

... alles fein, alles tut. Im Fehlerfall schreib ich $err ins Log und da tauchen dann eben "timed out" auf" und die Aktionen werden nicht ausgeführt. Seit ein paar Tagen prüfe ich noch "presence" alle 60 Sekunden für die entsprechenden Adressen und schreibe Ausfälle ebenfalls ins Log. Dort finde ich so 2-3 Mal am Tag für wechselnde Adressen kurzfristige "not present".
Mindestens zwei Möglichkeiten; entweder ich stelle das WiFi Problem der ESP8266 ab, oder ich baue eine Fehlerbehandlung.
Tendiere aber mittlerweile zu 2, ist auch die spannendere Variante. In einem anderen Beitrag hab ich hier im Forum schon mal nachgefragt, wie sich denn konkret eine SUBRoutine in HttpUtils_NonblockingGet "callback" gestalten lässt. Denke das wäre der richtige Ort für eine solche Fehlerbehandlung.

Zarte Ansätze hier ... endet aber in Fehlermeldung "can't use string as a SCALAR ref while "strict refs" in use"

define AZ_T2 notify JalousieAZ_T:.* {\
if (ReadingsVal("JalousieAZ_T","state","off") eq "off") {\
{HttpUtils_NonblockingGet({url=>"http://192.168.0.138:80/Tauf", callback=>\&CBF($$$)})};;\
}\
}


##############################################
# $Id: 99_myUtils.pm 21509 2020-03-25 11:20:51Z wst $
#
# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;

sub
myUtils_Initialize($$)
{
  my ($hash) = @_;
}

# Enter you functions below _this_ line.


#99_myUtils.pm

sub
CBF($$$)
{
my ($hash, $err, $data) = @_;
if($err eq "")
            {
Log 1, "AZ Tauf OK";
            } elsif($data ne "")   
          {
  Log 1, "AZ Tauf Error";
  Log 1, $err;
          }
}

1;


Freue mich auf Eure Kommentare und Ideen

Peteruser

Hallo,
habe das zu spät gesehen.
Habe hier bei mir ESP mit ESPEasy laufen, bei mir mit einer Rule.

On System#Boot do
timerSet,1,3600
endon
On timerstart do
timerSet,1,3600 //timer 1 wird für 60 Minuten 60x60=3600 gesetzt
endon
On timerstop do
timerSet,1,0 //timer 1 wird auf 0 Sekunden gesetzt
endon
On Rules#Timer=1 do
WifiDisconnect
WifiConnect
timerSet,1,3600
endon

Grüße Peter
Ubuntu+Debian FHEM + ESPEasy + Homematic + ConBee + DUROFERN