NEWS
DeviceCounter - Anzahl der Meldungen zusammenfassen
-
Hallo zusammen,
ich benutze folgendes Skript, was ich im Forum gefunden habe. Erst einmal vielen Dank an den mir unbekannten Verfasser.//Add device rules addDeviceCounter("lowbat", $('channel[state.id=*.LOWBAT]'), true); addDeviceCounter("sticky_unreach", $('channel[state.id=*.STICKY_UNREACH]'), true); addDeviceCounter("unreach", $('channel[state.id=*.UNREACH]'), true); addDeviceCounter("config_pending", $('channel[state.id=*.CONFIG_PENDING]'), true); //addDeviceCounter("open_windows", $('channel{TYPE=SHUTTER_CONTACT}[state.id=*.STATE]'), true); //addDeviceCounter("on_lights", $('channel{TYPE=DIMMER}[state.id=*.LEVEL]'), function(state){return state>0;}); //addDeviceCounter("open_shutters", $('channel{TYPE=BLIND}[state.id=*.LEVEL]'), function(state){return state>0;}); //addDeviceCounter("playing_music", $('channel[state.id=*audio-*.playing]'), true); /****************************************** * Code - do not change anything bellow this line * ******************************************/ function addDeviceCounter(name, selector, val_to_count) { //Total amount of devices found by selector var state_total = 'deviceCounter.' + name + '.total'; createState(state_total, 0); //List of devices that match condition var state_list = 'deviceCounter.' + name + '.list'; createState(state_list, ""); //Number of devices that match condition var state_counter = 'deviceCounter.' + name + '.counter'; createState(state_counter, 0); function countDevs(obj) { var d_count = 0; var d_list = []; selector.each(function (id, i) { var status = getState(id).val; var obj = getObject(id); if ((typeof val_to_count === 'function' && val_to_count(status)) || (typeof val_to_count === 'boolean' && val_to_count == status)) { //Get parent object var parentChannelId = id.slice(id.lastIndexOf(".")); var parentDevicelId = id.split(".").slice(0,-2).join("."); var deviceObject = getObject(parentDevicelId); //remember device name d_list.push(deviceObject.common.name); } ++d_count; // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status }); log(name + "(" + d_count + "): " + d_list); setState(state_list, d_list.join('')); setState(state_counter, d_list.length); setState(state_total, d_count); } //Re-evaluate when a device status changes selector.on(function(obj) { // bei Zustandänderung *. LOWBAT in allen Gewerken countDevs(obj); }); //Re-evaluate each 5 Minutes schedule("*/5 * * * *", countDevs); //Evaluate for the first time countDevs(); }Die Zeilen 6-9 habe ich auskommentiert, da ich sie nicht benötige. Aktuell erhalte ich pro Zeile (2-5) je einen Wert für deviceCounter.config_pending.counter, deviceCounter.lowbat.counter, deviceCounter.sticky_unreach.counter und deviceCounter.unreach.counter. Ist es möglich, einen Gesamtwert für die 4 Einzelwerte zu erhalten? In dem Zusammenhang wäre es auch toll, wenn dann die entsprechenden Auflistungen in einer Liste zusammengefasst werden würden. Vorab vielen Dank.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden