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]Fehler bei subscribe(channel:"…

NEWS

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

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.7k

[gelöst]Fehler bei subscribe(channel:"…

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
106 Beiträge 22 Kommentatoren 19.9k 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.
  • T Offline
    T Offline
    tempestas
    schrieb am zuletzt editiert von
    #64

    DSL-Raser, versuchs mal so. Eventuell wieder Fehler drin, im Forum übersehe ich gerne mal was.

    ! ````
    ! createState('zählen_Fenster.anzahlFenster', { // wenn benötigt: Anzahl der vorhandenen Fenster
    type: 'number',
    min: 0,
    def: 0,
    role: 'value'
    });
    createState('zählen_Fenster.anzahlFensterauf', { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
    type: 'number',
    min: 0,
    def: 0,
    role: 'value'
    });
    createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
    type: 'string',
    def: '',
    role: 'value'
    });
    ! createState('zählen_Fenster.anzahlFensterKipp', { // Anzahl der gekippten Fenster als Variable unter Javascript.0 anlegen
    type: 'number',
    min: 0,
    def: 0,
    role: 'value'
    });
    createState('zählen_Fenster.textFensterKipp', { // Anzahl der gekippten Fenster und deren Namen als Variable unter Javascript.0 anlegen
    type: 'string',
    def: '',
    role: 'value'
    });
    ! var cacheSelectorState = $('channelstate.id=*.STATE');
    ! function countFenster(obj) {
    // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
    var anzahlFenster = 0;
    var anzahlFensterauf = 0;
    var anzahlFensterKipp = 0;

    var textFensterauf = [];
    var textFensterKipp = [];

    ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
    ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
    var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
    var obj = getObject(id);
    var name = getObject(id).common.name;
    var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
    if ( status === 2 ) { // wenn Zustand offen (2), dann wird die Anzahl der Fenster hochgezählt
    ++anzahlFensterauf;
    textFensterauf.push(devicename ); // Name und Zustand zum Array hinzufügen
    }
    else {
    if( status === 1 ) { // wenn Zustand gekippt (1), dann wird die Anzahl der Fenster hochgezählt
    ++anzahlFensterKipp;
    textFensterKipp.push(devicename ); // Name und Zustand zum Array hinzufügen
    }
    }

    log('Fenster #' + (i+1) + ': ' + devicename + ' ' /* + ' (' + status + ' / ' + typeof status + ')'*/);
    ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
    });

    ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
    log("Text: " + textFensterauf + "gekippt: "+ textFensterKipp) ;
    log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " + textFensterauf.length +". Anzahl gekippter Fenster :" +textFensterKipp.length);
    ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
    setState("zählen_Fenster.textFensterauf", textFensterauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster
    setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster

    setState("zählen_Fenster.textFenstrKipp, textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
    setState("zählen_Fenster.anzahlFensterKipp", textFensterKipp.length); // Schreibt die aktuelle Anzahl der gekippten Fenster

    setState("zählen_Fenster.anzahlFenster", anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
    }

    ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *. STATE im Gewerk Fenster
    countFenster(obj);
    });
    ! ````

    Die Ansage habe ich mal ignoriert.

    <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

    1 Antwort Letzte Antwort
    0
    • T Offline
      T Offline
      tempestas
      schrieb am zuletzt editiert von
      #65

      Dali3:

      ! ```
      `// Skript zum prüfen, wieviele Fenster offen sind
      // Lösung für Xiaomi Kontakte, die nicht via $-Selector ansprechbar zu sein scheinen
      // Status: 4.1.2018
      ! // ############ ALLGEMEINE SKRIPTEINSTELLUNGEN ###############
      ! // debugging
      ! var debug = false;
      ! // states
      ! createState('Fenster.Total', 0);
      createState('Fenster.Offen', 0);
      createState('Fenster.Text',"");
      ! // ################## Fenster Kontakte #####################
      ! // Variablen / IDs deklarieren
      ! var idFenster1 = "mihome.0.devices.magnet_158d0001dacfc1.state"/Is opened Fenster Küche offen/, // ids eintragen, geht rechts oben im JS Editor, "id einfügen". Dort auf den "open" state verlinken.
      idFenster2 = "mihome.0.devices.magnet_158d0001dacfc7.state"/Is opened Fenster Wohnzimmer offen/; // du kannst die Variablen auch "FensterKueche" usw nennen, es muss nicht "idFenster1" sein
      // idFenster3 = [HIER DIE ID DEINER MAGNETEN EINFÜGEN] , // die IDs kannst du beliebig benennen. Müssen aber nachfolgend entsprechend eingetragen sein
      // idFensterN = [HIER DIE ID DEINER MAGNETEN EINFÜGEN] ; // die letzte ID muss mit einem Semikolon beendet werden, dazwischen Kommas
      ! var arrFenster = [idFenster1, idFenster2]; // hier musst du die gleichen Namen eintragen, wie du direkt hierüber eingestellt hast
      ! // Variablen

      var countOffen = 0;
      countTotal =arrFenster.length;

      ! // ######## FUNKTIONEN ########
      ! on(arrFenster, function(obj){
      ! var textFenster= [];
      var status = obj.state.val;
      ! var name = getObject(id).common.name;
      var devicename = name.replace("Is opened ",""); //
      devicename = devicename.replace(" offen", ""); // Hier wird das "is opened " und am Ende das "offen" rausgenommen, damit nur die Raumbezeichnungen übrig bleiben

          if(status){
              ++countOffen; 
              countOffen= Math.min(arrFenster.length, countOffen);
              if(debug) log("Es sind "+countOffen +" Fenster offen");
              textFenster.push(devicename);
          }
          else{
              --countOffen;
              countOffen = Math.max(0, countOffen);
              if(debug) log("Es sind "+countOffen +" Fenster offen");
          }
      

      ! setState("javascript.0.Fenster.Offen", countOffen);
      setState("javascript.0.Fenster.Total", countTotal);
      setState("javascript.0.Fenster.Text", textFenster.join(',
      '));

      });  
      

      // ############# BEI SKIRPTSTART DIE COUNTER RICHTIG SETZEN ###################

      ! for (var i = 0; i< arrFenster.length; i++) {
      var objekt = arrFenster[i];
      var value = getState(objekt).val;
      if(debug) log(arrFenster[i] + " ist " +value);
      if(value) ++countOffen;
      setState("javascript.0.Fenster.Offen", countOffen);
      }` [/i][/i]

      <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        dali3
        schrieb am zuletzt editiert von
        #66

        Hallo tempestas

        Habe es nun getestet.

        Jedoch taucht kein Text auf, nur folgende Fehlermeldungen.

        Sowie werden die Textwerte / Zahlen nicht sofort angepasst.

        Siehe Bilder:

        @tempestas:

        Dali3:

        ! ```
        `// Skript zum prüfen, wieviele Fenster offen sind
        // Lösung für Xiaomi Kontakte, die nicht via $-Selector ansprechbar zu sein scheinen
        // Status: 4.1.2018
        ! // ############ ALLGEMEINE SKRIPTEINSTELLUNGEN ###############
        ! // debugging
        ! var debug = false;
        ! // states
        ! createState('Fenster.Total', 0);
        createState('Fenster.Offen', 0);
        createState('Fenster.Text',"");
        ! // ################## Fenster Kontakte #####################
        ! // Variablen / IDs deklarieren
        ! var idFenster1 = "mihome.0.devices.magnet_158d0001dacfc1.state"/Is opened Fenster Küche offen/, // ids eintragen, geht rechts oben im JS Editor, "id einfügen". Dort auf den "open" state verlinken.
        idFenster2 = "mihome.0.devices.magnet_158d0001dacfc7.state"/Is opened Fenster Wohnzimmer offen/; // du kannst die Variablen auch "FensterKueche" usw nennen, es muss nicht "idFenster1" sein
        // idFenster3 = [HIER DIE ID DEINER MAGNETEN EINFÜGEN] , // die IDs kannst du beliebig benennen. Müssen aber nachfolgend entsprechend eingetragen sein
        // idFensterN = [HIER DIE ID DEINER MAGNETEN EINFÜGEN] ; // die letzte ID muss mit einem Semikolon beendet werden, dazwischen Kommas
        ! var arrFenster = [idFenster1, idFenster2]; // hier musst du die gleichen Namen eintragen, wie du direkt hierüber eingestellt hast
        ! // Variablen

        var countOffen = 0;
        countTotal =arrFenster.length;

        ! // ######## FUNKTIONEN ########
        ! on(arrFenster, function(obj){
        ! var textFenster= [];
        var status = obj.state.val;
        ! var name = getObject(id).common.name;
        var devicename = name.replace("Is opened ",""); //
        devicename = devicename.replace(" offen", ""); // Hier wird das "is opened " und am Ende das "offen" rausgenommen, damit nur die Raumbezeichnungen übrig bleiben

            if(status){
                ++countOffen; 
                countOffen= Math.min(arrFenster.length, countOffen);
                if(debug) log("Es sind "+countOffen +" Fenster offen");
                textFenster.push(devicename);
            }
            else{
                --countOffen;
                countOffen = Math.max(0, countOffen);
                if(debug) log("Es sind "+countOffen +" Fenster offen");
            }
        

        ! setState("javascript.0.Fenster.Offen", countOffen);
        setState("javascript.0.Fenster.Total", countTotal);
        setState("javascript.0.Fenster.Text", textFenster.join(',
        '));

        });  
        

        // ############# BEI SKIRPTSTART DIE COUNTER RICHTIG SETZEN ###################

        ! for (var i = 0; i< arrFenster.length; i++) {
        var objekt = arrFenster[i];
        var value = getState(objekt).val;
        if(debug) log(arrFenster[i] + " ist " +value);
        if(value) ++countOffen;
        setState("javascript.0.Fenster.Offen", countOffen);
        } ! [4746_x1.jpg](/assets/uploads/files/4746_x1.jpg) [4746_x2.jpg](/assets/uploads/files/4746_x2.jpg) [4746_x3.jpg](/assets/uploads/files/4746_x3.jpg) [4746_x4.jpg](/assets/uploads/files/4746_x4.jpg) [4746_x5.jpg](/assets/uploads/files/4746_x5.jpg) [/i][/i] ```

        Systeminfo:
        Iobroker Pro, Surface 3 (Mobil), Acer T272 (Wand), Raspberry Pi 3, NUC, Synology DS212j (BackUp), Google Home, Xiaomi Aqara (Sensoren, Fühler, Kamera, LED), Revo Superconnect, Philips Hue, IKEA Tradfri...

        1 Antwort Letzte Antwort
        0
        • T Offline
          T Offline
          tempestas
          schrieb am zuletzt editiert von
          #67

          hmpf, hab ich nicht aufgepasst.

          Bitte aus

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

          das hier machen

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

          in Zeile 43

          mir fällt aber auf, dass die "Total Fenster" immer 0 sind. Das soll natürlich nicht sein

          <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

          1 Antwort Letzte Antwort
          0
          • dslraserD Offline
            dslraserD Offline
            dslraser
            Forum Testing Most Active
            schrieb am zuletzt editiert von
            #68

            @tempestas:

            DSL-Raser, versuchs mal so. Eventuell wieder Fehler drin, im Forum übersehe ich gerne mal was.

            ! ````
            ! createState('zählen_Fenster.anzahlFenster', { // wenn benötigt: Anzahl der vorhandenen Fenster
            type: 'number',
            min: 0,
            def: 0,
            role: 'value'
            });
            createState('zählen_Fenster.anzahlFensterauf', { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
            type: 'number',
            min: 0,
            def: 0,
            role: 'value'
            });
            createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
            type: 'string',
            def: '',
            role: 'value'
            });
            ! createState('zählen_Fenster.anzahlFensterKipp', { // Anzahl der gekippten Fenster als Variable unter Javascript.0 anlegen
            type: 'number',
            min: 0,
            def: 0,
            role: 'value'
            });
            createState('zählen_Fenster.textFensterKipp', { // Anzahl der gekippten Fenster und deren Namen als Variable unter Javascript.0 anlegen
            type: 'string',
            def: '',
            role: 'value'
            });
            ! var cacheSelectorState = $('channelstate.id=*.STATE');
            ! function countFenster(obj) {
            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
            var anzahlFenster = 0;
            var anzahlFensterauf = 0;
            var anzahlFensterKipp = 0;

            var textFensterauf = [];
            var textFensterKipp = [];

            ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
            ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
            var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
            var obj = getObject(id);
            var name = getObject(id).common.name;
            var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
            if ( status === 2 ) { // wenn Zustand offen (2), dann wird die Anzahl der Fenster hochgezählt
            ++anzahlFensterauf;
            textFensterauf.push(devicename ); // Name und Zustand zum Array hinzufügen
            }
            else {
            if( status === 1 ) { // wenn Zustand gekippt (1), dann wird die Anzahl der Fenster hochgezählt
            ++anzahlFensterKipp;
            textFensterKipp.push(devicename ); // Name und Zustand zum Array hinzufügen
            }
            }

            log('Fenster #' + (i+1) + ': ' + devicename + ' ' /* + ' (' + status + ' / ' + typeof status + ')'*/);
            ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
            });

            ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
            log("Text: " + textFensterauf + "gekippt: "+ textFensterKipp) ;
            log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " + textFensterauf.length +". Anzahl gekippter Fenster :" +textFensterKipp.length);
            ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
            setState("zählen_Fenster.textFensterauf", textFensterauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster
            setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster

            setState("zählen_Fenster.textFenstrKipp, textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
            setState("zählen_Fenster.anzahlFensterKipp", textFensterKipp.length); // Schreibt die aktuelle Anzahl der gekippten Fenster

            setState("zählen_Fenster.anzahlFenster", anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
            }

            ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *. STATE im Gewerk Fenster
            countFenster(obj);
            });
            ! ````

            Die Ansage habe ich mal ignoriert. ` probiere ich die nächsten Tage mal aus, danke Dir.

            1 Antwort Letzte Antwort
            0
            • D Offline
              D Offline
              dali3
              schrieb am zuletzt editiert von
              #69

              Habe es angepasst, jedoch ändert sich nichts :(

              @tempestas:

              hmpf, hab ich nicht aufgepasst.

              Bitte aus

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

              das hier machen

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

              in Zeile 43

              mir fällt aber auf, dass die "Total Fenster" immer 0 sind. Das soll natürlich nicht sein `
              4746_x13.jpg
              4746_x14.jpg

              Systeminfo:
              Iobroker Pro, Surface 3 (Mobil), Acer T272 (Wand), Raspberry Pi 3, NUC, Synology DS212j (BackUp), Google Home, Xiaomi Aqara (Sensoren, Fühler, Kamera, LED), Revo Superconnect, Philips Hue, IKEA Tradfri...

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                tempestas
                schrieb am zuletzt editiert von
                #70

                hmm da zeigt sich jetzt, dass ich nur interessierter Laie bin… die wirklich guten hier können das bestimmt sofort lösen. Ich muss mir das genauer ansehen

                <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                1 Antwort Letzte Antwort
                0
                • blauholstenB Offline
                  blauholstenB Offline
                  blauholsten
                  Developer
                  schrieb am zuletzt editiert von
                  #71

                  @dali3:

                  Habe es angepasst, jedoch ändert sich nichts :(

                  @tempestas:

                  hmpf, hab ich nicht aufgepasst.

                  Bitte aus

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

                  das hier machen

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

                  in Zeile 43

                  mir fällt aber auf, dass die "Total Fenster" immer 0 sind. Das soll natürlich nicht sein

                  Hi,

                  ohne es testen zu können, da ich keine Kontakte habe und darum nicht testen kann. Probier mal

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

                  durch````
                  var name = obj.common.name;

                  
                  zu ersetzen

                  Entwickler vom: - Viessman Adapter
                  - Alarm Adapter

                  1 Antwort Letzte Antwort
                  0
                  • blauholstenB Offline
                    blauholstenB Offline
                    blauholsten
                    Developer
                    schrieb am zuletzt editiert von
                    #72

                    doppel Post

                    Entwickler vom: - Viessman Adapter
                    - Alarm Adapter

                    1 Antwort Letzte Antwort
                    0
                    • D Offline
                      D Offline
                      dali3
                      schrieb am zuletzt editiert von
                      #73

                      Perfekt, hat geklappt! Nun funktioniert alles!!!

                      Herzlichen Dank euch beiden für die tolle Unterstützung!

                      @blauholsten:

                      @dali3:

                      Habe es angepasst, jedoch ändert sich nichts :(

                      @tempestas:

                      hmpf, hab ich nicht aufgepasst.

                      Bitte aus

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

                      das hier machen

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

                      in Zeile 43

                      mir fällt aber auf, dass die "Total Fenster" immer 0 sind. Das soll natürlich nicht sein

                      Hi,

                      ohne es testen zu können, da ich keine Kontakte habe und darum nicht testen kann. Probier mal

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

                      durch````
                      var name = obj.common.name;

                      
                      zu ersetzen `  
                      

                      4746_x1.jpg

                      Systeminfo:
                      Iobroker Pro, Surface 3 (Mobil), Acer T272 (Wand), Raspberry Pi 3, NUC, Synology DS212j (BackUp), Google Home, Xiaomi Aqara (Sensoren, Fühler, Kamera, LED), Revo Superconnect, Philips Hue, IKEA Tradfri...

                      1 Antwort Letzte Antwort
                      0
                      • T Offline
                        T Offline
                        tempestas
                        schrieb am zuletzt editiert von
                        #74

                        @dslraser:

                        @tempestas:

                        DSL-Raser, versuchs mal so. Eventuell wieder Fehler drin, im Forum übersehe ich gerne mal was.

                        ! ````
                        ! createState('zählen_Fenster.anzahlFenster', { // wenn benötigt: Anzahl der vorhandenen Fenster
                        type: 'number',
                        min: 0,
                        def: 0,
                        role: 'value'
                        });
                        createState('zählen_Fenster.anzahlFensterauf', { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                        type: 'number',
                        min: 0,
                        def: 0,
                        role: 'value'
                        });
                        createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
                        type: 'string',
                        def: '',
                        role: 'value'
                        });
                        ! createState('zählen_Fenster.anzahlFensterKipp', { // Anzahl der gekippten Fenster als Variable unter Javascript.0 anlegen
                        type: 'number',
                        min: 0,
                        def: 0,
                        role: 'value'
                        });
                        createState('zählen_Fenster.textFensterKipp', { // Anzahl der gekippten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                        type: 'string',
                        def: '',
                        role: 'value'
                        });
                        ! var cacheSelectorState = $('channelstate.id=*.STATE');
                        ! function countFenster(obj) {
                        // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                        var anzahlFenster = 0;
                        var anzahlFensterauf = 0;
                        var anzahlFensterKipp = 0;

                        var textFensterauf = [];
                        var textFensterKipp = [];

                        ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
                        ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                        var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                        var obj = getObject(id);
                        var name = getObject(id).common.name;
                        var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                        if ( status === 2 ) { // wenn Zustand offen (2), dann wird die Anzahl der Fenster hochgezählt
                        ++anzahlFensterauf;
                        textFensterauf.push(devicename ); // Name und Zustand zum Array hinzufügen
                        }
                        else {
                        if( status === 1 ) { // wenn Zustand gekippt (1), dann wird die Anzahl der Fenster hochgezählt
                        ++anzahlFensterKipp;
                        textFensterKipp.push(devicename ); // Name und Zustand zum Array hinzufügen
                        }
                        }

                        log('Fenster #' + (i+1) + ': ' + devicename + ' ' /* + ' (' + status + ' / ' + typeof status + ')'*/);
                        ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                        });

                        ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                        log("Text: " + textFensterauf + "gekippt: "+ textFensterKipp) ;
                        log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " + textFensterauf.length +". Anzahl gekippter Fenster :" +textFensterKipp.length);
                        ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                        setState("zählen_Fenster.textFensterauf", textFensterauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster
                        setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster

                        setState("zählen_Fenster.textFenstrKipp, textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                        setState("zählen_Fenster.anzahlFensterKipp", textFensterKipp.length); // Schreibt die aktuelle Anzahl der gekippten Fenster

                        setState("zählen_Fenster.anzahlFenster", anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                        }

                        ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *. STATE im Gewerk Fenster
                        countFenster(obj);
                        });
                        ! ````

                        Die Ansage habe ich mal ignoriert. probiere ich die nächsten Tage mal aus, danke Dir.

                        läufts?

                        <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                        1 Antwort Letzte Antwort
                        0
                        • dslraserD Offline
                          dslraserD Offline
                          dslraser
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #75

                          Ich habe es noch nicht probiert, bin unterwegs. Aber ich gebe auf jeden Fall Rückmeldung.

                          1 Antwort Letzte Antwort
                          0
                          • dslraserD Offline
                            dslraserD Offline
                            dslraser
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #76

                            @tempestas:

                            @dslraser:

                            @tempestas:

                            DSL-Raser, versuchs mal so. Eventuell wieder Fehler drin, im Forum übersehe ich gerne mal was.

                            ! ````
                            ! createState('zählen_Fenster.anzahlFenster', { // wenn benötigt: Anzahl der vorhandenen Fenster
                            type: 'number',
                            min: 0,
                            def: 0,
                            role: 'value'
                            });
                            createState('zählen_Fenster.anzahlFensterauf', { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                            type: 'number',
                            min: 0,
                            def: 0,
                            role: 'value'
                            });
                            createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
                            type: 'string',
                            def: '',
                            role: 'value'
                            });
                            ! createState('zählen_Fenster.anzahlFensterKipp', { // Anzahl der gekippten Fenster als Variable unter Javascript.0 anlegen
                            type: 'number',
                            min: 0,
                            def: 0,
                            role: 'value'
                            });
                            createState('zählen_Fenster.textFensterKipp', { // Anzahl der gekippten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                            type: 'string',
                            def: '',
                            role: 'value'
                            });
                            ! var cacheSelectorState = $('channelstate.id=*.STATE');
                            ! function countFenster(obj) {
                            // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                            var anzahlFenster = 0;
                            var anzahlFensterauf = 0;
                            var anzahlFensterKipp = 0;

                            var textFensterauf = [];
                            var textFensterKipp = [];

                            ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
                            ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                            var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                            var obj = getObject(id);
                            var name = getObject(id).common.name;
                            var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                            if ( status === 2 ) { // wenn Zustand offen (2), dann wird die Anzahl der Fenster hochgezählt
                            ++anzahlFensterauf;
                            textFensterauf.push(devicename ); // Name und Zustand zum Array hinzufügen
                            }
                            else {
                            if( status === 1 ) { // wenn Zustand gekippt (1), dann wird die Anzahl der Fenster hochgezählt
                            ++anzahlFensterKipp;
                            textFensterKipp.push(devicename ); // Name und Zustand zum Array hinzufügen
                            }
                            }

                            log('Fenster #' + (i+1) + ': ' + devicename + ' ' /* + ' (' + status + ' / ' + typeof status + ')'*/);
                            ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                            });

                            ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                            log("Text: " + textFensterauf + "gekippt: "+ textFensterKipp) ;
                            log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " + textFensterauf.length +". Anzahl gekippter Fenster :" +textFensterKipp.length);
                            ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                            setState("zählen_Fenster.textFensterauf", textFensterauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster
                            setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster

                            setState("zählen_Fenster.textFenstrKipp", textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                            setState("zählen_Fenster.anzahlFensterKipp", textFensterKipp.length); // Schreibt die aktuelle Anzahl der gekippten Fenster

                            setState("zählen_Fenster.anzahlFenster", anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                            }

                            ! cacheSelectorState.on(function(obj) { // bei Zustandänderung *. STATE im Gewerk Fenster
                            countFenster(obj);
                            });
                            ! ````

                            Die Ansage habe ich mal ignoriert. probiere ich die nächsten Tage mal aus, danke Dir.

                            läufts? `

                            läuft leider noch nicht. fehler im Log in zwei Zeilen

                            17:43:17.620 [info] javascript.0 script.js.Test.Fenstertest: Anzahl Fenster: 22 - davon Fenster auf: 0. Anzahl gekippter Fenster :1

                            17:43:17.620 [warn] javascript.0 at countFenster (script.js.Test.Fenstertest:75:2)

                            17:43:17.620 [warn] javascript.0 at Object. (script.js.Test.Fenstertest:82:2)

                            1 Antwort Letzte Antwort
                            0
                            • T Offline
                              T Offline
                              tempestas
                              schrieb am zuletzt editiert von
                              #77

                              jo waren wieder "Forum" Fehler. Ich sehs halt net beim Tippen hier. Da fehlen einmal Anführungszeichen

                              Bitte aus

                               setState("zählen_Fenster.textFenstrKipp, textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                              
                              

                              machen

                               setState("zählen_Fenster.textFenstrKipp", textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                              
                              

                              <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                              1 Antwort Letzte Antwort
                              0
                              • dslraserD Offline
                                dslraserD Offline
                                dslraser
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #78

                                es fehlte ein " und noch irgendwo ein r (bei Fenste<u>r</u>kipp)

                                jetzt muß ich noch meinen Telegram Trigger umbauen.
                                3822_telegram.jpg

                                1 Antwort Letzte Antwort
                                0
                                • dslraserD Offline
                                  dslraserD Offline
                                  dslraser
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #79

                                  @tempestas:

                                  jo waren wieder "Forum" Fehler. Ich sehs halt net beim Tippen hier. Da fehlen einmal Anführungszeichen

                                  Bitte aus

                                   setState("zählen_Fenster.textFenstrKipp, textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                                  
                                  

                                  machen

                                   setState("zählen_Fenster.textFenstrKipp", textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                                  
                                  ```` `  
                                  

                                  Danke, auch gerade gefunden, Du warst schneller…. :lol:

                                  Edit: hier fehlt noch das <u>e</u> bei FensterKipp

                                  1 Antwort Letzte Antwort
                                  0
                                  • dslraserD Offline
                                    dslraserD Offline
                                    dslraser
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #80

                                    wie kann ich das jetzt wieder sinnvoll für kipp/offen und geschlossen verwenden und mit einbauen, hast Du ja erstmal weg gelassen ?

                                    // Variable für Ansage aufbereiten
                                    createState('zählen_Fenster.textFensteraufAnsage', {
                                     type: 'string',
                                     def: '',
                                     role: 'value'
                                    });
                                    // Anzahl der Fenster, die auf sind, für Ansage aufbereitet
                                    var idQuelle = 'javascript.0.zählen_Fenster.textFensterauf',
                                     idAnsage = 'javascript.0.zählen_Fenster.textFensteraufAnsage';
                                    
                                    on(idQuelle, function (obj) {
                                     var text = obj.state.val;
                                     text = (text.length > 1) ? 'Geöffnete Fenster: ' + text : 'Alle Fenster sind geschlossen';
                                     setState(idAnsage, text);
                                    });
                                    
                                    1 Antwort Letzte Antwort
                                    0
                                    • dslraserD Offline
                                      dslraserD Offline
                                      dslraser
                                      Forum Testing Most Active
                                      schrieb am zuletzt editiert von
                                      #81

                                      so bekomme ich einen Fehler ?

                                      ! // Variable für Ansage aufbereiten createState('zählen_Fenster.textFensteraufAnsage', { type: 'string', def: '', role: 'value' }); // Variable für Ansage aufbereiten createState('zählen_Fenster.textFensterKippfAnsage', { type: 'string', def: '', role: 'value' }); // Anzahl der Fenster, die auf sind, für Ansage aufbereitet var idQuelle = 'javascript.0.zählen_Fenster.textFensterauf', idAnsage = 'javascript.0.zählen_Fenster.textFensteraufAnsage'; ! // Anzahl der Fenster, die gekippt sind, für Ansage aufbereitet var idQuelle = 'javascript.0.zählen_Fenster.textFensterKipp', idAnsage = 'javascript.0.zählen_Fenster.textFensterKippAnsage'; ! on(idQuelle, function (obj) { var text = obj.state.val; text = (text.length > 1) ? 'Geöffnete Fenster: ' + text : 'Alle Fenster sind geschlossen'; setState(idAnsage, text); }); !

                                      18:32:24.107 [warn] javascript.0 at Object. (script.js.Test.Fenstertest:109:2)

                                      das ist diese Zeile hier ?

                                      setState(idAnsage, text);

                                      hier noch das Log

                                      javascript.0 2018-01-08 18:38:36.986 warn at Object. (script.js.Test.Fenstertest:109:2)

                                      javascript.0 2018-01-08 18:38:36.985 warn State "javascript.0.zählen_Fenster.textFensterKippAnsage" not found

                                      1 Antwort Letzte Antwort
                                      0
                                      • dslraserD Offline
                                        dslraserD Offline
                                        dslraser
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #82

                                        so wie das Script jetzt ist werden die Drehgriffe zwar richtig in den Objekten geschrieben, aber meine "normalen Fensterkontakte werden auch bei gekippt reingeschrieben.

                                        ! ````
                                        createState('zählen_Fenster.anzahlFenster', { // wenn benötigt: Anzahl der vorhandenen Fenster
                                        type: 'number',
                                        min: 0,
                                        def: 0,
                                        role: 'value'
                                        });
                                        createState('zählen_Fenster.anzahlFensterauf', { // Anzahl der Fenster, die auf sind als Variable unter Javascript.0 anlegen
                                        type: 'number',
                                        min: 0,
                                        def: 0,
                                        role: 'value'
                                        });
                                        createState('zählen_Fenster.textFensterauf', { // Anzahl der offenen Fenster und deren Namen als Variable unter Javascript.0 anlegen
                                        type: 'string',
                                        def: '',
                                        role: 'value'
                                        });
                                        ! createState('zählen_Fenster.anzahlFensterKipp', { // Anzahl der gekippten Fenster als Variable unter Javascript.0 anlegen
                                        type: 'number',
                                        min: 0,
                                        def: 0,
                                        role: 'value'
                                        });
                                        createState('zählen_Fenster.textFensterKipp', { // Anzahl der gekippten Fenster und deren Namen als Variable unter Javascript.0 anlegen
                                        type: 'string',
                                        def: '',
                                        role: 'value'
                                        });
                                        ! var cacheSelectorState = $('channelstate.id=*.STATE');
                                        ! function countFenster(obj) {
                                        // Setzt die Zähler vor dem Durchlauf aller Elemente *.STATE im Gewerk Fenster auf 0
                                        var anzahlFenster = 0;
                                        var anzahlFensterauf = 0;
                                        var anzahlFensterKipp = 0;

                                        var textFensterauf = [];
                                        var textFensterKipp = [];

                                        ! log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val); // Info im Log, welcher Zustand sich geändert hat
                                        ! cacheSelectorState.each(function (id, i) { // Schleife für jedes gefundenen Element *.STATE im Gewerk Fenster
                                        var status = getState(id).val; // Zustand *.STATE abfragen (jedes Element)
                                        var obj = getObject(id);
                                        var name = getObject(id).common.name;
                                        var devicename = name.substring(0, name.indexOf(".STATE")); //.state aus Text entfernen
                                        if ( status === 2 ) { // wenn Zustand offen (2), dann wird die Anzahl der Fenster hochgezählt
                                        ++anzahlFensterauf;
                                        textFensterauf.push(devicename ); // Name und Zustand zum Array hinzufügen
                                        }
                                        else {
                                        if( status === 1 ) { // wenn Zustand gekippt (1), dann wird die Anzahl der Fenster hochgezählt
                                        ++anzahlFensterKipp;
                                        textFensterKipp.push(devicename ); // Name und Zustand zum Array hinzufügen
                                        }
                                        }

                                        log('Fenster #' + (i+1) + ': ' + devicename + ' ' /* + ' (' + status + ' / ' + typeof status + ')'*/);
                                        ++anzahlFenster; // Zählt die Anzahl der vorhandenen Fenster unabhängig vom Status
                                        });

                                        ! // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon an) ausgegeben
                                        log("Text: " + textFensterauf + "gekippt: "+ textFensterKipp) ;
                                        log("Anzahl Fenster: " + anzahlFenster + " - davon Fenster auf: " + textFensterauf.length +". Anzahl gekippter Fenster :" +textFensterKipp.length);
                                        ! // die ermittelten Werte werden als javascript.0. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
                                        setState("zählen_Fenster.textFensterauf", textFensterauf.join(', ')); // Schreibt die aktuelle Namen der offenen Fenster
                                        setState("zählen_Fenster.anzahlFensterauf", textFensterauf.length); // Schreibt die aktuelle Anzahl der offenen Fenster

                                        setState("zählen_Fenster.textFensterKipp", textFensterKipp.join(', ')); // Schreibt die aktuelle Namen der gekippten Fenster
                                        setState("zählen_Fenster.anzahlFensterKipp", textFensterKipp.length); // Schreibt die aktuelle Anzahl der gekippten Fenster

                                        setState("zählen_Fenster.anzahlFenster", anzahlFenster); // Schreibt die aktuelle Anzahl der vorhandene Elemente im Gewerk Fenster
                                        }

                                        ! cacheSelectorState.on(function(obj) { // bei Zustandänderung . STATE im Gewerk Fenster
                                        countFenster(obj);
                                        });
                                        ! /

                                        // Variable für Ansage aufbereiten
                                        createState('zählen_Fenster.textFensteraufAnsage', {
                                        type: 'string',
                                        def: '',
                                        role: 'value'
                                        });
                                        // Variable für Ansage aufbereiten
                                        createState('zählen_Fenster.textFensterKippAnsage', {
                                        type: 'string',
                                        def: '',
                                        role: 'value'
                                        });
                                        // Anzahl der Fenster, die auf sind, für Ansage aufbereitet
                                        var idQuelle = 'javascript.0.zählen_Fenster.textFensterauf',
                                        idAnsage = 'javascript.0.zählen_Fenster.textFensteraufAnsage';
                                        ! // Anzahl der Fenster, die gekippt sind, für Ansage aufbereitet
                                        var idQuelle = 'javascript.0.zählen_Fenster.textFensterKipp',
                                        idAnsage = 'javascript.0.zählen_Fenster.textFensterKippAnsage';
                                        ! on(idQuelle, function (obj) {
                                        var text = obj.state.val;
                                        text = (text.length > 1) ? 'Gekippte Fenster: ' + 'Geöffnete Fenster: ' + text : 'Alle Fenster sind geschlossen';
                                        setState(idAnsage, text);
                                        });
                                        */

                                        1 Antwort Letzte Antwort
                                        0
                                        • dslraserD Offline
                                          dslraserD Offline
                                          dslraser
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von
                                          #83

                                          ich werde das jetzt einfach mit zwei Gewerken machen, z.B. Fensterkontakte und Fensterdrehgiffe.

                                          Ich glaube das ist dann einfacher für mich.

                                          Aber trotzdem Danke an tempestas !

                                          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

                                          762

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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