Seite 1 von 1

Tagesverbrauch | Messen / Berechnen | 0 Uhr bis 24 Uhr

Verfasst: 21. Jan 2022 18:44
von ./mf
Ich will den (Strom) Tagesverbrauch messen und gfls grafisch darstellen.

Dazu habe ich zwei Items und zwei Rules erstellt.
oh3-smartmeter-2022-01-21_18-35.png
Dazu zwei Rules...

Daily Use

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: smartmeter_kWh
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: postUpdate(smartmeter_kWh_today,
        smartmeter_kWh.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT))
        as Number)
    type: script.ScriptAction
Daily Stats

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      time: 23:59
    type: timer.TimeOfDayTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: postUpdate(smartmeter_kWh_daily,
        smartmeter_kWh.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT))
        as Number)
    type: script.ScriptAction
Aktuell muss ich ja 23h59 nehmen. 59s kann ich nicht nehmen, weil es nicht angeboten wird. Damit fehlt mir 1min für die Tagesmessung. Ja. In der Tat fällt es nicht ins Gewicht. Aber ich würde es gerne überkorrekt machen.

Mein Idealfall sieht vor, dass ich beide Rules kombiniere und in der Rule abfrage, ob ich "einmal" kurz nach 0 Uhr bin und den letzten Tag von 0 bis 24 Uhr speichern kann. Oder macht das überhaupt keinen Sinn? Evtl ist es mit einer Timebased Rule sicher besser. Dann bleibt noch die fehlende MInute. :)

Re: Tagesverbrauch | Messen / Berechnen | 0 Uhr bis 24 Uhr

Verfasst: 21. Jan 2022 23:51
von ./mf
Ich habe gerade entdeckt, dass man auch eine Cron Expression definieren / "bauen" kann.

Damit wäre die Rule korrekt(er) und mein Problem gelöst... :)

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      cronExpression: 58 59 23 * * ? *
    type: timer.GenericCronTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: postUpdate(smartmeter_kWh_daily,
        smartmeter_kWh.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT))
        as Number)
    type: script.ScriptAction

Re: Tagesverbrauch | Messen / Berechnen | 0 Uhr bis 24 Uhr

Verfasst: 23. Jan 2022 23:15
von ./mf
Der aktuell gespeicherte Tageswert findet nach dieser Regel ja immer kurz vor Mitternacht statt. Nun ist es aber so, dass das Item minütlich die Daten in der Datenbank ablegt und daher in einer grafischen Darstellung für den aktuellen Tag immer den Vortag darstellt.

Wie kann man dies sinnvoll(er) lösen?