Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. DeviceCounter - Anzahl der Meldungen zusammenfassen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    906

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

DeviceCounter - Anzahl der Meldungen zusammenfassen

Geplant Angeheftet Gesperrt Verschoben JavaScript
1 Beiträge 1 Kommentatoren 175 Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • B Offline
    B Offline
    baluderbär
    schrieb am zuletzt editiert von baluderbär
    #1

    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.

    ioBroker auf VM Proxmox (Intel NUC-Kit i3-7100U 2.4GHz HD620 NUC7I3BNH)

    1 Antwort Letzte Antwort
    0
    Antworten
    • In einem neuen Thema antworten
    Anmelden zum Antworten
    • Älteste zuerst
    • Neuste zuerst
    • Meiste Stimmen


    Support us

    ioBroker
    Community Adapters
    Donate

    713

    Online

    32.6k

    Benutzer

    82.2k

    Themen

    1.3m

    Beiträge
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
    ioBroker Community 2014-2025
    logo
    • Anmelden

    • Du hast noch kein Konto? Registrieren

    • Anmelden oder registrieren, um zu suchen
    • Erster Beitrag
      Letzter Beitrag
    0
    • Home
    • Aktuell
    • Tags
    • Ungelesen 0
    • Kategorien
    • Unreplied
    • Beliebt
    • GitHub
    • Docu
    • Hilfe