NEWS
Listen sortieren, mal gehts, mal nicht
-
@joeysch sagte: Batterie zu den günstigen Stunden lade und den teuren Stunden entlade.
Wenn man die nach Preisen sortierte Liste mit 24 Objekten in einen Datenpunkt vom Typ "array" schreibt, kann man die Liste für die Batterieladung und -entladung in einem weiteren Skript auswerten:
EDIT: Hier das Skript zum Erstellen der Liste mit 24 Objekten:
Da der Adapter um Mitternacht alle Werte neu schreibt, sollte man ihm ein paar Sekunden Zeit geben, bevor man die Datenpunkte einliest.
-
@paul53
So wie ich das lese, lädt und entlädt das System bei günstigsten bzw. teuersten Preisen.
Aber, die Werte des zweiten Tages kommen erst ab 13.00 Uhr. Mann müsste noch die Verluste die durch das Laden und Entladen berücksichtigen (ca.20%) und was ist, wenn die teuerste Zeit vor der günstigsten liegt. -
@joeysch sagte: die Werte des zweiten Tages kommen erst ab 13.00 Uhr.
Die spielen keine Rolle, da nur um kurz nach Mitternacht die Werte des aktuellen Tages geholt werden. Es wird nach den Preisen des aktuellen Tages sortiert. Die Reihenfolge der Stunden spielt keine Rolle.
Sollen die Preise des nächsten Tages auch berücksichtigt werden, muss am Nachmittag noch einmal eine Abfrage starten, die allerdings nicht nur die Werte unter "PricesToday" verwenden kann.
@joeysch sagte in Listen sortieren, mal gehts, mal nicht:
Mann müsste noch die Verluste die durch das Laden und Entladen berücksichtigen (ca.20%)
Das muss man bei der Ermittlung von "Aufladedauer" und "Entladedauer" (in Stunden) berücksichtigen.
-
@paul53 sagte in Listen sortieren, mal gehts, mal nicht:
Das muss man bei der Ermittlung von "Aufladedauer" und "Entladedauer" (in Stunden) berücksichtigen.
Ich glaube das hast du falsch verstanden. Durch die Verlustleistungen beim Laden und Entladen, müssten die günstigsten Preise x 1,2 genommen werden und mit den teuersten verglichen. Erst wenn dieser Preis immer noch günstiger ist, lohnt sich das laden wenn nicht, dann auch nicht laden.
-
@joeysch sagte: günstigsten Preise x 1,2 genommen werden und mit den teuersten verglichen.
Ist das Verhältnis nicht immer größer als 1,2?
-
@paul53
Nein, mal angenommen der teuerste Preis für diesen Tag wären 0,30 € dann wäre der höchstmögliche günstige Preis an dem es sich noch lohnen würde die Batterie zu füllen 0,30/1,2=0,25€ und selbst da wäre es noch Energieverschwendung weil ich für den gleichen Preis 20% der Energie vernichte.
Ich muss ja erst aus Wechselstrom Gleichstrom machen und dann wieder zurück. D.h. ich ziehe 1,2Kwh aus dem Netz um nachher 1 Kwh zu haben. -
@joeysch
Dann prüfe die zwei teuersten Preise gegen die zwei günstigsten Preise:So einfach ist es, wenn man in der sortierten Liste ein Objekt mit hour und price hat.
-
@paul53
Ja, ähnlich hatte ich es ja gestern, dank deiner Hilfe, auch aufgebaut. Der Tip mit den Objekten war der entscheidende.
Ich ziehe allerdings noch einige Werte raus und schreibe sie in Datenpunkte um das Ganze in VIS zu verwursten.
Ab Januar bin ich dann bei Tibber. Interessant ist das Ganze ja nur für die dunkle Jahreszeit, ansonsten ist die Batterie ja immer voll vom Dach. -
Hallo Gemeinde,
habe ebenfalls vor meine 4 günstigsten Tibberstunden in einem Block als "Ladestunden" an den Wechselrichter zu schicken.Folgendes Problem weis ich grad nicht wie ich das per Script verpacken soll.
Es werden die 4 günstigesten Stunden zwischen 22Uhr und 06Uhr ermittelt und jeweils in ein Objekt geschrieben.
Das funktioniert wunderbar.
Leider sind die günstigsten Stunden quer Beet verteilt.Ich grüble jetzt wie ich die Zahlen 22, 23, 0, 1, 2, 3, 4, 5, 6 aufsteigend sortieren kann, jedoch beginnend mit 22.
Beispiel günstigeste Stunden von heute:
D.h. die Sortierung müsste heute so ausehen: 23, 2, 3, 4
Meine Liste spukte diese Werte aus:
Vieleicht hat ja jemand eine spontane Idee, wie man das in Blockly umsetzen kann.
Gruß Einstein
-
@einstein-0 sagte: aufsteigend sortieren kann, jedoch beginnend mit 22.
Wozu?
-
@paul53 damit ich sagen kann, fange mit der ersten günstigsten Stunde an zu laden. In dem Beispiel von heute wäre das die Stunde 23 und nicht die Stunde 3.
Das Problem ist ja, dass wir es hier mit Stunden zu tun haben und wenn ich abwärts sortiere wäre das heute 2, 3, 4, 23. Nur kommt die 23 vor der Stunde 2.
-
@einstein-0 sagte: fange mit der ersten günstigsten Stunde an zu laden.
Man muss nur prüfen, ob die aktuelle Stunde in der Liste der günstigsten Stunden enthalten ist, da die Stunden ohnehin nicht zusammenhängend sind. Etwa so:
-
@einstein-0
Heute siehts so aus:
Tendenziell liegen die günstigsten Stunden zwischen 0-6 Uhr. Aber ich gebe dir Recht, vorgestern hatten wir den Fall, dass der günstigste Tarif um 23.00 Uhr war.
Wenn du das so machst wie du es beschreibst, bist du ja immer schon im Folgetag. Das heisst aber, dass du die Werte erst gegen 13.00 Uhr Mittags bekommst. Wenn du es so machst wie ich oben beschrieben hab, Daten loggen nach 0:00 Uhr kannst du die günstigen Nachtstunden zum laden mitnehmen und in den teureren Stunden, meist morgens gegen 8:00 Uhr und abends gegen 18:00 Uhr, nutzen. Ob der Preis dann um 23:00 Uhr günstig ist, weiß du aber erst nach 13:00 Uhr. -
@joeysch ja, genau. Mein Script zur Ermittlung der 4 günstigsten Stunden läuft um 14 Uhr. Das Ladescript beginnt um 22 Uhr und soll in den 4 Stunden dann laden.
Drum brauche ich eine Sortierung beginnend mit 22. -
@einstein-0
Aber dann ist es doch egal, wenn du das Skript von @paul53 wie oben beschrieben nimmst, lädt das System um 23:00 Uhr egal an welcher Stelle es in der Liste steht. Es durchläuft die Zeiten die in der Liste stehen und aktiviert den Ladevorgang zur entsprechenden Zeit. -
@joeysch
würde das so passen?
Weil die letzte "Steuerung mit Laden" fehlt bei mir. Da muss ich alle 4min an den SMA SunnyIsland die Befehle schicken. -
@einstein-0 sagte: würde das so passen?
Es muss alles in einen Stunden-Trigger.
Zum Schluss: fallsladen
mache: die zwei Steuere-Blöcke -
@einstein-0
Also, da ist @paul53 sicher mehr der Fachmann.
Meiner Meinung nach fehlt ein Trigger der das Ganze anwirft.
Dann würde ich einen weiteren Trigger auf die Variable "laden" setzen und dann über einen Timeout/Intervall Baustein die Steuerung des SMA solange ausführen bis die Variable "false" wird. -
@paul53 sagte in Listen sortieren, mal gehts, mal nicht:
@einstein-0 sagte: würde das so passen?
Es muss alles in einen Stunden-Trigger.
Zum Schluss: fallsladen
mache: die zwei Steuere-BlöckeDa muß unten noch ein Intervall rein, da er das alle 4min an den Wechselrichter schicken muß.
-
@joeysch sagte: Da muß unten noch ein Intervall rein
So? Wird das Laden abgebrochen, wenn nicht mehr zyklisch aktualisiert wird?