Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Liste mit "SVerweis"

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    Liste mit "SVerweis"

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

      Moin zusammen!
      So langsam beginne ich Blockly zu lieben. 🙂
      Jetzt würde ich gerne in einer Liste den Minimalsten Wert heraussuchen (das klappt schon) und mir dann das zum Wert gehörende Objekt ausgeben lassen. Quasi wie ein SVERWEIS in Excel. Geht das irgendwie? Aktuell sieht es so aus:

      Bildschirm­foto 2023-01-07 um 12.14.43.png

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @dan11hh last edited by Asgothian

        @dan11hh sagte in Liste mit "SVerweis":

        Jetzt würde ich gerne in einer Liste den Minimalsten Wert heraussuchen (das klappt schon) und mir dann das zum Wert gehörende Objekt ausgeben lassen. Quasi wie ein SVERWEIS in Excel. Geht das irgendwie? Aktuell sieht es so aus:

        in js würde das warscheinlich gehen. In Blockly ist meiner Meinung nach ein anderer Ansatz sinnvoll:

        Screenshot 2023-01-07 at 13.26.33.png

        Wichtig ist das du den Selektor für deine Watchdog Zellen sauber setzt. Wenn du mal das JS von deinem Blockly postest kann auch der sauber gefüllt werden.

        A.

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

          @asgothian
          Alternative (quick & dirty) ohne Selektor:
          f57085e9-b53d-417f-bf46-f43c78b3fa79-grafik.png

          Asgothian 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @Codierknecht last edited by

            @codierknecht hab ich auch drüber nachgedacht. Macht aber in der Situation wo die DP's vom OP einer so schönen Regelmässigkeit folgen weniger sinn. Warum 13 DP's einzeln per gui heraussuchen wenn man das mit einem Aufruf "automatisch" machen kann 🙂

            Dabei dann gleich auch noch was über den Selektor gelernt. Win Win 😉

            A.

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

              @asgothian
              Wenn es wirklich alle DP aus dem Kanal sind, geht das mit diesem Selektor.
              Hat der Kanal noch weitere DP, die hier nicht zu berücksichtigen sind, müsste man mit 'ner Aufzählung arbeiten.

              Kleiner Schnitzer in Deiner Schleife:
              Gesetzt den Fall, die Werte wären [20, 30, 10], würde zuerst die 20 in minval wandern, da minval im ersten Durchlauf noch -99999999 wäre.
              Im zweiten Durchlauf würde die 30 genommen, da 20 < 30 ist.
              Im dritten Durchlauf würde das if schiefgehen, da 30 nicht kleiner als 10 ist.

              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @Codierknecht last edited by Asgothian

                @codierknecht sagte in Liste mit "SVerweis":

                @asgothian
                Wenn es wirklich alle DP aus dem Kanal sind, geht das mit diesem Selektor.
                Hat der Kanal noch weitere DP, die hier nicht zu berücksichtigen sind, müsste man mit 'ner Aufzählung arbeiten.

                das Hängt davon ab ob es ein eindeutiges Muster gibt die DP's zu identifizieren. Sie müssen nicht aus dem gleichen Kanal kommen.

                wenn ich davon ausgehe das die Benennung ein Teil der State-Struktur ist könnten die dp's heissen:

                adaptername.0.watchdog_1.data.zelle_01 .. ...zelle_15

                In dem fall könnte der Selektor sein

                state[state.id=adaptername.0.watchdog.data.zelle_*]

                Kleiner Schnitzer in Deiner Schleife:
                Gesetzt den Fall, die Werte wären [20, 30, 10], würde zuerst die 20 in minval wandern, da minval im ersten Durchlauf noch -99999999 wäre.
                Im zweiten Durchlauf würde die 30 genommen, da 20 < 30 ist.
                Im dritten Durchlauf würde das if schiefgehen, da 30 nicht kleiner als 10 ist.

                korrekt, das war falsch. Wird oben korrigiert.

                war mal eben zusammen geklöppelt

                A.

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

                  @asgothian sagte in Liste mit "SVerweis":

                  war mal eben zusammen geklöppelt

                  Ach, machst Du das auch so? 😁 😁 😁

                  Asgothian 1 Reply Last reply Reply Quote 0
                  • Asgothian
                    Asgothian Developer @Codierknecht last edited by

                    @codierknecht sagte in Liste mit "SVerweis":

                    @asgothian sagte in Liste mit "SVerweis":

                    war mal eben zusammen geklöppelt

                    Ach, machst Du das auch so? 😁 😁 😁

                    Am Wochenende immer 🙂

                    D 1 Reply Last reply Reply Quote 0
                    • D
                      dan11hh @Asgothian last edited by

                      @asgothian @Codierknecht
                      1000 Dank für Eure Hilfe! Was ist / macht denn die ID? Ich steige da leider noch nicht ganz durch...

                      Nochmals Danke für die Hilfe!

                      Das JS sieht so aus:

                      var Intervall, AkkuMin;
                      
                      
                      AkkuMin = [getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_01").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_02").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_03").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_04").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_05").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_06").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_07").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_08").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_09").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_10").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_11").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_12").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_13").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_14").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_15").val, getState("mqtt.1.BMS_Watchdog_1.Data.Zelle_16").val];
                      console.log(AkkuMin);
                      console.log(Math.round((Math.min.apply(null, AkkuMin))*1000)/1000);
                      
                      
                      Codierknecht Asgothian paul53 3 Replies Last reply Reply Quote 0
                      • Codierknecht
                        Codierknecht Developer Most Active @dan11hh last edited by

                        @dan11hh

                        Die "ID" enthält z.B. mqtt.1.BMS_Watchdog_1.Data.Zelle_01 usw.
                        Es hilft ja nicht, eine Liste nur aus den Werten zu bauen, da dann der Bezug zum Objekt fehlt.
                        Die Liste muss also das komplette Objekt ansprechen können. Hat man dann in der Liste einen Wert gefunden der kleiner als der letzte ist, merkt man sich den Wert und die ID des DP.
                        Damit kann man dann jederzeit wieder auf das Objekt zugreifen und dort lesen was man so braucht.

                        1 Reply Last reply Reply Quote 0
                        • Asgothian
                          Asgothian Developer @dan11hh last edited by

                          @dan11hh bei dem JS sollte der selektor den folgenden Text beinhalten:

                          state[state.mqtt.1.BMS_Watchdog_1.Data.Zelle_*]

                          A.

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

                            @dan11hh sagte: Das JS sieht so aus:

                            Dann versuche es mal so (triggert jede volle Stunde):

                            Bild_2023-01-08_143853510.png

                            Zum Test lass erst einmal den Trigger weg.

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

                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            599
                            Online

                            32.0k
                            Users

                            80.5k
                            Topics

                            1.3m
                            Posts

                            4
                            12
                            411
                            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