rule "aktueller GasStand"
when
Time cron "0 0/5 * 1/1 * ? *"
then
//Variablen definieren und Werte setzen
var regel_startzeit = now()
val Number MonatsVal = regel_startzeit.getMonthValue()
val Number Tageszahl = now.getDayOfMonth()
var startday = LocalDate.parse("2021-10-06").atStartOfDay() // Gasstand_letzteLesung.state
var long dif_days = Duration.between(startday, now).toDays()
var day = LocalDate.parse("2021-10-06").atStartOfDay()
//Uebername aus dem esp32
if (Gasometer_GasometerMainChangeAbsolut.state >= 0) {
Gasstand_Aktuell.sendCommand((Gasometer_GasometerValue.state as Number) + (GasometerNachkomma.state as Number) / 1000)
}
//Allgemeine Daten schreiben
Gastariftage.sendCommand(Duration.between(day, now).toDays()) //Duration.between(day,ZonedDateTime.now()).toDays()
GasVerbrauchJahr.sendCommand(((Gasstand_Aktuell.state as Number) - Gasstand_letzteLesung.state) * Gas_Zaehlerfaktor.state as Number * Gas_Brennwert.state as Number ) //Verbrauch ab Zählerstand 6.10.2021
GasKostenJahr.sendCommand(((GasVerbrauchJahr.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Gastariftage.state as Number) * (GasGrundgebuehrTag.state as Number)))
GasKostenJahrForecast.sendCommand((GasKostenJahr.state as Number) / (Gastariftage.state as Number) * 365)
GasVerbrauchJahrForecast.sendCommand((GasVerbrauchJahr.state as Number) / (Gastariftage.state as Number) * 365)
GasDayAverageMeter.sendCommand(((Gasstand_Aktuell.state as Number) - (Gasstand_letzteLesung.state)) / (dif_days))
GasDayAverage.sendCommand((GasVerbrauchJahr.state as Number) / (dif_days))
GasDayAverageCost.sendCommand((GasKostenJahr.state as Number) / (dif_days))
//Monatswerte berechnen und setzen
switch (MonatsVal) {
case 1 : {
Gas_Stand_Januar.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchJanuar.sendCommand(((Gas_Stand_Januar.state as Number) - (Gas_Stand_Dezember.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenJanuar.sendCommand(((Gas_VerbrauchJanuar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchJanuar.sendCommand((Gas_VerbrauchJanuar.state as Number) / Tageszahl)
}
case 2 : {
Gas_Stand_Februar.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchFebruar.sendCommand(((Gas_Stand_Februar.state as Number) - (Gas_Stand_Januar.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenFebruar.sendCommand(((Gas_VerbrauchFebruar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchFebruar.sendCommand((Gas_VerbrauchFebruar.state as Number) / Tageszahl)
}
case 3 : {
Gas_Stand_Maerz.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchMaerz.sendCommand(((Gas_Stand_Maerz.state as Number) - (Gas_Stand_Februar.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenMaerz.sendCommand(((Gas_VerbrauchMaerz.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchMaerz.sendCommand((Gas_VerbrauchMaerz.state as Number) / Tageszahl)
}
case 4 : {
Gas_Stand_April.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchArpil.sendCommand(((Gas_Stand_April.state as Number) - (Gas_Stand_Maerz.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenApril.sendCommand(((Gas_VerbrauchApril.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchApril.sendCommand((Gas_VerbrauchApril.state as Number) / Tageszahl)
}
case 5 : {
Gas_Stand_Mai.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchMai.sendCommand(((Gas_Stand_Mai.state as Number) - (Gas_Stand_April.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenMai.sendCommand(((Gas_VerbrauchMai.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchMai.sendCommand((Gas_VerbrauchMai.state as Number) / Tageszahl)
}
case 6 : {
Gas_Stand_Juni.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchJuni.sendCommand(((Gas_Stand_Juni.state as Number) - (Gas_Stand_Mai.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenJuni.sendCommand(((Gas_VerbrauchJuni.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchJuni.sendCommand((Gas_VerbrauchJuni.state as Number) / Tageszahl)
}
case 7 : {
//logInfo("GASstand", MonatsVal.toString())
Gas_Stand_Juli.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchJuli.sendCommand(((Gas_Stand_Juli.state as Number) - (Gas_Stand_Juni.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenJuli.sendCommand(((Gas_VerbrauchJuli.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchJuli.sendCommand((Gas_VerbrauchJuli.state as Number) / Tageszahl)
}
case 8 : {
Gas_Stand_August.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchAugust.sendCommand(((Gas_Stand_August.state as Number) - (Gas_Stand_Juli.state as Number))* (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenAugust.sendCommand(((Gas_VerbrauchAugust.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchAugust.sendCommand((Gas_VerbrauchAugust.state as Number) / Tageszahl)
}
case 9 : {
Gas_Stand_September.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchSeptember.sendCommand(((Gas_Stand_September.state as Number) - (Gas_Stand_August.state as Number))* (Gas_Zaehlerfaktor.state as Number) *(Gas_Brennwert.state as Number))
Gas_kostenSeptember.sendCommand(((Gas_VerbrauchSeptember.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchAugust.sendCommand((Gas_VerbrauchAugust.state as Number) / Tageszahl)
}
case 10 : {
Gas_Stand_Oktober.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchOktober.sendCommand(((Gas_Stand_Oktober.state as Number) - (Gas_Stand_September.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenOktober.sendCommand(((Gas_VerbrauchOktober.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchOktober.sendCommand((Gas_VerbrauchOktober.state as Number) / Tageszahl)
}
case 11 : {
Gas_Stand_November.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchNovember.sendCommand(((Gas_Stand_November.state as Number) - (Gas_Stand_Oktober.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenNovember.sendCommand(((Gas_VerbrauchFebruar.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchNovember.sendCommand((Gas_VerbrauchNovember.state as Number) / Tageszahl)
}
case 12 : {
Gas_Stand_Dezember.sendCommand((Gasstand_Aktuell.state as Number))
Gas_VerbrauchDezember.sendCommand(((Gas_Stand_Dezember.state as Number) - (Gas_Stand_November.state as Number)) * (Gas_Zaehlerfaktor.state as Number) * (Gas_Brennwert.state as Number))
Gas_kostenDezember.sendCommand(((Gas_VerbrauchDezember.state as Number) * (Gasbezugskosten.state as Number) * 1.19) + ((Tageszahl) * (GasGrundgebuehrTag.state as Number)))
Gas_TagesverbrauchDezember.sendCommand((Gas_VerbrauchDezember.state as Number) / Tageszahl)
}
}
end