@gto Ich habe aus ästhetischen Gründen zwei Scripts gemacht. Ich mag große Monolithen nicht. Und da hier zwei einigermaßen deutlich unterscheidbare Zwecke zu sehen waren, habe ich auch zwei Scripte daraus
gemacht. Technisch könnte man das auch in eins nehmen.
Da nichts zu überwachen ist, wenn der Shelly nicht eingeschaltet wurde, braucht man auch beide Scripte aktiv.
Der SwitchOnOff.ts behandelt die Anfangswerte, mit denen gestartet wird. Speichert den Zustand des Shelly und setzt die Annahmen an den Ist-Ladezustand und Soll-Ladezustand. Außerdem überwacht es, ob per IOBroker oder auf anderem Wege eingeschaltet wurde. Nach dem Einschalten könnte man dieses Script beenden. Aber warum sollte man das tun?
Der Timer "BatteryMonitor.ts" schaltet aus, mit was immer zuerst erreicht wird: Der gewünschte Ladezustand oder das Absinken der Ladekennlinie. Man kann also derzeit auch keine 100% Füllzustand einstellen, fällt mir bei der Frage auf, da die Kennlinie das Laden ja vorher stoppt.
Diese Möglichkeit muss ich wohl auch noch einbauen. Denn ab und zu soll ja eine LIB/LFP-Batterie zu hundert Prozent geladen werden, um dem BMS zu ermöglichen, den Füllstand sauber zu bestimmen.
Ich habe aber das Einschalten des Ladevorgangs am Steckdosenschalter wieder ermöglicht. Man kann die Kontrolle darüber jetzt in den Uservariablen unter dem Namen ".AppControlledSwitchOn" ein bzw ausschalten.
"True" bedeutet hier, Einschalten nur über IOBroker, "False" lässt das Schalten auch über den Stecker zu.
BatteryMonitor.ts
SwitchOnOff.ts
EBikeAkkuSetup.ts