ioBroker / ioBroker.history

manages state history
MIT License
30 stars 23 forks source link

API liefert Rohdaten nicht #238

Open hgschwibbe opened 1 year ago

hgschwibbe commented 1 year ago

Ich habe das Problem, dass die API leere Rohdaten liefert, obwohl Rohdaten vorhanden sind. Wenn ich die Abfrage über average oder minmax mache, bekomme ich die Daten:

grafik

Mein Testskript:

    const start = new Date('2023-03-16T11:00:00');
    const end = new Date('2023-03-16T11:05:00');

    sendTo('history.0', 'getHistory', {
        id: '0_userdata.0.pv-gesamtleistung',
        options: {
            start: start.getTime(),
            end: end.getTime(),
            aggregate: 'minmax'
        }
    }, function (history) {
        console.log('minmax data:');
        console.log(history);
    });

    sendTo('history.0', 'getHistory', {
        id: '0_userdata.0.pv-gesamtleistung',
        options: {
            start: start.getTime(),
            end: end.getTime(),
            aggregate: 'none'
        }
    }, function (history) {
        console.log('row data:');
        console.log(history);
    });
hgschwibbe commented 1 year ago

Und die Testdaten: history.0_userdata.0.pv-gesamtleistung.json.txt

PS: Ich musste die Dateiendung in txt ändern weil Github json nicht akzeptiert.

hgschwibbe commented 1 year ago

Was auch ziemlich putzig ist: Wenn ich die Abfrage von 11:00 Uhr auf 15:00 Uhr lege, werden auf einmal Rohdaten geliefert: grafik

Apollon77 commented 1 year ago

Please enable the enhanced debug logging for that datapoints, set adapter on debug loglevel and provide a debug log from such a gehistory call.

hgschwibbe commented 1 year ago

Da steht was von 2000 results und after Beautify 0 results: grafik

Finde ich jetzt etwas schade dass History meine Rohdaten nicht Beauty genug findet.

PS: Cooler Spruch oder ? ;-)

Apollon77 commented 1 year ago

Lol, bitte in Zukuunft aber Text Logs posten, keine Images die man fast nicht lesen kann. Also am Ende entfernt beatufy Daten aus zwei gründen: 1.) ignoreNull ist true und werte sind null ... nicht relevant hier 2.) Start (Ende Zeitstempel passen nicht.

versuche mal count auf 10000 zu setzen, vor allem wenn der Datenpunkt viele Daten hat. Es gibt hier aktuell ggf noch einen effekt der ggf zuwenig daten liesst

hgschwibbe commented 1 year ago

Das mit Count hat geholfen, der Default von 500 ist natürlich zu wenig wenn man alle 15 Sekunden die Wattleistung der PV-Anlage ausliest.

Vielen Dank für die Hilfe.

hgschwibbe commented 1 year ago

Allerdings liegen in dem Zeitinterval von einer Stunde maximal 240 Messwerte (4 pro Minute * 60 Minuten = 240). Sollte da nicht ein Count von 500 völlig ausreichen?

Könnte es sein dass der Beautifier viel zu früh die Datensätze auf Count beschränkt sodass im gewünschten Zeitintervall ggf. keine Messpunkte mehr vorhanden sind?

In diesem Beispiel hatte ich ein JSON mit 2000 Werten pro Tag, was passiert wenn ich mein Zeitintervall von 23:30 Uhr bis 00:30 Uhr lege? Muss ich Count dann auf 4000 setzen weil Werte von zwei Tagen aus zwei JSON-Dateien mit jeweils 2000) Werten geladen werden?

Apollon77 commented 1 year ago

Wie gesagst das ist ein known Bug den wir angehen werden sobald ich da mal Zeit habe tief reinzuschauen. Aber Du hast erstmal einen Workaround, duplöicate #197

hgschwibbe commented 1 year ago

Hab mal etwas gestöbert, in aggregate.js machen die Funktionen beautify() in Zeile 755 und sendResplonse() in Zeile 799 beide das Gleiche, nämlich bei aggregate none die Results zusammenstreichen.

Vielleicht hilft das ja als Hinweis.