NEWS
Gelöst: Datenpunkte addieren
-
Hallo ich protokolliere die Regenmengen jeden Tag, einmal die Woche möchte ich die Regenmengen zusammen addieren und als Regenmenge Kalenderwoche ausgeben.
Die Datenpunkte sehen so aus:
Wie kann ich nun ohne große Tip Arbeit die DP addieren, nun sind es bei den Tagen nur 7, ist überschaubar, wenn ich aber später die 52 KW addieren möchte wird es aufwendig.
DP Syntax = 0_userdata.0.Giethoorn.Wetter.Regen_Mo usw.
Gibt es eine elegante Lösung?
Gruß
Michael -
@michihorn Wenn Du NodeRed nutzt ist das mit wenigen Nodes erledigt.
-
@michihorn
Mit "ID von Selektor" geht das eigentlich ziemlich einfach.Wie lautet genau die ID von
Wetter.KW
?Sollte etwa so funktionieren:
-
War klar dass id Puzzlefreunde meinen es geht schneller - aber NodeRed ist unschlagbar:
Also die Summe lautet 21.6
-
@mickym
Wenn man NodeRed installiert hat.Ich brauch's nicht
-
Na wenn man den JS Adapter installiert hat, ich brauch ihn nicht.
Ich hätte ja nichts im gepostet, wenn der Threadersteller im Blockly oder JS Forum gepostet hätte, aber so gehe ich mal davon aus, dass er technologieoffen ist und keine ideologische Brille auf hat.
-
@mickym
Mir persönlich ist das doch Wumpe.
Jeder so, wie er/sie am besten klarkommt.Allerdings haben die meisten halt JS eh schon installiert.
Da wäre dann wieder NodeRed unnötig, nur um an eine Summe zu kommen. -
@codierknecht Alles gut - Du machst einen tollen Job hier und hilfst vielen und die meisten puzzeln inzwischen eh hier alle, insofern ist Dein Beitrag für den TE sowieso sinnvoller als meiner. Ich will nur manchmal aufgrund der Technologieoffenheit auf Alternativen hinweisen.
Aber wie gesagt - Du machst hier einen tollen Job und störe nicht länger, ausser es wird gewünscht.
-
@mickym sagte in Datenpunkte addieren:
Du machst einen tollen Job hier
Gebe ich gerne zurück.
Lassen wir den TE entscheiden, was für ihn sinnvoller oder einfacher ist.
-
@mickym Ich würde das gerne per Script machen
-
@codierknecht 0_userdata.0.Giethoorn.Wetter.Regen_Mo
Bitte kein Blocky -
@michihorn sagte in Datenpunkte addieren:
Bitte kein Blocky
Dann etwa so:
var regenmenge = 0; const states = Array.prototype.slice.apply($('0_userdata.0.Giethoorn.Wetter.*')); for (var state_index in states) { state = states[state_index]; regenmenge += getState(state).val; } console.log(regenmenge);
-
@codierknecht sagte: Dann etwa so:
Der $Selector hat eine eigene Schleifenfunktion.
const states = $('0_userdata.0.Giethoorn.Wetter.Regen_*'); let regenmenge = 0; states.each(function(id) { regenmenge += getState(id).val; }); log(regenmenge);
-
@paul53
Danke. Muss ich mir merken.
Da kann ich noch das eine oder andere Script umbauen. -
@paul53 sagte in Datenpunkte addieren:
const states = $('0_userdata.0.Giethoorn.Wetter.Regen_*'); let regenmenge = 0; states.each(function(id) { regenmenge += getState(id).val; } log(regenmenge);
Danke bis auf eine fehlende "schliessende Klammer", in Zeile 6, klappt das:
const states = $('0_userdata.0.Giethoorn.Wetter.Tage.Regen_*'); let regenmenge = 0; states.each(function(id) { regenmenge += getState(id).val; }) log(regenmenge);
Hast du noch einen Tip wie ich die aktuelle Kalenderwoche berechne?
Gruß
Michael -
@michihorn sagte in Datenpunkte addieren:
Hast du noch einen Tip wie ich die aktuelle Kalenderwoche berechne?
const moment = require("moment"); let week = moment().isoWeek(); // oder für ein spezifisches Datum: // let week = moment('2024/02/13').isoWeek(); log(week);
-
@codierknecht sagte in Datenpunkte addieren:
const moment = require("moment"); let week = moment().isoWeek(); // oder für ein spezifisches Datum: // let week = moment('2024/02/13').isoWeek(); log(week);
Danke, klappt, gibt es auch eine Funktion für den Monat?
-
Es kann sein, dass du mit der Moment Bibliothek und dem JS Adapter bei jedem Neustart einen Haufen Warnungen bekommst.
Dann nutze lieber die days Bibliothek: https://day.js.org/docs/en/get-set/iso-weeks-in-year
Jetzt bin ich aber wirklich weg.
-
@mickym Ne es gab keine Warnungen, Moment im JS als zusätze NPM eintragen und gut.
Leider gibt es über "moment" keine Funktion "isoMonth".
Eine Days Bibliothek kenne ich nicht. Danke für den Link. -
@michihorn sagte in Datenpunkte addieren:
Danke, klappt, gibt es auch eine Funktion für den Monat?
Ein- oder zweistellig?
let month = moment().format('M'); log(month); month = moment().format('MM'); log(month);
@mickym
moment
funzt einwandfrei - ohne Warnungen o.ä.