NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

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

Hier stellen Foristen und Kunden Ihre EIGENEN Logikbausteine vor. Diese Logikbausteine stehen jedem im Rahmen der vom Autor eingeräumten / genannten Lizenz zur Verfügung.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
Antworten

Ersteller
Sebastian104
Reactions:
Beiträge: 150
Registriert: Do Sep 29, 2022 12:52 am
Hat sich bedankt: 158 Mal
Danksagung erhalten: 110 Mal

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

#1

Beitrag 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
Zuletzt geändert von Sebastian104 am Mi Jan 24, 2024 9:52 am, insgesamt 1-mal geändert.
Grüße
Sebastian

TWS 3500S ID:860, VPN offen, Reboot möglich

gbglace
Reactions:
Beiträge: 3615
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1273 Mal
Danksagung erhalten: 1674 Mal

#2

Beitrag 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
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
Sebastian104
Reactions:
Beiträge: 150
Registriert: Do Sep 29, 2022 12:52 am
Hat sich bedankt: 158 Mal
Danksagung erhalten: 110 Mal

#3

Beitrag 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.
Grüße
Sebastian

TWS 3500S ID:860, VPN offen, Reboot möglich
Antworten

Zurück zu „Zusätzliche Logikbausteine“