NEWS
(Gelöst)Aus einer Liste "Name" und Wert
-
Hallo zusammen,
ich habe 5 Batteriepacks (PV-Speicher) mit jeweils 16 Zellen, nun möchte ich die Minimalspannung und die Maximalspannung der einzelnen Batteriepacks jeweils in einen Datenpunkt schreiben mit der Info (Name der Zelle) welche Zelle den jeweiligen Wert hatte. Den Wert alleine bekomme ich hin, aber nicht
„Namen“ und Wert.Hat jemand von Euch eine Lösung für das Problem?
Vielen Dank!
Harald -
@harald07
Da Du ja lediglich die Werte der DP in die Liste geschrieben hast, verlierst Du so den Bezug zum Objekt.
Ich würde die DP komplett in die Liste schreiben(oder über Enum und Selektor)und mit einer Schleife durcheiern.
Jeden Wert und den zugehörigen Namen in 4 Variablen wegschreiben, wenn der Wert niederiger bzw. höher ist als der jeweils zuletzt gemerkte.
Am Ende hat man dann in den 4 Variablen den Min- und Maxwert und den zugehörigen Namen.
Oder man nimmt nur 2 Variablen und schreibt dort das komplette Objekt weg. -
Im Prizip so - geht aber vermutlich noch deutlich eleganter:
EDIT: Korrigiert - s.u.
-
@Codierknecht Vielen Dank für deinen Vorschlag. Werde ich sofort mal probieren.
-
@codierknecht sagte: Im Prizip so
So kann man den Namen nicht ermitteln. Das funktioniert nur mittels JS-Funktion mit Ergebnis.
Die ID-Liste sollte außerhalb des Triggers erstellt werden, wozu sich sicherlich auch der Selektor eignet.
-
@paul53 sagte in Aus einer Liste "Name" und Wert:
So kann man den Namen nicht ermitteln. Das funktioniert nur mittels JS-Funktion mit Ergebnis.
Du hast natürlich Recht - stolpere ich jedes Mal drüber.
Hab's oben mal korrigiert. -
Da mich das immer wieder ärgert, habe ich mal ein Issue aufgemacht. Votes welcome
https://github.com/ioBroker/ioBroker.javascript/issues/1249 -
@codierknecht sagte: Issue aufgemacht.
Es bräuchte ein zusätzliches Blockly-Element für getObject(id). Das gezeigte getState(id) hat nicht mehr Attribute (außer "Kommentar").
-
@paul53
Das wird @apollon77 mir sicher in das Issue schreiben
So ein Block-Element "getObject()" wäre natürlich noch cooler. Damit könnte man dann auch noch "unit", "read", "write" usw. ermitteln - ohne JS. -
@codierknecht sagte: Block-Element "getObject()" wäre natürlich noch cooler.
In Blockly sollte man sich vielleicht auf getObject(id).common beschränken.
-
Erst einmal allen vielen Dank!
Leider bekomme ich es nicht hin. Da ich zu keinem Ergebnis gekommen bin habe ich habe es erst einmal auf den Minimalwert mit Hilfe des Selectors reduziert. Aber leider gab dies sochon kein Ergebnis.
Ohne den Selektor und ohne die Schleife bekomme ich den Minimalwert und Maximalwert, aber nicht die jeweiligen Zellen.
Kann ich den Selektor in irgendeiner Weise prüfen?
-
@harald07 sagte: Kann ich den Selektor in irgendeiner Weise prüfen?
Ja, einfach den Selektor per Debug-Block ausgeben. Prinzip:
@harald07 sagte in Aus einer Liste "Name" und Wert:
Aber leider gab dies sochon kein Ergebnis.
Zeige bitte mal die ID-Struktur der Datenpunkte.
-
@harald07 sagte in Aus einer Liste "Name" und Wert:
Ohne den Selektor und ohne die Schleife bekomme ich den Minimalwert und Maximalwert, aber nicht die jeweiligen Zellen.
Dann probier doch mal mit Schleife
Die brauchst Du ja auch mit funktionierendem Selektor. -
@paul53 gerne.!
P3_Z01 - P3_Z16 sind die Zellen. Alle Zellen des Packs haben die Funktion "Zellen_Alle" & "Zellen_P3".
-
@harald07
Möchtest du Minimum und Maximum von jeweils einem Pack oder von allen Packs? -
Für jedes Pack und nochmal alle zusammen.
Hier fehlt noch Minimal und Maximal mit der Info welche Zelle es ist. -
@harald07 sagte: Für jedes Pack
Pack_3:
Inhalt der JS-Funktion getName(id):
return getObject(id).common.name;
-
@paul53 Vielen Dank! Versuche ich sofort umzusetzen.
-
@harald07 sagte: nochmal alle zusammen.
Der Selektor für alle Zellen:
-
@paul53 Es tut sich was.
2023-02-13 18:08:21.581 - info: javascript.0 (5714) script.js.PV.Zellen_Paul53: ['0_userdata.0.PV.Pack_3.P3_Z01','0_userdata.0.PV.Pack_3.P3_Z02','0_userdata.0.PV.Pack_3.P3_Z03','0_userdata.0.PV.Pack_3.P3_Z04','0_userdata.0.PV.Pack_3.P3_Z05','0_userdata.0.PV.Pack_3.P3_Z06','0_userdata.0.PV.Pack_3.P3_Z07','0_userdata.0.PV.Pack_3.P3_Z08','0_userdata.0.PV.Pack_3.P3_Z09','0_userdata.0.PV.Pack_3.P3_Z10','0_userdata.0.PV.Pack_3.P3_Z11','0_userdata.0.PV.Pack_3.P3_Z12','0_userdata.0.PV.Pack_3.P3_Z13','0_userdata.0.PV.Pack_3.P3_Z14','0_userdata.0.PV.Pack_3.P3_Z15','0_userdata.0.PV.Pack_3.P3_Z16'] 2023-02-13 18:08:21.582 - info: javascript.0 (5714) script.js.PV.Zellen_Paul53: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 2023-02-13 18:08:32.111 - info: admin.0 (5672) <== Disconnect system.user.admin from ::ffff:192.168.20.20 javascript
MOD-EDIT: Code in code-tags gesetzt!