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

  • wichtiges UPDATE für controller 7.2.2 im stable
    HomoranH
    Homoran
    10
    1
    2.6k

  • Neues YouTube-Video: Visualisierung im Devices-Adapter
    BluefoxB
    Bluefox
    16
    1
    4.6k

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

Liste mit "SVerweis"

Geplant Angeheftet Gesperrt Verschoben Blockly
12 Beiträge 4 Kommentatoren 908 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.
  • 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 Online
    CodierknechtC Online
    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 Online
        CodierknechtC Online
        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 Online
            CodierknechtC Online
            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 Online
                  CodierknechtC Online
                  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: Asus PN 42 / N100 / 8 GB / 500 GB; Proxmox mit 2 VM (iob / openCCU)

                      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

                      409

                      Online

                      33.0k

                      Benutzer

                      83.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2026
                      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