NEWS
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 WhAngenommen 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?
-
@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 WhAngenommen 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.
-
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?
-
@hagst
https://www.youtube.com/watch?v=uelyxs1avCU
sorry, aber ist das nicht Stoff der Grundschule?
oder wo liegt nun das Problem genau? -
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.
-
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. -
@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 taschenrechnerhttps://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.
-
@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
-
@hagst sagte in Javascript Werte addieren:
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 geteilthttps://de.wikipedia.org/wiki/Umkehroperation bei Multiplikation
-
@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