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…
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?
paresy
7. März 2016 um 22:00
2
Bayaro
7. März 2016 um 22:00
3
Abend!
Ich glaube du suchst das hier (in Kombination mit der Info von Paresy)
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";
}
?>