Das sieht ja alles so aus, als hättest du auch den gleichen Smartmeter, wie ich. Das Script ist im Prinzip fast das selbe. Dein Stromzähler ist ja dann auch wahrscheinlich ein Itron von der ENBW.
Ich habe bei meinem lokalen Ableger (ODR) aber bisher keinen Pin angefordert. Mein Smartmeter bringt also nur den jeweiligen Zählerstand nach OH.
Die Werte, die ich haben will, werden per Rule ermittelt. Das Thing und die Items dazu habe ich ja schon weiter oben beschrieben:
Code: Alles auswählen
// import org.openhab.core.model.script.ScriptServiceUtil
rule "persistence Stromzähler"
// https://community.openhab.org/t/persistence-deltabetween-error/137287
when
Item Dummy_pers_9 changed from OFF to ON or
Time cron "0 0 0/1 1/1 * ? *"
then
// var GenericItem itemTemp = ScriptServiceUtil.getItemRegistry.getItem(gESP32C3_01.name) as GenericItem // Initialize Generic Item
// var strLocation = getLocation(itemTemp).label // Location Label ermitteln
// logInfo("Hichi","--------------Item {} - P-Address {} Item Ort {} persistence starts---------------------------------------------", esp32c3_01.label,esp32c3_01_IPAddress.state, strLocation)
val VerbrauchTag = esp32c3_01_total_in.deltaSince(ZonedDateTime.now().with(LocalTime.MIDNIGHT)) as Number // Heute aus Gesamtverbrauch
var VerbrauchVortag = esp32c3_01_total_in.deltaBetween(ZonedDateTime.now.minusDays(1).with(LocalTime.MIDNIGHT), now.minusDays(0).with(LocalTime.MIDNIGHT).minusSeconds(1)) as Number // gestern aus Gesamtverbrauch
var VerbrauchMonat = esp32c3_01_total_in.deltaSince(now.withDayOfMonth(1).with(LocalTime.MIDNIGHT)) // Monat
// var VerbrauchJahr = esp32c3_01_total_in.deltaSince(ZonedDateTime.now.withMonth(3).withDayOfMonth(1).with(LocalTime.MIDNIGHT)) // Jahr - Vorraussetzung, dass auch Daten vorhanden sind ;-)
var Number VerbrauchJahr = (esp32c3_01_total_in.state as QuantityType<Energy> - esp32c3_01_carryforwardini.state as QuantityType<Energy>) // Jahr - hilfsweise ;-)
var Number VerbrauchVorJahr = (esp32c3_01_carryforwardini.state as QuantityType<Energy> - esp32c3_01_cfPY.state as QuantityType<Energy>) // Vorjahr - rechnerisch
var VerbrauchVorMonat = esp32c3_01_total_in.deltaBetween(ZonedDateTime.now.minusMonths(1).withDayOfMonth(1).with(LocalTime.MIDNIGHT), ZonedDateTime.now.withDayOfMonth(1).with(LocalTime.MIDNIGHT).minusSeconds(1)) // Vormonat
esp32c3_01_cfPY.postUpdate(5053.0) // Vortragswert per 15.5.24
esp32c3_01_carryforwardini.postUpdate(8138.0) // Vortragswert per 15.5.25
esp32c3_01_yd.postUpdate(VerbrauchVortag) // Gestern
esp32c3_01_MTD.postUpdate(VerbrauchMonat) // Monat
esp32c3_01_pM.postUpdate(VerbrauchVorMonat) // VormonatMonat
esp32c3_01_YTD.postUpdate(VerbrauchJahr) // Jahr
esp32c3_01_PY.postUpdate(VerbrauchVorJahr) // Vorjahr
esp32c3_01_curr.postUpdate(VerbrauchTag) // Heute
end
Da ich den Smartmeter erst seit ein paar Monaten einsetze, habe ich ein paar "Hilfswerte" mit eingebunden. Die Regel ist vielleicht nicht "HighEnd", aber für mich reicht es momentan. (Anmerkung: Das Abrechnungsjahr beginnt jeweils am 15.5. des Kalenderjahres). Für Optimierungen oder Verbesserungen bin ich immer dankbar.
Die Darstellung in OH habe ich mit einem kleinen Widget realisiert:
hichi.jpg
Der Yaml-Code dafür:
Code: Alles auswählen
uid: hichi_energy
tags:
- Energyw Sensor Control
- peter-pan
props:
parameters:
- default: "300"
description: Breite des Widgets in px (default:300)
label: Widget Breite
name: size
required: false
- description: Hintergrund des Widgets (e.g. linear-gradient(122deg,
rgba(34,193,195,1) 0%, rgba(253,187,45,1) 100%) )
label: Hintergrund/Background
name: background1
required: false
parameterGroups: []
timestamp: Jun 10, 2025, 11:16:44 PM
component: f7-card
config:
border: no
style:
--cardCorners: 20px
--cardHigh: auto
--cardWidth: =props.size + "px"
--f7-card-box-shadow: none
background: '=(props.background1) ? props.background1 : "linear-gradient(122deg,
rgba(255,255,224,1) 0%, rgba(95,158,160,1) 100%)"'
border-radius: '=(props.corners) ? props.corners : "var(--cardCorners)"'
height: auto
margin: 5px
noShadow: true
padding: 10px
width: '=(props.size) ? "var(--cardWidth)" : "300px"'
title: ='Stromzähler 1 ITR00 5560 0428 ' + items.esp32c3_01_IPAddress.state
slots:
default:
- component: f7-card
config:
border: no
style:
background: linear-gradient(to bottom left,#DC143C 0%,#00FFFF 40%
border-radius: '=(props.corners) ? props.corners : "var(--cardCorners)"'
height: var(--cardHigh)
title: ="Verbrauch JahresPeriode 15.5. SV:" +
items.esp32c3_01_carryforwardini.state
slots:
default:
- component: oh-list
config:
mediaList: true
slots:
default:
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_YTD
style:
--f7-list-item-border-color: transparent
height: 35px
title: lfd. Jahr (YtD)
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_MTD
style:
--f7-list-item-border-color: transparent
height: 35px
title: lfd. Monat (MtD)
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_yd
style:
--f7-list-item-border-color: transparent
height: 35px
title: Vortag
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_curr
style:
--f7-list-item-border-color: transparent
height: 35px
title: Heute
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_pM
style:
--f7-list-item-border-color: transparent
height: 35px
title: Vormonat
- component: oh-label-item
config:
icon: oh:power
iconUseState: false
item: esp32c3_01_total_in
style:
--f7-list-item-border-color: transparent
title: Zählerstand Aktuell
- component: f7-card
config:
border: no
style:
background: linear-gradient(to top left,green 0%,lightblue 60%)
border-radius: '=(props.corners) ? props.corners : "var(--cardCorners)"'
height: var(--cardHigh)
title: Verbrauch Vorjahr
slots:
default:
- component: oh-list
config:
mediaList: true
slots:
default:
- component: oh-label-item
config:
icon: oh:energy1
iconUseState: false
item: esp32c3_01_PY
style:
--f7-list-item-border-color: transparent
height: 35px
title: Vorjahr Gesamt
- component: oh-label-item
config:
icon: oh:energy1
iconUseState: false
item: esp32c3_01_cfPY
style:
--f7-list-item-border-color: transparent
title: Zählerstand
Details für das Itron-Script hast du sicherlich auch schon auf der Tasmota-Seite gefunden. Falls nicht, hier der
Link
Zur schnellen Übersicht habe ich auch noch ein kleines Standard-Widget:
hichi_oh-cell.jpg
Der Yaml-Code hierzu:
Code: Alles auswählen
component: oh-label-cell
config:
action: analyzer
actionAnalyzerChartType: isoWeek
actionAnalyzerItems:
- esp32c3_01_total_in
footer: "='IP: ' + items.esp32c3_01_IPAddress.state + \" ---------- Zeit: \" +
dayjs(items.esp32c3_01_Date.state).format('HH:mm')"
header: Stromzähler
icon: oh:hichi
item: esp32c3_01_total_in
label: '="Zählerstand: " + items.esp32c3_01_total_in.state'
stateStyle:
color: blue
fontSize: 21px
style:
background: linear-gradient(to top right,#DC143C 0%,#00FFFF 60%)
subtitle: '="Verbrauch: " +items.esp32c3_01_YTD.state+ " = " +
(Number.parseFloat(items.esp32c3_01_YTD.state) * 0.35).toFixed(2) + " EUR"'
trendItem: esp32c3_01_total_in