Seite 1 von 1

wert aufsummieren

Verfasst: 2. Mai 2021 08:40
von seebaer1976
hi,
bin neu im forum les aber schon lnger mit hier.
leider bräucht ich mal eine kleine hilfe wegen java in einer rule, in openhab3:

Code: Alles auswählen

triggers:
  - id: "2"
    configuration:
      cronExpression: 0 * * * * ? *
    type: timer.GenericCronTrigger
conditions: []
actions:
  - inputs: {}
    id: "1"
    configuration:
      type: application/javascript
      script: events.postUpdate("wasser_m3h_gesamt",itemRegistry.getItem("wasser_m3h").getState () + itemRegistry.getItem("wasser_m3h_gesamt").lastUpdate ());
    type: script.ScriptAction
ich versuche hier den wert wasser_m3h jede minute in wasser_m3h_gesamt aufzusumieren. nur leider bekomme ich keine werte in wasser_m3h_gesamt. versteh leider nicht wo ich den fehler hab.

könnt mir beim javascript vielleicht jemand unter die arme greifen.


mfg
markus

Re: wert aufsummieren

Verfasst: 2. Mai 2021 12:28
von udo1toni
Wie kommst Du zu dem Code?
Mindestens die Leerzeichen zwischen getState bzw. lastUpdate und den nachfolgenden Klammern gehören da nicht hin, bei lastUpdate muss (vermutlich zwingend) noch ein getState mit dran, denn lastUpdate liefert auch den Zeitpunkt, nicht nur den Wert.
Ist das Item wasser_m3h persistiert? Ansonsten gibt es kein lastUpdate. Wird wasser_m3h minütlich genullt? ansonsten addierst Du zuviel auf.

Re: wert aufsummieren

Verfasst: 2. Mai 2021 13:37
von seebaer1976
hi,
danke für die antwort.

den code hab ich mir von dem code zum umrechnen (von l in m3h) abgeleitet. weil der sensor gibt nur die momentanen l an.
hoffe das war richtig :-)

Code: Alles auswählen

events.postUpdate("wasser_m3h",itemRegistry.getItem("wasser_l").getState()/1000);
items die ich erstellt hab und persistiert werden:

wasser_l: bekommt schwankendedaten, jenachdem wieviel wasser im bach läuft
wasser_m3h: bekommt die umgerechnetet werte
wasser_m3h_gesammt: sollte die aufsummierten daten enthalten, die jede minute kommen sollen und auf das letzte ergebnis draufgerechnet werden

das mit den leerzeichen scheint wohl beim kopieren hier passiert zu sein, bei mir in openhab sind sie nicht drin.

wasser_m3h wird nicht genullt :o , allso muss ich den wert noch durch 60 teilen. danke für den hinweis. :roll:

Code: Alles auswählen

events.postUpdate("wasser_m3h_gesamt",itemRegistry.getItem("wasser_m3h").getState()/60+itemRegistry.getItem("wasser_m3h_gesamt").lastUpdate());
wie muss das denn mit getState bei lastupdate denn aussehen.
null ahnung von java, mache das alles bei learning by doing.

mfg
markus