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

                          813
                          Online

                          32.0k
                          Users

                          80.5k
                          Topics

                          1.3m
                          Posts

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