CUxD stürzt ab, bei Abfrage an Shelly wenn im WLAN nicht erreichbar.

  • Liebe Forenmitglieder brauche Hilfe,

    CCU3 3.53.3, CUxD 2.4.4, Shelly1/PM

    habe Shelly1/PM eingebunden, funktioniert wenn WLan vorhanden ist sehr gut.

    Den Script frage ich alle 30 sek ab.

    Nur wenn der Shelly nicht erreichbar ist, dann funktioniert die Abfrage mit diesem Code nicht immer.

    Antwort dauert oft 20sek und mehr.

    CuxD hängt sich auf und muss zurückgesetzt werden.

    Derzeit habe ich Cuxd-Ping (CuXD-Ping-CUX2803001) in Verwendung.

    Ich frage alle 30 sek mit CuxD-Ping ab und starte dann über

    UNREACH-CTR=0 einen Script wo ich meine Auswertung mache.

    Das funktioniert!

    Frage:

    Was muss ich in dem Script ändern, damit bei nicht erreichen der Shelly,

    nicht immer wieder CuxD abstürzt.

    Wenn es so funktionieren könnte wie in dem Script,

    dann kann ich mir den CuxD-Ping ersparen.

    Script der Probleme macht: ##################################################

    !Script alle 30 sek abfagen

    string url = "http://xxx.xxx.xxx.xxx";

    !CUxD Verweis

    string cux = "CUxD.CUX2801001:3."; !Kanal 1 und 2 für andere Abfragen benutzt

    string urlges = url # "/status";

    !Shelly abfragen

    dom.GetObject(cux # "CMD_SETS").State("wget -q -O - '"#urlges#"'");

    dom.GetObject(cux # "CMD_QUERY_RET").State(1);

    string Antwort = dom.GetObject(cux # "CMD_RETS").State();

    dom.GetObject(cux # "CMD_SETS").State("0");

    WriteLine("Antwort= " # Antwort);

    WriteLine("");

    !ab hier Auswertung der Antwort

    if (Antwort > "")

    { !Shelly erreichbar

    WriteLine("Shelly erreichbar");

    }

    else

    { !Shelly nicht erreichbar

    !hier werden Systemvareablen auf 0 gesetzt

    WriteLine("Shelly nicht erreichbar");

    }

    !##########################################################################

    • Offizieller Beitrag

    Hallo und willkommen im Forum Hreina . :)

    Versuch's mal so:

    Viel Erfolg. :thumbup:

  • Danke herzlichst, werde es mal einbauen und beobachten.

    Script geändert:

    string ip = "xxx.xxx.xxx.xxx";

    string stderr;

    string stdout;

    integer Status;

    system.Exec("ping -c 1 '"#ip#"'", &stdout, &stderr);

    Status = stdout.Find("ms");

    WriteLine("Status= " # Status);

    if (Status == -1)

    {

    WriteLine("Shelly offline");

    }

    else

    {

    WriteLine("Shelly online");

    }