ich habe mich nun auch an meine erste Custom Logik gewagt.
Ziel war es den fortlaufenden Gesamtzählerstand des Wärmepumpenzähler einzulesen und die stündliche, tägliche, wöchentliche, monatliche und jährliche Änderung auszugeben.
Der erstellte Code:
Code: Alles auswählen
/**
* New custom logic
*
*
*/
{
"_Meta": { // Optional
"Description": "",
"Version": "1.00",
"Icon": "" // format: "data:image/svg+xml;base64,ENCODED_FILE"
},
"Input": [
["akt_Zaehlerstand","aktueller Zaehlerstand","$I_akt_kWh","a"],
["Trigger_sofort","Trigger zur sofortigen übernahme der kWh","$I_Trigger_sofort","c"]
],
"Output": [
["Verbrauch_Stunde","Verbrauch der letzten Stunde","$Stundenverbrauch","c"],
["Verbrauch_Tag","Verbrauch eines Tages","$Tagesverbrauch","c"],
["Verbrauch_Woche","Verbrauch einer Woche","$Wochenverbrauch","c"],
["Verbrauch_Mon","Verbrauch eines Monats","$Monatsverbrauch","c"],
["Verbrauch_Jahr","Verbrauch eines Jahres","$Jahresverbrauch","c"]
],
"Level": [
["$I_akt_kWh","float",0.0],
["$I_Trigger_sofort","bool",false],
//
["$Stundenverbrauch","float",0.0],
["$Tagesverbrauch","float",0.0],
["$Wochenverbrauch","float",0.0],
["$Monatsverbrauch","float",0.0],
["$Jahresverbrauch","float",0.0],
//
["$SpeicherStunde","float",0.0],
["$SpeicherTag","float",0.0],
["$SpeicherWoche","float",0.0],
["$SpeicherMonat","float",0.0],
["$SpeicherJahr","float",0.0],
["$KonstTrue","bool",true],
["$KonstFalse","bool",false],
["$Konst0","float",0.0],
["$Konst1","float",1.0],
//
["$ResetStunde","string","1 0 0-23 * * *"],
["$ResetTag","string","1 0 0 * * *"],
["$ResetWoche","string","1 0 0 * * 0"],
["$ResetMonat","string","1 0 0 1 * *"],
["$ResetJahr","string","1 0 0 1 1 *"],
["$ResetStundeTrigger","bool",false],
["$ResetTagTrigger","bool",false],
["$ResetWocheTrigger","bool",false],
["$ResetMonatTrigger","bool",false],
["$ResetJahrTrigger","bool",false],
["$UebnStundeTrigger","bool",false],
["$UebnTagTrigger","bool",false],
["$UebnWocheTrigger","bool",false],
["$UebnMonatTrigger","bool",false],
["$UebnJahrTrigger","bool",false]
],
"Module": [
// Trigger zur Übernahme der aktuellen kWh mittels Cron
["Cron","$KonstTrue","$ResetTagTrigger",0,"$ResetTag"],
["Cron","$KonstTrue","$ResetWocheTrigger",0,"$ResetWoche"],
["Cron","$KonstTrue","$ResetMonatTrigger",0,"$ResetMonat"],
["Cron","$KonstTrue","$ResetJahrTrigger",0,"$ResetJahr"],
// Cron oder Eingang
["Or" , ["$ResetStundeTrigger" , "$I_Trigger_sofort"], "$UebnStundeTrigger"],
["Or" , ["$ResetTagTrigger" , "$I_Trigger_sofort"], "$UebnTagTrigger"],
["Or" , ["$ResetWocheTrigger" , "$I_Trigger_sofort"], "$UebnWocheTrigger"],
["Or" , ["$ResetMonatTrigger" , "$I_Trigger_sofort"], "$UebnMonatTrigger"],
["Or" , ["$ResetJahrTrigger" , "$I_Trigger_sofort"], "$UebnJahrTrigger"],
// Trigger Übernahme der aktuellen kWh in den Speicher
["Latch","$I_akt_kWh","$SpeicherStunde","$UebnStundeTrigger",0],
["Latch","$I_akt_kWh","$SpeicherTag","$UebnTagTrigger",0],
["Latch","$I_akt_kWh","$SpeicherWoche","$UebnWocheTrigger",0],
["Latch","$I_akt_kWh","$SpeicherMonat","$UebnMonatTrigger",0],
["Latch","$I_akt_kWh","$SpeicherJahr","$UebnJahrTrigger",0],
// Delta ermitteln
["Polynomial", "$Konst1", "$Stundenverbrauch",["$I_akt_kWh", "-$SpeicherStunde"]],
["Polynomial", "$Konst1", "$Tagesverbrauch",["$I_akt_kWh", "-$SpeicherTag"]],
["Polynomial", "$Konst1", "$Wochenverbrauch",["$I_akt_kWh", "-$SpeicherWoche"]],
["Polynomial", "$Konst1", "$Monatsverbrauch",["$I_akt_kWh", "-$SpeicherMonat"]],
["Polynomial", "$Konst1", "$Jahresverbrauch",["$I_akt_kWh", "-$SpeicherJahr"]]
]
}
Geplant war es durch den Eingang $I_Trigger_sofort die Speicherplätze ($SpeicherStunde... bis ...$SpeicherJahr) mit dem aktuellen Zählerstand zu füllen. Dies ist nur beim ersten Start nötig und wird durch eine händische Umschaltung erledigt.
Danach soll das beschreiben der "Speicher" mittels der Latch Bausteine getriggert durch Crons erfolgen.
Das Delta wird jeweils durch die Polynominal Bausteine ermittelt.
Scheinbar werden die Speicher nicht durch das händische Triggern vom Eingang "$I_Trigger_sofort" beschrieben.
Die Cron Trigger scheinen auch nicht zu arbeiten.
Kann jemand einen Fehler erkennen?
Wurde mich über Tipps und Vorschläge zum vereinfachen/ verbessern der Custom Logik freuen.
Vielen Dank im Voraus
Markus