Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe

    This topic has been deleted. Only users with topic management privileges can see it.
    • D
      daNick @gogohome last edited by

      @gogohome

      Hallo

      Ich habe mir meine HomeMatic IP und HomeMatic Sensoren angeschaut (u.a. Homematic IP Fenstersensoren (optisch)) und da sind die Batterie/Spannungs-Infos immer in Channel 0, Channel 1 enthält nur den Zustand (offen/zu).

      Haben Sie schon einmal versucht, die Sensoren im HomeMatic-Adapter neu einzulesen (im Adapter "Geräte neu einlesen (einmalig)" ankreuzen)?

      Vielleicht verschwinden dann die Duplikate im Channel 1.

      Gruß daNick

      1 Reply Last reply Reply Quote 0
      • P
        Pittini Developer @daNick last edited by

        @daNick sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

        @Pittini

        OK, danke.

        1. Nochmal zu HomeMatic LowBat/ Low_Bat:
          Es kann also der Datenpunkt in eine BELIEBIGE Funktionsgruppe, das Script ignoriert den Spannungs-Wert aus dem Namen der Gruppe, wenn der Datenpunkt boolean ist?
          ob die Gruppe (/z.b) ..._15 oder ..._150 heißt, ist ganz egal?

        Nein, Du denkst zu kompliziert. Das Gerät hat physikalisch irgendeine Batterie drin, die hat ne Sollspannung, und die gibst Du an, z.B. "BatterieSpannung_30" für 3 Volt Knopfzelle. Alles andere macht das Skript intern, es schaut erst mal ob ne Zahl drinsteht und wenn nicht, dann guggt es nach nem Bool. Dann legt es anhand der Sollspannung der Batterie, eben bei true/false, 0V/3V an.

        1. Ich habe Zigbee-Sensoren, die NUR Batterie-Prozent liefern, aber keinen Spannungswert.
          Auch die können in eine beliebige Funktionsgruppe?

        Hier gilt das gleiche wie oben, es muß die RICHTIGE Spannung für dieses Gerät angegeben sein, dass da Prozent kommen erkennt das Skript wiederum automatisch weil dann % als Einheit im Datenpunkt stehen.

        1. Ginge es, zur Wahrung der Übersichtlichekit Funktionsgruppen zu erstellen, die "BatterieSpannung_Prozent" und "BatterieSpannung_Boolean" heißen, oder käme dann (kurz- oder langfristig) etwas durcheinander?

        Wäre vollkommen sinnfrei, wie will ich was berechnen wenn ich keine Sollwerte hab?

        P 1 Reply Last reply Reply Quote 0
        • O
          Olli77 @Pittini last edited by

          @Pittini

          danke das war es! Nur weil ich Batteriespannung und nicht BatterieSpannung geschrieben habe, kam der fehler. Nun nach Änderung geht es ohne Fehler.

          Eine Frage habe ich aber nicht

          Ich halte die Batteriemin. Wert für etwas hoch.....Kann ich das einfach ändern und wenn ja bis wie weit macht es sinn?

          Ist es ausserdem normal das das alles "Rot" ist?
          xx.JPG

          P 1 Reply Last reply Reply Quote 0
          • P
            Pittini Developer @Olli77 last edited by

            @Olli77 sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

            Ich halte die Batteriemin. Wert für etwas hoch.....Kann ich das einfach ändern und wenn ja bis wie weit macht es sinn?

            Ja, kannste ändern, inwieweit kann ich nicht sagen is auch bisserl von den Geräten abhängig. Am besten mal warten bis ein Device leer ist und nimmer aktualisiert, dann siehste ja am letzten Wert bei welcher Spannung es ausgestiegen ist.
            Aber grundsätzlich is der Wert eher zu niedrig als zu hoch, ich hab bei mir 2,64V als Limit

            Ist es ausserdem normal das das alles "Rot" ist?

            Ja

            O 1 Reply Last reply Reply Quote 0
            • O
              Olli77 @Pittini last edited by

              @Pittini said in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

              @Olli77 sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

              Ich halte die Batteriemin. Wert für etwas hoch.....Kann ich das einfach ändern und wenn ja bis wie weit macht es sinn?

              Ja, kannste ändern, inwieweit kann ich nicht sagen is auch bisserl von den Geräten abhängig. Am besten mal warten bis ein Device leer ist und nimmer aktualisiert, dann siehste ja am letzten Wert bei welcher Spannung es ausgestiegen ist.
              Aber grundsätzlich is der Wert eher zu niedrig als zu hoch, ich hab bei mir 2,64V als Limit

              Ist es ausserdem normal das das alles "Rot" ist?

              Ja

              ok danke für die hilfe

              1 Reply Last reply Reply Quote 0
              • A
                Andi Luma @Pittini last edited by Andi Luma

                @Pittini Hallo , erstmal Danke für das Script. Kann es sein das hier die downloadbaren Versionen irgendwie auseinander gelaufen sind , auf der Github Seite gibt es im Changelog die Version 1.63 und als neueste die 1.65, der Download von dort liefert aber heute Morgen // Batterieüberwachungsskript Version 1.6.4 Stand 18.06.2020 - Git: https://github.com/Pittini/iobroker-Batterienauswertung. Bei mir werden dann die MAX! Sensoren, die nur true / false liefern e34f196f-ec88-456e-965c-00904d17cee7-image.png
                mit der Funktion BatterieSpannung_ ergibt es so ein Bild 1ac74e45-73e6-46ca-babe-ffffa16910ef-image.png
                oder muss hier eine andere Funktion/ Aufzählung gewählt werden ? , was ich irgendwo überlesen habe

                P 1 Reply Last reply Reply Quote 0
                • P
                  Pittini Developer @Andi Luma last edited by

                  @Andi-Luma sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

                  @Pittini Hallo , erstmal Danke für das Script. Kann es sein das hier die downloadbaren Versionen irgendwie auseinander gelaufen sind , auf der Github Seite gibt es im Changelog die Version 1.63 und als neueste die 1.65, der Download von dort liefert aber heute Morgen // Batterieüberwachungsskript Version 1.6.4 Stand 18.06.2020 - Git: https://github.com/Pittini/iobroker-Batterienauswertung.

                  Kann schon mal vorkommen dass ich vergess iwo die Version zu aktualisieren, einfach immerdie höchste nehmen und gut.

                  Bei mir werden dann die MAX! Sensoren, die nur true / false liefern
                  mit der Funktion BatterieSpannung_ ergibt es so ein Bild 1ac74e45-73e6-46ca-babe-ffffa16910ef-image.png
                  oder muss hier eine andere Funktion/ Aufzählung gewählt werden ? , was ich irgendwo überlesen habe

                  Du hast das grundlegendste weggelassen. Anleitung .1

                  E 1 Reply Last reply Reply Quote 0
                  • E
                    Elektronikwelt @Pittini last edited by

                    @Pittini Hallo wie kann ich mehrere verschiedene Batteriespannungen "BatterieSpannung_30" und BatterieSpannung_15 mit einem Skript abrufen.
                    wie muss ich das in der
                    const FunktionBaseName = "BatterieSpannung_30"; eintragen, mit Komma getrennt?
                    Bin in Javascript nicht so fit.

                    P 1 Reply Last reply Reply Quote 0
                    • P
                      Pittini Developer @Elektronikwelt last edited by Pittini

                      @Elektronikwelt sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

                      @Pittini Hallo wie kann ich mehrere verschiedene Batteriespannungen "BatterieSpannung_30" und BatterieSpannung_15 mit einem Skript abrufen.
                      wie muss ich das in der
                      const FunktionBaseName = "BatterieSpannung_30"; eintragen, mit Komma getrennt?
                      Bin in Javascript nicht so fit.

                      Den FunktionBaseName nicht ändern, vorallem nicht hinter dem Unterstrich. Die verschiedenen Spannungen erkennt das Skript automatisch, du willst da mehr tun als nötig.

                      E 1 Reply Last reply Reply Quote 0
                      • E
                        Elektronikwelt @Pittini last edited by

                        @Pittini Danke. Es funktioniert.

                        E 1 Reply Last reply Reply Quote 0
                        • sigi234
                          sigi234 Forum Testing Most Active @Pittini last edited by sigi234

                          @Pittini

                          Hallo, warum sind fast alle Tod?

                          Screenshot (2558).png

                          22:49:13.027	info	javascript.0 (8716) Stop script script.js.common.Batterie
                          22:49:13.371	info	javascript.0 (8716) Start javascript script.js.common.Batterie
                          22:49:13.394	info	javascript.0 (8716) script.js.common.Batterie: Reaching FillWelcheFunktionVerwenden
                          22:49:13.395	info	javascript.0 (8716) script.js.common.Batterie: Found Function BatterieSpannung_15
                          22:49:13.395	info	javascript.0 (8716) script.js.common.Batterie: Found Function BatterieSpannung_30
                          22:49:13.395	info	javascript.0 (8716) script.js.common.Batterie: InitialSpannung 0 gesetzt auf 80%= 1.2
                          22:49:13.395	info	javascript.0 (8716) script.js.common.Batterie: InitialSpannung 1 gesetzt auf 80%= 2.4
                          22:49:13.396	info	javascript.0 (8716) script.js.common.Batterie: registered 0 subscriptions and 0 schedules
                          22:49:13.451	info	javascript.0 (8716) script.js.common.Batterie: CreateStates fertig!
                          22:49:13.451	info	javascript.0 (8716) script.js.common.Batterie: Reaching main()
                          22:49:13.451	info	javascript.0 (8716) script.js.common.Batterie: Reaching init()
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: BattMinLimit Value conversion - success
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: BattMinLimit Value conversion - success
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: Tempval=false TempUnit=undefined TypeOf=boolean
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: 0 BatterieSpannung_30 found at hm-rpc.0.NEQ1818500.0.LOWBAT Umax= 3 BattMinLimit=2.4 Val= 3 SensorProzent= 100
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: Tempval=false TempUnit=undefined TypeOf=boolean
                          22:49:13.452	info	javascript.0 (8716) script.js.common.Batterie: 1 BatterieSpannung_30 found at hm-rpc.0.NEQ1826414.0.LOWBAT Umax= 3 BattMinLimit=2.4 Val= 3 SensorProzent= 100
                          22:49:13.453	info	javascript.0 (8716) script.js.common.Batterie: Tempval=false TempUnit=undefined TypeOf=boolean
                          22:49:13.453	info	javascript.0 (8716) script.js.common.Batterie: 2 BatterieSpannung_30 found at hm-rpc.0.OEQ0655913.0.LOWBAT Umax= 3 BattMinLimit=2.4 Val= 3 SensorProzent= 100
                          22:49:13.453	info	javascript.0 (8716) script.js.common.Batterie: Tempval=2.9 TempUnit=V TypeOf=number
                          22:49:13.453	info	javascript.0 (8716) script.js.common.Batterie: 3 BatterieSpannung_30 found at hm-rpc.0.OEQ0655913.4.BATTERY_STATE Umax= 3 BattMinLimit=2.4 Val= 2.9 SensorProzent= 96.66666666666667
                          22:49:13.454	info	javascript.0 (8716) script.js.common.Batterie: Reaching CheckDeadBatt()
                          22:49:13.455	info	javascript.0 (8716) script.js.common.Batterie: Reaching Meldung()
                          22:49:13.455	info	javascript.0 (8716) script.js.common.Batterie: Ausfall oder disconnect im Vorraum bei Gerät Haustuer
                          22:49:13.455	info	javascript.0 (8716) script.js.common.Batterie: Reaching Meldung()
                          22:49:13.455	info	javascript.0 (8716) script.js.common.Batterie: Ausfall oder disconnect im Esszimmer bei Gerät Terrassentuer
                          22:49:13.455	info	javascript.0 (8716) script.js.common.Batterie: Reaching Meldung()
                          22:49:13.456	info	javascript.0 (8716) script.js.common.Batterie: Ausfall oder disconnect im Esszimmer bei Gerät HZK Esszimmer
                          22:49:13.456	info	javascript.0 (8716) script.js.common.Batterie: Reaching MakeTable
                          22:49:13.459	info	javascript.0 (8716) script.js.common.Batterie: Reaching CheckAllBatterys() found 4 Devices
                          22:49:13.460	info	javascript.0 (8716) script.js.common.Batterie: Sensor[0] = ist ausgefallen oder disconnected
                          22:49:13.460	info	javascript.0 (8716) script.js.common.Batterie: Sensor[1] = ist ausgefallen oder disconnected
                          22:49:13.460	info	javascript.0 (8716) script.js.common.Batterie: Sensor[2] = ist ausgefallen oder disconnected
                          22:49:13.460	info	javascript.0 (8716) script.js.common.Batterie: Reaching Meldung()
                          22:49:13.470	info	javascript.0 (8716) script.js.common.Batterie: Ausfall oder disconnect im Vorraum bei Gerät Haustuer<br>Ausfall oder disconnect im Esszimmer bei Gerät Terrassentuer<br>Ausfall oder disconnect im Esszimmer bei Gerät HZK Esszimmer
                          22:49:13.470	info	javascript.0 (8716) script.js.common.Batterie: Reaching CheckAllBatterysOk - Lastmessage=Ausfall oder disconnect im Vorraum bei Gerät Haustuer<br>Ausfall oder disconnect im Esszimmer bei Gerät Terrassentuer<br>Ausfall oder disconnect im Esszimmer bei Gerät HZK Esszimmer
                          22:49:13.470	info	javascript.0 (8716) script.js.common.Batterie: Reaching CheckNextLowBatt()
                          22:49:13.470	info	javascript.0 (8716) script.js.common.Batterie: Aktuell niedrigster Batteriestand (2.90V): Esszimmer bei Gerät HZK Esszimmer
                          22:49:13.471	info	javascript.0 (8716) script.js.common.Batterie: Reaching MakeTable
                          22:50:13.468	info	javascript.0 (8716) script.js.common.Batterie: Reaching CheckDeadBatt()
                          22:50:13.469	info	javascript.0 (8716) script.js.common.Batterie: Reaching MakeTable
                          

                          Edit:

                          Über Nacht erledigt.

                          1 Reply Last reply Reply Quote 0
                          • E
                            Elektronikwelt @Elektronikwelt last edited by

                            @Pittini heute werden meine Räume nicht mehr eingelesen. Nur noch einer wird zugewiesen. Habe JS Adapter neu gestartet Alle sind in den Objekten zugewiesen.
                            22cd7502-c712-4bf6-9557-d81d0969dcdc-grafik.png
                            Woran liegt. das?

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

                              Hi,
                              erstens, danke @Pittini für dieses Skript. Funktioniert super. Ich hätte einen Erweiterungsvorschlag. Es geht um HMIP Geräte und deren Namen. Dort sollte man anstatt 2 Ebenen nach oben gehen, 3 Ebenen gehen.
                              29e07454-77fe-4892-b686-66d3294d6e5a-image.png
                              Hab's bei mir lokal schon in der GetParentId Funktion hinzugefügt.
                              Zusätzlich, bei Geräte die durch deconz gemanaged sind muss man auch 2 Ebenen nach oben gehen. Ich habe demnach die Funktion ein bisschen geändert:

                              function GetParentId(Id) {
                                  let parentDevicelId;
                                  if (Id.indexOf("deconz.") > -1 || Id.indexOf("hm-rpc.") > -1 || Id.indexOf("shelly.") > -1){ //Wenn deconz, hm-rpc oder shelly dann zwei Ebenen zurück
                                      parentDevicelId = Id.split(".").slice(0, -2).join(".");// Id an den Punkten in Array schreiben (split), die 2 letzten Elemente von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen
                                  }
                                  else if (Id.indexOf("hmip.") > -1) { //Wenn HMIP dann drei Ebenen zurück
                                      parentDevicelId = Id.split(".").slice(0, -3).join(".");// Id an den Punkten in Array schreiben (split), die 3 letzten Elemente von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen
                                  }
                                  else { //Wenn kein deconz, kein HM und kein shelly Adapter, eine Ebene zurück
                                      parentDevicelId = Id.split(".").slice(0, -1).join(".");// Id an den Punkten in Array schreiben (split), das letzte Element von hinten entfernen (slice) und den Rest wieder zu String zusammensetzen
                                  };
                                  //if (logging) log("Id= " + Id + " ParentDeviceId= " + parentDevicelId)
                                  return parentDevicelId
                              }
                              

                              P 1 Reply Last reply Reply Quote 0
                              • A
                                Alero last edited by

                                Hi,
                                hab von Pittini die Batt Überwachung installiert. Habe alles laut Duko gemacht. Vielen Dank an Pittini.
                                Die Anzeige kommt auch.
                                91dee472-b996-4804-ad6b-6718adafee2f-grafik.png
                                Bei der Tabelle sehe ich nichts. Bei Start des scripts bekomme ich folgende FM:
                                76a27676-a7e3-49a5-a682-21829ff3f464-grafik.png
                                Habe leider nicht viel Ahnung von Javascripten.
                                Hat jemand eine Idee warum sich meine Tabelle nicht aufbaut?
                                Gruß
                                Alero

                                P 1 Reply Last reply Reply Quote 0
                                • P
                                  Pittini Developer @mrFenyx last edited by

                                  @mrFenyx sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

                                  Hab's bei mir lokal schon in der GetParentId Funktion hinzugefügt.
                                  Zusätzlich, bei Geräte die durch deconz gemanaged sind muss man auch 2 Ebenen nach oben gehen. Ich habe demnach die Funktion ein bisschen geändert:

                                  Hab ich mal ins update 1.6.6 mit reingepackt, danke.

                                  1 Reply Last reply Reply Quote 0
                                  • P
                                    Pittini Developer @Alero last edited by

                                    @Alero sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

                                    Habe leider nicht viel Ahnung von Javascripten.
                                    Hat jemand eine Idee warum sich meine Tabelle nicht aufbaut?

                                    JS Adapter mal neugestartet? Zeig mal komplettes Startlog (als Text, nicht als Screenshot) und zeig mal nen Screenshot eines der angemaulten Geräte mit Funktions und Raumzuweisung aus der Objektliste.

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      Alero @Pittini last edited by Alero

                                      @Pittini

                                      Hi,
                                      sorry das ich mich erst jetzt melde.

                                      Ja JS Adapter neu gestartet.
                                      Hier der Logfile wenn ich das script neu starte.
                                      log.txt
                                      Hier das Bild von dem TFK Bad der in deiner Anzeige als leer angemeckert wird.
                                      ![Bild Text](17acc20b-86b0-4fda-8919-7a1f6e41de39-grafik.png Bild Link)
                                      ![Bild Text](ea403ae2-9544-4fbc-9fe4-99d6d1845d61-grafik.png Bild Link)

                                      Gruß
                                      Alero

                                      P 1 Reply Last reply Reply Quote 0
                                      • P
                                        Pittini Developer @Alero last edited by

                                        @Alero Typischer Fall von nicht an die Anleitung gehalten. Lies bitte Anleitung .3 und vergleiche den Screenshot mit Deinem. Du hast die Funktion dem ganzen Channel verbraten, klar dass das Skript da aussteigt.

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          Alero @Pittini last edited by Alero

                                          @Pittini
                                          Hi,
                                          jo, da habe ich wohl doch was überlesen. Danke.

                                          Habs geändert. Jetzt steht Spannung_xx nur noch bei Operating_voltage
                                          ![Bild Text](b54e14f1-1cd1-4178-b90c-04c3106b29db-grafik.png Bild Link)
                                          Bekomme aber immer noch eine FM im Script.
                                          log_01.txt

                                          Gruß
                                          alero

                                          P 1 Reply Last reply Reply Quote 0
                                          • P
                                            Pittini Developer @Alero last edited by

                                            @Alero sagte in [Vorlage] Generische Batteriestandsüberwachung + Vis-ausgabe:

                                            Bekomme aber immer noch eine FM im Script.

                                            Ich sehe "Found Function BatterieSpannung_45" - aber ich seh kein Device das das nutzt? Kontrollier bitte mal das Device weswegen Du die Funktion angelegt hast und auch alle anderen ob dort die Funktionszuweisungen passen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            743
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring template
                                            81
                                            581
                                            109160
                                            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