Seite 1 von 1

[V4.0 IP4] Custem Logik: Tagesverbrauch aus dem Zählerstand berechnen

Verfasst: Mi Jan 24, 2024 8:11 am
von Sebastian104
Moin Zusammen,

Ich möchte zwei von mir erstellte Custom Logiken teilen, die den Tagesverbrauch aus dem aktuellen Zählerstand berechnen. Die Logiken geben detaillierte Informationen wie Wattstunden (Wh), Kilowattstunden (kWh) und die zugehörigen Kosten aus.

In meinem Fall nutze ich u.a. mehrere Shellys für einzelne Geräte, die jedoch lediglich einen Gesamtzählerstand ausgeben. Um den täglichen Verbrauch jedes Geräts zu ermitteln, habe ich zuvor zwei separate Logiken verwendet. Diese habe ich nun in einer einzigen Custom Logik zusammengeführt, um besser den Überblick zu behalten und gleichzeitig die Kosten zu berechnen.

Eine Cron-Variabel sendet den Verbrauch nur zur vollen Stunde, um die Datenübertragung zu minimieren.
Diese Frequenz kann jedoch problemlos individuell in der Logik angepasst werden.
Der Preis pro kWh lässt sich entweder direkt im Code oder über den zweiten Eingang als Parameter anpassen.
Jeden Nacht um 23:59:59 Uhr wird der Tagesverbrauch auf 0 zurückgesetzt


Ich habe zwei Versionen der Logik: einmal, wenn der eingehende Zählerstand in Wattstunden (Wh) angegeben wird, und einmal, wenn der Zählerstand in Kilowattstunden (kWh) eingegeben wird.

Eingangswert Wh:

Code: Alles auswählen

{
  "Input": [
	["Zählerstand (in Wh)","Zähler","$Zählerstand","a"],
	["kWh-Preis (in €)","Preis für eine kWh in €","$Preis","a"]
  ],
  "Output": [
	["Tageswert_kWh","Tageswert kWh","$Tageswert_kWh","x"],
	["Tageswert_Wh","Tageswert Wh","$Tageswert_Wh","x"],
	["Tagespreis","Tagespreis €","$Tagespreis","x"]
  ],
  "Level": [
	["$CronExpr","string","59 59 23 * * *"],
        // Cron intervall - Senden der Ausgänge
	["$CronExpr2","string","0 0 * * * *"],
	
	["$Tageswert_kWh","float",0.0],
	["$Tageswert_Wh","float",0.0],
	["$Tagespreis","float",0.0],
	["$Zählerstand","float",0.0],
	
	//Tages Start Wert
	["$Tages0","float",0.0],
	
	["$Formula_W","string","X1-X2"],
	["$Formula_P","string","X1*X2"],
	["$Formula_U","string","X1/X2"],
	["$aktiv","bool",true],
	["$Trigger","bool",false],
	
	//Preis pro kWh
	["$Preis","float",0.36],
	
	["$Faktor","float",1000],
	["$SendCond","bool",false],
	["$NextTrigger","integer",0],
	["$NextTrigger2","integer",0]

  ],
  "Module": [
	 //Berechnung Tagesverbrauch - in Wh
	["CalcFormula",["$Zählerstand","$Tages0"], "$Tageswert_Wh", "$Formula_W"],

	 //Umrechnung Wh in kWh
	["CalcFormula",["$Tageswert_Wh","$Faktor"], "$Tageswert_kWh", "$Formula_U"],
	
	 //Berechnung Preis
	["CalcFormula",["$Tageswert_kWh","$Preis"], "$Tagespreis", "$Formula_P"],
	
	// Reset des Tageswertes um 23:59:59
	["Cron","$aktiv","$Trigger",0,"$CronExpr"],
	
	 //Zwischenspeichern Tages Start Wert
	["Latch","$Zählerstand","$Tages0","$Trigger",1],
	
	// Intervall vom Senden der Ausgänge
	 ["SendExplicit","$SendCond","$Tageswert_kWh",0],
	 ["SendExplicit","$SendCond","$Tageswert_Wh",0],
	 ["SendExplicit","$SendCond","$Tagespreis",0],
	 ["Cron","$aktiv","$SendCond","$NextTrigger2","$CronExpr2"]
  ]
}
/**Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.*/

Eingangswert kWh:

Code: Alles auswählen

{
  "Input": [
	["Zählerstand (in kWh)","Zähler","$Zählerstand","a"],
	["kWh-Preis (in €)","Preis für eine kWh in €","$Preis","a"]
  ],
  "Output": [
	["Tageswert_kWh","Tageswert kWh","$Tageswert_kWh","x"],
	["Tageswert_Wh","Tageswert Wh","$Tageswert_Wh","x"],
	["Tagespreis","Tagespreis €","$Tagespreis","x"]
  ],
  "Level": [
	["$CronExpr","string","59 59 23 * * *"],
	
	// Cron intervall - Senden der Ausgänge
	["$CronExpr2","string","0 0 * * * *"],
	
	["$Tageswert_kWh","float",0.0],
	["$Tageswert_Wh","float",0.0],
	["$Tagespreis","float",0.0],
	["$Zählerstand","float",0.0],
	
	//Tages Start Wert
	["$Tages0","float",0.0],
	
	["$Formula_W","string","X1-X2"],
	["$Formula_P","string","X1*X2"],
	["$Formula_U","string","X1*X2"],
	["$aktiv","bool",true],
	["$Trigger","bool",false],
	
	//Preis pro kWh
	["$Preis","float",0.36],
	
	["$Faktor","float",1000],
	["$SendCond","bool",false],
	["$NextTrigger","integer",0],
	["$NextTrigger2","integer",0]
  ],
  "Module": [
      //Berechnung Tagesverbrauch - in Wh
     ["CalcFormula",["$Zählerstand","$Tages0"], "$Tageswert_kWh", "$Formula_W"],

      //Umrechnung Wh in kWh
	["CalcFormula",["$Tageswert_kWh","$Faktor"], "$Tageswert_Wh", "$Formula_U"],
	
	  //Berechnung Preis
	["CalcFormula",["$Tageswert_kWh","$Preis"], "$Tagespreis", "$Formula_P"],
	
	  // Reset des Tageswertes um 23:59:59
	["Cron","$aktiv","$Trigger","$NextTrigger","$CronExpr"],
	
	  //Zwischenspeichern Tages Start Wert
	["Latch","$Zählerstand","$Tages0","$Trigger",1],
	
	  // Intervall vom Senden der Ausgänge
	 ["SendExplicit","$SendCond","$Tageswert_kWh",0],
	 ["SendExplicit","$SendCond","$Tageswert_Wh",0],
	 ["SendExplicit","$SendCond","$Tagespreis",0],
	 ["Cron","$aktiv","$SendCond","$NextTrigger2","$CronExpr2"]
  ]
}
/**Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.*/
Was mache ich dann mit den Daten? Natürlich stelle ich diese über die toll TW Visu dar. :lol: :lol:
Bild



Ich bin gerne offen für Optimierungen oder Tipps der Profis da dies meine erste Custom Logik ist. :D

Re: [V4.0 IP4] Custem Logik: Tagesverbrauch aus dem Zählerstand berechnen

Verfasst: Mi Jan 24, 2024 9:03 am
von gbglace
Hi Sebastian,
schonmal Glückwunsch zum Einstieg in den Custom LE.

Hast Du berücksichtigt, das die Shellys bei einem nicht nur Minuten langen Stromausfall den total Zählerstand vergessen?

Ansonsten eine gute Logik die auch die Preise berücksichtigt, lässt sich ja auch gerne stündlich ein aktueller Preis am Eingang einspeisen.

Für die "statischen" Anzeigen in der TWS-Visu wären ggf. die Werte zum Wochen / Monats / Jahres-Zähler noch interessant.
Dann wärst auch bei dem schon vorhandenen Baustein + der Preisberechnung.

Die weiteren Zählerstände wären hier mit drinnen:
viewtopic.php?f=65&t=1641

Die Mechanik Wertfixierung und Korrekturbetragberücksichtigung findest hier:
viewtopic.php?f=65&t=4166

Re: [V4.0 IP4] Custem Logik: Tagesverbrauch aus dem Zählerstand berechnen

Verfasst: Mi Jan 24, 2024 9:52 am
von Sebastian104
Hi Gören.
gbglace hat geschrieben: Mi Jan 24, 2024 9:03 am Hast Du berücksichtigt, das die Shellys bei einem nicht nur Minuten langen Stromausfall den total Zählerstand vergessen?
Nein, das habe ich nicht. Ich wusste noch gar nicht, dass die den Wert vergessen. :think:

gbglace hat geschrieben: Mi Jan 24, 2024 9:03 am Für die "statischen" Anzeigen in der TWS-Visu wären ggf. die Werte zum Wochen / Monats / Jahres-Zähler noch interessant.
Dann wärst auch bei dem schon vorhandenen Baustein + der Preisberechnung.

Die weiteren Zählerstände wären hier mit drinnen:
viewtopic.php?f=65&t=1641
Das hatte ich als zukünftige Erweiterung auch schon überlegt, ich wollte aber zumindest das erste Ergebnis hier teilen. :)
gbglace hat geschrieben: Mi Jan 24, 2024 9:03 am Die Mechanik Wertfixierung und Korrekturbetragberücksichtigung findest hier:
viewtopic.php?f=65&t=4166
Das klingt sehr interessant! Ich schau mir das bei Gelegenheit mal an.