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.
    • paul53
      paul53 last edited by

      Poste bitte das Objekt "enum.functions.Batterie betrieben" (raw in Code tags).

      1 Reply Last reply Reply Quote 0
      • 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

                          843
                          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