Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. "Rechnen" in Widgets

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    "Rechnen" in Widgets

    This topic has been deleted. Only users with topic management privileges can see it.
    • bahnuhr
      bahnuhr Forum Testing Most Active last edited by

      Hallo steffen,

      habe es auch mal probiert.

      Widget: basic - string

      und widget: basic - string unescaped

      und dann das binding bei objekten

      {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value1+value2}

      oder

      {value:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value/2}

      In vis hab ich gar keine Anzeige.

      Ist es das richtige Widget?

      mfg

      Dieter

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

        Versuchs mal mit dem Html-Widget aber das addieren geht bei mir nicht, wenn ich 23 + 21 auslese bekomme ich als Ergebnis 2321 versuche ich es mit parseInt() gibt es gar keine Ausgabe.

        Alternativ kann man das auch über ein kleines JavaScript machen, ist zwar unschön aber funktioniert wenigstens

        1 Reply Last reply Reply Quote 0
        • bahnuhr
          bahnuhr Forum Testing Most Active last edited by

          Ja, script geht natürlich und stellt auch kein Problem dar.

          Wollte es aber auch so mal probieren.

          Klappt nur nicht.

          Ich nehme "basic-html"

          füge dann bei html ein:

          {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value1}

          Fazit: angezeigt wird in vis der wert von produziert -> korrekt so

          {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value2}

          Fazit: angezeigt wird in vis der wert 0 -> dies ist nicht korrekt

          drehe ich dies um:

          {value1:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value1}

          Fazit: angezeigt wird in vis der wert von eingespeist -> korrekt so

          Fazit:

          Die Variable value2 wird nicht korrekt ermittelt und folglich auch nicht angezeigt.

          Somit kann man auch nicht rechnen.

          @peoples

          Hab ich wieder das falsche widget genommen?

          mfg

          Dieter

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

            @bahnuhr:

            füge dann bei html ein:

            {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value1}
            
            

            Fazit: angezeigt wird in vis der wert von produziert -> korrekt so

            {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value2}
            
            

            Fazit: angezeigt wird in vis der wert 0 -> dies ist nicht korrekt

            drehe ich dies um:

            {value1:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value1}
            
            

            Fazit: angezeigt wird in vis der wert von eingespeist -> korrekt so

            Fazit:

            Die Variable value2 wird nicht korrekt ermittelt und folglich auch nicht angezeigt.

            @peoples

            Hab ich wieder das falsche widget genommen? `
            Das Widget nehme ich auch!

            Ich verstehe nur nicht ganz den Sinn von:

            {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value2}
            
            

            value1 = javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung (was steht hier normal drin wenn du unter Objekte schaust?)

            value2 = javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung (was steht hier normal drin wenn du unter Objekte schaust?)

            Und du lässt immer zwei anzeigen?

            Was ist wenn du einfach:

            [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{wert2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;wert2}"},"style":{"left":"50px","top":"173px","background-color":"yellow","width":"348px","height":"38px"},"widgetSet":"basic"}]
            
            

            oder

            [{"tpl":"tplHtml","data":{"g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"html":"{javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung}"},"style":{"left":"50px","top":"173px","background-color":"yellow","width":"348px","height":"38px"},"widgetSet":"basic"}]
            
            

            versuchst?

            1 Reply Last reply Reply Quote 0
            • bahnuhr
              bahnuhr Forum Testing Most Active last edited by

              Der Sinn ist, dass ich testen wollte ob er value2 anzeigt.

              hat er aber nicht.

              Gewollt ist.

              Variable: value1 = produziert

              (ist unter Ojekten vorhanden und zeigt Wert z.B. 3000)

              Variable: value2 = eingespeist

              (ist unter Ojekten vorhanden und zeigt Wert z.B. 1800)

              Ich möchte nun in vis darstellen: -> Eigenverbrauch (also value1 - value2).

              Selbstverständlich kann ich dies mit einem script lösen und eine extra variable unter objekte erzeuge.

              Dachte aber es geht so.

              mfg

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

                Eigentlich sollte es auch. Aber bei dir wird value2 gar nicht dargestellt im Binding. Wie ich es verstanden habe?

                1 Reply Last reply Reply Quote 0
                • bahnuhr
                  bahnuhr Forum Testing Most Active last edited by

                  {value1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;value2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;value1-value2}
                  
                  

                  Und sowas klappt bei dir?

                  Merkwürdig.

                  Bei mir wird nix angezeigt.

                  mfg

                  Dieter

                  1 Reply Last reply Reply Quote 0
                  • Dutchman
                    Dutchman Developer Most Active Administrators last edited by

                    Hi,

                    Hat jemand bereits hierzu eine Lösung ?

                    Ich würde gerne in vis 2 datenpunkt mit einander verrechnen und die summe deren wiedergeben.

                    Also datenpunkt 1 + Datenpunkt 2 = an zu zeigender wert

                    damit möchte ich mir den tagesverbraucht meine Stromzählers in einem backen wiedergeben lassen, dazu muss ich aber nacht + tagesverbraucht erst zusammen rechnen

                    1 Reply Last reply Reply Quote 0
                    • S
                      sveni_lee last edited by

                      versuch mal es mal so..

                      datenpunkt 11 + Datenpunkt 21

                      bsp.

                      {v1:javascript.0.Hardware.StromPi.CPUload_1;v2:javascript.0.Hardware.StromPi.CPUload_15; v1*1+v2*1}
                      

                      so werden die werte auch als Zahl interpretiert….

                      1 Reply Last reply Reply Quote 0
                      • Dutchman
                        Dutchman Developer Most Active Administrators last edited by

                        @sveni_lee:

                        versuch mal es mal so..

                        datenpunkt 11 + Datenpunkt 21

                        bsp.

                        {v1:javascript.0.Hardware.StromPi.CPUload_1;v2:javascript.0.Hardware.StromPi.CPUload_15; v1*1+v2*1}
                        

                        so werden die werte auch als Zahl interpretiert…. `

                        hmm komisch, wert 1 ist 0.19, wert 2 ist 0.45, sollte also 0.64 ergeben kommt aber 0.56 raus ?

                        stimmt es auch das diese Berechnungen nur in html widgets gehen ? Mit dem basic-html bekomme ich 0.56, als object im Graph geht es leider überhaupt nicht 😐

                        {v1:javascript.0.Verbrauchszaehler.Stroom_Afname_piek.Kosten.Tag;v2:javascript.0.Verbrauchszaehler.Stroom_Afname_Dal.Kosten.Tag; (v1*1)+(v2*1)}
                        
                        1 Reply Last reply Reply Quote 0
                        • bahnuhr
                          bahnuhr Forum Testing Most Active last edited by

                          Also bei mir klappt dies gar nicht.

                          {v1:javascript.0.Status.Stromzähler.Jahr.Produziert_Hochrechnung;v2:javascript.0.Status.Stromzähler.Jahr.Eingespeist_Hochrechnung;(v11+v21)}

                          Sobald ich v2 ins Spiel bringt zeigt die Anzeige 0.

                          mfg

                          1 Reply Last reply Reply Quote 0
                          • K
                            ktsalti last edited by

                            Hallo,

                            ich möchte auch gern rechnen, aber leider funktioniert es nicht 😞

                            Ziel: Die Ventilstellung vom HMIP-eTRV soll z.b. auch mit 80% anstatt wie jetzt 0,08 angegeben werden.

                            Code:

                            {value:hm-rpc.2.000397098A453F.1.LEVEL;value*100}
                            
                            

                            Was mache ich falsch? Aktuell zeigt er mir leider nichts an. Ich nutze basic string als widget.

                            Vielen Dank im Voraus!

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

                              Basic- Number nehmen…......

                              1 Reply Last reply Reply Quote 0
                              • K
                                ktsalti last edited by

                                Hey,

                                ich weiß nicht ob du das gemeint hast, was ich eben herausgefunden habe.

                                Das Berechnungsscript funktioniert bei Basic - Number leider auch nicht. Warum auch immer…

                                Aber ich kann hier ja im Widget direkt eine Multiplikation einstellen was mir auch zum Ergebnis hilft.

                                Danke für den Hinweis!

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

                                  Ich wärme das Topic mal neu an. Vielleicht ist ja ein Rechengenie in der Lage obige Berechnungen für die Anzeige von Tasmote Pulsetime1 in Minuten, Sekunden zu machen.

                                  Ihr wisst schon 0 = off
                                  1-111 Pulsetime *0,1sek
                                  112-64900 Pulsetime/100 *1sek

                                  Als Problem habe ich imo die schwelle bei 111, vielleicht hat ja jemand schonmal sowas probiert.
                                  Das würde ich aber mit einem Regler der bei 112 - ca.700 geht lösen wollen.
                                  Für 0 =off nehme ich einen Standard Button

                                  {sonoff.0.OG_Flur_Li_A9A4CD.PulseTime1;-(100);/(60);round(0)}
                                  

                                  Angezeigt wird die eingestellte Zeit in einem HTML Widget.
                                  Das Funktioniert schon mal für die Minuten ab 112, allerdings müsste noch irgenwie mit rein das er immer abrundet.

                                  Für Sekunden bin ich noch am probieren

                                  Ideen welcome!!!

                                  {sonoff.0.OG_Flur_Li_A9A4CD.PulseTime1;-(100);/(60);-(0.5);round(0)}
                                  

                                  Minuten ^^ gefixt 🙂 So rundet er immer ab durch den -0.5 Trick

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

                                    Hat jemand eine Idee wie man im HTML Widget die restlichen Sekunden berechnen kann, die im Beitrag drüber beim berechnen der Minuten übrig bleiben.

                                    Dargestellt werden soll

                                    ((Pulsetime-100)/60) - Abgrundet((Pulsetime-100)/60) => sek_temp (Nachkommastellen würden Sekunden entsprechen)
                                    gerundet auf 2 stellen (sek_temp*60) = Sekunden Ergebnis

                                    ^^ die Frage ist nur wie ich das in einer HTML Anweisung verpacke

                                    Beispiel:

                                    300-100 = 200
                                    200/60 = 3,33333  { <= entspricht (Pulsetime-100)/60 }
                                    3,33333-3 = 0,33333 { <= Pulsetime_berechnet - Pulsetime_berechnet_abgerundet }
                                    0,33333*60 = 20 Sekunden
                                    
                                    

                                    Kann bitte jemand beim aufstellen der Formel helfen?

                                    1 Reply Last reply Reply Quote 0
                                    • Archimedeus A
                                      Archimedeus A last edited by

                                      @Xanto
                                      Schau mal hier: (https://github.com/ioBroker/ioBroker.vis)
                                      Beispiel: {javascript.0.Misc.Number;+(100)} liest den Wert und addiert 100.

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

                                        @Archimedeus-A
                                        Generell Rechnen im HTML Widget ich nicht das Problem, das habe ich weiter oben ja schon mit den pulsetime Minuten gemacht, was mir ein wenig Probleme macht ist das bei den Sekunden ja der Ganzzahlwert der Minuten abgezogen werden müsste und ich nicht weiss wie ich das am besten in ein HTML Widget rechne

                                        Beispiel:

                                        Pulsetime 300 => 300-100 = 200 Sekunden => 3 Minuten 20 Sekunden
                                        
                                        Die Formel für die 20 Sekunden suche ich ^^ 
                                        
                                        OliverIO 1 Reply Last reply Reply Quote 0
                                        • OliverIO
                                          OliverIO @Xantrox last edited by OliverIO

                                          @Xanto

                                          wenn ich es richtig verstehe hast du den wert 200 sekunden und du möchtest 3 minuten 20 sekunden anzeigen. dann

                                          200/60 = 3.33333, davon die ganzzahl ist 3
                                          Math.floor(3.333333) = 3
                                          dann wilst du aus dem rest die 20 sekunden berechnen
                                          dann musst du den rest wieder mit 60 (sekunden) multiplizieren
                                          3.33333-3=0.33333
                                          0.33333*60 = 20

                                          Alternativ kann man auch den modulo-operator nehmen
                                          200 % 60 = 20

                                          und das als komplette Formel
                                          var sec = 200;
                                          Math.floor(sec/60) + ' Minuten ' + sec % 60 + ' Sekunden';

                                          Wenn du den Chrome installiert hast, dann kann man das in der dev-console sehr gut direkt ausprobieren und rumspielen
                                          https://developers.google.com/web/tools/chrome-devtools/console

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

                                            @OliverIO
                                            Das ist ein sehr guter Ansatz mit dem modulo-operator. Mit dem hatte ich vorher noch nicht gearbeitet und da es den im HTML Widget auch gibt habe ich den da mal probiert.

                                            Leider funktionierte das nicht so wie gewünscht

                                            <table>
                                            <tr>
                                            <td>{sonoff.0.OG_Flur_Li_A9A4CD.PulseTime1;-(100);/(60);-(0.5);round(0)} min</td>
                                            <td>{sonoff.0.OG_Flur_Li_A9A4CD.PulseTime1;%(60)} sek</td>
                                            
                                            </tr>
                                            </table>
                                            

                                            brachte mir als Ausgabe bei Pulsetime 250

                                            2 min	250 (Active 250) sek
                                            

                                            Wenn ich alles berücksichtige müsste es ja

                                            {sonoff.0.OG_Flur_Li_A9A4CD.PulseTime1;-(100);%(60)} sek
                                            

                                            heißen, was bei den Sekunden allerdings ein 150 bringt. Jemand eine Idee wie das funktionieren könnte?

                                            OliverIO SBorg 2 Replies Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            21
                                            128
                                            19332
                                            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