Fehlerhafte IO Instanzen reaktivieren?

Ich habe gelegentlich das Problem, dass sobald mir im Netzwerk irgendwelche Geräte mal wegbrechen, dass dann zum Beispiel die IO-Instanzen als fehlerhaft markiert werden. Recht häufig passiert das beim Clientsocket für den Modbus TCP Gateway zu meinem Energiezähler im Keller.
Es wäre ja eigentlich schön, wenn die dann, sobald die Verbindung wieder steht von allein aktiv werden würden. Tun sie aber bei mir nicht.
Gibt es irgend ein Script, was mir alle fehlerhaften IO-Instanzen anzeigt und diese versucht, wieder zu aktivieren?

Das sollten die aber tatsächlich automatisch. Werden die I/O Instanzen auch rot markiert? Oder wo genau ist dann der Fehler zu sehen?

paresy

Moin,
Meine Logitech-Hubs melden sich als fehlerhaft und dann dauert es X Sekunden (X = 30 oder mehr) bis versucht wird IO wieder zu öffnen. Da mir X Sekunden zu lange war benutze ich Events und wenn sich der Status ändert wird eines meiner Scripte aufgerufen. Das Script für meine Hubs sieht so aus:

<?php
// Boolean ob Script schon aktiv ist um mehrfache Starts zu unterbinden
if (GetValue(29623)) return;
// warten falls sich der Status wieder geändert hat
IPS_Sleep(100);
// Status der Instanz holen
$instance = IPS_GetInstance(52329);
$status = $instance['InstanceStatus'];
// wenn kein Fehler vorliegt script verlassen
if ($status < 200) return;
// aktiv status vom Script setzen
SetValue(29623, true);
//maximal 5 mal versuchen IO zu reaktivieren
$count = 0;
while ($count++ < 5){
// IO schließen
    @IPS_SetProperty(52329, "Open", false);
    @IPS_ApplyChanges(52329);
// kurz warten, ich weiß nicht ob das nötig wäre
    IPS_Sleep(50);
// IO wieder öffnen
    @IPS_SetProperty(52329, "Open", true);
    @IPS_ApplyChanges(52329);
// kurz warten, ich weiß nicht ob das nötig wäre
    IPS_Sleep(50);
// IO Status abfragen
    $instance = IPS_GetInstance(52329);
    $status = $instance['InstanceStatus'];
// wenn kein Fehler dann aktiv Status vom Script auf false und Script verlassen
    if ($status < 200){
        SetValue(29623, false);
        return;
    }
}
// Wenn es nach 5 Mal nicht geklappt hat Eintrag ins Logfile
IPS_RunScriptEx(59691 , Array("SENDER" => "RBsoft", "Betreff" => "SZ2 Hub IO", "Text" => "Fehler", "Sprache" => 0, "Mail" => 0, "Enigma2" => 0, "LogFile" => 1));
//aktiv Status vom Script auf false und Script verlassen
SetValue(29623, false);
?>

Warum sich die Hub-Instanzen so verhalten ist unklar. Es sind TCP XMPP Verbindungen. Es war so seit ich vor 3 Jahren mit IPS angefangen habe.

Ralf

1 „Gefällt mir“