Seite 5 von 13

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 28. Okt 2022 12:01
von Snatsch
Sorry, ich war wieder (schnell und) schlampig (copy/paste). Asche über meinem Haupt. Ich gelobe Besserung :oops: :oops: :oops: ;)
Alles gut :) das mit dem Datum ändern hatte ich vorher schon verstanden und gelesen ;) Deshalb hatte ich es auf 28 und 300 gesetzt :)

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 28. Okt 2022 13:43
von udo1toni
Snatsch hat geschrieben: 28. Okt 2022 11:54 Da der Wert in kwh ausgegeben wird und ich aber einen Flüssiggastank habe würde ich gerne das die kwh in Liter umgerechnet werden. Habe gelesen das eine kwh Gas mit 0,1522 Litern Gas erzeugt wird,
klar, Du kannst die kWh mit 0.1522 multiplizieren und erhältst damit das Volumen. Ob das Ergebnis allerdings tatsächlich stimmt, ist von vielen Faktoren abhängig, nicht zuletzt vom Wirkungsgrad der Heizung.
Snatsch hat geschrieben: 28. Okt 2022 11:54 dann hätte ich noch den Preis pro Tag, Woche und Jahr. Muss ich dazu eine Rule haben oder kann man das über die Metadata machen ? Für den Preis muss ich bestimmt wieder 4 Items anlegen Preis_Tag, Preis_Woche,.... oder
Jedes Datum (nicht Kalender, sondern Einzahl von Daten...), welches Du anzeigen willst, muss in einem Item gespeichert werden.
Du kannst natürlich auch ein Kombi-Item anlegen, in dem (als String) kWh und/oder Liter und/oder Preis genannt werden, so:

Code: Alles auswählen

rule "Gasverbrauch Tag Woche Monat Jahr"                                                              // Deutscher Zeichensatz zulässig
when
    Item heatQuellen_consumption changed                                                                // changed reicht.
then
    val kwprol = 0.1522                                                                                 // Umrechnung kWh in Liter
    val Preis  = 1.50                                                                                   // Preis pro Liter

    val ZonedDateTime zdt            = ZonedDateTime.now()                                              // jetzt
    val ZonedDateTime start_of_day   = zdt.with(LocalTime.MIDNIGHT)                                     // heute, Mitternacht
    val ZonedDateTime start_of_week  = start_of_day.minusDays(start_of_day.getDayOfWeek.getValue - 1)   // Montag 
    val ZonedDateTime start_of_month = start_of_day.withDayOfMonth(1)                                   // Erster Tag des Monats (1)
    val ZonedDateTime start_of_year  = start_of_day.withDayOfYear(1)                                    // Erster Tag des Jahres (1)

    val Gas_Heute   = (heatQuellen_consumption.deltaSince(start_of_day)   as Number).floatValue         // kWh Delta holen
    val Gas_Woche   = (heatQuellen_consumption.deltaSince(start_of_week)  as Number).floatValue
    val Gas_Monat   = (heatQuellen_consumption.deltaSince(start_of_month) as Number).floatValue
    val Gas_Jahr    = (heatQuellen_consumption.deltaSince(start_of_year)  as Number).floatValue

    val Liter_Heute = Gas_Heute * kwprol                                                                // kWh in Liter umrechnen
    val Liter_Woche = Gas_Woche * kwprol
    val Liter_Monat = Gas_Monat * kwprol
    val Liter_Jahr  = Gas_Jahr  * kwprol

    val Euro_Heute  = String::format("%.2f €",(Liter_Heute  * Preis))                                   // Summe in Euro berechnen
    val Euro_Woche  = String::format("%.2f €",(Liter_Woche  * Preis))
    val Euro_Monat  = String::format("%.2f €",(Liter_Monat  * Preis))
    val Euro_Jahr   = String::format("%.2f €",(Liter_Jahr  * Preis))

    GasSumme_Heute.postUpdate(Gas_Heute.toString+" kWh/"+Liter_Heute.toString+" l/"+Euro_Heute)         // Alles in ein String Item
    GasSumme_Woche.postUpdate(Gas_Woche.toString+" kWh/"+Liter_Woche.toString+" l/"+Euro_Woche)
    GasSumme_Monat.postUpdate(Gas_Monat.toString+" kWh/"+Liter_Monat.toString+" l/"+Euro_Monat)
     GasSumme_Jahr.postUpdate(Gas_Jahr.toString +" kWh/"+Liter_Jahr.toString +" l/"+Euro_Jahr)
end
Die Items kannst Du in einer gemeinsamen Ansicht darstellen, Titel ist dann "Gasverbrauch", Label der Items "Heute", "Woche", "Monat" und "Jahr" und alle relevanten Infos stehen dann als Text da. Das funktioniert natürlich nur, wenn Du nicht mit den konkreten Zahlenwerten weiter rechnen willst (also außerhalb der Rule, innerhalb sind ja alle relevanten Werte da).

EDIT: Code geändert, da zumindest der Preis auf zwei Stellen gerundet sein sollte.

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 28. Okt 2022 16:50
von Snatsch
Vielen Dank udo1toni
irgendwie komme ich mit dem Items anlegen nicht zurecht :?
Muss ich die per Text anlegen ? Könntest du mir vielleicht ein Beispiel geben :?:

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 28. Okt 2022 17:38
von Snatsch
ist das eventuell so gemeint ?

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 28. Okt 2022 20:51
von udo1toni
Es ist egal, wie Du die Items anlegst. Aber mit einem Channel dürfen sie nicht verknüpft sein, das sind ungebundene Items, die ausschließlich über die Rule gefüllt werden.

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 29. Okt 2022 00:50
von zinnik
Die Items kannst Du in einer gemeinsamen Ansicht darstellen, Titel ist dann "Gasverbrauch", Label der Items "Heute", "Woche", "Monat" und "Jahr" und alle relevanten Infos stehen dann als Text da.
Wie ist denn das gemeint? Gibt es da ein Beispiel dafür, kann mir grad nichts drunter vorstellen?

Lg zinnik

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 29. Okt 2022 00:54
von Snatsch

Code: Alles auswählen

Group  Gasverbrauch 
String GasSumme_Heute "Heute" <energy> (Gasverbrauch)
String GasSumme_Woche "Woche" <energy> (Gasverbrauch) 
String GasSumme_Monat "Monat" <energy> (Gasverbrauch)
String GasSumme_Jahr "Jahr" <energy> (Gasverbrauch)

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 29. Okt 2022 02:10
von udo1toni
@Snatsch Nö.

Ich bezog das auf die UI.

Also z.B. in der Sitemap:

Code: Alles auswählen

Frame label="Gasverbrauch" {
    Text item=GasSumme_Heute
    Text item=GasSumme_Woche
    Text item=GasSumme_Monat
    Text item=GasSumme_Jahr
}
Sieht dann so aus:
Screenshot 2022-10-29 021358.png
Hier natürlich nur mit manuell eingefügten Daten.

Alternativ in der Main UI (allerdings habe ich da alle Label manuell gesetzt. egal, ist ja nur ein Beispiel...)
Screenshot 2022-10-29 020845.png
Brüller... Keine Ahnung, warum das Forum nun den ersten Screenshot verschluckt...

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 29. Okt 2022 14:11
von Snatsch
also wieder verkehrt :|
Bei mir sieht es so aus
Screenshot (56).png
und in meiner Tablet Ansicht so
Screenshot (57).png

Re: Stromverbrauch für Tag, Woche, Monat, Jahr berechnen

Verfasst: 29. Okt 2022 20:30
von peter-pan
..eigentlich ok. Du kannst aber noch die "Liter_..."-Werte auf zwei Stellen formatieren, wie bei den Euro-Formatierungen. Aber erst nach den Berechnungen. So etwa...

Code: Alles auswählen

    GasSumme_Heute.postUpdate(Gas_Heute.toString+" kWh/"+ String::format("%.2f",(Liter_Heute))  +" l/" + Euro_Heute)         // Alles in ein String Item
    GasSumme_Woche.postUpdate(Gas_Woche.toString+" kWh/"+ String::format("%.2f",(Liter_Woche))  +" l/" + Euro_Woche)
    GasSumme_Monat.postUpdate(Gas_Monat.toString+" kWh/"+ String::format("%.2f",(Liter_Monat))  +" l/" + Euro_Monat)
    GasSumme_JahrL.postUpdate(Gas_Jahr.toString +" kWh/"+ String::format("%.2f",(Liter_Jahr))   +" l/" + Euro_Jahr)
Es geht aber sicherlich auch mit Umwandlung in Integer ohne Nachkomma.