NEWS
Komplexe Entscheidungen in Blockly umsetzen
-
Hallo,
man hat verschiedene Verbraucher:- Normaler Hausverbrauch
- Hausbatterie zu laden
- Auto zu laden
- Tauchsieder für WW
Dabei gibt es verschiedene Prioritäten:
- Hausverbrauch bis Bausbatterie am Ende
- Wenn der Hausverbrauch was über lässt geht der rest in die Hausbatterie
- Wenn der SOC von der Hausbatterie bei 98% ist oder 3,2kW überschritten (mehr läd' die Hausbatterie nicht) wird das Auto geladen mit 1320Watt steigend, mit allem was über ist
- Wenn der SOC vom Auto über 60% ist, wird der 1,4kW Warmwassertauchsieder eingeschaltet
Dann gibt es noch mindestens einen Spezialfall:
- Auto mit 7360W laden bis voll (32*230V)
- Lade Nachts das Auto bis Hausbatterie beim SOC von 50% ist
Frage:
Wie bildet ihr das Softwaretechnisch ab?
Jede Menge if/then? Oder eine Matrix?Danke + MfG
Stefan -
@stefan-falt Ich nutze zwar durchaus JavaScript, ein ähnliches Szenario wie du habe ich mir dann aber in Blockly zusammengebaut. Also ja, jede Menge
On
mitIf
undThen
bzw. in Blockly dannFalls Objekt
undFalls
/Sonst
.
Ich habe ja klein angefangen und das ganze Stück für Stück erweitert.
Gesteuert wird das Laden der Akkus, die Nulleinspeisung, 2 Klimaanlagen und 1 Luftentfeuchter (also zum Thema Strom)- Tipp 1: Fang klein an und baue dann Stück für Stück die Dinge dazu
- Tipp 2: lagere alles was du mehr als einmal brauchst in Funktionen aus. Wenn du dann was ändern muss kannst du es dann gleich zentral ändern oder etwas neues einbauen. Zudem kannst du es dann aus vielen Situationen aus aufrufen.
- Tipp 3: Ich habe mir in VIS immer gleich Kontroll-Views dazu gebaut so das ich sehen kann wie der Status gerade ist und ggf. schnell manuell eingreifen kann
- Tipp 4: Ich habe für alles in der VIS einen "Manuell" bzw. "Automatische Steuerung aus" Button. Darüber kann ich z.B. die Steuerung der Klimaanlagen ausschalten (wenn das System meint das neben dem Laden der Akkus noch genug für die Klimaanlage da ist, eigentlich aber nur kurz die Sonne raus kam). Für jeden "Manuell" Button gibt es einen Zeitplan / Cronjob der das auch wieder ausschaltet. Das kann man auch gut nutzen für Dinge wie "Auto laden ist erlaubt" oder eben nicht und von den anderen Stufen auslösen lassen.
- Tipp 5: Manche Dinge wie das Laden des Akkus oder die Nulleinspeisung haben auch einen "Kill" Schalter, diese übersteuern und deaktivieren alles und gehen auch nicht wieder von alleine an. Zur Zeit genutzt wenn es keine Werte mehr vom Akku gibt (bzw. dem BMS).
Und der Übertipp ist: Testen, testen und Testen. Und Logmeldungen/Debugmeldungen, zumindest am Anfang! Kann man ja über eine Variable konfigurierbar machen ob Logmeldungen erfolgen oder nicht.
-
@bananajoe Danke für die Tipps.
Funktionen - ja die habe ich schon vermisst ... dann werde ich da mal drangehen