Seite 1 von 1

[GELÖST] Logging von Gruppenmitgliedern

Verfasst: 15. Jan 2023 12:37
von oliverbaush
Moin zusammen,

wir haben unterschiedliche Solltemperaturen in der Wohnung. Dazu gibt es je Solltemperatur eine Gruppe, in die ich die Items "Solltemperatur" entsprechend eingetrichet sind. Über eine Rule wird mit einem SendCommand das ganze gesetzt. Soweit so gut.

Jetzt würde ich gerne im Logfile sehen welche Mitglieder in einer Gruppe sind, ohne die Items statisch zu hinterlegen. Wie kommt man an die Info ran?

Code: Alles auswählen

var soll22 = 22+offset
var soll23 = 23+offset
var soll24 = 24+offset

if (away == "OFF"){
  tmp22 = itemRegistry.getItem('Thermostat22').getState();
  tmp23 = itemRegistry.getItem('Thermostat23').getState();
  tmp24 = itemRegistry.getItem('Thermostat24').getState();
  if (tmp22 != soll22){
    events.sendCommand('Thermostat22', 22+offset );
    logger.info("Gruppe Thermostat22 auf " + soll22 + "°C gesetzt");
    // hier sollte eigentlich ermittelt werden, welche items in der Gruppe sind
    //logger.info("Heizung Wohnzimmer hochgefahren auf " + soll22 + "°C");
    //logger.info("Heizung Bad hochgefahren auf " + soll22 + "°C" );
    //logger.info("Heizung Flur hochgefahren auf " + soll22 + "°C");
    //logger.info("Heizung Küche hochgefahren auf " + soll22 + "°C");
  }

Re: Logging von Gruppenmitgliedern

Verfasst: 15. Jan 2023 15:14
von Harka
Moin,
Du ermittelst die Gruppen des Items (das Thing zählt auch), durchläufts sie mit einer Suche (hier nach "g_" für Gruppe) und anschließend lässt Du alle Mitglieder der Gruppe auflisten.

Code: Alles auswählen

Ausloeser = event.itemName;
Gruppen = Java.from(itemRegistry.getItem(Ausloeser).getGroupNames());
for (var i_index in Gruppen) {
  i = Gruppen[i_index];
  if (i.indexOf('g_') + 1 > 0) {
    // logger.warn(i);
    var j_list = Java.from(itemRegistry.getItem(i).members);
    for (var j_index in j_list) {
      j = j_list[j_index];
      logger.warn(j.getName());
    }
  }
}

[Gelöst] Re: Logging von Gruppenmitgliedern

Verfasst: 15. Jan 2023 17:07
von oliverbaush
Harka hat geschrieben: 15. Jan 2023 15:14 Du ermittelst die Gruppen des Items (das Thing zählt auch), durchläufts sie mit einer Suche (hier nach "g_" für Gruppe) und anschließend lässt Du alle Mitglieder der Gruppe auflisten.
Moin Harka,
danke, ich hatte bei Blockly gespickt. Die Iteration ist tatsächlicht die Lösung :-)

Code: Alles auswählen

  var Raum22_list = Java.from(itemRegistry.getItem('Thermostat22').members);
  var Raum22;
  soll22 = 22+offset
  tmp22 = itemRegistry.getItem('Thermostat22').getState();
  
  if (tmp22 != soll22){
    events.sendCommand('Thermostat22', soll22);
    for (var Raum22_index in Raum22_list) {
      Raum22 = Raum22_list[Raum22_index];
      logger.info(Raum22.getName() + "auf " + soll22 + " °C gesetzt");
    }
  }