Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Liste mit "SVerweis"

NEWS

  • Neuer ioBroker-Blog online: Monatsrückblick März/April 2026
    BluefoxB
    Bluefox
    8
    1
    468

  • Verwendung von KI bitte immer deutlich kennzeichnen
    HomoranH
    Homoran
    10
    1
    385

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    976

Liste mit "SVerweis"

Geplant Angeheftet Gesperrt Verschoben Blockly
12 Beiträge 4 Kommentatoren 738 Aufrufe 3 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D dan11hh

    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

    AsgothianA Offline
    AsgothianA Offline
    Asgothian
    Developer
    schrieb am zuletzt editiert von Asgothian
    #2

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

    ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
    "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

    CodierknechtC 1 Antwort Letzte Antwort
    0
    • AsgothianA 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.

      CodierknechtC Offline
      CodierknechtC Offline
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von Codierknecht
      #3

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

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      AsgothianA 1 Antwort Letzte Antwort
      0
      • CodierknechtC Codierknecht

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

        AsgothianA Offline
        AsgothianA Offline
        Asgothian
        Developer
        schrieb am zuletzt editiert von
        #4

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

        ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
        "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

        CodierknechtC 1 Antwort Letzte Antwort
        1
        • AsgothianA Asgothian

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

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          schrieb am zuletzt editiert von
          #5

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

          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
          HmIP|ZigBee|Tasmota|Unifi
          Zabbix Certified Specialist
          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

          AsgothianA 1 Antwort Letzte Antwort
          0
          • CodierknechtC Codierknecht

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

            AsgothianA Offline
            AsgothianA Offline
            Asgothian
            Developer
            schrieb am zuletzt editiert von Asgothian
            #6

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

            ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
            "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

            CodierknechtC 1 Antwort Letzte Antwort
            0
            • AsgothianA 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.

              CodierknechtC Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              schrieb am zuletzt editiert von
              #7

              @asgothian sagte in Liste mit "SVerweis":

              war mal eben zusammen geklöppelt

              Ach, machst Du das auch so? 😁 😁 😁

              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

              Proxmox 9.1.1 LXC|8 GB|Core i7-6700
              HmIP|ZigBee|Tasmota|Unifi
              Zabbix Certified Specialist
              Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

              AsgothianA 1 Antwort Letzte Antwort
              0
              • CodierknechtC Codierknecht

                @asgothian sagte in Liste mit "SVerweis":

                war mal eben zusammen geklöppelt

                Ach, machst Du das auch so? 😁 😁 😁

                AsgothianA Offline
                AsgothianA Offline
                Asgothian
                Developer
                schrieb am zuletzt editiert von
                #8

                @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 :)

                ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                D 1 Antwort Letzte Antwort
                0
                • AsgothianA Asgothian

                  @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 Offline
                  D Offline
                  dan11hh
                  schrieb am zuletzt editiert von
                  #9

                  @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);
                  
                  
                  CodierknechtC AsgothianA paul53P 3 Antworten Letzte Antwort
                  0
                  • D dan11hh

                    @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);
                    
                    
                    CodierknechtC Offline
                    CodierknechtC Offline
                    Codierknecht
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #10

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

                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                    HmIP|ZigBee|Tasmota|Unifi
                    Zabbix Certified Specialist
                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                    1 Antwort Letzte Antwort
                    0
                    • D dan11hh

                      @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);
                      
                      
                      AsgothianA Offline
                      AsgothianA Offline
                      Asgothian
                      Developer
                      schrieb am zuletzt editiert von
                      #11

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

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

                      A.

                      ioBroker auf RPi4 - Hardware soweit wie möglich via Zigbee.
                      "Shit don't work" ist keine Fehlermeldung, sondern ein Fluch.

                      1 Antwort Letzte Antwort
                      0
                      • D dan11hh

                        @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);
                        
                        
                        paul53P Offline
                        paul53P Offline
                        paul53
                        schrieb am zuletzt editiert von
                        #12

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

                        Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                        Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                        1 Antwort Letzte Antwort
                        0

                        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                        Registrieren Anmelden
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        557

                        Online

                        32.8k

                        Benutzer

                        82.8k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe