NEWS
Liste mit "SVerweis"
-
Moin zusammen!
So langsam beginne ich Blockly zu lieben. :-)
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:
@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:

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.
-
@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:

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.
@asgothian
Alternative (quick & dirty) ohne Selektor:

-
@asgothian
Alternative (quick & dirty) ohne Selektor:

@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.
-
@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.
@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 dasifschiefgehen, da 30 nicht kleiner als 10 ist. -
@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 dasifschiefgehen, da 30 nicht kleiner als 10 ist.@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_15In 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 dasifschiefgehen, da 30 nicht kleiner als 10 ist.korrekt, das war falsch. Wird oben korrigiert.
war mal eben zusammen geklöppelt
A.
-
@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_15In 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 dasifschiefgehen, da 30 nicht kleiner als 10 ist.korrekt, das war falsch. Wird oben korrigiert.
war mal eben zusammen geklöppelt
A.
@asgothian sagte in Liste mit "SVerweis":
war mal eben zusammen geklöppelt
Ach, machst Du das auch so?

-
@asgothian sagte in Liste mit "SVerweis":
war mal eben zusammen geklöppelt
Ach, machst Du das auch so?

@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 :)
-
@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 :)
@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); -
@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);Die "ID" enthält z.B.
mqtt.1.BMS_Watchdog_1.Data.Zelle_01usw.
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. -
@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); -
@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);
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
