Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Javascript Werte addieren

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Javascript Werte addieren

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

      Hallo,

      ich bekomme bald einen neuen Stromzähler. Da ich diesen nicht ohne Umstände auslesen kann, ich aber dennoch meinen Zählerstand im Auge behalten will suche ich eine Lösung.
      Ich messe meinen Verbrauch dezeit mit einem Shelly 3em, die Verbrauchsdaten stehen mir also zur Verfügung.

      Beispiel:
      shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower 9036,2 Wh

      Angenommen der der neue Zähler hätte einen Anfangsstand von 1000,10 KWh, wie müsste ich in Java diese Werte addieren? Ich habe es versucht, allerdings kommt dabei mur murks raus 😞 Liegt vielleicht daran, dass der Stomzähler die Angaben in KWh anzeigt, der Shelly aber in Wh.

      Hat jemand einen Tipp für mich, oder kann mir ein Beispielscript tippen?

      Andreios 1 Reply Last reply Reply Quote 0
      • Andreios
        Andreios Forum Testing @hagst last edited by

        @hagst sagte in Javascript Werte addieren:

        Hallo,

        ich bekomme bald einen neuen Stromzähler. Da ich diesen nicht ohne Umstände auslesen kann, ich aber dennoch meinen Zählerstand im Auge behalten will suche ich eine Lösung.
        Ich messe meinen Verbrauch dezeit mit einem Shelly 3em, die Verbrauchsdaten stehen mir also zur Verfügung.

        Beispiel:
        shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower 9036,2 Wh

        Angenommen der der neue Zähler hätte einen Anfangsstand von 1000,10 KWh, wie müsste ich in Java diese Werte addieren? Ich habe es versucht, allerdings kommt dabei mur murks raus 😞 Liegt vielleicht daran, dass der Stomzähler die Angaben in KWh anzeigt, der Shelly aber in Wh.

        Dann musst Du zuerst die beiden Werte auf die gleiche Einheit bringen, Wh mit kWh zu verrechnen kann nur Murks bringen. Natürlich kannst Du das dann in einer Formel machen, Stichworte Punktrechnung vor Strichrechnung und Klammersetzung.
        Also Wh und kWh ist einfach Faktor 1000 (Kilo).
        Wenn Du also den Zähler auf Wh umrechnen willst, dann Zählerwert * 1000 = 1000100 Wh.
        Wenn Du den Wert vom Shelly auf kWh umrechnen willst dann ConsumedPower / 1000 = 9,0362 kWh.

        Wenn Du also über den Shelly auf den Zählerstand zurückrechnen willst (Ist meine Annahme, dass Du das willst. Falls Du etwas Anderes berechnen willst, einfach noch einmal schreiben.):

        Ergebnis = shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower - 9036,2 + 1000100

        Also den aktuellen Wert vom Shelly - den Stand des Shelly beim Zählertausch + Anfangsstand vom Zähler.

        Der berechnete Wert wird, nach meiner Einschätzung, vom Zählerwert mit der Zeit abweichen, da der Zähler und der Shelly Toleranzen haben.

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

          Danke für Deine Antwort.

          @andreas-5 sagte in Javascript Werte addieren:

          Ergebnis = shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower - 9036,2 + 1000100

          Das Problem dabei ist jetzt, dass ich zwar als Ergebnis 1009036,20 raus habe. Ist aber sehr unübersichtlich in VIS. Kann man das nicht mit javascript umrechnen lassen, dass als Ergebnis 1009,0362 rauskommt, also das Komma verschieben?

          OliverIO Andreios 2 Replies Last reply Reply Quote 0
          • OliverIO
            OliverIO @hagst last edited by OliverIO

            @hagst
            https://www.youtube.com/watch?v=uelyxs1avCU
            sorry, aber ist das nicht Stoff der Grundschule?
            oder wo liegt nun das Problem genau?

            H 2 Replies Last reply Reply Quote 0
            • H
              hagst @OliverIO last edited by

              @oliverio

              Wie man addiert und multipliziert, das weiß ich. Ich weiß es nur nicht, wie man es mit Javascript macht. Wenn ich als Ergebnis z.B. 2361621,87 wh raus habe, und das gerne in KWh angezeigt haben möchte, hilft es mir nicht, wenn ich hier 2361621,87 Wh / 1000 = 2361,62187 KWh raus habe. Ich möchte wie oben schon geschrieben, es mit js umrechnen lassen, damit als Ergebis nicht Wh sondern KWh angezeigt wird.

              Btw. Dein Hinweis auf Grundschule und ein Link zu dem youtube Video halte ich für mehr als überflüssig.

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

                @oliverio

                const idAnfang = '0_userdata.0.Strompreisberechnung.Fortlaufender_Zaehlerstand_HT'; 
                const idVerbraucht = 'javascript.0.Shelly-Zaehler-Verbrauch-alle-Phasen'; (Ausgabe in Wh)
                const idSummeTotal = 'javascript.0.fortlaufender-Zaehlerstand'; (Ausgabe in Wh)
                 
                var anfang = getState(idAnfang).val;
                var verbraucht = getState(idVerbraucht).val;
                 
                if(!existsState(idSummeTotal)) createState(idSummeTotal, anfang + verbraucht, {type: 'number', unit: 'Wh'}); 
                 
                function summe() {
                    setState(idSummeTotal, anfang + verbraucht, true);
                }
                 
                on(idAnfang, function(dp) {
                   anfang = dp.state.val;
                   summe();
                });
                on(idVerbraucht, function(dp) {
                   verbraucht = dp.state.val;
                   summe();
                });
                

                Bei den const habe ich in () die Ausgabe in den Code eingefügt, damit man sieht, wo das vermeindliche Problem liegt.
                Jetzt muss halt nur (und das weiß ich nicht wie) die Ausgabe der Summe entwerder / 1000 ausgegeben werden.

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

                  @hagst
                  das ist eines der wenigen dingen in den programmiersprachen (wenn man mal von der polnischen notation absieht), was ziemlich gleich ist, wie auch im taschenrechner

                  https://www.mediaevent.de/javascript/berechnung.html

                  var wertInWatt =1009036.20;
                  var wertInKWatt = wertInWatt / 1000;

                  Wie @Andreas-5 oben schon geschrieben hat ist der umrechnungsfaktor bei Kilo meist 1000 (zumindest bei den analogen Maßeinheiten)

                  aufgrund der 3 nullen, verschiebt sich dann das Komma um 3 stellen.

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

                    @oliverio sagte in Javascript Werte addieren:

                    Wie @Andreas-5 oben schon geschrieben hat ist der umrechnungsfaktor bei Kilo meist 1000 (zumindest bei den analogen Maßeinheiten)
                    aufgrund der 3 nullen, verschiebt sich dann das Komma um 3 stellen.

                    Oh, ich sehe gerade, dass ich nicht in dem Bereich "Einsteigerfragen" bin, sondern Mathe für Dummies. Ich bin hier raus und frage in einem anderen Forum, in dem DU dich hoffentlich nicht rumtreibst. EOD

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

                      @hagst sagte in Javascript Werte addieren:

                      @oliverio

                      const idAnfang = '0_userdata.0.Strompreisberechnung.Fortlaufender_Zaehlerstand_HT'; 
                      const idVerbraucht = 'javascript.0.Shelly-Zaehler-Verbrauch-alle-Phasen'; (Ausgabe in Wh)
                      const idSummeTotal = 'javascript.0.fortlaufender-Zaehlerstand'; (Ausgabe in Wh)
                       
                      var anfang = getState(idAnfang).val;
                      var verbraucht = getState(idVerbraucht).val;
                       
                      if(!existsState(idSummeTotal)) createState(idSummeTotal, anfang + verbraucht, {type: 'number', unit: 'Wh'}); 
                       
                      function summe() {
                          setState(idSummeTotal, anfang + verbraucht, true);
                      }
                       
                      on(idAnfang, function(dp) {
                         anfang = dp.state.val;
                         summe();
                      });
                      on(idVerbraucht, function(dp) {
                         verbraucht = dp.state.val;
                         summe();
                      });
                      

                      Bei den const habe ich in () die Ausgabe in den Code eingefügt, damit man sieht, wo das vermeindliche Problem liegt.
                      Jetzt muss halt nur (und das weiß ich nicht wie) die Ausgabe der Summe entwerder / 1000 ausgegeben werden.

                      Ich würde mich grundsätzlich dafür entscheiden einheitlich immer nur in einer einheit zu rechnen und dann nur in der Ausgabe es umzuwandeln

                      in vis im widget kann man bei number einen faktor im Feld Multiplikation eingeben eingeben.
                      Wenn du da 0.0001 eingibst, dann wird um den Faktor 1000 geteilt

                      https://de.wikipedia.org/wiki/Umkehroperation bei Multiplikation

                      1 Reply Last reply Reply Quote 0
                      • Andreios
                        Andreios Forum Testing @hagst last edited by

                        @hagst sagte in Javascript Werte addieren:

                        Danke für Deine Antwort.

                        @andreas-5 sagte in Javascript Werte addieren:

                        Ergebnis = shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower - 9036,2 + 1000100

                        Das Problem dabei ist jetzt, dass ich zwar als Ergebnis 1009036,20 raus habe. Ist aber sehr unübersichtlich in VIS. Kann man das nicht mit javascript umrechnen lassen, dass als Ergebnis 1009,0362 rauskommt, also das Komma verschieben?

                        Na, dsas Ergebnis durch 1000 teilen oder gleich den anderen Weg nehmen, solltest Du aber eigentlich selber können!
                        Ergebnis = shelly.0.SHEM-3#C45BBE6BD432#1.Total.ConsumedPower / 1000 - 9,0362 + 1000,100

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

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        657
                        Online

                        31.8k
                        Users

                        80.0k
                        Topics

                        1.3m
                        Posts

                        3
                        10
                        633
                        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