NEWS
Listen sortieren, mal gehts, mal nicht
-
Ich bin gerade dabei etwas f
ü
r meine kommende Tibbersteuerung zu programmieren. In diesen Blockly erzeuge ich einige Listen die dann wieder sortiert werden sollen. Das woran ich verzweifle ist, das es mal funktioniert und mal nicht.Oben habe ich eine Funktion f
ü
rs sortierenvar Wert = Wert - 1; Liste.sort(function(a, b){ return a[Wert] - b[Wert]; }); return Liste;Leere Listen werden deklariert und erzeugt

List wird sortiert => funktioniert

eine weitere Liste wird erzeugt und sortiert => funktioniert

dann das gleiche nochmal => funktioniert nicht, die Liste wird nicht sortiert

Was kann das sein?
Log von der oberen Liste sortiert, untere nicht

-
Ich bin gerade dabei etwas f
ü
r meine kommende Tibbersteuerung zu programmieren. In diesen Blockly erzeuge ich einige Listen die dann wieder sortiert werden sollen. Das woran ich verzweifle ist, das es mal funktioniert und mal nicht.Oben habe ich eine Funktion f
ü
rs sortierenvar Wert = Wert - 1; Liste.sort(function(a, b){ return a[Wert] - b[Wert]; }); return Liste;Leere Listen werden deklariert und erzeugt

List wird sortiert => funktioniert

eine weitere Liste wird erzeugt und sortiert => funktioniert

dann das gleiche nochmal => funktioniert nicht, die Liste wird nicht sortiert

Was kann das sein?
Log von der oberen Liste sortiert, untere nicht

@joeysch
Schau mal hier.
Es wird eine Liste mit Objekten, die Stunde und Preis enthalten, gebildet und anschlie
ß
end nach Preis sortiert. Die passenden Stunden werden dann in einer weiteren Schleife ermittelt.
Wenn man - so wie Du - keine Objekte verwendet, geht beim Sortieren leicht der Zusammenhang zwischen Zeit und Preis verloren. -
@joeysch
Schau mal hier.
Es wird eine Liste mit Objekten, die Stunde und Preis enthalten, gebildet und anschlie
ß
end nach Preis sortiert. Die passenden Stunden werden dann in einer weiteren Schleife ermittelt.
Wenn man - so wie Du - keine Objekte verwendet, geht beim Sortieren leicht der Zusammenhang zwischen Zeit und Preis verloren.@paul53
Ja, danke das kenne ich schon. Ich will aber nicht nur was abtippen sondern auch verstehen was da passiert.
Warum sortiert Blockly die letzte Liste nicht? Das muss ja irgendeinen Grund haben. Der Aufbau ist genau der gleiche wie bei der Liste davor.

Die eine ja die andere nein, warum?Das auseinandernehmen von Zeit und Preis ist schon geschehen, in diesen Listen m
ö
chte ich nur die Zeiten chronologisch sortieren. -
@paul53
Ja, danke das kenne ich schon. Ich will aber nicht nur was abtippen sondern auch verstehen was da passiert.
Warum sortiert Blockly die letzte Liste nicht? Das muss ja irgendeinen Grund haben. Der Aufbau ist genau der gleiche wie bei der Liste davor.

Die eine ja die andere nein, warum?Das auseinandernehmen von Zeit und Preis ist schon geschehen, in diesen Listen m
ö
chte ich nur die Zeiten chronologisch sortieren. -
Ok, habe es jetzt mal mit den Objekten gemacht und es funktioniert.
Bleibt noch die Frage warum das andere nicht?@joeysch
Was m
ö
chtest Du erreichen? Die 4 g
ü
nstigsten und / oder teuersten zusammenh
ä
ngenden Stunden?
Dann m
ü
ssen die Preise von jeweils 4 aufeinanderfolgenden Stunden summiert und die Summen in eine Liste geschrieben werden, die anschlie
ß
end nach den Summen sortiert wird.
-
@joeysch
Was m
ö
chtest Du erreichen? Die 4 g
ü
nstigsten und / oder teuersten zusammenh
ä
ngenden Stunden?
Dann m
ü
ssen die Preise von jeweils 4 aufeinanderfolgenden Stunden summiert und die Summen in eine Liste geschrieben werden, die anschlie
ß
end nach den Summen sortiert wird.
@paul53
Was ich erreichen m
ö
chte ist, das ich meine Batterie zu den g
ü
nstigen Stunden lade und den teuren Stunden entlade.
Das m
ü
ssen aber nicht zwingend aufeinanderfolgende Stunden sein. Ebenso kann es sein, dass die teuren Stunden vor den g
ü
nstigen liegen. Beispiel: die teuerste Zeit ist morgens um 8.00 Uhr und die g
ü
nstigste abends um 23.00 Uhr. An diesem Tag macht es also auch keinen Sinn zu laden.
Das habe ich jetzt auch soweit am laufen.

Wenn dir was auff
ä
llt was falsch ist oder verbessert werden kann, immer her damit, ich will ja lernen.Damit hab ich die Werte die ich brauche und mir in die Datenpunkte schreibe.
Daraus hab ich mir dann eine VIS gebastelt.

Als n
ä
chstes muss ich mir was basteln um die Batterieladung /- entladung
ü
ber Modbus zu steuern.
Ich habe ca. 29Kwh Speicherkapazit
ä
t und kann mit bis zu 12Kw laden. Das hei
ß
t, wenn ich wie im Beispiel 4 g
ü
nstige Stunden habe, kann ich die Ladeleistung etwas eindrosseln, wenn nur 1 Stunde g
ü
nstig ist volle Leistung. -
@paul53
Was ich erreichen m
ö
chte ist, das ich meine Batterie zu den g
ü
nstigen Stunden lade und den teuren Stunden entlade.
Das m
ü
ssen aber nicht zwingend aufeinanderfolgende Stunden sein. Ebenso kann es sein, dass die teuren Stunden vor den g
ü
nstigen liegen. Beispiel: die teuerste Zeit ist morgens um 8.00 Uhr und die g
ü
nstigste abends um 23.00 Uhr. An diesem Tag macht es also auch keinen Sinn zu laden.
Das habe ich jetzt auch soweit am laufen.

Wenn dir was auff
ä
llt was falsch ist oder verbessert werden kann, immer her damit, ich will ja lernen.Damit hab ich die Werte die ich brauche und mir in die Datenpunkte schreibe.
Daraus hab ich mir dann eine VIS gebastelt.

Als n
ä
chstes muss ich mir was basteln um die Batterieladung /- entladung
ü
ber Modbus zu steuern.
Ich habe ca. 29Kwh Speicherkapazit
ä
t und kann mit bis zu 12Kw laden. Das hei
ß
t, wenn ich wie im Beispiel 4 g
ü
nstige Stunden habe, kann ich die Ladeleistung etwas eindrosseln, wenn nur 1 Stunde g
ü
nstig ist volle Leistung. -
@joeysch sagte: Das m
ü
ssen aber nicht zwingend aufeinanderfolgende Stunden sein.Dann muss nur gepr
ü
ft werden, ob die aktuelle Uhrzeit Bestandteil der Liste ist. Sortieren ist nicht erforderlich. Ich vermisse in deinem Blockly einen Trigger. -
@paul53 sagte in Listen sortieren, mal gehts, mal nicht:
Ich vermisse in deinem Blockly einen Trigger.
Den hab ich erstmal rausgelassen um zu testen.
Hab jetzt einen Zeittrigger auf 0:01 Uhr drin.@joeysch sagte: Hab jetzt einen Zeittrigger auf 0:01 Uhr drin.
Man muss die Uhrzeit jede Stunde pr
ü
fen, wenn man Schaltoperationen davon abh
ä
ngig machen will. Bei Werten von z.B. "18:00" in den Listen ist "18:01" zu sp
ä
t. Deshalb verwende ich auch nur Stunden als Zahl in Listen. -
@joeysch sagte: Hab jetzt einen Zeittrigger auf 0:01 Uhr drin.
Man muss die Uhrzeit jede Stunde pr
ü
fen, wenn man Schaltoperationen davon abh
ä
ngig machen will. Bei Werten von z.B. "18:00" in den Listen ist "18:01" zu sp
ä
t. Deshalb verwende ich auch nur Stunden als Zahl in Listen.Moment, dieser Blockly soll eigentlich nur daf
ü
r da sein um die g
ü
nstigsten und teuersten Stunden zu separieren. Hier wird noch nichts geschaltet oder geregelt. Da Tibber die Daten nur zweimal am Tag aktualisiert, um 0:00 Uhr und um 13:00 Uhr (f
ü
r den Folgetag) schreibe ich mir die um 0:01 Uhr in die DP's. Diese verwende ich dann im folgenden Blockly weiter.Hier mal mein Ansatz um den Ladestrom an die Anzahl der nacheinander verf
ü
gbaren g
ü
nstigen Stunden zu regeln.
Was sagst du dazu?

-
Moment, dieser Blockly soll eigentlich nur daf
ü
r da sein um die g
ü
nstigsten und teuersten Stunden zu separieren. Hier wird noch nichts geschaltet oder geregelt. Da Tibber die Daten nur zweimal am Tag aktualisiert, um 0:00 Uhr und um 13:00 Uhr (f
ü
r den Folgetag) schreibe ich mir die um 0:01 Uhr in die DP's. Diese verwende ich dann im folgenden Blockly weiter.Hier mal mein Ansatz um den Ladestrom an die Anzahl der nacheinander verf
ü
gbaren g
ü
nstigen Stunden zu regeln.
Was sagst du dazu?

@joeysch sagte in Listen sortieren, mal gehts, mal nicht:
Diese verwende ich dann im folgenden Blockly weiter.
In Ordnung.
@joeysch sagte in Listen sortieren, mal gehts, mal nicht:
Was sagst du dazu?
Funktioniert so nicht. Die Pr
ü
fung oben ist falsch: Oder-Verk
ü
pfung von ms und Vergleich mit "hh:mm". -
@joeysch sagte in Listen sortieren, mal gehts, mal nicht:
Diese verwende ich dann im folgenden Blockly weiter.
In Ordnung.
@joeysch sagte in Listen sortieren, mal gehts, mal nicht:
Was sagst du dazu?
Funktioniert so nicht. Die Pr
ü
fung oben ist falsch: Oder-Verk
ü
pfung von ms und Vergleich mit "hh:mm". -
@joeysch sagte: So sollte es gehen
Nein. Man ben
ö
tigt eine Oder-Verkn
ü
pfung von 4 Vergleichen. In welchem Format stehen die Zeiten in den Datenpunkten "guenstigste_zeit_N"?
-
@joeysch sagte: z.B. 4:00
Also ohne f
ü
hrende "0" vor "10:00" Uhr? Dann muss anders formatiert werden:
-
@paul53
Was ich erreichen m
ö
chte ist, das ich meine Batterie zu den g
ü
nstigen Stunden lade und den teuren Stunden entlade.
Das m
ü
ssen aber nicht zwingend aufeinanderfolgende Stunden sein. Ebenso kann es sein, dass die teuren Stunden vor den g
ü
nstigen liegen. Beispiel: die teuerste Zeit ist morgens um 8.00 Uhr und die g
ü
nstigste abends um 23.00 Uhr. An diesem Tag macht es also auch keinen Sinn zu laden.
Das habe ich jetzt auch soweit am laufen.

Wenn dir was auff
ä
llt was falsch ist oder verbessert werden kann, immer her damit, ich will ja lernen.Damit hab ich die Werte die ich brauche und mir in die Datenpunkte schreibe.
Daraus hab ich mir dann eine VIS gebastelt.

Als n
ä
chstes muss ich mir was basteln um die Batterieladung /- entladung
ü
ber Modbus zu steuern.
Ich habe ca. 29Kwh Speicherkapazit
ä
t und kann mit bis zu 12Kw laden. Das hei
ß
t, wenn ich wie im Beispiel 4 g
ü
nstige Stunden habe, kann ich die Ladeleistung etwas eindrosseln, wenn nur 1 Stunde g
ü
nstig ist volle Leistung.@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.
-
@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. -
@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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden

