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. 4 Packs je 16 Zellspannungen, Diff V max ausgeben?

NEWS

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

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

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

4 Packs je 16 Zellspannungen, Diff V max ausgeben?

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
6 Beiträge 2 Kommentatoren 211 Aufrufe 2 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.
  • 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: Asus PN 42 / N100 / 8 GB / 500 GB

        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: Asus PN 42 / N100 / 8 GB / 500 GB

            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

              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

              429

              Online

              32.9k

              Benutzer

              83.0k

              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