Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Dynamische Kennlinie in IOBroker umsetzen? Blocky?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Dynamische Kennlinie in IOBroker umsetzen? Blocky?

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      CKassiopaia last edited by

      Re: Kurve vom Thyristorsteller angleichen

      Ich habe eine Frage, welche vielleicht an diesem alten Thema anküpft.

      Ich habe diverse Anwendungsfälle, in denen ich gerne eine dynamische Kennlinie (z.B. im 0_userdata gespeichert) mit einer variablen Anzahl an Stützstellen in einem Script (z.B. Blockly) in einen Ausgangswert umrechnen... Also so ähnlich, wie in dem alten Thread zur Kurve vom Thyristorsteller... nur halt dynamisch und nicht mit festen Werten im Blockly-Script.

      Als Beispiel möchte ich z.B. eine dynamische Anpassung der Vorlauftemperatur der Fußbodenheizung in Abhängigkeit der Außentemperatur hinterlegen ("witterungsgeführte Heizkennlinie").

      z.B. mit diesen (ausgedachten) Werten:
      Außentemperatur: [-10.01, -10, 0, 10, 10.01] °C
      Vorlauftemperatur: [35, 35, 30, 20, 20] °C
      ... d.h. die Kennlinie ist stetig und in den Abschnitten linear. Z.-B. soll bei -10°C Außentemperatur eine Vorlauftemperatur von 35 °C eingestellt werden., bei -5 °C Außentemperatur soll dann 32,5 °C eingestellt werden.

      In C, Matlab oder sonstigen Programmiersprachen wüsste ich auf Anhieb wie ich das umsetze, aber wie wäre in IOBroker ein idealer Weg für eine solche Aufgabe? Bei JS und Blockly bin ich kein Profi...

      Wie (als was?) muss/kann ich in 0_userdata eine derartige Kennlinie speichern? Als JSON? Als Objekt? Als Liste?
      Wie könnte ich das in Blockly abfragen bzw. Umrechnen? Hat jemand eine Idee oder Hilfen? Oder gibt es gar eine viel einfachere Möglichkeit in IOBroker eine solche Aufgabe zu bearbeiten?

      MartinP paul53 2 Replies Last reply Reply Quote 0
      • MartinP
        MartinP @CKassiopaia last edited by

        @ckassiopaia Ist das nicht vielleicht eher ein Fall für Javascript?

        Ansonsten muss man da wohl eine Intervallabfrage mit Wenn/Dann/Sonst über die Außentemperatur machen, und dann die Vorlauftemperatur mit Mathematik-Blöcken entsprechend berechnen.

        TA1, TA2,TA3,TA4
        und
        TV1, TV2, TV3, TV4

        Intervall [TA1 ... TA2] TV=TV1 + (TV2-TV1)* (TA-TA1) / (TA2-TA1);
        usw...

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

          @ckassiopaia sagte: variablen Anzahl an Stützstellen ... "witterungsgeführte Heizkennlinie"

          Das geht auch ohne "Stützstellen" mit der richtigen Formel.

          EDIT: Teste mal mit Steilheit = 0.7 und Exp = 1.1.

          C 1 Reply Last reply Reply Quote 0
          • C
            CKassiopaia @paul53 last edited by

            @paul53 Danke für die Links und Hilfen...
            Tatsächlich geht es für die Witterungsgeführte Vorlauftemperatur mit einer entsprechenden Formel... Das war von mir aber hier an der Stelle nur als Beispiel für eine derartige Umrechnung...

            Also Zwei Kennlinien mit variabler Anzahl an Stützstellen... In C würde ich dazu ein Array für den Eingangsvektor verwenden und die nächstgelegene Stützstelle suchen... Und dann im Ausgangsvektor entsprechend lienear interpolieren. Oder in Matlab einfach mit interp1 als lookup table...

            In IObroker wüsste ich aber gerade nicht mal wie ich die Vektoren anlegen sollte und wie man sie dann unkompliziert verarbeitet...

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

              @ckassiopaia sagte: Array für den Eingangsvektor verwenden und die nächstgelegene Stützstelle suchen... Und dann im Ausgangsvektor entsprechend lienear interpolieren.

              Das geht auch in Blockly mit 2 korrespondierenden Listen. Beispiel:

              Blockly_temp.JPG

              C 1 Reply Last reply Reply Quote 1
              • C
                CKassiopaia @paul53 last edited by

                Vielen Dank @paul53 !
                Das hat funktioniert. Ich habe noch die Grenzwerte abgefangen, aber sonst scheint es zu funktionieren...

                Vielleicht bin ich nur von C verwöhnt, wo das in einem Zwei-Zeiler umsetzbar ist 🙂

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

                Support us

                ioBroker
                Community Adapters
                Donate

                874
                Online

                31.6k
                Users

                79.6k
                Topics

                1.3m
                Posts

                3
                6
                349
                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