Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. lookup Table?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    lookup Table?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @bernd33-1 last edited by Codierknecht

      @bernd33-1 sagte in lookup Table?:

      Also, die Tabelle ist eigentlich deutlich länger und leider nicht linear.

      Dann würde ich bei der JSON-Lösung nach einem gefundenen Wert (also falls dann ein Wert gefunden wurde der nicht < ist) auf jeden Fall die Schleife abbrechen.
      Muss ja nicht länger laufen als nötig 😉

      B 1 Reply Last reply Reply Quote 0
      • Armilar
        Armilar Most Active Forum Testing @bernd33-1 last edited by Armilar

        @bernd33-1

        Kann dir Excel die Funktion dazu ausgeben? Irgendwie im Grafen mit rechtsklick und hier und da mal klicken... Habe es gerade nicht im Kopf, aber ich habe es auch schon für den ein oder anderen Sensor so gemacht...

        Dann wärst du ebenfalls mit einem Einzeiler fertig.

        EDIT:
        sieht dann etwas so aus:

        6ff840eb-cb77-4485-8328-474d1c12c0c1-image.png

        1 Reply Last reply Reply Quote 0
        • B
          bernd33-1 @Codierknecht last edited by

          @codierknecht Jup, ich werde (wenn mir möglich 😉 ) diese Regelung so schnell wie möglich halten. Weil, die wird dann pro Sekunde einmal läuft. Ich hab zwar keine Ahnung, wie schnell der IOB auf einem RasPi 4 läuft aber muss ja nicht sein, dass der IOB ins schwitzen kommt.

          Grüße, Bernd

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @bernd33-1 last edited by

            @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.ä.

            B 1 Reply Last reply Reply Quote 0
            • B
              bernd33-1 @Codierknecht last edited by

              @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: cb029e1f-44a8-4384-9904-6a177379cd55-image.png
              y = 4E-19x5 - 3E-14x4 + 1E-09x3 - 1E-05x2 + 0,0984x + 0,2186

              Man sieht die blau-gepunktete line fast nicht, was m. E. eine sehr gute Annäherung ist.
              939b41e2-e0ca-40be-8a6f-5c41f684ff5a-image.png

              Ähm... und damit kann man jetzt einen Einzeiler machen? 🤗

              Grüße, Bernd

              Armilar paul53 2 Replies Last reply Reply Quote 0
              • Armilar
                Armilar Most Active Forum Testing @bernd33-1 last edited by Armilar

                @bernd33-1

                Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                Etwa so. Habe mal den ersten Term (ungetestet) abgebildet.

                B 2 Replies Last reply Reply Quote 0
                • B
                  bernd33-1 @Armilar last edited by

                  @armilar said in lookup Table?:

                  @bernd33-1

                  Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                  09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                  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 😁

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @bernd33-1 last edited by

                    @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.

                    B 1 Reply Last reply Reply Quote 0
                    • B
                      bernd33-1 @paul53 last edited by bernd33-1

                      @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 😉

                      1 Reply Last reply Reply Quote 0
                      • mickym
                        mickym Most Active last edited by

                        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:

                        93bb2592-e199-4d49-8d6d-751fd8eeef26-image.png

                        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. 😉

                        Codierknecht 1 Reply Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @mickym last edited by

                          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 😉

                          1 Reply Last reply Reply Quote 0
                          • B
                            bernd33-1 @Armilar last edited by

                            @armilar said in lookup Table?:

                            @bernd33-1

                            Die erste Antwort ist ja - kann man. Mit dem Matheblock (E = exponential).

                            09f96bac-b1e7-426c-8b41-6edf2a9a7375-image.png

                            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?

                            B 1 Reply Last reply Reply Quote 0
                            • B
                              bernd33-1 @bernd33-1 last edited by

                              @bernd33-1 ok... ich hab die Potenz gefunden... wie blind kann man sein 🤦 🙄

                              B 1 Reply Last reply Reply Quote 0
                              • B
                                bernd33-1 @bernd33-1 last edited by

                                @bernd33-1 hmmm.... diese Formel hat ja Excel ausgegeben:

                                eab45d74-19e7-405d-a962-75bb802fced5-image.png

                                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?

                                paul53 1 Reply Last reply Reply Quote 0
                                • paul53
                                  paul53 @bernd33-1 last edited by paul53

                                  @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  ...
                                  
                                  B 1 Reply Last reply Reply Quote 0
                                  • B
                                    bernd33-1 @paul53 last edited by

                                    @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

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      bernd33-1 last edited by bernd33-1

                                      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:

                                      aa936f89-7262-4d89-b283-9a1a6e4a6473-image.png

                                      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

                                      mickym 1 Reply Last reply Reply Quote 0
                                      • mickym
                                        mickym Most Active @bernd33-1 last edited by

                                        @bernd33-1 Ich hatte hier noch eine Version, wobei die Schleife abgebrochen wird, wenn der letzte gültige Wert gefunden wurde:

                                        https://forum.iobroker.net/post/887492

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          bernd33-1 @mickym last edited by

                                          @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:

                                          https://forum.iobroker.net/post/887492

                                          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?
                                          86ff2900-3a29-433b-abff-914a8be17b49-image.png

                                          Grüße, Bernd

                                          mickym paul53 2 Replies Last reply Reply Quote 0
                                          • mickym
                                            mickym Most Active @bernd33-1 last edited by mickym

                                            @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:

                                            532c464a-4a2c-4270-84b1-c304c8b6932d-image.png

                                            Wenn Du in deiner Liste einfach den Wert 25000 durch 24000 ersetzt, wird max. 24000 rauskommen - auch wenn als Watt mehr als 739 rauskommen.

                                            B 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            862
                                            Online

                                            32.0k
                                            Users

                                            80.5k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            34
                                            1521
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo