Fehlerhafte IO Instanzen in einer Variable ausgeben Skript?

Suche ein Script mit dem ich zyklisch abfragen kann ob eine IO Instanz einen Fehler hat.
Da im neuen IPS4 letztens mein USB 1Wire Controller abgestürzt ist und ich es zwei Tage nicht gemerkt habe.
OK er ist nur zum Temp Loggen da. Nix wichtiges. Aber trotztdem… :slight_smile:

Hiermit bekomm ich eine Liste aller Instanzen

foreach(IPS_GetInstanceList() as $mid)

{
	$name = IPS_GetName ($mid);
    echo "$mid  $name 
";
}

Allerdings bräuchte ich nur die die in den IO stehen.

Damit bekomme ich den Status der einzelnen Instanz

function Statusabfrage ($ID){
	$Array 		= IPS_GetInstance($ID);
	$Rueckgabe 	= $Array["InstanceStatus"];

		if ($Rueckgabe >= 200){
			$Rueckgabe = "X";
			}else{
			$Rueckgabe = "_";
			}
			
return $Rueckgabe;
}




echo Statusabfrage (57568 /*[Serial COM3 USB FTDI Keller]*/ );

jetzt bräuchte ich nur noch den Filter für IO Instanzen und dann hätte ich es schon.

Weis da jemand rat?

IPS_GetInstance — IP-Symcon :: Automatisierungssoftware

ModuleType -> 1 (IPS_GetModule — IP-Symcon :: Automatisierungssoftware)

paresy

Abend!

Ich glaube du suchst das hier (in Kombination mit der Info von Paresy) :slight_smile:
Spät-Frühlings-Putz IPS bevor die Version 4 kommt

Grüße,
Chris

Danke ich schau mal dass ich das hier raus finde

https://www.symcon.de/service/dokumentation/befehlsreferenz/modulverwaltung/ips-getmodule/

ModuleType integer Type des Moduls (0: Kern, 1: I/O, 2: Splitter, 3: Gerät, 4: Konfigurator)

Meine Vorabversion für heute… nach dem Motto Quick and Dirty

<?

function Statusabfrage ($ID){
	$Array 		= IPS_GetInstance($ID);
	$Rueckgabe 	= $Array["InstanceStatus"];
	$Typ 			= $Array["ModuleInfo"]["ModuleType"];

	if ($Typ == 1){
	   // Typ ist IO Instanz

		if ($Rueckgabe >= 200){
			// Instanz hat einen Fehler
			$Rueckgabe = "X";
			
			}else{
			// Instanz ist OK
			$Rueckgabe = "_";
			}

		}else{
		// Typ ist keine IO Instanz
		$Rueckgabe = "_";
		}

return $Rueckgabe;
}

$Zaehler = 0;

foreach(IPS_GetInstanceList() as $mid)
	{
	if(Statusabfrage ($mid) == "_"){
	}else{
	$Zaehler = $Zaehler + 1;
	}
}

if ($Zaehler == 0 ){
	echo "Alles OK";
	}else{
	echo "Fehlerhafte Instanz";
}


?>