Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Wie kann ich in TypeScript "Variablen zusammenfassen"

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    Wie kann ich in TypeScript "Variablen zusammenfassen"

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

      Hallo zusammen 🙂

      ich bin noch recht neu was die Erfahrungen mit TypScript angeht und habe daher eine (vermutlich) recht einfache Frage bei der ich aber nicht weiterkomme:

      Und zwar möchte ich gern in einer "Hauptvariablen" (A) mehrere "Untervariablen" (a,b,c,...) zusammenfassen und diese dann über die "Punktnotation" aufrufen und verarbeiten.

      Also zB. würde ich gern über "console.log(A.c)" den Inhalt der Variable c (welche unter "A" gruppiert ist) ausgeben.

      Bei Matlab gibt es dafür den Variablentyp "Strukturvariable" - das ist halt sehr praktisch wenn die Variablen (a,b,c,...) immer gleich heißen - dann kann man die über die übergeordnete Variable unterscheiden und muss nicht so viele unterschiedliche Variablennamen erfinden 🙂

      Ich würde mich freuen wenn mir jemand einen "Startpunkt" geben kann von wo aus ich dann weiterkomme - oder vlt auch ein kleines Minimalbeispiel? 🙂

      Vielen Dank 🙂

      haus-automatisierung 1 Reply Last reply Reply Quote 0
      • haus-automatisierung
        haus-automatisierung Developer Most Active @M_aus_B last edited by

        @m_aus_b das ist einfach ein Objekt in Javascript

        M 1 Reply Last reply Reply Quote 0
        • M
          M_aus_B @haus-automatisierung last edited by

          @haus-automatisierung Hallo Matthias 🙂 Vielen Dank für deine schnelle Antwort das es hier in Richtung Objekt geht hab ich mir schon gedacht - daher ist hier ja auch TS "die richtige" Sprache denke ich.

          Ich hab auch schon mit dem Typ "class" ein bisschen rumgespielt, aber so richtig ist das noch nicht das was ich brauche (glaube ich). Ich könnte mir zwar eine Klasse mit verschiedenen Parametern definieren, allerdings benötige ich dann doch für jede "Klasse" eine eigene Definition weil ich immer unterschiedlich viele Parameter je Klasse habe (wovon viele Parameter aber den gleichen Namen haben). Und ich will ja nicht Parameter in einer Klasse definieren die ich gar nicht brauche. Außerdem hätte ich auch gern drei "Ebenen" wenn das geht. Also so nach dem Motto "A.e.c = WR1_input_PVa_U"

          Toll wäre wenn ich dann die Variablen so in der Art verwenden könnte:

          "A.e.c = getState('modbus.0.inputRegisters.30959_PVa_U').val;"
          bzw:
          "A.e.c * A.e.d = A.e.e; "

          Ich habe übrigens schon dank deinem iobroker-Masterkurs so einiges mit dem iobroker über Blockly realisiert - das funktioniert echt gut und macht auch Spaß! Da ich aber auch schon einige Erfahrung in der CoDeSys-Programmierung mit ST ("Strukturierter Text") habe, schätze ich die Möglichkeiten von Scripten schon sehr und will mich daher jetzt mal etwas mehr mit ts beschäftigen. - Falls du da auch vor hast mal einen Kurs anzubieten?! 🙂

          Grüße aus Berlin - der Micha 👋

          haus-automatisierung 1 Reply Last reply Reply Quote 0
          • haus-automatisierung
            haus-automatisierung Developer Most Active @M_aus_B last edited by

            @m_aus_b Am besten schreibst Du mal genau, was Du vor hast. Eine Klasse ist ja wieder etwas ganz anderes.

            Außerdem hätte ich auch gern drei "Ebenen" wenn das geht. Also so nach dem Motto "A.e.c = WR1_input_PVa_U"

            Das kann man so definieren.

            const A = {
              e: {
                c: getState('modbus.0.inputRegisters.30959_PVa_U').val,
              },
            };
            
            log(A.e.c);
            
            // ändern
            A.e.c = 123;
            
            log(A.e.c);
            

            Mit TypeScript könnte man die Struktur aber noch besser beschreiben (was Datentypen angeht usw).

            M 1 Reply Last reply Reply Quote 0
            • M
              M_aus_B @haus-automatisierung last edited by

              @haus-automatisierung ah cool - das geht auf jeden Fall schon genau in die Richtung was ich meine! 🙂

              Was habe ich genau vor - ich will aktuell vor allem das Batterielademanagement der Speicherbatterie nach meinen Wünschen steuern. Das ist leider bei dem SMA_STP_SE-WR nicht ganz so komfortabel wie es sein könnte weil ich nicht einfach nur die "maximale Ladeleistung" der Batterie vorgeben kann. (ein entsprechendes Modbusregister gibt es zwar - das funktioniert aber leider nicht). Daher bleibt nur die Möglichkeit die Wirkleistung vorzugeben - dabei muss man dann aber dafür sorgen das zB. nicht aus dem Netz geladen wird...

              Lange Rede kurzer Sinn 😉 - ich bin aktuell dabei alle möglichen Daten erstmal in einer übersichtlichen Struktur einzulesen um dann im nächsten Schritt verschiedene Berechnungen damit auszuführen.

              Das Beispiel von grade kann ich vlt noch etwas genauer darstellen:

              "WR_1.input.PVa_U = getState('modbus.0.inputRegisters.30959_PVa_U').val;"

              Kannst du mir noch erklären wie das ganze mit ts dann aussehen würde? Gibt es für diese Art der Struktur eigentlich einen speziellen Namen?

              Das ist am Anfang für mich immer ein bisschen das Problem das ich einfach oft nicht weiß was ich eigentlich genau Fragen muss um zu meiner Lösung zu kommen 🤔

              Daher riesen Dank das du da sovielen "noobs" wie mir weiterhilfst! 🙂

              haus-automatisierung 1 Reply Last reply Reply Quote 0
              • haus-automatisierung
                haus-automatisierung Developer Most Active @M_aus_B last edited by

                @m_aus_b sagte in Wie kann ich in TypeScript "Variablen zusammenfassen":

                Kannst du mir noch erklären wie das ganze mit ts dann aussehen würde?

                Du gehst ganz schön viele Schritte auf einmal. Schau Dir doch erstmal die Basis JavaScript-Syntax an und löse dort dein Problem. Wenn Du damit fit bist, dann kannst Du das immer noch auf TS migrieren und die Vorteile kennenlernen.

                Ansonsten würde ich erstmal jede Menge JavaScript-Tutorials durcharbeiten (die Syntax und deine Anforderung hat ja nix mit dem ioBroker zu tun). Sonst hängst Du immer wieder.

                M 1 Reply Last reply Reply Quote 0
                • M
                  M_aus_B @haus-automatisierung last edited by

                  @haus-automatisierung Ja das stimmt natürlich - ich habe mir da natürlich auch schon so einiges angeschaut. Da ich mit ST und Matlab aber schon auch so meine Erfahrungen in der Programmierung und Strukturierung von Code habe, wollte ich da soein paar Dinge mit denen ich gute Erfahrungen gemacht habe "mitnehmen".

                  Wie gesagt - das Lademanagement habe ich ja aktuell mit Blockly am laufen - und das funktioniert ja auch ganz gut. Ich hab also keinen Druck das jetzt unbedingt mit ts umzusetzen. An js "stört" mich halt das hier nur eine schwache Typisierung gegeben ist und es ist schon toll was in ts zB. mit "class" so geht.

                  haus-automatisierung 1 Reply Last reply Reply Quote 0
                  • haus-automatisierung
                    haus-automatisierung Developer Most Active @M_aus_B last edited by

                    @m_aus_b sagte in Wie kann ich in TypeScript "Variablen zusammenfassen":

                    was in ts zB. mit "class" so geht.

                    Das geht in JS aber auch alles 🙂

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      M_aus_B @haus-automatisierung last edited by

                      @haus-automatisierung ja da hab ich wohl noch viel zu lernen 🙂

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      414
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      2
                      9
                      432
                      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