Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Skript zur dynamischen Generierung Batterie/Akku Symbol

    NEWS

    • Wartung am 15.11. – Forum ab 22:00 Uhr nicht erreichbar

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    Skript zur dynamischen Generierung Batterie/Akku Symbol

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ro75
      Ro75 last edited by

      eace03e9-3cb1-4cdc-ac89-5b1bb4ac4a99-image.png

      neue Funktionalitäten.

      • Ladesymbol frei beweglich

      • freies Suffix, alternativ komplett freier Text

      • Kommastellen möglich

      Funktion und Beispiel im ersten Post aktualisiert. Viel Spaß

      Ro75.

      1 Reply Last reply Reply Quote 1
      • Ro75
        Ro75 last edited by Ro75

        473754d2-1ed2-4e4b-92a8-05be890848e5-image.png
        1.0.6: Sortierung der Parameter, Ladesymbol kann auf Wunsch sanft blinken, Dokumentation und Beispiel angepasst

        WICHTIG: Wird der Code ausgetauscht- MUSS der Aufruf mit geändert werden! - BEISPIEL ansehen!

        Ro75.

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

          @ro75

          Kannst du mir bitte mal deinen Aufruf mit mehreren Symbolen zeigen?

          Ro75 1 Reply Last reply Reply Quote 0
          • Ro75
            Ro75 @sigi234 last edited by Ro75

            @sigi234 zum Beispiel so. Musst es für dich halt anpassen

            Deklaration

            const ZielDPHW = '0_userdata.0.Batterie_Heizung_WZ';
            const ZielDPHK = '0_userdata.0.Batterie_Heizung_KZ';
            const ZielDPHB = '0_userdata.0.Batterie_Heizung_Bad';
             
            const dValueW = 'fritzdect.0.DECT_099950330172.battery';
            const dValueK = 'fritzdect.0.DECT_099950346641.battery';
            const dValueB = 'fritzdect.0.DECT_099950325774.battery';
            
            const decimalPlaces = 0; // bitte anpassen
            const labelSuffix = '%'; // bitte anpassen
            const customLabel = null; // bitte anpassen
            const showPercent = true; // bitte anpassen
            const strongColors = true; // bitte anpassen
            const colorScheme = 'default'; // bitte anpassen
            const showBolt = false; // bitte anpassen
            const boltPos = 100; // bitte anpassen
            const blinkBolt = false; // bitte anpassen
            

            //einfacher Funktionsaufruf mit Speicherung der SVG in einen Datenpunkt

            setState(ZielDPHW, generateBatterySvg(getState(dValueW).val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            setState(ZielDPHK, generateBatterySvg(getState(dValueK).val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            setState(ZielDPHB, generateBatterySvg(getState(dValueB).val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            

            //Auf Änderung reagieren und Speicherung der SVG in einen Datenpunkt

            on({ id: dValueW, change: 'ne' }, dp => {
                setState(ZielDPHW, generateBatterySvg(dp.state.val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            });
            on({ id: dValueK, change: 'ne' }, dp => {
                setState(ZielDPHK, generateBatterySvg(dp.state.val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            });
            on({ id: dValueB, change: 'ne' }, dp => {
                setState(ZielDPHB, generateBatterySvg(dp.state.val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
            });
            

            Ro75.

            1 Reply Last reply Reply Quote 1
            • Ro75
              Ro75 last edited by

              c307a50d-756d-4dfc-8cf4-ba363e3cacb6-image.png

              Und es lässt sich auch alles zentral konfigurieren, sodass Änderungen zentral vorgenommen, gespeichert und sofort in Kraft treten.

              Ro75.

              1 Reply Last reply Reply Quote 0
              • M
                Maxtor62 @sigi234 last edited by

                @sigi234
                hast Du den Aufruf mit einem extra Skript gestartet?

                Bei mir wird kein Datenpunkt erstellt.
                Grüße

                Ro75 1 Reply Last reply Reply Quote 0
                • Ro75
                  Ro75 @Maxtor62 last edited by Ro75

                  @maxtor62 in meinem Beispiel (Post 1) wird auch kein Datenpunkt automatisch erstellt. Im Beispiel wird auf einen bereits existierenden Datenpunkt verwiesen.

                  Ro75.

                  M 1 Reply Last reply Reply Quote 0
                  • M
                    Maxtor62 @Ro75 last edited by

                    @ro75

                    Hi, danke für Deine Hilfe. Bin halt kein Java-Scripter.

                    Meine Datenpunkte:

                    const ZielDP = '"0_userdata.0.vis.VIS-Batterie.Batt'; // bitte anpassen
                     
                    const dValue = getState('ecoflow-mqtt.0.D3M1ZE1A9H8G0082.DisplayPropertyUpload.bmsBattSoc').val; // bitte anpassen
                    const decimalPlaces = 0; // bitte anpassen
                    const labelSuffix = '%'; // bitte anpassen
                    const customLabel = null; // bitte anpassen
                    const showPercent = true; // bitte anpassen
                    const strongColors = true; // bitte anpassen
                    const colorScheme = 'default'; // bitte anpassen
                    const showBolt = false; // bitte anpassen
                    const boltPos = 100; // bitte anpassen
                    const blinkBolt = false; // bitte anpassen
                     
                    //Funktionsaufruf mit Speicherung der SVG in einen Datenpunkt
                    setState(ZielDP, generateBatterySvg(dValue, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
                    
                    
                    Ro75 1 Reply Last reply Reply Quote 0
                    • Ro75
                      Ro75 @Maxtor62 last edited by Ro75

                      @maxtor62 sagte in Skript zur dynamischen Generierung Batterie/Akku Symbol:

                      const ZielDP = '"0_userdata.0.vis.VIS-Batterie.Batt';

                      da ist ein Fehler drin. Korrekt wäre

                      const ZielDP = '0_userdata.0.vis.VIS-Batterie.Batt';
                      

                      Und der Datenpunkt (String / Zeichen) muss bereits existieren.

                      Ro75.

                      M Rene55 2 Replies Last reply Reply Quote 0
                      • M
                        Maxtor62 @Ro75 last edited by

                        @ro75 sagte in Skript zur dynamischen Generierung Batterie/Akku Symbol:

                        @maxtor62 sagte in Skript zur dynamischen Generierung Batterie/Akku Symbol:

                        const ZielDP = '"0_userdata.0.vis.VIS-Batterie.Batt';

                        da ist ein Fehler drin. Korrekt wäre

                        const ZielDP = '0_userdata.0.vis.VIS-Batterie.Batt';
                        

                        Und der Datenpunkt (String / Zeichen) muss bereits existieren.

                        Ro75.

                        Sorry, das " war fehl am Platz. Läuft.👍

                        Danke Dir

                        Ro75 1 Reply Last reply Reply Quote 0
                        • Ro75
                          Ro75 @Maxtor62 last edited by

                          @maxtor62 Super, freut mich.

                          Ro75.

                          1 Reply Last reply Reply Quote 0
                          • Rene55
                            Rene55 @Ro75 last edited by

                            @ro75 Ich stoße auf einen Fehler, wenn ich ein SVG generiere mit "showBolt = true;".

                            XML-Verarbeitungsfehler: Präfix nicht an einen Namespace gebunden
                            Adresse: file:///Z:/Dokumentationen/ioBroker/ro75_BattSymb2a.svg
                            Zeile Nr. 49, Spalte 7:
                                  <use xlink:href="#boltSymbol-b-arf2f44" class="" transform="translate(184, 90)
                            ------^
                            
                            Ro75 1 Reply Last reply Reply Quote 0
                            • Ro75
                              Ro75 @Rene55 last edited by Ro75

                              @rene55 funktioniert nur via Datenpunkt. Als Datei speichern und dann öffnen geht nicht, da bekomme ich auch nur Meldungen.
                              Zeige mal bitte den dazugehörigen Code, also den von der Funktion.

                              Ro75.

                              M Rene55 2 Replies Last reply Reply Quote 0
                              • M
                                Maxtor62 @Ro75 last edited by

                                @ro75

                                Noch ne Frage: wie wird das Skript getriggert? Mein Datenpunkt hat sich geändert, das tolle Bild leider nicht.
                                Grüße

                                Ro75 1 Reply Last reply Reply Quote 0
                                • Ro75
                                  Ro75 @Maxtor62 last edited by

                                  @maxtor62 schaue bitte Post #20.

                                  Ro75.

                                  M 1 Reply Last reply Reply Quote 0
                                  • M
                                    Maxtor62 @Ro75 last edited by

                                    @ro75 sagte in Skript zur dynamischen Generierung Batterie/Akku Symbol:

                                    @maxtor62 schaue bitte Post #20.

                                    Ro75.

                                    Ok, habe wie im Post #20 die Zeile

                                    on({ id: dValue, change: 'ne' }, dp => {
                                        setState(ZielDP, generateBatterySvg(dp.state.val, decimalPlaces, labelSuffix, customLabel, showPercent, strongColors, colorScheme, showBolt, boltPos, blinkBolt), true);
                                    });
                                    
                                    

                                    noch eingebaut.

                                    script.js.Test.Batterie: Error by subscription (trigger): Wrong ID of type boolean or number.
                                    

                                    Sorry, ich bin halt kein Coder.

                                    Ro75 1 Reply Last reply Reply Quote 0
                                    • Ro75
                                      Ro75 @Maxtor62 last edited by

                                      @maxtor62 dValue muss praktisch dein Datenpunkt sein.

                                      Ro75.

                                      M 1 Reply Last reply Reply Quote 0
                                      • M
                                        Maxtor62 @Ro75 last edited by

                                        @ro75
                                        Das ist der richtige Datenpunkt. Sorry, ich kann das halt nicht.
                                        Aber ist ok.
                                        Danke

                                        Ro75 1 Reply Last reply Reply Quote 0
                                        • Ro75
                                          Ro75 @Maxtor62 last edited by

                                          @maxtor62 wie lautet denn der Datenpunkt mit den Batterie Werten?
                                          Ro75

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

                                            Ich habe mal das Skript für das widget aus dem adapter jsontemplate umgesetzt

                                            https://forum.iobroker.net/topic/31521/test-widget-json-template/33?_=1762980256778

                                            Damit kann man dann ohne Datenpunkt, um das Bild zwischenzuspeichern, das Bild verwenden. Das Widget reagiert auch direkt auf veränderungen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            931
                                            Online

                                            32.4k
                                            Users

                                            81.3k
                                            Topics

                                            1.3m
                                            Posts

                                            javascript monitoring
                                            8
                                            48
                                            784
                                            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