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] Skript "Lichter zählen": Kombination von z-Wave + Homematic

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst] Skript "Lichter zählen": Kombination von z-Wave + Homematic

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
11 Beiträge 4 Kommentatoren 1.7k 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.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #2

    Hallo,

    kannst du einen Screenshot der Zuordnung posten?

    Hast du gesehen, dass in den functions nur Kanäle zugeordnete sind, nicht die Datenpunkte (zB State oder Level)?

    Gruß

    Pix

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • malorossM Online
      malorossM Online
      maloross
      schrieb am zuletzt editiert von
      #3

      So wie ich das verstehe, liegt es in der unterschiedlichen Namensgebung, also "Garagenlicht.State" bei Homematic, aber bei z-wave lediglich "switch". Hab schon versucht, händisch im Node ein Objekt anzulegen und darin die Namensstruktur von Homematic zu erzeugen, aber iwie haut es trotzdem nicht hin.

      So sieht das im Original ohne meine Veränderungen aus.
      483_screenshot_lichtzaehlen.png

      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

      1 Antwort Letzte Antwort
      0
      • DutchmanD Offline
        DutchmanD Offline
        Dutchman
        Developer Most Active Administrators
        schrieb am zuletzt editiert von
        #4

        @maloross:

        So wie ich das verstehe, liegt es in der unterschiedlichen Namensgebung, also "Garagenlicht.State" bei Homematic, aber bei z-wave lediglich "switch". Hab schon versucht, händisch im Node ein Objekt anzulegen und darin die Namensstruktur von Homematic zu erzeugen, aber iwie haut es trotzdem nicht hin.

        So sieht das im Original ohne meine Veränderungen aus.

        screenshot_lichtzaehlen.png `

        Welche skript benutzt du ? Ich vermute ma er triggert nur auf die waerte STATE, das skript muesste man dan fuer diesen teil anpassen damit er auch mit deinen objecten uerbeinstimmt.

        ~Dutch

        1 Antwort Letzte Antwort
        0
        • malorossM Online
          malorossM Online
          maloross
          schrieb am zuletzt editiert von
          #5

          Dieses hier:

          ! /* System Zahl Lichter
          ! zaehlt die Lichter in allen Raeumen und meldet die Eingeschalteten namentlich
          ! Daten kommen vom Gewerk "Licht"
          ! */
          ! createState('zaehlen_Lichter.anzahlLichter', {
          ! def: 0,
          ! name: 'Anzahl der vorhandenen Lichter',
          ! desc: 'Anzahl aller Lichter im Gewerk',
          ! read: true,
          ! write: true,
          ! min: 0,
          ! type: 'number'
          ! });
          ! createState('zaehlen_Lichter.anzahlLichterAn', {
          ! def: 0,
          ! name: 'Anzahl eingeschaltete Lichter',
          ! desc: 'Anzahl aller eingeschalteten Lichter im Gewerk',
          ! read: true,
          ! write: true,
          ! min: 0,
          ! type: 'number'
          ! });
          ! createState('zaehlen_Lichter.textLichterAn', {
          ! def: "",
          ! name: 'Aufzaehlung eingeschaltete Lichter',
          ! desc: 'Namen aller eingeschalteten Lichter im Gewerk als Liste',
          ! read: true,
          ! write: true,
          ! type: 'string'
          ! });
          ! var cacheSelector = $('channelstate.id=*.STATE');
          ! var cacheSelectorState = $('channelstate.id=*.STATE');
          ! var cacheSelectorDimmer = $('channelstate.id=*.LEVEL');

          ! function countLamps(obj) {
          ! // Setzt die Zaehler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
          ! var anzahlLichterAn = 0;
          ! var anzahlLichter = 0;
          ! var textLichterAn = [];
          ! log('Ausloesender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geaendert hat
          ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
          ! var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
          ! var obj = getObject(id);
          ! if (status === true) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezaehlt
          ! textLichterAn.push(obj.common.name); // Zu Array hinzufügen
          ! }
          ! log("Licht Nr. " + i + ": " + getObject(id).common.name + ": " + status);
          ! ++anzahlLichter; // Zaehlt die Anzahl der vorhandenen Lichter unabhaengig vom Status
          ! });
          ! cacheSelectorDimmer.each(function (id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
          ! var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
          ! if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
          ! textLichterAn.push(obj.common.name); // Zu Array hinzufügen
          ! }
          ! log("Licht Nr. " + i + ": " + id + ": " + status); // gibt alle Elemente *.LEVEL im Gewerk Licht mit dem aktuelle Status im Log aus
          ! ++anzahlLichter; // Zaehlt die Anzahl der vorhandenen Lichter unabhaengig vom Status
          ! });
          ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
          ! log("Text: " + textLichterAn);
          ! log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
          ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
          ! setState("zaehlen_Lichter.textLichterAn", textLichterAn.join(',
          ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
          ! setState("zaehlen_Lichter.anzahlLichterAn", textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
          ! setState("zaehlen_Lichter.anzahlLichter", anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
          ! }
          ! cacheSelectorState.on(function(obj) { // bei Zustandaenderung *. STATE im Gewerk Fenster
          ! countLamps(obj);
          ! });
          ! cacheSelectorDimmer.on(function(obj) { // bei Zustandaenderung *. LEVEL im Gewerk Licht
          ! countLamps(obj);
          ! });

          Die Definition der Variablen hab ich im Skript rot markiert, da müsste noch der Double Switch rein, weiß aber nicht wie. Im Vergleich sind die Datenpunkte so definiert (links Homematic, rechts z-wave):

          483_vergleich.jpg

          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

          1 Antwort Letzte Antwort
          0
          • DutchmanD Offline
            DutchmanD Offline
            Dutchman
            Developer Most Active Administrators
            schrieb am zuletzt editiert von
            #6

            Auf den ersten schnellen Blick macht das Script was mir state.id.

            Bei den einen heißt die id so bei den anderen switch_xx, morgen Mal an pc Schaun…

            ~Dutch


            Send from mobile device

            1 Antwort Letzte Antwort
            0
            • malorossM Online
              malorossM Online
              maloross
              schrieb am zuletzt editiert von
              #7

              @Dutchman:

              Auf den ersten schnellen Blick macht das Script was mir state.id.

              Bei den einen heißt die id so bei den anderen switch_xx, morgen Mal an pc Schaun…

              ~Dutch


              Send from mobile device `

              dachte ich mir auch, aber meine Kenntnisse reichen nicht aus, das umzusetzen. Das Erstellen eines neuen Datenpunktes für den Switch, wo ich die id angepasst hatte, war nicht erfolgreich.

              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

              1 Antwort Letzte Antwort
              0
              • malorossM Online
                malorossM Online
                maloross
                schrieb am zuletzt editiert von
                #8

                Nachdem ich nun eine ganze Weile rumexperimentiert habe, bin ich noch nicht weiter. Hier ein Auszug aus meinem aktuellen Skript (eingeschränkt funktionsfähig).

                ! [… Definition Variablen]
                ! [… Anlegen Status]
                ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht
                ! var cacheSelectorLevel = $('channelstate.id=*.LEVEL');
                ! var cacheSelectorSwitch_1 = $('channelstate.id=*.Switch_1'); // Zwave Lampen (müssen im Gewerk Licht sein)
                ! function checkDevices(obj) {
                ! // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                ! var anzahlLichterAn = 0;
                ! var anzahlLichter = 0;
                ! var textLichterAn = [];
                ! var textRaum = [];
                ! if (logging) {
                ! log('++++++ Lichter Anzahl ++++ ');
                ! log('#### SCHALTER ##### ');
                ! }
                ! cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                ! var obj = getObject(id);
                ! var name = getObject(id).common.name;
                ! var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                ! var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                ! var raumname = getObject(id, "rooms"); // <–-- NEU
                ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                ! // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                ! if (logging) {
                ! log('-------');
                ! log('Kanal: ' + name);
                ! log('Status: ' + status);
                ! }
                ! if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                ! ++anzahlLichterAn;
                ! textLichterAn.push(devicename); // Zu Array hinzufügen
                ! textRaum.push(raumname.enumNames); // <---- NEU
                ! }
                ! ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                ! // } // ENDE VK-Abfrage
                ! });
                ! ` > cacheSelectorSwitch_1.each(function(id, i) { // Schleife für jedes gefundenen Element *.Switch_1 im Gewerk Licht

                var obj = getObject(id);

                var name = getObject(id).common.name;

                var status = getState(id).val; // Zustand *.ON abfragen (jedes Element)

                var devicename = name.substring(0, name.indexOf(".Switch_1")); //.state aus Text entfernen

                var raumname = getObject(id, "rooms"); // <–-- NEU

                // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)

                // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {

                if (logging) {

                log('-------');

                log('Kanal: ' + name);

                log('Status: ' + status);

                }

                if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt

                ++anzahlLichterAn;

                textLichterAn.push(devicename); // Zu Array hinzufügen

                textRaum.push(raumname.enumNames); // <---- NEU

                }

                ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status

                // } // ENDE VK-Abfrage

                }); ! [… Dimmer] ! [… Array sortieren] ! // Trigger ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht ! if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat ! checkDevices(); ! }); > CacheSelectorSwitch_1.on(function(obj) { // bei Zustandänderung *.Switch_1 von ZwaveLampen im Gewerk Licht

                if (logging) log('Auslösende SWITCH: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat

                checkDevices();

                }); `
                cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                ! if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                ! checkDevices();
                ! });
                ! function main() {
                ! setTimeout(function() {
                ! if (logging) log('Auslöser Skriptstart');
                ! checkDevices();
                ! }, 2000);
                ! }
                ! main(); // Skriptstart-Auslöser
                ! // Aufbereitung für Ansage
                ! function strip_tags(data) {
                ! var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                ! return (rueckgabe);
                ! }
                ! on(idText, function(obj) {
                ! var text = obj.state.val;
                ! text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
                ! setState(idAnsage, text);
                ! });

                Auch ein manuell erstellter Datenpunkt im entsprechenden Node wird nicht erfasst. HM-Geräte werden hingegen einwandfrei erkannt und ausgewertet. Wo hab ich da noch einen Fehler drin?

                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

                1 Antwort Letzte Antwort
                0
                • lobomauL Offline
                  lobomauL Offline
                  lobomau
                  schrieb am zuletzt editiert von
                  #9

                  Vielleicht hilft ja das Script für Lichter homematic + hue weiter.

                  Da wird irgendwie noch mit der role gearbeitet:

                  var cacheSelectorHue = $('state[id=*.on](functions=Licht)[role=switch]');   //var cacheSelectorHue = $('channel[state.id=*.ON](functions="Licht")'); // HUE Lampen (müssen im Gewerk Licht sein)
                  

                  Komplettes Script:

                  ! ````
                  /* Status Zahl Lichter
                  ! zählt die Lichter in allen Räumen und meldet die Eingeschalteten namentlich
                  Daten kommen vom Gewerk "Licht"
                  ! erstellt: 17.06.2015 nach diesem Vorbild: viewtopic.php?f=21&t=869&sid=f9ba5657489ff431a1990884f90779c1#p6564
                  23.06.2015 globale Variablendefinition zählen_Lichter.textLichterAn fehlte und wurde hinzugefügt
                  Log Ausgabe auskommentiert
                  05.08.2015 STATE aus der Ausgabe entfernt nach Idee von stephan61 http://forum.iobroker.org/viewtopic.php ... t=20#p9267
                  24.03.2016 keine Anzeigen von virtuellen Kanälen mehr (in Abhängigkeit der Abfrage des Namens)
                  06.05.2016 Datenpunkt für Ansagen zugefügt
                  02.07.2016 abgeschaltet, da Fehler
                  03.07.2016 Zähl-Funktion getrennt nach Schalter und Dimmer
                  search statt indexOf und RegEx für Suche nach Virtuellen Kanälen
                  27.11.2016 Verschoben in Status
                  Code optimiert
                  23.12.2016 Räume eingebaut
                  21.06.2017 HUE Lampen eingebaut
                  */
                  var logging = false;
                  ! var idAnzahlEin = 'javascript.0.Status.Lichter.Anzahl_ein',
                  idAnzahl = 'javascript.0.Status.Lichter.Anzahl',
                  idText = 'javascript.0.Status.Lichter.Text',
                  idRaum = 'javascript.0.Status.Lichter.Raum', // <---- NEU
                  idAnsage = 'javascript.0.Status.Lichter.Ansage';
                  ! // Ab hier nix mehr ändern
                  createState(idAnzahl, { // wenn benötigt: Anzahl der vorhandenen Lichter
                  type: 'number',
                  name: 'Anzahl aller Lichter',
                  min: 0,
                  def: 0,
                  role: 'value'
                  });
                  createState(idAnzahlEin, { // Anzahl der Lichter, die auf sind als Variable unter Javascript.0 anlegen
                  type: 'number',
                  name: 'Anzahl der eingeschalteten Lichter',
                  min: 0,
                  def: 0,
                  role: 'value'
                  });
                  createState(idText, { // Anzahl der brennenden Lichter und deren Namen als Variable unter Javascript.0 anlegen
                  type: 'string',
                  name: 'Eingeschaltete Lichter',
                  desc: 'Namen der eingeschalteten Lichter',
                  def: ' ',
                  role: 'value'
                  });
                  createState(idAnsage, {
                  type: 'string',
                  name: 'Eingeschaltete Lichter (Ansage)',
                  desc: 'Namen der eingeschalteten Lichter (für Ansage aufbereitet)',
                  def: ' ',
                  role: 'value'
                  });
                  createState(idRaum, { // Räume, in denen Lichter brennen // <---- NEU
                  type: 'string',
                  name: 'Räume mit eingeschalteten Lichter',
                  desc: 'Namen der Räume, in denen Lichter eingeschaltet sind',
                  def: ' ',
                  role: 'value'
                  });
                  ! var cacheSelectorState = $('channelstate.id=*.STATE'); // Gewerk Licht
                  var cacheSelectorLevel = $('channelstate.id=*.LEVEL');
                  var cacheSelectorHue = $('stateid=*.on[role=switch]'); //var cacheSelectorHue = $('channelstate.id=*.ON'); // HUE Lampen (müssen im Gewerk Licht sein)
                  ! function checkDevices(obj) {
                  // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Licht auf 0
                  var anzahlLichterAn = 0;
                  var anzahlLichter = 0;
                  var textLichterAn = [];
                  var textRaum = [];
                  if (logging) {
                  log('++++++ Lichter Anzahl ++++ ');
                  log('#### SCHALTER ##### ');
                  }
                  cacheSelectorState.each(function(id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Licht
                  var obj = getObject(id);
                  var name = getObject(id).common.name;
                  var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                  var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                  var raumname = getObject(id, "rooms"); // <---- NEU
                  ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                  // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                  if (logging) {
                  log('-------');
                  log('Kanal: ' + name);
                  log('Status: ' + status);
                  }
                  if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                  ++anzahlLichterAn;
                  textLichterAn.push(devicename); // Zu Array hinzufügen
                  textRaum.push(raumname.enumNames); // <---- NEU
                  }
                  ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                  // } // ENDE VK-Abfrage
                  });

                  cacheSelectorHue.each(function(id, i) { // Schleife für jedes gefundenen Element *.ON im Gewerk Licht
                      var obj = getObject(id);
                      var name = getObject(id).common.name;
                      var status = getState(id).val; // Zustand *.ON abfragen (jedes Element)
                      var devicename = name.substring(0, name.indexOf(".on")); //.state aus Text entfernen
                      var raumname = getObject(id, "rooms"); // <---- NEU
                  

                  ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                  // if ( (devicename.search(/(CUX)|(K2)|(K3)|(VK)|(:)/ig) == -1) ) {
                  if (logging) {
                  log('-------');
                  log('Kanal: ' + name);
                  log('Status: ' + status);
                  }
                  if (status) { // wenn Zustand = true, dann wird die Anzahl der Lichter hochgezählt
                  ++anzahlLichterAn;
                  textLichterAn.push(devicename); // Zu Array hinzufügen
                  textRaum.push(raumname.enumNames); // <---- NEU
                  }
                  ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                  // } // ENDE VK-Abfrage
                  });
                  ! if (logging) log('#### DIMMER ##### ');
                  cacheSelectorLevel.each(function(id, i) { // Schleife für jedes gefundenen Element *.LEVEL im Gewerk Licht
                  var obj = getObject(id);
                  var name = getObject(id).common.name;
                  var status = getState(id).val; // Zustand *.LEVEL abfragen (jedes Element)
                  var devicename = name.substring(0, name.indexOf(".LEVEL")); //.state aus Text entfernen
                  var raumname = getObject(id, "rooms"); // <---- NEU
                  ! // ########## Abfrage ob Virtueller Kanal? VK oder : im Namen)
                  // if ( (devicename.search(/(CUX)|(K2)|(K3)|(V10)|(VK)|(:)/ig) == -1) ) { // Geräte mit diesen Strings im namen nicht beachten
                  ! if (logging) {
                  log('-------');
                  log('Kanal: ' + name);
                  log('Status: ' + status + '%');
                  }
                  if (parseFloat(status) > 0) { // Wenn Dimmwert über 0
                  ++anzahlLichterAn;
                  textLichterAn.push(devicename); // Zu Array hinzufügen
                  textRaum.push(raumname.enumNames); // <---- NEU
                  }
                  ++anzahlLichter; // Zählt die Anzahl der vorhandenen Lichter unabhängig vom Status
                  // } // Ende Abfrage VK
                  });
                  ! // Array mit Lichternamen sortieren
                  textLichterAn.sort();
                  textRaum.sort(); // <---- NEU
                  // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                  if (logging) log("Text: " + textLichterAn);
                  if (logging) log("Anzahl Lichter: " + anzahlLichter + " # davon Lichter an: " + anzahlLichterAn);
                  // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                  setState(idText, textLichterAn.join(',
                  ')); // Schreibt die aktuelle Namen der eingeschalteten Lichter
                  setState(idAnzahlEin, textLichterAn.length); // Schreibt die aktuelle Anzahl der eingeschalteten Lichter
                  setState(idAnzahl, anzahlLichter); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Licht
                  // setState(idRaum, textRaum.join(',
                  ')); // Räume, in denen Licht brennt // <---- NEU
                  setState(idRaum, textRaum.join(', ')); // Räume, in denen Licht brennt // <---- NEU
                  }
                  ! // Trigger
                  cacheSelectorState.on(function(obj) { // bei Zustandänderung *.STATE im Gewerk Licht
                  if (logging) log('Auslösender Schalter: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                  checkDevices();
                  });
                  cacheSelectorHue.on(function(obj) { // bei Zustandänderung *.ON von HUE Lampen im Gewerk Licht
                  if (logging) log('Auslösende HUE: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                  checkDevices();
                  });
                  cacheSelectorLevel.on(function(obj) { // bei Zustandänderung *.LEVEL im Gewerk Licht
                  if (logging) log('Auslösender Dimmer: ' + obj.id + ': ' + obj.state.val); // Info im Log, welcher Zustand sich geändert hat
                  checkDevices();
                  });
                  ! function main() {
                  setTimeout(function() {
                  if (logging) log('Auslöser Skriptstart');
                  checkDevices();
                  }, 2000);
                  }
                  ! main(); // Skriptstart-Auslöser
                  ! // Aufbereitung für Ansage
                  function strip_tags(data) {
                  var rueckgabe = data.replace(/( |<([^>]+)>)/ig, " ");
                  return (rueckgabe);
                  }
                  ! on(idText, function(obj) {
                  var text = obj.state.val;
                  text = (getState(idAnzahl).val > 0) ? 'Lichter eingeschaltet: ' + strip_tags(text) : 'Alle Lichter sind ausgeschaltet';
                  setState(idAnsage, text);
                  });

                  Host: NUC8i3 mit Proxmox:

                  • ioBroker CT Debian 13, npm 10.9.4, nodejs 22.21.0
                  • Slave: Pi4
                  1 Antwort Letzte Antwort
                  0
                  • malorossM Online
                    malorossM Online
                    maloross
                    schrieb am zuletzt editiert von
                    #10

                    Danke, genau dieses Skript habe ich versucht zu modifizieren.

                    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

                    1 Antwort Letzte Antwort
                    0
                    • malorossM Online
                      malorossM Online
                      maloross
                      schrieb am zuletzt editiert von
                      #11

                      Das Problem ist gelöst, das Skript modifiziert und lauffähig. Danke für die Unterstützung.

                      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

                      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

                      715

                      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