NEWS
[gelöst] Datenbank mit mehr als einem "_value" - Feld
-
Ich habe mittels Blockly eine Ausgabe erstellt, die unter _value einen Text und einen zugehörigen Wert enthält (für influxdb und grafana). Diese Datenbank würde ich gerne nach dem Wert sortieren. Da aber dort auch der Text mit enthalten ist, funktioniert das nicht.
Gibt es eine Möglichkeit zwei Felder _value anzulegen, eins für den Text und das andere soll den zugeordneten Wert enthalten? -
-
Ich habe mittels Blockly eine Ausgabe erstellt, die unter _value einen Text und einen zugehörigen Wert enthält (für influxdb und grafana). Diese Datenbank würde ich gerne nach dem Wert sortieren. Da aber dort auch der Text mit enthalten ist, funktioniert das nicht.
Gibt es eine Möglichkeit zwei Felder _value anzulegen, eins für den Text und das andere soll den zugeordneten Wert enthalten?@DGR sagte: nach dem Wert sortieren.
Sortieren kann man nur in Arrays. Was du brauchst ist ein Array of Objects, das nach einem Attribut numerisch sortiert wird:

Inhalt der JS-Funktion sortObjectNum(arr, attr):
function sortAttr(a, b) { return parseFloat(a[attr]) - parseFloat(b[attr]); } arr.sort(sortAttr); -
@DGR sagte: nach dem Wert sortieren.
Sortieren kann man nur in Arrays. Was du brauchst ist ein Array of Objects, das nach einem Attribut numerisch sortiert wird:

Inhalt der JS-Funktion sortObjectNum(arr, attr):
function sortAttr(a, b) { return parseFloat(a[attr]) - parseFloat(b[attr]); } arr.sort(sortAttr); -
das muss ich mal testen. Mit Arrays habe ich bisher noch keine Erfahrung.
Aus der Antwort schließe ich erstmal, dass es nicht so wie in anderen Datenbanken funktioniert. -
@DGR was bitte haben die Datenbanken
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
SQL oder einfach auch MS Access
und
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
influxdb und grafana
mit Blocly zu tund
-
@DGR was bitte haben die Datenbanken
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
SQL oder einfach auch MS Access
und
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
influxdb und grafana
mit Blocly zu tund
-
@Homoran
Influxdb ud Grafana haben zunächst mal nichts mit Blockly zu tun. War nur ein Hinweis auf die weitere Verarbeitung. SQL und Access waren die Antwort für @paul53.@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
@Homoran
Influxdb ud Grafana haben zunächst mal nichts mit Blockly zu tun. War nur ein Hinweis auf die weitere Verarbeitung.was bitte willst du dann??
in Blockly sortieren hat dir Paul gezrigt. Dann kamv
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Mit Arrays habe ich bisher noch keine Erfahrung.
Aus der Antwort schließe ich erstmal, dass es nicht so wie in anderen Datenbanken funktioniertBlockly ist keine Datenbank, und wenn du in der Datenbank sortieren willst, musst du es auch da machen.
-
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
@Homoran
Influxdb ud Grafana haben zunächst mal nichts mit Blockly zu tun. War nur ein Hinweis auf die weitere Verarbeitung.was bitte willst du dann??
in Blockly sortieren hat dir Paul gezrigt. Dann kamv
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Mit Arrays habe ich bisher noch keine Erfahrung.
Aus der Antwort schließe ich erstmal, dass es nicht so wie in anderen Datenbanken funktioniertBlockly ist keine Datenbank, und wenn du in der Datenbank sortieren willst, musst du es auch da machen.
@Homoran
Dass Blockly keine Datenbank ist, ist hinlänglich bekannt. Meine Frage zielte auf die Erstellung einer Datenbank und da ist Blockly ein Hilfsmittel wenn man so will. Offensichtlich kann man in iobroker zu jedem Timestamp nur einen Wert erfassen. Ausser man geht den (Um)Weg über Arrays. -
Was genau hast Du denn da vor?
Wenn Du zu einem "timestamp" irgendwelche Daten in eine DB schreiben willst, ist der entsprechende DB-Adapter (SQL, Influx) Dein Freund.
Wie @homoran schon schreibt: Die Daten sollten zunächst mal unsortiert einfach nur in eine DB geschrieben werden. Sortieren kann jede DB besser als Blockly ... dafür sind die Dinger ja gemacht. -
Was genau hast Du denn da vor?
Wenn Du zu einem "timestamp" irgendwelche Daten in eine DB schreiben willst, ist der entsprechende DB-Adapter (SQL, Influx) Dein Freund.
Wie @homoran schon schreibt: Die Daten sollten zunächst mal unsortiert einfach nur in eine DB geschrieben werden. Sortieren kann jede DB besser als Blockly ... dafür sind die Dinger ja gemacht.@Codierknecht
Vielleicht habe ich das am Anfang nicht klar genug formuliert. Es war für mich auch nur ein Beispiel für ein grundsätzliches Problem. Leider kenne ich mich nur in Blockly etwas aus und in JavaScript gar nicht.
Also in Blockly kann ich mit einfachen Mitteln (ausser Arrays) zu jedem Timestamp nur einen Wert erfassen. Um auf das Beispiel (!) zurückzukommen:
Ich erhalte vom Sensor einen Zustand und schreibe diesen Wert in ein von mir angelegtes Objekt, welches dann diesen Wert mit einem Zeitstempel versieht und an influxdb weiterreicht.
Ich kann NICHT vorher zu diesem Zeitstempel noch eine weitere Information weitergeben, z.B. den Wert UND getrennt eine Bemerkung dazu. Ich kann nur diese "Bemerkung" mit in das Wertefeld schreiben. Wenn ich im angelegten Objekt in die Verlaufsdaten sehe, sehe ich immer nur "Timestamp - Wert - Ack - Von".
Für mich wäre es besser, es gäbe die Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von" -
@Codierknecht
Vielleicht habe ich das am Anfang nicht klar genug formuliert. Es war für mich auch nur ein Beispiel für ein grundsätzliches Problem. Leider kenne ich mich nur in Blockly etwas aus und in JavaScript gar nicht.
Also in Blockly kann ich mit einfachen Mitteln (ausser Arrays) zu jedem Timestamp nur einen Wert erfassen. Um auf das Beispiel (!) zurückzukommen:
Ich erhalte vom Sensor einen Zustand und schreibe diesen Wert in ein von mir angelegtes Objekt, welches dann diesen Wert mit einem Zeitstempel versieht und an influxdb weiterreicht.
Ich kann NICHT vorher zu diesem Zeitstempel noch eine weitere Information weitergeben, z.B. den Wert UND getrennt eine Bemerkung dazu. Ich kann nur diese "Bemerkung" mit in das Wertefeld schreiben. Wenn ich im angelegten Objekt in die Verlaufsdaten sehe, sehe ich immer nur "Timestamp - Wert - Ack - Von".
Für mich wäre es besser, es gäbe die Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von"@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Für mich wäre es besser, es gäbe die Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von"
welche Datenbank kann das denn verarbeiten?
Das wäre ja im Prinzip schon ein kompletter Datensatz in einer möglicherweise relationalen Datenbank
Hier werden nur einzelne Datenpunkte gespeichert
-
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Für mich wäre es besser, es gäbe die Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von"
welche Datenbank kann das denn verarbeiten?
Das wäre ja im Prinzip schon ein kompletter Datensatz in einer möglicherweise relationalen Datenbank
Hier werden nur einzelne Datenpunkte gespeichert
welche Datenbank kann das denn verarbeiten?
Der Frage nach zu urteilen kann das wohl keine DB im Zusammenhang mit iobroker.
Aber immerhin ist das eine klare Aussage zu meinem Problem. Wäre zwar schön gewesen, aber es ist ja auch nicht so gravierend, dass ich nicht weiter arbeiten kann. -
welche Datenbank kann das denn verarbeiten?
Der Frage nach zu urteilen kann das wohl keine DB im Zusammenhang mit iobroker.
Aber immerhin ist das eine klare Aussage zu meinem Problem. Wäre zwar schön gewesen, aber es ist ja auch nicht so gravierend, dass ich nicht weiter arbeiten kann.@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Der Frage nach zu urteilen
warum Gegenfragen?
Die Frage ist DEIN Usecase
@DGR sagte in Datenbank mit mehr als einem "_value" - Feld:
Aber immerhin ist das eine klare Aussage
ist es eben gar nicht.
Es ist ei e Frage, die auf Antworten wartet
-
@Codierknecht
Vielleicht habe ich das am Anfang nicht klar genug formuliert. Es war für mich auch nur ein Beispiel für ein grundsätzliches Problem. Leider kenne ich mich nur in Blockly etwas aus und in JavaScript gar nicht.
Also in Blockly kann ich mit einfachen Mitteln (ausser Arrays) zu jedem Timestamp nur einen Wert erfassen. Um auf das Beispiel (!) zurückzukommen:
Ich erhalte vom Sensor einen Zustand und schreibe diesen Wert in ein von mir angelegtes Objekt, welches dann diesen Wert mit einem Zeitstempel versieht und an influxdb weiterreicht.
Ich kann NICHT vorher zu diesem Zeitstempel noch eine weitere Information weitergeben, z.B. den Wert UND getrennt eine Bemerkung dazu. Ich kann nur diese "Bemerkung" mit in das Wertefeld schreiben. Wenn ich im angelegten Objekt in die Verlaufsdaten sehe, sehe ich immer nur "Timestamp - Wert - Ack - Von".
Für mich wäre es besser, es gäbe die Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von" -
@DGR sagte: Möglichkeit "Timestamp - Wert1 - Wert2 - ... - Ack - Von"
Man kann als Wert auch ein Array oder Objekt schreiben.
[Wert1, Wert2] // DP-Typ: "array" // oder {Wert: Wert1, Bemerkung: Wert2} // DP-Typ "object"@paul53 sagte in Datenbank mit mehr als einem "_value" - Feld:
Man kann als Wert auch ein Array oder Objekt schreiben.
@dgr
Schreiben ist das eine, aber wer soll das wofür empfangen? -
@paul53 sagte in Datenbank mit mehr als einem "_value" - Feld:
Man kann als Wert auch ein Array oder Objekt schreiben.
@dgr
Schreiben ist das eine, aber wer soll das wofür empfangen? -
@Homoran sagte: wer soll das wofür empfangen?
Historisieren lässt sich das, aber ich habe keine Ahnung, ob Grafana daraus einen Chart mit Wert1 erstellen kann.
@paul53 sagte in Datenbank mit mehr als einem "_value" - Feld:
Historisieren lässt sich das
Ja!
aber ob @dgr das so haben will hat er immer noch nicht gesagt. -
@paul53 sagte in Datenbank mit mehr als einem "_value" - Feld:
Historisieren lässt sich das
Ja!
aber ob @dgr das so haben will hat er immer noch nicht gesagt.

