Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Visualisierung
    4. Datenpunkte addieren und dann multiplizieren in vis

    NEWS

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    Datenpunkte addieren und dann multiplizieren in vis

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

      Hi,

      wie kann ich verschiedene Datenpunkte addieren und das Ergebnis dann mit einem weiteren Datenpunkt multiplizieren?

      Hintergrund ist folgender: Strompreisberechnung
      Ich habe die Datenpunkte:
      monatlicher Grundpreis
      Preis pro Kw/h
      Verbrauchte kw/h

      Ich müsste also rechnen:
      Verbrauchte kw/h + Preis pro Kw/h = XXX
      XXX + monatlicher Grundpreis = Ergebnis

      Kann mir jemand dazu einen Tipp geben?

      Btw.. Oder halt als Script

      CrunkFX paul53 2 Replies Last reply Reply Quote 0
      • CrunkFX
        CrunkFX Forum Testing @hagst last edited by CrunkFX

        @hagst Hi, falls ich dein Problem richtig verstehe wäre die einfachste Lösung eine Berechnung direkt in VIS.

        Das würde in deinem Fall folgendermaßen gehen:

        1. Nimm in VIS ein HTML Widget und Packe in den HTML Teil:

        {x:accuweather.0.Current.RelativeHumidity;y:accuweather.0.Current.Temperature;z:accuweather.0.Current.Temperature;parseFloat(x)+y*z}}
        

        x=Grundpreis
        y=Preis Pro kWh
        z=Verbrauchte kWh

        Darin musst du dann die Datenpunkte für x,y und z anpassen die bei mir mit accuweather anfangen.

        LG CrunkFX

        paul53 1 Reply Last reply Reply Quote 0
        • paul53
          paul53 @hagst last edited by

          @hagst sagte: Ich müsste also rechnen:

          Verbrauchte kw/h + Preis pro Kw/h = XXX
          XXX + monatlicher Grundpreis = Ergebnis

          Nein, so:
          Ergebnis = Grundpreis + Arbeitspreis * kWh

          1 Reply Last reply Reply Quote 1
          • paul53
            paul53 @CrunkFX last edited by

            @crunkfx sagte:

            {x:accuweather.0.Current.RelativeHumidity;y:accuweather.0.Current.Temperature;z:accuweather.0.Current.Temperature;(parseFloat(x) + parseFloat(y))*parseFloat(z)}
            

            Falsche Klammer und parseFloat() sollte man bei der Multiplikation nicht benötigen, da in dem Fall Javascript eine implizite Typwandlung macht.

            parseFloat(x)+y*z}
            
            CrunkFX 1 Reply Last reply Reply Quote 1
            • CrunkFX
              CrunkFX Forum Testing @paul53 last edited by

              @paul53 sagte in Datenpunkte addieren und dann multiplizieren in vis:

              parseFloat(x)+y*z}

              Danke hab´s angepasst!

              1 Reply Last reply Reply Quote 0
              • Homoran
                Homoran Global Moderator Administrators last edited by

                müssen denn Arbeitspreis und Grundpreis Variablen sein. Reicht da nicht ein fixer Wert?

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Homoran last edited by

                  @homoran sagte: Reicht da nicht ein fixer Wert?

                  Nur eine gewisse Zeit (bis zur nächsten Preiserhöhung).

                  1 Reply Last reply Reply Quote 0
                  • H
                    hagst last edited by hagst

                    Hmmm, als Ergebnis wird mir eine 0 angezeigt.

                    Hier jetzt mal mit den richtigen Daten:

                    {x:0_userdata.0.Strompreisberechnung.Monatlicher_Grundpreis;y:0_userdata.0.Strompreisberechnung.Strompreis_pro_KW;z:javascript.0.ShellyVerbrauch.SHEM-3#C45BBE6BD432#1.Total.dieser_monat;parseFloat(x)+y*z}
                    

                    Btw. Ich hab das ganze zwischenzeitlich anders gelöst mit zwei Scripten, aber dennoch interessiert es mich, wie ich es in VIs lösen könnte.

                    Script eins:

                    const idTH = 'javascript.0.ShellyVerbrauch.SHEM-3#C45BBE6BD432#1.Total.heute';
                    const idKW = '0_userdata.0.Strompreisberechnung.Strompreis_pro_KW';
                    const idSumme = 'javascript.0.monatlicher-Strompreis-ohne-Grundpreis'; 
                     
                    var TH = getState(idTH).val;
                    var KW = getState(idKW).val;
                     
                    if(!existsState(idSumme)) createState(idSumme, TH * KW, {type: 'number', unit: '€'}); 
                     
                    function summe() {
                        setState(idSumme, TH * KW, true);
                    }
                     
                    on(idTH, function(dp) {
                       TH = dp.state.val;
                       summe();
                    });
                    on(idKW, function(dp) {
                       KW = dp.state.val;
                       summe();
                    });
                    

                    und dann noch das zweite

                    const idHT = 'javascript.0.monatlicher-Strompreis-ohne-Grundpreis';
                    const idNT = '0_userdata.0.Strompreisberechnung.Monatlicher_Grundpreis';
                    const idSumme = 'javascript.0.monatlicher-Strompreis-inkl-Grundpreis'; 
                     
                    var HT = getState(idHT).val;
                    var NT = getState(idNT).val;
                     
                    if(!existsState(idSumme)) createState(idSumme, HT + NT, {type: 'number', unit: '€'}); 
                     
                    function summe() {
                        setState(idSumme, HT + NT, true);
                    }
                     
                    on(idHT, function(dp) {
                       HT = dp.state.val;
                       summe();
                    });
                    on(idNT, function(dp) {
                       NT = dp.state.val;
                       summe();
                    });
                    

                    Ist zwar bestimmt sehr umständlich, aber des Ergebnis ist richtig 🙂

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

                      @hagst

                      es gab mal ein problem mit # in der datenpunkt-id - weiß nicht, ob das gefixt wurde - versuch das ganze mal mit einem anderen dp, ob es dann funktioniert

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

                        @liv-in-sky sagte in Datenpunkte addieren und dann multiplizieren in vis:

                        es gab mal ein problem mit # in der datenpunkt-id - weiß nicht, ob das gefixt wurde - versuch das ganze mal mit einem anderen dp, ob es dann funktioniert

                        Jepp, daran hat es gelegen. Wenn ich einen anderen Datenpunkt ohne # im Name probiere, wird der Wert auch richtig ausgegeben. So, und wie kann ich das Problem lösen, hast Du eine Ahnung?

                        liv-in-sky 1 Reply Last reply Reply Quote 0
                        • CrunkFX
                          CrunkFX Forum Testing last edited by

                          @hagst Eine Möglichkeit wäre es mit dem Alias Adapter einen Alias für den Shelly Anzulegen der den Wert spiegelt. Dann ohne #

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

                            @hagst

                            nur über ein extra script und extra dp

                            oder evt alias

                            1 Reply Last reply Reply Quote 0
                            • H
                              hagst last edited by

                              So, mit dem Alias hat es geklappt, auch wenn die Kommastelle arg verrutscht ist und ich diesen Monat schon 12120.1325 € bezahlen muss 🙂
                              Ich glaube, das mit meinen beiden Scrips ist dann doch einfacher.

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

                                @hagst

                                was sollte den rauskommen - hat sich die vis verechnet ?

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

                                  @hagst

                                  funktioniert ohne probleme, wenn die dp vom type number sind und die einzelnen werte mit Number(..) umschrieben sind (oder parseFloat)

                                  scrennmovie (4).gif

                                  {wert1:0_userdata.0.CONTROL-OWN.AAATEST.aObject; wert2:0_userdata.0.CONTROL-OWN.AAATEST.TestZahl2; wert3:0_userdata.0.CONTROL-OWN.AAATEST.TestZahlPx;(Number(wert1)+Number(wert2))*Number(wert3)}
                                  
                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  645
                                  Online

                                  32.0k
                                  Users

                                  80.6k
                                  Topics

                                  1.3m
                                  Posts

                                  5
                                  15
                                  1669
                                  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