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.
    • 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
                              • A
                                Alero @Pittini last edited by Alero

                                @Pittini
                                hi, für die wetterstation. Ah , da war ja was . in dem Objekt gibt es die Operting_Voltage nicht bzw. wird nicht befüllt. hatte diesbezügglich schon mit dem entwickler gesprochen.
                                ok kann ich rausnehmen.
                                erledigt. fm bleibt.
                                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:

                                  ok kann ich rausnehmen.
                                  erledigt. fm bleibt.

                                  Nach all den Änderungen bitte nochmal den JS Adapter neustarten und noch mal ein startlog wenns nicht hilft bitte.

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

                                    @Pittini
                                    restartet und logfile.

                                    log_02.txt

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

                                      @Alero Langsam fällt mir nix mehr ein. Nimm bitte mal die "Function BatterieSpannung_45" komplett raus, auch die Funktion.
                                      Installier mal bitte die stable Version 1.6.4 zur Sicherheit dasses nicht am Skript liegt. Klappts dann immer noch nicht >
                                      Lösche alle Funktionszuweisungen Deiner Geräte bis auf eine und gugg obs dann geht (JS Adapter neustarten nicht vergessen). Wenns mit dem einen Gerät geht, dann bitte die anderen nach und nach hinzufügen bis der Fehler kommt (oder auch nicht). Sollte es auch mit einem Gerät nicht klappen wär evtl. ne Anydesk Session sinnvoll damit ich mir das mal direkt am System anschauen kann.

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

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

                                        Hi,
                                        Du meinst dein Script. das ist die 1.64.
                                        ![Bild Text](8b9e6c8a-47ce-4988-a2f6-71ad11703b69-grafik.png Bild Link)
                                        Die_45 ist raus . geht immer noch nicht. Werde die Einstellungen jetzt löschen und dann
                                        nach und nach die Funktionen wieder hochfahren und schauen ob es läuft.
                                        Ist vielleicht hier was falsch?
                                        ![Bild Text](e91876db-9a4e-46c6-ba20-18429d72e578-grafik.png Bild Link)
                                        Danke für deine Hilfe.

                                        Gruß
                                        Alero

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

                                          Hi Pittini,

                                          ich habe alle Funktionen raus genommen und egal welche ich einzeln hereinnehme bekomme ich das gleiche Ergebnis.

                                          ;-(
                                          Das mit der Anydesk session wäre prima.

                                          Gruß
                                          Alero

                                          C 1 Reply Last reply Reply Quote 0
                                          • C
                                            canim @Alero last edited by canim

                                            Erstmal ein dickes Dankeschön!Dass du deine Arbeit mit uns teilst. Ich habe eine Frage bezügliches meines Problemes.
                                            Was soll die Info ( s. Bild) mir über dem gelb makierten Sensor aussagen?
                                            Aktuell ist aber Küchen Sensor am niedrigsten.

                                            bf11f00b-f7c0-42ef-895b-0c00d9a7efe4-grafik.png

                                            habe Aktuell diese Einstellung

                                            V. 1.6.6

                                            //Grund Einstellungen
                                            const praefix = "javascript.0.BatterieUeberwachung."; //Grundpfad für Script DPs
                                            const logging = false; //Logging aktivieren?
                                            const FunktionBaseName = "BatterieSpannung_30"; //Name der Funktion welche für die Batterieüberwachung genutzt wird
                                            const UseTelegram = true; // Sollen Nachrichten via Telegram gesendet werden?
                                            const UseMail = false; // Sollen Nachrichten via Mail gesendet werden?
                                            const UseAlexa = false; // Sollen Nachrichten via Alexa ausgegeben werden?
                                            const AlexaId = ""; // Die Alexa Seriennummer
                                            const UseSay = false; // Sollen Nachrichten via Say ausgegeben werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden.
                                            const UseEventLog = true; // Sollen Nachrichten ins Eventlog geschreiben werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden.
                                            const UsePopUp = false // Soll PopUp angezeigt werden? Funktion des Authors, sollte bei Anwendern auf false gesetzt werden.
                                            const ProzMeansLive = true; //Zeigen Prozentwerte des Gerätedatenpunktes Batteriekapazität oder restliche Lebensdauer?
                                            let DeadIsAfter = 360; // In Minuten - Zeit nach der ein Gerät als "tot" gewertet wird wenn keine Statusänderung (ts) erfolgte.
                                            const NotifyDeadDevices = true; //Sollen auch "tote" Geräte gemeldet werden?
                                            
                                            //Tabellen Einstellungen
                                            const TblOkBgColor = "#4caf50"; //Hintergrundfarbe für Batteriestatus Ok
                                            const TblInfoBgColor = "#ffc107"; //Hintergrundfarbe für Batteriestatus Info, also die leerste Batterie welche noch nicht das Limit unterschreitet
                                            const TblWarnBgColor = "#f44336"; //Hintergrundfarbe für Batteriestatus Warnung, also jene Batterie welche unter das Limit kam.
                                            const TblDeadBgColor = "grey"; //Hintergrundfarbe für Batterie/Geräte Status tot.
                                            const HeadBgColor = "dimgrey"; //Hintergrundfarbe des Tabellenkopfes
                                            const FontColor = "black"; //Textfarbe für Tabelleninhalt
                                            const HeadFontColor = "white"; //Textfarbe für Tabellenkopf
                                            const TblShowLfdCol = false; //Tabellenspalte mit laufender Nummer anzeigen?
                                            const TblShowDeviceIDCol = true; //Tabellenspalte mit Geräte ID anzeigen?
                                            const TblShowDeviceNameCol = true; //Tabellenspalte mit Gerätenamen anzeigen?
                                            const TblShowRoomCol = false; //Tabellenspalte mit Raum anzeigen?
                                            const TblShowUmaxCol = false; //Tabellenspalte mit Batterie Nennspannung anzeigen? 
                                            const TblShowUistCol = false; //Tabellenspalte mit aktueller Batteriespannung anzeigen?
                                            const TblShowUlimitCol = false; //Tabellenspalte mit unterer Batterielimit Spannung anzeigen?
                                            const TblShowProzbatCol = false; //Tabellenspalte mit Batteriestand in Prozent anzeigen?
                                            const TblShowProzliveCol = true; //Tabellenspalte mit Restlebensdauer unter Berücksichtigung der Limitspannung in Prozent anzeigen? Beispiel: Batterie hat 3V Nennspannung, Limit ist bei 2V, aktueller Batteriestand ist 2.5V, dann wäre die Restlebensdauer 50%
                                            const TblShowStatusCol = true; //Tabellenspalte mit Status ausgeben?
                                            
                                            
                                            D 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            765
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

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