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. Gelöst: Anzahl der Zigbee Geräte ermitteln

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    133

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.3k

Gelöst: Anzahl der Zigbee Geräte ermitteln

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
javascript
22 Beiträge 2 Kommentatoren 1.4k 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.
  • M michihorn

    Hallo
    ich möchte gerne ohne zusätzliche Adapter die Anzahl meiner Zigbee Geräte ermitteln, habe folgenden Ansatz:

    const ids = $("zigbee.0.*.available");
    const idCnt = "0_userdata.0.System.Zigbee.Geräte0_On";
    
    schedule("*/1 * * * *", function () {
    function cntzig0() {
        let cnt = 0;
        ids.each(function (id, i) {
            if (getState(id).val == 'true') cnt++;
        });
        setState(idCnt, cnt, true);
        log(cnt)
    }
    cntzig0(); // Skriptstart
    ids.on(cntzig0);
      });
    

    Leider klappt das nicht.
    Gruß
    Michael

    paul53P Offline
    paul53P Offline
    paul53
    schrieb am zuletzt editiert von paul53
    #2

    @michihorn sagte: Leider klappt das nicht.

    Ändere Zeile 8 in

            if (getState(id).val) cnt++;
    

    Die Datenpunkte "available" enthalten sicherlich keinen String.
    ... und lass schedule() weg (lösche Zeilen 4 und 15).

    const ids = $("zigbee.0.*.available");
    const idCnt = "0_userdata.0.System.Zigbee.Geräte0_On";
     
    function cntzig0() {
        let cnt = 0;
        ids.each(function (id, i) {
            if (getState(id).val) cnt++;
        });
        setState(idCnt, cnt, true);
        log(cnt);
    }
    
    cntzig0(); // Skriptstart
    ids.on(cntzig0);
    

    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

    M 1 Antwort Letzte Antwort
    0
    • paul53P paul53

      @michihorn sagte: Leider klappt das nicht.

      Ändere Zeile 8 in

              if (getState(id).val) cnt++;
      

      Die Datenpunkte "available" enthalten sicherlich keinen String.
      ... und lass schedule() weg (lösche Zeilen 4 und 15).

      const ids = $("zigbee.0.*.available");
      const idCnt = "0_userdata.0.System.Zigbee.Geräte0_On";
       
      function cntzig0() {
          let cnt = 0;
          ids.each(function (id, i) {
              if (getState(id).val) cnt++;
          });
          setState(idCnt, cnt, true);
          log(cnt);
      }
      
      cntzig0(); // Skriptstart
      ids.on(cntzig0);
      
      M Online
      M Online
      michihorn
      schrieb am zuletzt editiert von
      #3

      @paul53 Wie kann ich denn jetzt noch die nicht erreichbaren Geräte ermitteln?

      paul53P 1 Antwort Letzte Antwort
      0
      • M michihorn

        @paul53 Wie kann ich denn jetzt noch die nicht erreichbaren Geräte ermitteln?

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #4

        @michihorn sagte: die nicht erreichbaren Geräte ermitteln?

        Dein (korrigiertes) Skript ermittelt nur die erreichbaren Geräte.

        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

        M 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @michihorn sagte: die nicht erreichbaren Geräte ermitteln?

          Dein (korrigiertes) Skript ermittelt nur die erreichbaren Geräte.

          M Online
          M Online
          michihorn
          schrieb am zuletzt editiert von
          #5

          @paul53 Ja ich weiß, ich möchte jetzt gerne noch über "available" das true oder false auswerten um die nicht erreichbaren Geräte separat zu zählen

          paul53P 1 Antwort Letzte Antwort
          0
          • M michihorn

            @paul53 Ja ich weiß, ich möchte jetzt gerne noch über "available" das true oder false auswerten um die nicht erreichbaren Geräte separat zu zählen

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von paul53
            #6

            @michihorn sagte: nicht erreichbaren Geräte separat zu zählen

            const ids = $("zigbee.0.*.available");
            const idCntOn = "0_userdata.0.System.Zigbee.Geräte0_On";
            const idCntOff = "0_userdata.0.System.Zigbee.Geräte0_Off";
             
            function cntzig0() {
                let cntOn = 0;
                let cntOff = 0;
                ids.each(function (id, i) {
                    if (getState(id).val) cntOn++;
                    else cntOff++
                });
                setState(idCntOn, cntOn, true);
                setState(idCntOff, cntOff, true);
                log('On: ' + cntOn + ', Off: ' + cntOff);
            }
             
            cntzig0(); // Skriptstart
            ids.on(cntzig0);
            

            EDIT: Anstelle von cntOff kann man auch die Differenz zur Gesamtanzahl verwenden:

                setState(idCntOff, ids.length - cntOn, true);
            

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            M 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @michihorn sagte: nicht erreichbaren Geräte separat zu zählen

              const ids = $("zigbee.0.*.available");
              const idCntOn = "0_userdata.0.System.Zigbee.Geräte0_On";
              const idCntOff = "0_userdata.0.System.Zigbee.Geräte0_Off";
               
              function cntzig0() {
                  let cntOn = 0;
                  let cntOff = 0;
                  ids.each(function (id, i) {
                      if (getState(id).val) cntOn++;
                      else cntOff++
                  });
                  setState(idCntOn, cntOn, true);
                  setState(idCntOff, cntOff, true);
                  log('On: ' + cntOn + ', Off: ' + cntOff);
              }
               
              cntzig0(); // Skriptstart
              ids.on(cntzig0);
              

              EDIT: Anstelle von cntOff kann man auch die Differenz zur Gesamtanzahl verwenden:

                  setState(idCntOff, ids.length - cntOn, true);
              
              M Online
              M Online
              michihorn
              schrieb am zuletzt editiert von michihorn
              #7

              @paul53 Danke Paul das klappt

              M 1 Antwort Letzte Antwort
              0
              • M michihorn

                @paul53 Danke Paul das klappt

                M Online
                M Online
                michihorn
                schrieb am zuletzt editiert von
                #8

                @michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                @paul53 Danke Paul das klappt

                Hätte allerdings noch eine Bitte:
                Wie kann ich die Anzahl der Tuya Geräte ermitteln, die im Common.Name "CAS_xxxxx" oder NL_xxxxx" enthalten?
                So einfach geht es nicht.

                const ids = $("tuya.1.*.common.name");
                const idCnt = "0_userdata.0.System.Tuya.CAS_Count";
                 
                function cnttuya() {
                    let cnt = 0;
                    ids.each(function (id, i) {
                        
                        if (getState(id).val == 'CAS*') cnt++;
                        //if (getState(id).val) cnt++;
                        
                    });
                    setState(idCnt, cnt, true);
                    log(cnt);
                }
                 
                cnttuya(); // Skriptstart
                ids.on(cnttuya);
                
                
                paul53P 1 Antwort Letzte Antwort
                0
                • M michihorn

                  @michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                  @paul53 Danke Paul das klappt

                  Hätte allerdings noch eine Bitte:
                  Wie kann ich die Anzahl der Tuya Geräte ermitteln, die im Common.Name "CAS_xxxxx" oder NL_xxxxx" enthalten?
                  So einfach geht es nicht.

                  const ids = $("tuya.1.*.common.name");
                  const idCnt = "0_userdata.0.System.Tuya.CAS_Count";
                   
                  function cnttuya() {
                      let cnt = 0;
                      ids.each(function (id, i) {
                          
                          if (getState(id).val == 'CAS*') cnt++;
                          //if (getState(id).val) cnt++;
                          
                      });
                      setState(idCnt, cnt, true);
                      log(cnt);
                  }
                   
                  cnttuya(); // Skriptstart
                  ids.on(cnttuya);
                  
                  
                  paul53P Offline
                  paul53P Offline
                  paul53
                  schrieb am zuletzt editiert von
                  #9

                  @michihorn sagte: im Common.Name "CAS_xxxxx" oder NL_xxxxx" enthalten?

                          const nameDp = getObject(id).common.name;
                          if (nameDp.includes('CAS') || nameDp.includes('NL')) cnt++;
                  

                  Der Selektor stimmt nicht!!

                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                  1 Antwort Letzte Antwort
                  0
                  • M Online
                    M Online
                    michihorn
                    schrieb am zuletzt editiert von michihorn
                    #10

                    @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                        const nameDp = getObject(id).common.name;                                                                                                                                                                                    if (nameDp.includes('CAS') || nameDp.includes('NL')) cnt++;                                            
                    

                    Ich möchte separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte ermitteln
                    Ich habe dazu DP angelegt:
                    "0_userdata.0.System.Tuya.CAS_Count" und
                    "0_userdata.0.System.Tuya.NL_Count"

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • M michihorn

                      @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                          const nameDp = getObject(id).common.name;                                                                                                                                                                                    if (nameDp.includes('CAS') || nameDp.includes('NL')) cnt++;                                            
                      

                      Ich möchte separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte ermitteln
                      Ich habe dazu DP angelegt:
                      "0_userdata.0.System.Tuya.CAS_Count" und
                      "0_userdata.0.System.Tuya.NL_Count"

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #11

                      @michihorn sagte: separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte

                              const nameDp = getObject(id).common.name;
                              if (nameDp.includes('CAS')) cntCAS++;
                              if (nameDp.includes('NL')) cntNL++;
                      

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      M 1 Antwort Letzte Antwort
                      0
                      • paul53P paul53

                        @michihorn sagte: separat die Anzahl der Geräte mit CAS_xxx und ebenfalls separat die NL_Geräte

                                const nameDp = getObject(id).common.name;
                                if (nameDp.includes('CAS')) cntCAS++;
                                if (nameDp.includes('NL')) cntNL++;
                        
                        M Online
                        M Online
                        michihorn
                        schrieb am zuletzt editiert von
                        #12

                        @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                        const nameDp = getObject(id).common.name

                        Wie komme ich denn ie id? Muss ich nicht zunächst den Selector einrichten?
                        const ids = $("tuya.1.*.Common.Name");

                        paul53P 1 Antwort Letzte Antwort
                        0
                        • M michihorn

                          @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                          const nameDp = getObject(id).common.name

                          Wie komme ich denn ie id? Muss ich nicht zunächst den Selector einrichten?
                          const ids = $("tuya.1.*.Common.Name");

                          paul53P Offline
                          paul53P Offline
                          paul53
                          schrieb am zuletzt editiert von paul53
                          #13

                          @michihorn sagte: const ids = $("tuya.1.*.Common.Name");

                          Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!
                          Zeige bitte mind. einen zu selektierenden Datenpunkt.

                          @michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                          Wie komme ich denn ie id?

                          Die id wird innerhalb der Schleife ids.each(id) übergeben.

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          M 1 Antwort Letzte Antwort
                          0
                          • paul53P paul53

                            @michihorn sagte: const ids = $("tuya.1.*.Common.Name");

                            Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!
                            Zeige bitte mind. einen zu selektierenden Datenpunkt.

                            @michihorn sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                            Wie komme ich denn ie id?

                            Die id wird innerhalb der Schleife ids.each(id) übergeben.

                            M Online
                            M Online
                            michihorn
                            schrieb am zuletzt editiert von michihorn
                            #14

                            @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                            Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!

                            selector.png

                            paul53P 1 Antwort Letzte Antwort
                            0
                            • M michihorn

                              @paul53 sagte in Gelöst: Anzahl der Zigbee Geräte ermitteln:

                              Dieser Selektor ist mit großer Wahrscheinlichkeit falsch!

                              selector.png

                              paul53P Offline
                              paul53P Offline
                              paul53
                              schrieb am zuletzt editiert von paul53
                              #15

                              @michihorn
                              Ich sehe keinen Datenpunkt, sondern nur Geräte!
                              Gibt es einen Datenpunkt, der zu jedem Tuya-Gerät existiert?

                              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                              M 1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @michihorn
                                Ich sehe keinen Datenpunkt, sondern nur Geräte!
                                Gibt es einen Datenpunkt, der zu jedem Tuya-Gerät existiert?

                                M Online
                                M Online
                                michihorn
                                schrieb am zuletzt editiert von
                                #16

                                @paul53 OK mein Fehler, ich will die Geräte zählen, ist wohl am einfachsten, und das separiert nach CAS_* und NL_*

                                paul53P 1 Antwort Letzte Antwort
                                0
                                • M michihorn

                                  @paul53 OK mein Fehler, ich will die Geräte zählen, ist wohl am einfachsten, und das separiert nach CAS_* und NL_*

                                  paul53P Offline
                                  paul53P Offline
                                  paul53
                                  schrieb am zuletzt editiert von paul53
                                  #17

                                  @michihorn sagte: ich will die Geräte zählen

                                  Dazu ist es zweckmäßig, im Selektor einen Datenpunkt(ID) anzugeben, der pro Gerät genau einmal existiert.

                                  Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                  Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                  M 1 Antwort Letzte Antwort
                                  0
                                  • paul53P paul53

                                    @michihorn sagte: ich will die Geräte zählen

                                    Dazu ist es zweckmäßig, im Selektor einen Datenpunkt(ID) anzugeben, der pro Gerät genau einmal existiert.

                                    M Online
                                    M Online
                                    michihorn
                                    schrieb am zuletzt editiert von
                                    #18

                                    @paul53 Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.

                                    paul53P 1 Antwort Letzte Antwort
                                    0
                                    • M michihorn

                                      @paul53 Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.

                                      paul53P Offline
                                      paul53P Offline
                                      paul53
                                      schrieb am zuletzt editiert von
                                      #19

                                      @michihorn sagte: Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.

                                      Direkt in der Ebene unter dem Gerät?

                                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                      M 1 Antwort Letzte Antwort
                                      0
                                      • paul53P paul53

                                        @michihorn sagte: Bei jedem Gerät ist der DP "xxxxx.online" vorhanden.

                                        Direkt in der Ebene unter dem Gerät?

                                        M Online
                                        M Online
                                        michihorn
                                        schrieb am zuletzt editiert von
                                        #20

                                        @paul53 selector2.png

                                        paul53P 1 Antwort Letzte Antwort
                                        0
                                        • M michihorn

                                          @paul53 selector2.png

                                          paul53P Offline
                                          paul53P Offline
                                          paul53
                                          schrieb am zuletzt editiert von
                                          #21

                                          @michihorn
                                          Versuche es so:

                                          const ids = $("tuya.1.*.online");
                                          const idCAS = "0_userdata.0.System.Tuya.CAS_Count";
                                          const idNL = "0_userdata.0.System.Tuya.NL_Count";
                                           
                                          let cntCAS = 0;
                                          let cntNL = 0;
                                          ids.each(function(id) {
                                              id = id.substring(0, id.lastIndexOf('.'));
                                              const devName = getObject(id).common.name;
                                              if(devName.includes('CAS')) cntCAS++;
                                              if(devName.includes('NL')) cntNL++;
                                          });
                                          setState(idCAS, cntCAS, true);
                                          setState(idNL, cntNL, true);
                                          log('CAS: ' + cntCAS + ', NL: ' + cntNL);
                                          

                                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                                          M 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

                                          751

                                          Online

                                          32.5k

                                          Benutzer

                                          81.7k

                                          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