Geräte im Skript nach Raum und Gewerk suchen

Einrichtung, Anschluss und Programmierung der HomeMatic CCU

Moderator: Co-Administratoren

Antworten
Gerti
Beiträge: 3029
Registriert: 28.01.2016, 18:06
System: CCU
Wohnort: Hürth
Hat sich bedankt: 16 Mal
Danksagung erhalten: 270 Mal

Geräte im Skript nach Raum und Gewerk suchen

Beitrag von Gerti » 19.02.2017, 17:31

Hi!

Ich möchte in einem Skript alle eingeschalteten Geräte zählen, die in einer bestimmten Etage und dem Gewerk Licht sind.
Dabei gehe ich durch alle Etagen (Keller, Erdgeschoss, Obergeschoss, Dachgeschoss), suche nach möglichen Aktoren (Schaltaktoren bzw. Dimmer) und prüfe dann, ob diese im entsprechenden Gewerk sind. Das Script wird noch so erweitert, dass jeweils Systemvariablen für jede Etage mit der Anzahl der eingeschalteten Lichter belegt werden (ist im Code noch nicht drin).

Grundsätzlich funktioniert mein Skript auch, aber vermutlich kann man es noch optimieren.
Daher meine Frage/Bitte an die Skriptprofis, ob es einen eleganteren Weg gibt?

Code: Alles auswählen

! Eingeschaltete Lichter zählen
string temp_f = "Keller\tErdgeschoss\tObergeschoss\tDachgeschoss";
string temp_g;
foreach (temp_g, temp_f) {
  WriteLine("Suche in "# temp_g);
  var temp_a = dom.GetObject(temp_g);
  string temp_b;
  integer temp_c;
  temp_c = 0;
  
  foreach(temp_b, temp_a.EnumUsedIDs())
  { 
    var temp_d = dom.GetObject(temp_b);
    if (temp_d.IsTypeOf(OT_CHANNEL))
    {
      var temp_e = dom.GetObject(temp_d.Device());
      if ((temp_e.HssType() == "HM-LC-Sw1PBU-FM") || (temp_e.HssType() == "HM-LC-Sw1-FM") || (temp_e.HssType() == "HM-LC-Sw2-FM") || (temp_e.HssType() == "HM-LC-Dim1TPBU-FM"))
      {
        WriteLine("Gerät gefunden");
        string temp_h;
        foreach(temp_h, temp_d.ChnFunction()) {
          var temp_i = dom.GetObject(temp_h);
          WriteLine(temp_i.Name());
          if (((temp_i.Name() == "Licht") || (temp_i.Name() == "${funcLight}") ) && (temp_d.State() != 0) ){
            temp_c = temp_c + 1.00;
          }
        }
      }
    }
  }
  WriteLine("Gefunden: "# temp_c);
}
Gruß und Danke,
Gerti

Antworten

Zurück zu „HomeMatic Zentrale (CCU / CCU2 / CCU3 / Charly)“