Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] lowbat Script von paul

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Frage] lowbat Script von paul

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      so richtig ?

      createState('zählenLowbat.möglicheLOWBAT', 0);   // wenn benötigt: Anzahl der vorhandenen LOWBAT
      createState('zählenLowbat.anzahlLOWBAT', 0);     // wenn benötigt: Anzahl der vorhandenen LOWBAT
      createState('zählenLowbat.textLOWBAT', " ");     // Anzahl LOWBAT, die an sind als Variable unter Javascript.0 anlegen
      
      var cacheSelectorLOWBAT  = $('channel[state.id=*.LOWBAT]');
      
      function countLowbat(obj) {
         // Setzt die Zähler vor dem Durchlauf aller Elemente *.LOWBAT auf 0
         var moeglicheLOWBAT = 0;
         var textLOWBAT      = [];
      
         if (obj) {
            log('Auslösender Aktor: ' + obj.id + ': ' + obj.newState.val);  // Info im Log, welcher Zustand sich geändert hat
         } else {
            log('Ausgelöst bei Timer'); 
         } 
      
         cacheSelectorLOWBAT.each(function (id, i) {                         // Schleife für jedes gefundenen Element *.LOWBAT
            var status = getState(id).val;                                  // Zustand *.LOWBAT abfragen (jedes Element)
            var obj    = getObject(id);
            if (status === true) {                                          // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
               textLOWBAT.push(obj.common.name);                           // Zu Array hinzufügen
            }                
            log("Geräte Nr. " + i + ": " + getObject(id).common.name + ": " + status);
            ++moeglicheLOWBAT;                                                 // Zählt die Anzahl der vorhandenen Geräte unabhängig vom Status
         }); 
      
         // Schleife ist durchlaufen. Im Log wird der aktuelle Status (Anzahl, davon LOWBAT zutreffend) ausgegeben
         log("Text: " + textLOWBAT.join(', '));
         log("Anzahl Geräte: " + moeglicheLOWBAT + " # davon LOWBAT erkannt: " +  textLOWBAT.length);
      
         // die ermittelten Werte werden als javascript.0\. Variable in ioBroker gespeichert (z.B. für die Verarbeitung in VIS)
         setState("zählenLowbat.textLOWBAT",     textLOWBAT.join(',
      ')); // Schreibt die aktuelle Namen der Geräte mit LOWBAT Meldung
         setState("zählenLowbat.anzahlLOWBAT",   textLOWBAT.length);        // Schreibt die aktuelle Anzahl der Geräte im System
         setState("zählenLowbat.möglicheLOWBAT", moeglicheLOWBAT);          // Schreibt die aktuelle Anzahl der vorhandene Geräte 
      }
      
      cacheSelectorLOWBAT.on(function(obj) {    // bei Zustandänderung *. LOWBAT in allen Gewerken
         countLowbat(obj);
      });
      schedule("*/60 * * * *", function () {                                  //oder!! soll entweder ausgelöst werden alle 10 Minuten
         countLowbat();
      });
      
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        @bahnuhr:

        so richtig ? `
        Nein, das ist das Skript. Ich würde gern das Objekt (Reiter "Objekte") sehen.

        493_objekt_raw_enum_functions_batterie.jpg

        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by

          ahaaaaaa

          sieht so aus:

          {
            "desc": "",
            "from": "system.adapter.hm-rpc.0",
            "ts": 1521228098628,
            "common": {
              "name": "Batterie betrieben",
              "members": [
                "hm-rpc.0.LEQ0922159.1",
                "hm-rpc.0.LEQ1177607.1",
                "hm-rpc.0.LEQ1176746.1",
                "hm-rpc.0.JEQ0264936.1",
                "hm-rpc.0.KEQ0845003.1",
                "hm-rpc.0.LEQ0030811.1",
                "hm-rpc.0.LEQ0642545.1",
                "hm-rpc.0.KEQ0972353.1",
                "hm-rpc.0.JEQ0263935.1",
                "hm-rpc.0.KEQ0972459.1",
                "hm-rpc.0.LEQ0030556.1",
                "hm-rpc.0.LEQ0642275.1",
                "hm-rpc.0.LEQ0031227.1",
                "hm-rpc.0.LEQ0030758.1",
                "hm-rpc.0.LEQ0031043.1",
                "hm-rpc.0.MEQ1425139.1",
                "hm-rpc.0.NEQ0046063.1",
                "hm-rpc.0.LEQ0031256.1",
                "hm-rpc.0.LEQ0642555.1",
                "hm-rpc.0.LEQ0492702.1",
                "hm-rpc.0.LEQ0031112.1",
                "hm-rpc.0.KEQ0972248.1",
                "hm-rpc.0.KEQ0905371.2",
                "hm-rpc.0.MEQ0172937.1",
                "hm-rpc.0.MEQ0185071.1",
                "hm-rpc.0.MEQ0369906.1",
                "hm-rpc.0.MEQ0369829.1",
                "hm-rpc.0.MEQ0186214.1",
                "hm-rpc.0.MEQ0367128.1",
                "hm-rpc.0.LEQ1469992.1",
                "hm-rpc.0.LEQ1470572.1",
                "hm-rpc.0.LEQ1176525.1",
                "hm-rpc.0.LEQ0175356.1",
                "hm-rpc.0.JEQ0684367.1",
                "hm-rpc.0.GEQ0250711.1",
                "hm-rpc.0.LEQ0175293.1",
                "hm-rpc.0.LEQ0175827.1",
                "hm-rpc.0.NEQ0530138.1",
                "hm-rpc.0.NEQ0530138.2",
                "hm-rpc.0.KEQ0905371.1",
                "hm-rpc.0.KEQ0241184.1",
                "hm-rpc.0.LEQ0175356.2",
                "hm-rpc.0.KEQ0954261.1",
                "hm-rpc.0.LEQ1313457.2",
                "hm-rpc.0.LEQ1313457.1",
                "hm-rpc.0.LEQ1313457.3",
                "hm-rpc.0.KEQ1040434.4",
                "hm-rpc.0.KEQ0576469.4",
                "hm-rpc.0.LEQ0783942.4",
                "hm-rpc.0.KEQ0574459.4",
                "hm-rpc.0.KEQ1040651.4",
                "hm-rpc.0.KEQ1040517.4",
                "hm-rpc.0.KEQ0574613.4",
                "hm-rpc.0.LEQ1200382.4",
                "hm-rpc.0.KEQ0574642.4",
                "hm-rpc.0.LEQ0782624.4",
                "hm-rpc.0.LEQ0784844.4",
                "hm-rpc.0.KEQ1040443.4",
                "hm-rpc.0.KEQ0653104.4",
                "hm-rpc.0.LEQ0635400.1",
                "hm-rpc.0.LEQ0635400.2",
                "hm-rpc.0.LEQ0635400.3",
                "hm-rpc.0.LEQ0635400.4",
                "hm-rpc.0.LEQ0635400.5",
                "hm-rpc.0.LEQ0635400.6",
                "hm-rpc.0.LEQ0636114.1",
                "hm-rpc.0.LEQ0636114.2",
                "hm-rpc.0.LEQ0636114.3",
                "hm-rpc.0.LEQ0636114.4",
                "hm-rpc.0.LEQ0636114.5",
                "hm-rpc.0.LEQ0636114.6",
                "hm-rpc.0.GEQ0250711.2",
                "hm-rpc.0.GEQ0250711.3",
                "hm-rpc.0.GEQ0250711.4",
                "hm-rpc.0.JEQ0684367.2",
                "hm-rpc.0.JEQ0684367.3",
                "hm-rpc.0.JEQ0684367.4",
                "hm-rpc.0.KEQ0056854.2",
                "hm-rpc.0.KEQ0056929.2",
                "hm-rpc.0.KEQ0905371.3",
                "hm-rpc.0.LEQ0028395.1",
                "hm-rpc.0.LEQ0028395.4",
                "hm-rpc.0.LEQ0028395.3",
                "hm-rpc.0.LEQ0028395.2",
                "hm-rpc.0.LEQ0029078.1",
                "hm-rpc.0.LEQ1221393.1",
                "hm-rpc.0.LEQ0175356.3",
                "hm-rpc.0.KEQ0766778.1",
                "hm-rpc.0.NEQ0322651.1",
                "hm-rpc.0.NEQ0322032.1",
                "hm-rpc.0.KEQ0056929.1",
                "hm-rpc.0.KEQ0056854.1",
                "hm-rpc.0.NEQ0530138.3",
                "hm-rpc.0.LTK0100483.1",
                "hm-rpc.0.LTK0016804.1",
                "hm-rpc.0.LTK0009865.1",
                "hm-rpc.0.LTK0008637.1",
                "hm-rpc.0.LTK0009942.1",
                "hm-rpc.0.OEQ1006181.1",
                "hm-rpc.0.OEQ1006181.2",
                "hm-rpc.0.OEQ1006181.3",
                "hm-rpc.0.OEQ1006181.4",
                "hm-rpc.0.LTK0111742.1"
              ]
            },
            "native": {
              "Name": "Batterie betrieben",
              "TypeName": "ENUM",
              "EnumInfo": ""
            },
            "acl": {
              "object": 1636,
              "owner": "system.user.admin",
              "ownerGroup": "system.group.administrator"
            },
            "_id": "enum.functions.Batterie betrieben",
            "type": "enum"
          }
          
          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            Bitte keine Leerzeichen in einer ID !! Das kann Probleme bringen.
            @bahnuhr:

            Mit der "alten" Zeile bekomme ich eine warn-meldung bei meinen cuxd Geräten. Grund dürfte sein, dass dieses manuelle angelegten Geräte kein lowbat haben. `
            Ich sehe bei den Members ausschließlich <u>Kanäle</u> von der Instanz hm-rpc.0 (BidCos-RF), kein CUxD.

            Da die Kanäle mehrere Datenpunkte haben, muss man eingerenzen mit [state.id=*.LOWBAT]. Wenn einige Geräte kein LOWBAT haben, muss es anders gelöst werden:

            Die <u>Datenpunkte</u> müssen dem Gewerk zugeordnet und der Selektor muss angepasst werden:

            var cacheSelectorLOWBAT  = $('state(functions=batterie_betrieben)');
            
            

            EDIT: Ich wundere mich über die Kanalnummern in der Members-Liste: Bei meinen Geräten (Thermostate) befindet sich LOWBAT im Kanal 0.

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              So, habe nun auf der ccu2 das Gewerk geändert in "Batterie"

              1. folgendes Script (analog paul)
              var cacheSelectorLOWBAT = $('channel[state.id=*.LOWBAT]'); 
              
                 cacheSelectorLOWBAT.each(function (id, i) {                         // Schleife für jedes gefundenen Element *.LOWBAT
                    var status = getState(id).val;                                  // Zustand *.LOWBAT abfragen (jedes Element)
                    var obj    = getObject(id);
                    if (status === true) {                                          // wenn Zustand = true, dann wird die Anzahl der Geräte hochgezählt
                       textLOWBAT.push(obj.common.name);                           // Zu Array hinzufügen
                    }                
                    log("Geräte Nr. " + i + ": " + getObject(id).common.name + ": " + status);
                 }); 
              
              

              Folglich cuxd Geräte erzeugen Warnung

              javascript.0	2018-03-19 19:37:27.389	warn	at script.js.Scripte.test1:7:20
              javascript.0	2018-03-19 19:37:27.389	warn	getState "hm-rpc.1.CUX0200010.0.LOWBAT" not found (3) states[id]=null
              javascript.0	2018-03-19 19:37:27.389	info	script.js.Scripte.test1: Geräte Nr. 3: CUX: Wassertränke-Nachlauf:0.LOWBAT: null
              javascript.0	2018-03-19 19:37:27.389	warn	at script.js.Scripte.test1:7:20
              javascript.0	2018-03-19 19:37:27.388	warn	getState "hm-rpc.1.CUX0200009.0.LOWBAT" not found (3) states[id]=null
              javascript.0	2018-03-19 19:37:27.388	info	script.js.Scripte.test1: Geräte Nr. 2: CUX: Beamer-Hide:0.LOWBAT: null
              javascript.0	2018-03-19 19:37:27.388	warn	at script.js.Scripte.test1:7:20
              javascript.0	2018-03-19 19:37:27.388	warn	getState "hm-rpc.1.CUX0200008.0.LOWBAT" not found (3) states[id]=null
              javascript.0	2018-03-19 19:37:27.388	info	script.js.Scripte.test1: Geräte Nr. 1: CUX: Beamer-Power:0.LOWBAT: null
              javascript.0	2018-03-19 19:37:27.387	warn	at script.js.Scripte.test1:7:20
              javascript.0	2018-03-19 19:37:27.387	warn	getState "hm-rpc.1.CUX0200006.0.LOWBAT" not found (3) states[id]=null
              javascript.0	2018-03-19 19:37:27.387	info	script.js.Scripte.test1: Geräte Nr. 0: CUX: Zisterne-Wasser:0.LOWBAT: null
              javascript.0	2018-03-19 19:37:27.387	warn	at script.js.Scripte.test1:7:20
              javascript.0	2018-03-19 19:37:27.386	warn	getState "hm-rpc.1.CUX0200003.0.LOWBAT" not found (3) states[id]=null
              javascript.0	2018-03-19 19:37:27.375	info	Start javascript script.js.Scripte.test1
              javascript.0	2018-03-19 19:37:27.355	info	Stop script script.js.Scripte.test1
              

              Wenn ich den selektor ändere auf:

              var cacheSelectorLOWBAT = $('channel[state.id=*.LOWBAT](functions="Batterie")'); 
              

              kommt gar nichts mehr.

              Das habe ich gemeint.

              Mit "alt" kommt Warnung wg. cuxd.

              Und mit "neu" kommt nichts mehr.

              mfg

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                @bahnuhr:

                Wenn ich den selektor ändere auf:

                var cacheSelectorLOWBAT = $('channel[state.id=*.LOWBAT](functions="Batterie")');
                
                

                kommt gar nichts mehr. `
                Lautet die ID "enum.functions.Batterie" oder "enum.functions.batterie" ?

                https://forum.iobroker.net/viewtopic.php?f=21&t=12677&p=134465#p134465, dass man nach Anlegen eines neuen Gewerkes erst ioBroker (Host) neu starten muss, damit es mit dem neuen Gewerk funktioniert.
                @bahnuhr:

                Folglich cuxd Geräte erzeugen Warnung

                javascript.0   2018-03-19 19:37:27.389   warn   at script.js.Scripte.test1:7:20
                javascript.0   2018-03-19 19:37:27.389   warn   getState "hm-rpc.1.CUX0200010.0.LOWBAT" not found (3) states[id]=null
                javascript.0   2018-03-19 19:37:27.389   info   script.js.Scripte.test1: Geräte Nr. 3: CUX: Wassertränke-Nachlauf:0.LOWBAT: null
                ```` `  
                

                Das sieht danach aus, dass es zwar das Objekt "hm-rpc.1.CUX0200010.0.LOWBAT" gibt, aber noch kein Zustand (state) existiert, da noch nie ein Wert gesendet wurde. Ich würde mit einem Hilfsscript die Zustände erzeugen (Script danach wieder löschen / deaktivieren):

                setState("hm-rpc.1.CUX0200010.0.LOWBAT", false);
                

                Entsprechend für die anderen 4 Datenpunkte.

                1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active last edited by

                  iobroker hab ich komplett neu gestartet.

                  Batterie ist bei enum vorhanden; und ja B wird groß geschrieben.

                  Und state erzeugen geht nicht; weil es doch den Datenpunkt gar nicht gibt.

                  mfg

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @bahnuhr:

                    Und state erzeugen geht nicht; weil es doch den Datenpunkt gar nicht gibt. `
                    Wirklich nicht ? Wie kommt es dann zu der Warnung ?
                    @bahnuhr:

                    Batterie ist bei enum vorhanden; und ja B wird groß geschrieben. `
                    Die ID ist "enum.functions.Batterie" ? Was ergibt das Log ?

                    var cacheSelectorLOWBAT = $('channel[state.id=*.LOWBAT](functions=Batterie)');
                    log(JSON.stringify(cacheSelectorLOWBAT));
                    
                    1 Reply Last reply Reply Quote 0
                    • bahnuhr
                      bahnuhr Forum Testing Most Active last edited by

                      @paul53:

                      Wirklich nicht ? Wie kommt es dann zu der Warnung ? `

                      Du hast recht; diesen Punkt gibt es tatsächlich.

                      Hab ich übersehen; komisch!?!?!?

                      @paul53:

                      var cacheSelectorLOWBAT = $('channelstate.id=*.LOWBAT');

                      log(JSON.stringify(cacheSelectorLOWBAT)); `

                      Ergibt:

                      javascript.0	2018-03-19 21:38:44.500	info	script.js.Scripte.test2: {"length":0}
                      

                      Ehrlich gesagt; ich versteh es nicht.

                      unter Aufzählung sind bei "enum.functions.Batterie" zahlreiche Geräte ersichtlich.

                      Und dann kommt 0.

                      Ist mir zu hoch.

                      Vielleicht ist ja die Lösung mit dem "false" schreiben die richtige.

                      Oder man lässt es so; ist ja nur ne Warnung. Und das Script läuft ja.

                      mfg und Danke für deine Hilfe und Unterstützung.

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @bahnuhr:

                        unter Aufzählung sind bei "enum.functions.Batterie" zahlreiche Geräte ersichtlich.

                        Und dann kommt 0. `
                        Das stimmt. Allerdings ist LOWBAT bei allen Geräten, die ich kenne, dem Kanal 0 zugeordnet. In der Liste ist aber kein Kanal 0 dabei. Ich vermute, dass es damit zusammen hängt. Das Problem ist, dass der Kanal 0 auf der CCU unsichtbar ist (zumindest war es auf meiner CCU1 so).

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        437
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        javascript monitoring
                        2
                        12
                        1217
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo