NEWS
lookup Table?
-
@bernd33-1 sagte in lookup Table?:
Obiger Screenshot zeigt die Zusammenhänge. Gerade im unteren Bereich ist keine Linearität gegeben und Nachts hält man sich genau in diesem Bereich auf. Dieser Bereich muss also berücksichtigt werden.
Dann könnte man das vielleicht auch kombinieren:
Unter einem bestimmten Grenzwert per Schleife und im linearen Bereich einfach berechnen.
Oder einfach mal fünf gerade sein lassen und die ggf. vorhandenen Verluste akzeptieren. Da hängt ja nicht gerade ein Menschenleben von ab o.ä. -
@codierknecht said in lookup Table?:
@bernd33-1 sagte in lookup Table?:
Obiger Screenshot zeigt die Zusammenhänge. Gerade im unteren Bereich ist keine Linearität gegeben und Nachts hält man sich genau in diesem Bereich auf. Dieser Bereich muss also berücksichtigt werden.
Dann könnte man das vielleicht auch kombinieren:
Unter einem bestimmten Grenzwert per Schleife und im linearen Bereich einfach berechnen.
Oder einfach mal fünf gerade sein lassen und die ggf. vorhandenen Verluste akzeptieren. Da hängt ja nicht gerade ein Menschenleben von ab o.ä.Klar, wenn mal ein paar Watt raus gehen isses kein Drama.
Ok, diese Formel hat Excel ausgegeben:
y = 4E-19x5 - 3E-14x4 + 1E-09x3 - 1E-05x2 + 0,0984x + 0,2186Man sieht die blau-gepunktete line fast nicht, was m. E. eine sehr gute Annäherung ist.
Ähm... und damit kann man jetzt einen Einzeiler machen?
Grüße, Bernd
-
Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).
Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.
-
@armilar said in lookup Table?:
Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).
Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.
Vielen Dank
werde ich heute Abend dann mal einbauen.
Das Forum hier und die Leute sind einfach geil
-
@bernd33-1 sagte: y = 4E-19x5 - 3E-14x4 + 1E-09x3 - 1E-05x2 + 0,0984x + 0,2186
Die 4. und 5. Potenz kann man sicherlich vernachlässigen.
-
@paul53 Gerade im unteren Bereich schmiegt sich die Funktion aber noch etwas besser an die Messwerte an, wenn ich die 4. und 5. dazu nehme.
Ich werde es testen. Sollte der RasPi 4 überlastet werden, kann ich das ja wieder reduzieren
-
Wie gesagt ich mag kein Blockly - das war nur mal ein Versuch. Wenn man das mit einer mathematischen Funktion abbilden kann, ist das natürlich sicher am Besten, aber das ging halt aus dem ursprünglichen Posting nicht hervor, sodass ich davon ausgegangen bin, dass die Schritte willkürlich sind.
@Codierknecht
Ja das mit dem i als Wert anstelle des Index ist blöd (aber war von blockly so vorgegeben, da dachte ich dass Blockly Fans daran gewöhnt sind)Ich wusste erst nicht, wie man in Blockly Schleifen abbricht - aber habs gefunden:
Aber - hat sich ja inzwischen erledigt, da das ganze nun mathematisch gelöst wird.
War wie gesagt nur mal ein kleiner Ausflug von mir in die Blockly Welt.
-
Mögen tu ich das auch nicht. Alleine die Eindeutschung ist mir ein Graus.
Aber da ich JS nicht so runterschreibe wie andere Sprachen, ist das in der Regel der einfachste Weg.@mickym sagte in lookup Table?:
das mit dem i als Wert anstelle des Index ist blöd (aber war von blockly so vorgegeben, da dachte ich dass Blockly Fans daran gewöhnt sind)
Man assoziiert halt damit auf den ersten Blick eine Laufvariable ... funktionieren tut's ja trotzdem
Aber - hat sich ja inzwischen erledigt, da das ganze nun mathematisch gelöst wird.
Gut, denn in dem Blockly wird ja jetzt bereits beim ersten Treffer abgebrochen
Könnte man umgehen indem man die Listen andersrum aufsetzt.Egal - wenn's mathematisch zu lösen ist: Um so besser.
Ich würde die Berechnung in eine Funktion mit sprechendem Namen auslagern. Liest sich dann am besten.
Und in der Funktion entsprechend dokumentieren WARUM das so berechnet wird. Das weiß sonst nach kurzer Zeit kein Mensch mehr -
@armilar said in lookup Table?:
Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).
Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.
Ähm...sorry... ich versuche das gerade zusammen zu klicken und sehe da ganz innen drin in deinem Beispiel:
..... WATT x e^5 .....
In der Excelformel steht aber glaube ich nur:
.... WATT ^5 ....oder? Wenn ja, wie kann ich in Blockly z.B. 3^6 formulieren? Ich such mir da einen Wolf.... hat jemand einen Tipp?
-
@bernd33-1 ok... ich hab die Potenz gefunden... wie blind kann man sein
-
@bernd33-1 hmmm.... diese Formel hat ja Excel ausgegeben:
Dann ist dies doch das selbe oder?
y = 4e-19x^5 - 3e-14x^4 +e-9x^3 -e-5x^2 + 0,0984x +0,2186
Das sieht optisch aber mega komisch aus und wenn ich diese Gleichung in einen online Funktionsplotter eingebe, dann kommt Kurve raus, die auf der Y-Achse quasi senkrecht nach oben schießt.
Schreibe ich das so um, dass es wenigstens optisch besser aussieht:
y = 4e^(-19x^5)-3e^(-14x^4)+e^(-9x^3)-e^(-5x^2)+0.0984x+0.2186
Dann kommt im Online Funktionsplotter https://www.mathe-fa.de/de auch nur Müll raus.
Hat jemand einen Tipp, wo ich den Fehler mache?
-
@bernd33-1
Ich vermute, dass die Formel so aussehen muss:y = 0.2186 + 0.0984 * x - 10^-5 * x^2 + 10^-9 * x^3 - 3 * 10^-14 * x^4 + 4 * 10^-19 * x^5
wobei mich mich die glatten Faktoren ab x² wundern.
Allgemein sieht ein Näherungs-Polynom so aus:y = a + b * x + c * x^2 + d * x^3 ...
-
@paul53 said in lookup Table?:
0.2186 + 0.0984 * x - 10^-5 * x^2 + 10^-9 * x^3 - 3 * 10^-14 * x^4 + 4 * 10^-19 * x^5
Ne, wenn ich das in den Funktionsplotter eingebe, dann sind die Y-Werte viel zu hoch.
Kann es sein, dass Excel da ein Problem hat???
Hier meine Zahlenwerte mal zum copy pasten. Vielleicht hat ja jemand Lust da ein Auge drauf zu werfen
500 53
600 56
700 61
800 67
900 72
1000 78
2000 160
2250 167
2500 174
2600 177
2750 181
3000 185
3500 225
4000 231
5000 246
6000 263
7000 278
8000 294
9000 312
10000 334
11000 354
13000 381
14000 404
15000 429
16000 465
17000 497
18000 525
19000 558
20000 588
25000 739 -
Ok, nachdem das mit Excel und Trendlinie nicht klappt, habe ich den Vorschlag von @mickym aufgegriffen und mach das nun mit einer Liste. Hier das Blockly:
Klappt ganz gut
Der Stromzähler sagt, wieviel Strom gerade aus dem Netz bezogen wird. Zu diesem Wert addiere ich dazu, wieviel Strom der Sun 1000 bereits einspeist. Damit weis ich den "neuen" Gesamtverbrauch und kann den SUN 1000 entsprechend einstellen. PERFEKT!
Ich hab noch eine Begrenzung eingebaut, da ich nicht möchte, dass der Sun 1000 mehr als 700W (DAC-Wert 24000) einspeist.Vielen lieben Dank an alle für die Unterstützung!
Grüße, Bernd
-
@bernd33-1 Ich hatte hier noch eine Version, wobei die Schleife abgebrochen wird, wenn der letzte gültige Wert gefunden wurde:
-
@mickym said in lookup Table?:
@bernd33-1 Ich hatte hier noch eine Version, wobei die Schleife abgebrochen wird, wenn der letzte gültige Wert gefunden wurde:
Ups...stimmt
aber ich war grad so happy, dass das jetzt so easy funktioniert, dass ich den Post einfach "raushauen musste"
Kleine Frage noch: Da kommen immer Java Warnings. Was könnte das sein?
Grüße, Bernd
-
@bernd33-1 Bei der warnung kann ich Dir nicht viel helfen - wie gesagt ich nutze das JS ja sonst nicht. Vielleicht schaust mal in den JS Code des Blocklies, was da in Zeile 26 steht.
Dieses Teil kannst Du Dir in meinen Augen sparen:
Wenn Du in deiner Liste einfach den Wert 25000 durch 24000 ersetzt, wird max. 24000 rauskommen - auch wenn als Watt mehr als 739 rauskommen.
-
@mickym Ich lass mal die Begrenzung mit 24000 so drin. Vielleicht will ich im Sommer, wenn ich viel Strom zur Verfügung hab die Grenze weiter nach oben setzen. Oder vielleicht eine Variable Begrenzung je nach Akku-Ladestatus....
Die obigen Warnings kommen in dieser Java-Zeile:
setState("mqtt.0.sun1000esp.number.dac_number.command"/*sun1000esp/number/dac_number/command*/, parseFloat(neuer_DAC_Wert));
-
@bernd33-1 sagte: Java Warnings. Was könnte das sein?
Im Tab "Protokolle" findet man weitere Informationen zur Warnung.
Vermutung: Der Datenpunkt ist nicht vom Typ "number". -
@bernd33-1 Ok - dann scheint, dass aus dem letzten Befehl zu kommen, wo Du mit "steuere" in den Datenpunkt des mqtt-Adapters schreibst.