Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Array erstellen aus Datenpunkten in javascript

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Array erstellen aus Datenpunkten in javascript

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

      Hallo, ich bin absoluter Programmier-Neuling und bräuchte mal eure Hilfe.
      Ich habe bewusst Blockly übersprungen, um es direkt richtig zu lernen. Leider komme ich dabei manchmal ins Stocken.

      Ich möchte folgendes machen:
      Ich habe drei Boolean Datenpunkte die einem Raumnamen zugeordnet sind.
      Ich möchte eine Logausgabe der Raumnamen wenn der Wert True ist.
      Die Ausgabe sollte wie folgt aussehen
      Folgende Räume sind aktiv (true): Raumname, Raumname, Raumname

      Ich vermute mal, die Funktion die ich Suche nennt sich Array, aber ich kriege es leider nicht umgesetzt.
      Für ein wenig Hilfestellung wäre ich dankbar.

      Beste Grüße

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

        @ramses sagte:

        Ich habe drei Boolean Datenpunkte die einem Raumnamen zugeordnet sind.

        Wie sind sie dem Raumnamen zugeordnet ? Über ID, Name oder Aufzählungen ?

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

          @paul53
          Ok, da habe ich wohl Blödsinn erzählt.
          Die Datenpunkte werden mit einer If-Schleife auf True oder False gesetzt anhand eines anderen Datenpunktes (CO2 Wert des jeweiligen Raums).
          Größer 1000 = true, drunter = false.
          Eine direkte Zuordnung gibt es so nicht.
          Hätte jetzt im Script vermutlich mit einer weiteren If-Schleife gearbeitet um bei true eine Variable zu füllen.
          Vermutlich wird es da bessere Varianten geben.

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

            @ramses sagte:

            Die Ausgabe sollte wie folgt aussehen
            Folgende Räume sind aktiv (true): Raumname, Raumname, Raumname

            Woher sollen die Raumnamen kommen ? Ein Screenshot der Datenpunkt-Objekte wäre hilfreich.

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

              @paul53

              hö? Weiss jetzt nicht wie die Datenpunkte dir helfen sollen? Sind simple boolean Datenpunkte

              "Wenn Kinderzimmer CO2 höher 1000 setze Datenpunkt javascript.0.klima.KinderzimmerCO2signal auf true, wenn darunter auf false" Mehr ist noch nicht passiert.
              Ich hatte jetzt an sowas gedacht:
              "Wenn javascript.0.klima.KinderzimmerCO2signal = true, setze andere Variable auf String "Kinderzimmer". Wenn nicht lasse Variable leer.
              Sollte am Ende ja auch funktionieren, weil leere Variable macht auch keine Ausgabe.
              Aber ist vermutlich so die absolut schlechteste Lösung.

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

                @ramses sagte:

                "Wenn javascript.0.klima.KinderzimmerCO2signal = true,

                Dann steckt der Raumname in der Datenpunkt-ID (s. meine erste Frage). Besser wäre es, wenn die ID durch einen zusätzlichen Punkt strukturiert wäre: "javascript.0.klima.Kinderzimmer.CO2signal".

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

                  @paul53
                  Ok, das zu ändern wäre das kleinste Problem. Und dann?

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

                    @ramses
                    Dann kann man Raumnamen separieren.

                    var teile = id.split('.'); // Array mit den Teilen zwischen den Punkten
                    var room = teile[3]; // Raumname
                    
                    R 1 Reply Last reply Reply Quote 0
                    • R
                      ramses @paul53 last edited by ramses

                      @paul53

                      hmm anhand der zwei zeilen verstehe ich dennoch nicht wie er daran kommt?! Verstehe zwar was es macht, aber woher kriegt er in diesen zwei Zeilen den richtigen Datenpunkt zum splitten?
                      Kannst du mir das vielleicht an einem praktischen Beispiel Zeigen ? z.B. mit meinem genannten Datenpunkt?

                      Und dann ist da noch das Ding, alles in einer Reihe ausgeben zu lassen...

                      edit: aaaaah lach .. da wo id steht, soll die id rein.. habs jetzt für nen command gehalten

                      Fehlt nur noch die gesammelte Ausgabe...

                      R paul53 2 Replies Last reply Reply Quote 0
                      • R
                        ramses @ramses last edited by

                        @paul53
                        obwohl ich jetzt nicht wirklich verstehe warum ich nicht einfach "Kinderzimmer" in eine Variable schreibe und mir die splitterei erspare?!?!

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

                          @ramses
                          Dafür dient der $Selector.

                          const idsCO2 = $('javascript.0.klima.*.CO2signal');
                          
                          var signale = [];
                          
                          function checkCO2() {
                             signale = [];
                             idsCO2.each(function(id, i) {
                                if(getState(id).val) signale.push(id.split('.')[3]); // Raumname in Array
                             });
                             // Array in Datenpunkt schreiben ?
                          }
                          
                          idsCO2.on(checkCO2); // triggert bei Änderung eines der Datenpunkte
                          
                          R 1 Reply Last reply Reply Quote 0
                          • R
                            ramses @paul53 last edited by ramses

                            @paul53

                            Ja, ich muss noch viel lernen. Aber das ist ein schönes praktisches Beispiel womit ich zum Verständnis was rumprobieren kann .

                            Danke dir erst mal so weit.
                            Wenn noch Fragen sind, werde ich noch mal nachhaken.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            1.2k
                            Online

                            31.7k
                            Users

                            79.7k
                            Topics

                            1.3m
                            Posts

                            javascript
                            2
                            12
                            1675
                            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