Welcher Aktor ist noch geschaltet? (HomeMatic)

Das folgende Skript listet alle Aktoren auf, die noch eingeschaltet sind. So kann man z.B. nach einem Szenario „Wir gehen jetzt schlafen“ überprüfen, ob wirklich alle Schaltbefehle durchgeführt worden sind. In unserem Beispiel für „HomeMatic“ ist die dazu benötigte Modul-ID bereits im Skript eingetragen. Wie man IDs von anderen Systemen ermittelt, ist in unserer Dokumentation unterIPS_GetModuleList beschrieben.
In der ersten Foreach-Schleife wird nach allen HomeMatic-Devices gesucht und in der zweiten nach deren Unterobjekte.Der Zustand eines Aktors wird in der Variablen hinterlegt. Er kann mit Hilfe desObject-Identifikator überprüft werden – beim HomeMatic nennt sich dieser „STATE“. In der ersten IF-Anweisung wird hiernach gesucht und in der zweiten nach allen Aktoren, die eingeschalten sind (True). Dabei sind zwei Dinge zu beachten: Tür- Fensterkontakte können ebenfalls den ObjectIdent „STATE“ besitzen. Hier muss die Eigenschaft „Benutze Standartaktion“ deaktiviert werden. Rauchmelder besitzen ebenfalls den ObjectIdent „STATE“. Um diese ebenfalls aus der Suche auszuschließen wird noch eine dritte IF-Anweisung benötigt. Weitere Hinweise hierzu findet ihr hier IPS_GetVariable

foreach(IPS_GetInstanceListByModuleID("{EE4A81C6-5C90-4DB7-AD2F-F6BBD521412E}") as $instance) {
	foreach(IPS_GetChildrenIDs($instance) as $id) {
		$wert = IPS_GetObject($id);
   	if ($wert['ObjectIdent'] == "STATE"){
   		if (GetValue($id) == True){
            $wert = IPS_GetVariable($id);
				if ($wert['VariableAction'] > 0 && $wert['VariableCustomAction'] != 1){
	   	   	  echo "Aktor '".IPS_GetName($instance);
	   	   	  echo "' mit der ID: ".$id . PHP_EOL;
				}
			}
		}
	}
}

Die Ausgabe könnte z.B. so aussehen:

Aktor ‚Schreibtischlampe‘ mit der ID: 36261
Aktor ‚PowerMeterSwitch‘ mit der ID: 10676
Aktor ‚E-Heiz Fußboden‘ mit der ID: 25335
Aktor ‚Tischlampe‘ mit der ID: 40366
Aktor ‚Wire Switch‘ mit der ID: 47960
Aktor ‚WP 75% Leistung‘ mit der ID: 32727

MST

und das ganze war meine idee, als wir uns damals auf der light&bulding getroffen haben :slight_smile:

sehr schön umgesetzt :slight_smile:
Das ist bei mir noch sehr viel umständlicher im moment.

Im Webfront sieht das zum Beispiel so aus :

LG
Sascha