Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • 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. Script Lichterzählen -> Verständnisfrage

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    6
    1
    210

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    8
    1
    214

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    888

Script Lichterzählen -> Verständnisfrage

Geplant Angeheftet Gesperrt Verschoben JavaScript
6 Beiträge 2 Kommentatoren 495 Aufrufe
  • Ä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.
  • malorossM Online
    malorossM Online
    maloross
    schrieb am zuletzt editiert von
    #1

    Guten Abend,
    ich nutze wie viele hier ein Script ("Lichterzählen"), das ich an meine Bedürfnisse angepasst habe. Dies funktioniert bis auf 2 Kleinigkeiten:

    1. Die Räume werden nicht ausgegeben
    2. Der für die Ansage aufbereitete Text wird nicht ausgegeben.

    Punkt 2 ist mir nicht wichtig, aber die Räume hätte ich gern angezeigt. Und als Anfängerin möchte ich lernen, wie die Zusammenhänge sind.

    Hier ein Auszug aus meinem angepassten Script mit den meiner Meinung nach relevanten Stellen:

    // Schleife Tradfri   
    if (logging) log('#### Tradfri ##### ');
    cacheSelectorTradfri.each(function(id, i) {
            var obj = getObject(id);
            var name = getObject(id).common.name;
            var status = getState(id).val;
            var devicename = name.replace(".state", "");
            var raumname = getObject(id, "rooms");
            if (logging) {
                log('-------');
                log('Kanal: ' + name);
                log('Status: ' + status);
            }
            if (status) {
                ++anzahlLichterAn;
                textLichterAn.push(devicename);
                textRaum.push(raumname);
            }
            ++anzahlLichter;
        });
    .
    .
    .
    // Array mit Lichternamen sortieren, aufbereiten, Ausgabe in DP
    textLichterAn.sort();
    textRaum.sort();
    if (logging) log("Text: " + textLichterAn);
    if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
    setState(pfad0 + 'Text', textLichterAn.join('<br>'));
    setState(pfad0 + 'Anzahl_Lichter_ein', textLichterAn.length); 
    setState(pfad0 + 'Anzahl_Lichter_gesamt', anzahlLichter); 
    setState(pfad0 + 'Raum', textRaum.join(', '));
    if(anzahlLichterAn > 0){
            setState(instanz + pfad0 + 'Status_Lichter', true);
            setState(instanz + pfad0 + "Status_Lichter_Zeitstempel", zeitstempel);
        }
        else{
            setState(instanz + pfad0 + 'Status_Lichter', false);
            setState(instanz + pfad0 + "Status_Lichter_Zeitstempel", zeitstempel);
        }
    }
    

    Die Datenpunkte werden, bis auf die beiden genannten, korrekt befüllt, was so aussieht:
    65d267ba-7221-4f16-8326-9432dee4290e-image.png

    Nach meinem Verständnis sind die Befehle zum Auslesen des Raumes korrekt, auch die Geräte haben in der Objektliste korrekte Zuordnungen. Aber da es nicht funktioniert - wo liegt mein Denkfehler?

    Auch Frauen können sich für Technik begeistern! ;)

    Equipment:
    diverse HM-, HMIP-, Aeotec- Tradfri- Sonos- und Fibaro-Geräte, Master-/Slavesystem auf 2 Raspi4, NAS

    paul53P 1 Antwort Letzte Antwort
    0
    • malorossM maloross

      Guten Abend,
      ich nutze wie viele hier ein Script ("Lichterzählen"), das ich an meine Bedürfnisse angepasst habe. Dies funktioniert bis auf 2 Kleinigkeiten:

      1. Die Räume werden nicht ausgegeben
      2. Der für die Ansage aufbereitete Text wird nicht ausgegeben.

      Punkt 2 ist mir nicht wichtig, aber die Räume hätte ich gern angezeigt. Und als Anfängerin möchte ich lernen, wie die Zusammenhänge sind.

      Hier ein Auszug aus meinem angepassten Script mit den meiner Meinung nach relevanten Stellen:

      // Schleife Tradfri   
      if (logging) log('#### Tradfri ##### ');
      cacheSelectorTradfri.each(function(id, i) {
              var obj = getObject(id);
              var name = getObject(id).common.name;
              var status = getState(id).val;
              var devicename = name.replace(".state", "");
              var raumname = getObject(id, "rooms");
              if (logging) {
                  log('-------');
                  log('Kanal: ' + name);
                  log('Status: ' + status);
              }
              if (status) {
                  ++anzahlLichterAn;
                  textLichterAn.push(devicename);
                  textRaum.push(raumname);
              }
              ++anzahlLichter;
          });
      .
      .
      .
      // Array mit Lichternamen sortieren, aufbereiten, Ausgabe in DP
      textLichterAn.sort();
      textRaum.sort();
      if (logging) log("Text: " + textLichterAn);
      if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
      setState(pfad0 + 'Text', textLichterAn.join('<br>'));
      setState(pfad0 + 'Anzahl_Lichter_ein', textLichterAn.length); 
      setState(pfad0 + 'Anzahl_Lichter_gesamt', anzahlLichter); 
      setState(pfad0 + 'Raum', textRaum.join(', '));
      if(anzahlLichterAn > 0){
              setState(instanz + pfad0 + 'Status_Lichter', true);
              setState(instanz + pfad0 + "Status_Lichter_Zeitstempel", zeitstempel);
          }
          else{
              setState(instanz + pfad0 + 'Status_Lichter', false);
              setState(instanz + pfad0 + "Status_Lichter_Zeitstempel", zeitstempel);
          }
      }
      

      Die Datenpunkte werden, bis auf die beiden genannten, korrekt befüllt, was so aussieht:
      65d267ba-7221-4f16-8326-9432dee4290e-image.png

      Nach meinem Verständnis sind die Befehle zum Auslesen des Raumes korrekt, auch die Geräte haben in der Objektliste korrekte Zuordnungen. Aber da es nicht funktioniert - wo liegt mein Denkfehler?

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

      @maloross sagte:

      Die Räume werden nicht ausgegeben

      Ändere mal Zeile 8 in

              var raumname = getObject(id, "rooms").enumNames[0];
              if(typeof raumname == 'object') raumname = raumname.de;
      

      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

      malorossM 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @maloross sagte:

        Die Räume werden nicht ausgegeben

        Ändere mal Zeile 8 in

                var raumname = getObject(id, "rooms").enumNames[0];
                if(typeof raumname == 'object') raumname = raumname.de;
        
        malorossM Online
        malorossM Online
        maloross
        schrieb am zuletzt editiert von
        #3

        @paul53
        Vielen Dank, damit wird der Datenpunkt auch korrekt befüllt, obwohl bei Mouseover folgendes angezeigt wird:
        b69f3054-8d07-4756-8f44-a38ba5a70f82-image.png

        und was genau bewirkt die 2. Zeile?

        Auch Frauen können sich für Technik begeistern! ;)

        Equipment:
        diverse HM-, HMIP-, Aeotec- Tradfri- Sonos- und Fibaro-Geräte, Master-/Slavesystem auf 2 Raspi4, NAS

        paul53P 1 Antwort Letzte Antwort
        0
        • malorossM maloross

          @paul53
          Vielen Dank, damit wird der Datenpunkt auch korrekt befüllt, obwohl bei Mouseover folgendes angezeigt wird:
          b69f3054-8d07-4756-8f44-a38ba5a70f82-image.png

          und was genau bewirkt die 2. Zeile?

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

          @maloross sagte:

          was genau bewirkt die 2. Zeile?

          Wenn der Name mehrsprachig ist (neuere Versionen des JS-Adapters), wird der deutsche Name ausgewählt.

          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

          malorossM 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @maloross sagte:

            was genau bewirkt die 2. Zeile?

            Wenn der Name mehrsprachig ist (neuere Versionen des JS-Adapters), wird der deutsche Name ausgewählt.

            malorossM Online
            malorossM Online
            maloross
            schrieb am zuletzt editiert von
            #5

            @paul53
            danke, so in die Richtung hatte ich schon gedacht.

            Was jetzt noch fein wäre: Mehrfach-Werte herausfiltern. Hatte dies erfolglos probiert

            Array.prototype.getUnique = function() {
             var o = {}, a = [], i, e;
             for (i = 0; e = this[i]; i++) {o[e] = 1};
             for (e in o) {a.push (e)};
             return a;
            }
            

            Ich vermute, es handelt sich hier um ein mehr-/multidimensionales Array?

            Auch Frauen können sich für Technik begeistern! ;)

            Equipment:
            diverse HM-, HMIP-, Aeotec- Tradfri- Sonos- und Fibaro-Geräte, Master-/Slavesystem auf 2 Raspi4, NAS

            paul53P 1 Antwort Letzte Antwort
            0
            • malorossM maloross

              @paul53
              danke, so in die Richtung hatte ich schon gedacht.

              Was jetzt noch fein wäre: Mehrfach-Werte herausfiltern. Hatte dies erfolglos probiert

              Array.prototype.getUnique = function() {
               var o = {}, a = [], i, e;
               for (i = 0; e = this[i]; i++) {o[e] = 1};
               for (e in o) {a.push (e)};
               return a;
              }
              

              Ich vermute, es handelt sich hier um ein mehr-/multidimensionales Array?

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

              @maloross sagte:

              Mehrfach-Werte herausfiltern.

                          if(textRaum.indexOf(raumname) == -1) textRaum.push(raumname);
              

              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

              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
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              469

              Online

              32.8k

              Benutzer

              82.8k

              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