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 @ub.privat last edited by liv-in-sky

      @ub-privat

      füge mal unter homematic-ip diese zeile ein - zeile 895

      Image 3.png

      bei mir gehts dann

      Image 5.png

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

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

        @Elirion du kannst das neue vom post drüber auch mal testen - disable einfach die widget erzeugung im setting bereich

        bei mir funktioniert es - aber nur, weil der erste battery punkt auch die daten drinstehen hat - wenn das anders wäre - also eine id ohne daten als erstes drinsteht: gibt es warnings

        Läuft jetzt 😉 Hab die erste Version des Scripts genommen und dort den deconz-Teil ausgetauscht mit den entsprechenden Variablen 😉

        e9205234-f177-4f6e-b4c3-d33e6971e483-image.png

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

          @liv-in-sky

          Habe ich getan.
          Nach unserer Löschung der DP-Inhalte (json) werden diese leider nicht mehr befüllt.
          Script gestartet, gestoppt, ioBroker Start-Stop - nix.
          Gibt's da noch einen Trick???

          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

            hast du oben in setting auf true gesetzt? brauche....

            let   braucheMaterialDesignWidget=true;         
            let   braucheMaterialDesignWidgetTable=true;   
            
            ub.privat 1 Reply Last reply Reply Quote 0
            • ub.privat
              ub.privat @liv-in-sky last edited by

              @liv-in-sky

              perfekt! DANKE.
              Nun läuft alles!
              Kannst du mir nochmal sagen, in welchem %-Range die Farben spezifiziert sind?
              grün
              hellgrün
              gelb
              rot
              Mir ist schon klar, dass du verschiedene Spannungs-/Leistungswerte betrachtest.
              Muss aber intuitiv sein - Anwender nimmt halt die Farbe wahr und bewertet nach "gut oder schlecht"....
              6d192055-dcbe-4b50-9fc1-4d732aaf9fbb-grafik.png
              Aber nun nochmal 👍 👍 hoch und DANKE für die klasse Arbeit und den Support!

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

                @ub-privat

                es gibt nur rot, gelb grün - aber es scheint, ich habe verschiedene grüns drin - das kommt durch die verschiedenen entwicklungsstufen des scripts - also grün hat keine unterteilung der werte ! sondern sind je nach tagesform genutzt worden

                muss ich nochmal durchsehen und in ordnung bringen

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

                  @liv-in-sky

                  wie immer eine super Arbeit von dir, danke dafür.

                  Ich benutze das Table Widget und wollte fragen, ob bei dir die Sortierung nach Werten funktioniert?

                  Bei mir funktioniert das leider nicht, muss ich da im Widget noch was eingeben?

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

                    @Oli das mit dem sortieren im material des.- widget habe ich noch nicht näher angesehen - im moment wird für die "normale tabelle" sortiert - wie das mit diesen widgets geht weiß ich noch nicht - da muss man wohl ein zusätzliches widget dazunehmen - wenn es da was neues gibt, poste ich das widget

                    sieht irgendwie so aus:
                    Image 1.png

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

                      @liv-in-sky

                      ich meine das Table Widget, wenn hier auf die Überschriften gehst kann man normalerweise sortieren

                      2332ffd1-2a02-434b-a3c6-25efc5e362ce-image.png

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

                        @Oli ok - also wenn ich im moment auf name sortiere, ist das noch nicht ganz richtig ( @Scrounger hast du da bei der sortierung nach namen eine idee?)

                        Image 2.png

                        auf status funktioniert, der hersteller auch

                        auf wert wird wohl nie funktionieren, da in dieser spalte 3 verschiedene werte drin stehen können
                        low und high geht aber es gibt halt 1.5 V und 10%
                        das sind buchstaben oder auch zahlen - das kann der sortierungsmechanismus nicht abfangen - denke ich - dann müßte man dies je nach wert in eine eigene spalte schreiben

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

                          @liv-in-sky
                          Steht der Name als reiner Name drin, also ohne HTML tags etc?
                          Wenn ja dann nutz Mal noch 'toLowerCase()' in der sortier Funktion.

                          Da ich mir jetzt nicht den wolf suchen möchte, wo ist das aktuelle Skript? Und ab welcher Zeile hast du deine Sortierung Funktion? Dann schau ich heute Abend Mal drauf.

                          Sortieren nach % V würde gehen, wenn du eine property mit den Zahlen werten einfuhrst. Die Spalte müsste dann per Widget Einstellungen ausgeblendet werden.

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

                            @Scrounger danke -check ich mal -gebe dann bescheid

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            580
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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