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.*/
Ich bin gerne offen für Optimierungen oder Tipps der Profis da dies meine erste Custom Logik ist.