Prüfen ob ein oder zwei Scripte gerade ausgeführt werden

Ich habe ein SonOff S20 in IP-Symcon mit ESPeasy eingebunden.

Den „toogle“ ich per Webfront, heißt ich kann ihn ein/aus schalten, dazu nutze ich naturlemang Scripte.

Nun möchte ich natürlich auch erkennen, ob ich den SonOff mit dem Taster vor Ort geschaltet habe,
dazu frage ich per Json Decode den Status alle 10 Sek ab.

Das mache ich aber auch im Toogle Script um zu erkennen wo die Steckdose gerade steht.

Da die Laufzeit dieser Geschichte aber recht lang ist, funkt mir das Statusscript manchmal in den Zustand…

Nun will ich im Statusscript wissen ob gerade ein Schaltscript läuft um die Ausführung zu steuern.

Hat jemand ein Tipp wo ich suchen muß oder wie ich Das machen könnte?

Gruß Helmut

Noch zum schauen das Tooglescript, das Statusscript sind quasi die ersten Zeilen


 $json_string = Sys_GetURLContent("http://192.168.0.52/json");  
  //echo $json_string;
  $json = json_decode($json_string);  // $json_string in ein Objekt $json überführen.
 //var_dump($json->Sensors[1]->Relais); 
$Zustand = json_decode($json->Sensors[1]->Relais);
//echo $Zustand;
SetValueBoolean(19681 /*[Son Off S20 Steckdose 1\Zustand Son Off S20 Steckdose ADR 52]*/, $Zustand);
file_get_contents("http://192.168.0.52/control?cmd=event,!$Zustand");
  
setValueBoolean(19681 /*[Son Off S20 Steckdose 1\Zustand Son Off S20 Steckdose ADR 52]*/,!$Zustand);

Ohne jetzt Dein Skript genau anzusehen, für die Ermittlung welche Skripte gerade laufen können Dir die berüchtigten undokumentierten IPS-Funktionen

IPS_ScriptThreadExists
IPS_GetScriptThread
IPS_GetScriptThreads
IPS_GetScriptThreadList

helfen.


        foreach (IPS_GetScriptThreadList () as $lfdNr => $Nr) {
            $Par = IPS_GetScriptThread ($Nr);
            if ($Par['ScriptID']) 
               print_r (IPS_GetScriptThread ($Nr));
}

bringt Dir z.B. die Liste aller augenblicklich aktivenThreads

Array
(
    [ThreadID] => 7
    [ExecuteCount] => 34
    [StartTime] => 1521453277
    [Sender] => RunScript
    [FilePath] => scripts/BLEscan_Act.ips.php
    [ScriptID] => 49499
)
Array
(
    [ThreadID] => 6
    [ExecuteCount] => 31
    [StartTime] => 1521453417
    [Sender] => Execute
    [FilePath] => scripts/34718.ips.php
    [ScriptID] => 34718
)
Array
(
    [ThreadID] => 5
    [ExecuteCount] => 34
    [StartTime] => 1521453278
    [Sender] => RunScript
    [FilePath] => scripts/BLEscan_Act2.ips.php
    [ScriptID] => 54030
)

Hoffe, das hilft Dir weiter.

Nicht vergessen: Diese Funktionen sind undokumentiert und bleiben es auch. Wer sie nutzt tut es auf eigene Gefahr und Symcon nimmt sich das Recht diese jederzeit zu ändern, umzubenennen und wegfallen zu lassen. Deswegen sind die undokumentiert, weil es sie offiziell nicht gibt oder geben wird

Viele Grüsse
Harald