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

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!
-
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"); }); -
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.

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!
-
@Humidor sagte: nur Blockly mächtig
Versuche es mal so:

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

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