Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Script fürTabelle der Batterie Zustände

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Script fürTabelle der Batterie Zustände

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Scrounger last edited by

      @Scrounger
      wegen sortierung des namens: ich übergebe ja nur ein json - das ist nicht sortiert sondern sammelt alle daten der einzelnen devices - ich dachte, die sortierung wird in deinen table widget vorgenommen? meine sortierung hat doch damit nichts zu tun - wenn ich auf die spaltenüberschrift auf deinem widget drücke, hat das doch keine auswirkungen auf mein script?

      nachtrag - hatte im widget etwas eingetragen - die sortierung des namen funktioniert jetzt ohne probleme
      @Oli in meinem widget steht im spaltenlayout[0] unter Objectname zum Sortieren[0] etwas drin - das einfach rauslöschen)

      • das mit dem extraproperty für zahlenwerte muss ich mir noch ansehen

      hier das beispiel json

      [
         {
         	"Device": "Comet DECT #2 Kueche",
         	"Wert": "50 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "Comet DECT #1 Zimmer",
         	"Wert": "60 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "Comet DECT Flur",
         	"Wert": "90 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "Comet DECTBad",
         	"Wert": "60 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "FRITZ!DECT BAD",
         	"Wert": "70 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "FRITZ!DECT KUECHE",
         	"Wert": "80 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "FRITZ!DECT WOHNZIMMER",
         	"Wert": "70 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fritzk.png"
         },
         {
         	"Device": "Außenmodul-Carport",
         	"Wert": "5 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/netatmok.png"
         },
         {
         	"Device": "Regenmesser",
         	"Wert": "33 %",
         	"Status": "??",
         	"Hersteller": "/vis.0/armin/img/marken/netatmok.png"
         },
         {
         	"Device": "Schlafzimmer",
         	"Wert": "99 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/netatmok.png"
         },
         {
         	"Device": "Windmesser",
         	"Wert": "11 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/netatmok.png"
         },
         {
         	"Device": "xmagnet",
         	"Wert": "60.6 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "magnet",
         	"Wert": "62.4 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "magnet",
         	"Wert": "64.2 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "magnet",
         	"Wert": "60.6 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "motion 2",
         	"Wert": "66.1 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "motion 1",
         	"Wert": "67.9 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "sensor_motion.aq2",
         	"Wert": "60.6 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "switch",
         	"Wert": "69.2 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "switch",
         	"Wert": "71 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "vibration",
         	"Wert": "64.2 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "vibration",
         	"Wert": "64.2 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/xiaomki.png"
         },
         {
         	"Device": "Fenster Küche",
         	"Wert": "66 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Wasser Küche",
         	"Wert": "33 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Fenster Kinderzimmer rechts",
         	"Wert": "66 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Fenster Wohnzimmer",
         	"Wert": "22 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Temp Schlafzimmer",
         	"Wert": "44 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Fenster Schlafzimmer",
         	"Wert": "99 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Fenster Bad",
         	"Wert": "44 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Wasser Bad",
         	"Wert": "33 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Fenster Kinderzimmer links",
         	"Wert": "5 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/deconzk.png"
         },
         {
         	"Device": "Wintergarten",
         	"Wert": "low",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Tado Virtuell",
         	"Wert": "high",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Wohnzimmer",
         	"Wert": "low",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Küche",
         	"Wert": "high",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Schlafzimmer",
         	"Wert": "high",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Flur",
         	"Wert": "high",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Essbereich",
         	"Wert": "high",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/tadok.png"
         },
         {
         	"Device": "Heizk_Hobby",
         	"Wert": "3.5 V",
         	"Status": "??",
         	"Hersteller": "/vis.0/armin/img/marken/homematick.png"
         },
         {
         	"Device": "TC_Bad_EG",
         	"Wert": "1.5 V",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/homematick.png"
         },
         {
         	"Device": "RT_02_EG_WOHNEN",
         	"Wert": "2.4 V",
         	"Status": "??",
         	"Hersteller": "/vis.0/armin/img/marken/homematick.png"
         },
         {
         	"Device": "Fire Tablet",
         	"Wert": "67 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         },
         {
         	"Device": "Samsung Galaxy Tab 3",
         	"Wert": "72 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         },
         {
         	"Device": "TrekStor SurfTab theatre 13.3",
         	"Wert": "100 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         },
         {
         	"Device": "SM-T113-Tab",
         	"Wert": "87 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         },
         {
         	"Device": "GalaxyTabS2",
         	"Wert": "61 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         },
         {
         	"Device": "MediaPadT5",
         	"Wert": "74 %",
         	"Status": "?",
         	"Hersteller": "/vis.0/armin/img/marken/fullyk.png"
         }
      ]
      

      Scrounger 1 Reply Last reply Reply Quote 0
      • Scrounger
        Scrounger Developer @liv-in-sky last edited by Scrounger

        @liv-in-sky
        Hast natürlich Recht, die Sortierung wird vom Tablet Widget übernommen.
        Bin voll im IconList Widget Modus 😉

        Mit dem Tablet Widget kannst dann auch nur nach % oder V sortieren. Oder die beiden mixen.
        Dazu musst eine extra property im json Objekt einführen, wo nur die Zahl (Number) drin steht.
        Den Namen der property muss dann in den Widget Einstellungen für die Spalte wert als Sortierungs eintragen.

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Scrounger last edited by liv-in-sky

          @Scrounger bitte nochmal für dummies:

          es gibt folgende werte in einer spalte
          zahl in %
          zahl in volt
          string : low oder high

          ich schleife 2 variablen variable mit , die letztlich im json landen - z.b prozentValue und voltValue

          ich setze zusätzlich zum normalen wert die prozentValue, wenn eine prozent anzeige ist und gleichzeitig den voltwert auf 0
          oder
          ich setze zusätzlich zum normalen wert die voltValue, wenn eine voltanzeige ist und gleichzeitig den prozentwert auf 0
          ich setze zusätzlich zum low/high wert die voltValue auf 0, und gleichzeitig den prozentwert auf 0

          am ende sieht ds json-push so aus

          myJsonWidget2.push({
                          text: vax1,
                          subText: mysubText,
                          statusBarColor: vax5,
                          image: vax4,
                          imageColor: "",
                          listType: "text",
                          showValueLabel: false,
                          name: vax1,
                          status: vax3,
                          voltValue:voltValue,
                          prozentValue:prozentValue
                      });
          

          im widget muss ich dann

          Image 3.png

          kommt das ungefähr hin ode explodiert die vis oder das widget?

          Scrounger ub.privat 2 Replies Last reply Reply Quote 0
          • Scrounger
            Scrounger Developer @liv-in-sky last edited by

            @liv-in-sky Objektname zum sortieren kann nur eine property verarbeiten.

            1 Reply Last reply Reply Quote 0
            • ub.privat
              ub.privat @liv-in-sky last edited by

              @liv-in-sky

              Servus, wollte nur mal kurz anfragen, ob du das Akku-Script weiter "verfeinerst"?
              Hätte großes Interesse an den Filterfunktionen...
              Aber mach dir keine Umstände, auch ein "nein" ist ok...

              Beste Grüße 😉

              liv-in-sky 1 Reply Last reply Reply Quote 0
              • liv-in-sky
                liv-in-sky @ub.privat last edited by liv-in-sky

                @ub-privat

                habe es noch nicht genau kapiert - wenn ich nur nach einem sortieren kann, macht es keinen sinn bei 3 verschiedenen werten - es wird nie eine gute sortierung rauskommen

                ansonsten müßte ich tatsächlich mit 3 spalten für den wert arbeiten -also name,wert1,wert2,wert3,status,hersteller
                und werte für low/high stehen in wert1
                werte mit 1.3 V stehen in wert2
                und werte mit prozent in wert3

                ist nicht schön -

                1 Reply Last reply Reply Quote 0
                • Scrounger
                  Scrounger Developer @liv-in-sky last edited by

                  @liv-in-sky

                  Bin grad auf die Idee gekommen, dass man doch aus der Spannung die Batterieladung in % umrechnen könnte. Das geht zumindest mit den Homematic / Homemativ ip devices, indem man das Delta vom Spannungswert bei neuen Batterie berechnet und durch die Spannung bei neuen Batterie - die Unterspannungsgrenze teilt.
                  Ob das mit allen von dir unterstützten Geräten geht kann ich natürlich nicht sagen.

                  Evtl. könntest du das noch mit in dein Skript ein bauen?

                  Hier mein Skript wie ich die Berechnung mit meinen HM Devices mach - zur Inspiration, muss natürlich angepasst werden.

                  // Batterie Spannung in % umrechnen -> Batterieladung ****************************************************************************************************
                  
                  // import
                  const mathjs = require("mathjs");
                  
                  let selector = `[id=${myDevices.Sensoren.getId()}.*.Spannung]`
                  let alleSensorenSpannung = $(selector);
                  
                  // Fehlermeldung ausgeben, wenn selector kein result liefert
                  if (alleSensorenSpannung.length === 0) {
                      console.error(`no result for selector '${selector}'`)
                  }
                  
                  // Trigger
                  alleSensorenSpannung.on(SpannungToProzent);
                  
                  function SpannungToProzent() {
                      try {
                  
                          for (var i = 0; i <= alleSensorenSpannung.length - 1; i++) {
                              let id = alleSensorenSpannung[i];
                              let val = getState(id).val;
                  
                              if (val > 2) {
                                  if (existsState(id.replace('.Spannung', '.Batterieladung'))) {
                                      setState(id.replace('.Spannung', '.Batterieladung'), calcPercent(val, 2), true);
                                  }
                              } else {
                                  if (existsState(id.replace('.Spannung', '.Batterieladung'))) {
                                      setState(id.replace('.Spannung', '.Batterieladung'), calcPercent(val, 1), true);
                                  }
                              }
                  
                              function calcPercent(val, factor){
                                  let spannungNeueBatterie = 1.5 * factor;
                                  let unterSpannungsGrenze = 1.1 * factor;
                  
                                  return mathjs.round( (val - unterSpannungsGrenze) / (spannungNeueBatterie - unterSpannungsGrenze) * 100, 0);
                              }
                          }
                      } catch (err) {
                          console.error(`[SpannungToProzent] error: ${err.message}, stack: ${err.stack}`);
                      }
                  }
                  
                  SpannungToProzent();
                  
                  arteck 1 Reply Last reply Reply Quote 0
                  • arteck
                    arteck Developer Most Active @Scrounger last edited by

                    @Scrounger im zigbee wird das so gemacht

                    Scrounger 1 Reply Last reply Reply Quote 0
                    • Scrounger
                      Scrounger Developer @arteck last edited by

                      @arteck
                      Vielleicht könnte das auch direkt durch den hm-rpc adapter zur verfügung gestellt werden.
                      Hab gleich mal nen feature request gestellt 🙂
                      https://github.com/ioBroker/ioBroker.hm-rpc/issues/237

                      Scrounger created this issue in ioBroker/ioBroker.hm-rpc

                      closed Datepunkt für Batterieladung in % #237

                      liv-in-sky 2 Replies Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @Scrounger last edited by

                        @Scrounger erst mal danke , dass du noch weiter dran gedacht hast - werd das mal studieren - habe ja teilweise 3 verschiedene werte zur verfügung (batteriekapazität (1.5V, 3V oder5V ) beim umrechnen muss sowas auch mit kalkuliert werden

                        1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @Scrounger last edited by

                          @Scrounger

                          ok - das mit dem factor habe ich kapiert

                          ich bringe alle 3 verschiedenen werte auf prozent-werte

                          hight ist 100%, low ist 0%
                          der factor bei den verschiedenen batterie-möglichkeiten ist auch klar: zb. bei 1.5V batterien: 0.75V sind dann 50%

                          dann erstelle ich ein neues json-property, welches diese werte hat und übergebe es an dein widget - im widget muss ich bei der "Wert"-spalte das neue property als sortierung eingeben !

                          so könnte es funktionieren ?

                          dslraser 1 Reply Last reply Reply Quote 0
                          • dslraser
                            dslraser Forum Testing Most Active @liv-in-sky last edited by

                            @liv-in-sky sagte in Script fürTabelle der Batterie Zustände:

                            zb. bei 1.5V batterien: 0.75V sind dann 50%

                            bei 0.75V sind die leer...

                            liv-in-sky 3 Replies Last reply Reply Quote 0
                            • liv-in-sky
                              liv-in-sky @dslraser last edited by

                              @dslraser guter einwand (wenigstens hast du mit gedacht 🙂 )-beim factor darf ich nicht von 0 bis 1,5V rechnen !

                              1 Reply Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @dslraser last edited by

                                @dslraser 0% ist dann bei 1.1 - so habe wir das berechnet

                                das wird ein spaß - das ist keine lineare kurve! bin gespannt ob ich auf den faktor kommen werde

                                1 Reply Last reply Reply Quote 0
                                • liv-in-sky
                                  liv-in-sky @dslraser last edited by liv-in-sky

                                  @dslraser ich wollte kein +1 - stattdessen eine formel hätte mir mehr freude gemacht 🙂

                                  Scrounger 1 Reply Last reply Reply Quote 0
                                  • Scrounger
                                    Scrounger Developer @liv-in-sky last edited by

                                    @liv-in-sky

                                    Formel:
                                    (DP Wert - UnterSpannungsGrenze) / (SpannungNeueBatterie - UnterSpannungsGrenze) * 100

                                    Beispiel mit HM Türkontakt HMIP-SWDO:

                                    • SpannungNeueBatterie = 1,5V
                                    • UnterSpannungsGrenze = 1,1V (kann in der CCU verändert werden!)

                                    Sagen wir haben aktuell einen DP Wert von 1,3V, dann ist das in Prozent nach obiger Formel 50%.

                                    liv-in-sky 1 Reply Last reply Reply Quote 1
                                    • liv-in-sky
                                      liv-in-sky @Scrounger last edited by liv-in-sky

                                      @Scrounger super - danke - die fehlen noch , der rest funktioniert schon bei der sortierung

                                      ist zwar linear - aber das sollte als annäherung völlig aussreichen

                                      ub.privat 1 Reply Last reply Reply Quote 0
                                      • ub.privat
                                        ub.privat @liv-in-sky last edited by

                                        @liv-in-sky

                                        ...macht richtig Spaß mitzulesen! Musste schon schmunzeln. Am schönsten war "0.75V - dann sind sie leer!" ...
                                        Das hier ist ein echt Klasse Forum, dir wird geholfen und ein wenig Augenzwinkern ist auch dabei! Da vergisst man glatt den ganzen Alltagsstress.
                                        Danke!!! 👍 😉

                                        liv-in-sky 1 Reply Last reply Reply Quote 1
                                        • liv-in-sky
                                          liv-in-sky @ub.privat last edited by

                                          @ub-privat

                                          moin,

                                          im ersten post ist ein neues script und das table widget - die sortierung sieht aber etwas seltsam aus (nach werten), wenn man verschiedene geräte mit z.b verschiedenen batterie kapzitäten hat ( 1,5V oder 3 Volt)

                                          siehst dir einfach mal an

                                          im neuen table widget ist bei sortierung im spaltenlayout1 das object "helpSort" dazugekommen

                                          1 Reply Last reply Reply Quote 0
                                          • B
                                            Bielefelder81 last edited by

                                            Hallo.

                                            Ich habe zwei Fragen.

                                            1.) Im Script steht TABELLEN.AkkuMeessage ... Darf ich da das eine E entfernen was zu viel ist, oder hat das irgendwelche
                                            Bezüge. Mit Strg+F konnte ich im Script keinen weiteren Punkt mit Meessage finden.

                                            2.) Mich interessiert neben dem prozentualen Wert der Batterie auch welchen Typ Batterie ich in dem Gerät verbaut habe.
                                            Wie binde ich das ein?

                                            MfG Christian

                                            liv-in-sky 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            411
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring template
                                            67
                                            1379
                                            407747
                                            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