Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • 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. 4 Packs je 16 Zellspannungen, Diff V max ausgeben?

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.9k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    901

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

4 Packs je 16 Zellspannungen, Diff V max ausgeben?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 107 Aufrufe 2 Watching
  • Ä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.
  • HumidorH Offline
    HumidorH Offline
    Humidor
    schrieb am zuletzt editiert von
    #1

    Hallo Gemeinde!
    da ich nur Blockly mächtig und das nur rudimentär, möchte ich euch wieder um Rat fragen. Denke das könnte eine Java Script Berechnung werden... (Instanz?)

    pro Zellenpack (16) soll eine max. Wertdifferenz (Spannung) ausgegeben werden.
    dann sind es 4 Packs.

    Bildschirmfoto 2026-01-09 um 09.27.04.png
    Bildschirmfoto 2026-01-09 um 09.27.15.png

    denke das könnte eine Schleife werden die mir die Berechnung durchführt und ich somit nicht die einzelnen Werte alle überprüfen muss.

    Danke!

    BG

    paul53P 1 Antwort Letzte Antwort
    0
    • HumidorH Offline
      HumidorH Offline
      Humidor
      schrieb am zuletzt editiert von
      #2

      hab mal mit ChatGPT gespielt, aber noch kein Ergebnis bekommen (ev. noch kein Trigger?)

      const packs = [1, 2, 3, 4];
      const cellsPerPack = 16;
      
      // Trigger auf ALLE Zellspannungen
      on({ id: /modbus\.0\.holdingRegisters\.(1|2|3|4)\.400(1[6-9]|2[0-9]|3[0-1])_Cell_Voltage_.*/, change: "ne" }, function (obj) {
      
          // Pack-Nummer aus der ID extrahieren
          const match = obj.id.match(/holdingRegisters\.(\d)\./);
          if (!match) return;
      
          const pack = match[1];
          let values = [];
      
          // Alle 16 Zellspannungen dieses Packs einsammeln
          for (let i = 1; i <= cellsPerPack; i++) {
              const id = `modbus.0.holdingRegisters.${pack}.400${15 + i}_Cell_Voltage_${i}`;
              const val = getState(id)?.val;
      
              if (typeof val === "number") {
                  values.push(val);
              }
          }
      
          if (values.length !== cellsPerPack) return;
      
          const min = Math.min(...values);
          const max = Math.max(...values);
          const diff = max - min;
      
          // Ergebnis schreiben
          setState(`javascript.0.BMS.Pack${pack}.CellDiff`, diff, true);
      
          // Optional Log
          log(`Pack ${pack}: Zellspannungs-Differenz = ${diff} mV`, "info");
      });
      
      

      BG

      1 Antwort Letzte Antwort
      0
      • HumidorH Humidor

        Hallo Gemeinde!
        da ich nur Blockly mächtig und das nur rudimentär, möchte ich euch wieder um Rat fragen. Denke das könnte eine Java Script Berechnung werden... (Instanz?)

        pro Zellenpack (16) soll eine max. Wertdifferenz (Spannung) ausgegeben werden.
        dann sind es 4 Packs.

        Bildschirmfoto 2026-01-09 um 09.27.04.png
        Bildschirmfoto 2026-01-09 um 09.27.15.png

        denke das könnte eine Schleife werden die mir die Berechnung durchführt und ich somit nicht die einzelnen Werte alle überprüfen muss.

        Danke!

        paul53P Offline
        paul53P Offline
        paul53
        schrieb am zuletzt editiert von paul53
        #3

        @Humidor sagte: nur Blockly mächtig

        Versuche es mal so:

        Blockly_temp.JPG

        EDIT: Übersichtlicher mit Funktion, die auch bei Skriptstart aufgerufen wird:

        Blockly_temp.JPG

        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

        HumidorH 1 Antwort Letzte Antwort
        0
        • paul53P paul53

          @Humidor sagte: nur Blockly mächtig

          Versuche es mal so:

          Blockly_temp.JPG

          EDIT: Übersichtlicher mit Funktion, die auch bei Skriptstart aufgerufen wird:

          Blockly_temp.JPG

          HumidorH Offline
          HumidorH Offline
          Humidor
          schrieb am zuletzt editiert von
          #4

          @paul53 kannst mir das bitte erklären, was du mit den Namen meinst und welche Funktion das rechts ist?

          BG

          paul53P 1 Antwort Letzte Antwort
          0
          • HumidorH Humidor

            @paul53 kannst mir das bitte erklären, was du mit den Namen meinst und welche Funktion das rechts ist?

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #5

            @Humidor sagte: welche Funktion das rechts ist?

            diffPack(ids) ist eine Blockly-Funktion mit Rückgabewert, die Maximum und Minimum der Spannungen in einer Schleife ermittelt und die Differenz max - min zurück gibt.

            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
            • HumidorH Offline
              HumidorH Offline
              Humidor
              schrieb am zuletzt editiert von
              #6

              OK, danke dir.

              BG

              1 Antwort Letzte Antwort
              0
              Antworten
              • In einem neuen Thema antworten
              Anmelden zum Antworten
              • Älteste zuerst
              • Neuste zuerst
              • Meiste Stimmen


              Support us

              ioBroker
              Community Adapters
              Donate

              436

              Online

              32.6k

              Benutzer

              82.2k

              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