Ankündigung

Einklappen
Keine Ankündigung bisher.

Highcharts/plot.period: 'null' Einträge in Series nicht anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Highcharts/plot.period: 'null' Einträge in Series nicht anzeigen

    Hi!

    Teilweise kommt es ja vor, dass ein (Mess-)wert zu einem Zeitabschnitt nicht erfasst werden kann. Leider wird da standardmäßig einfach zwischen den jeweils zuletzt bekannten Werten verbunden (ob jetzt 'stair' oder 'line' ist egal). Also z.B. 85°C bei Onewire-Temperaturfühlern oder eben eine "0" für einen anderen Messwert, der niemals 0 sein kann.

    Habe das sqlite-plugin von sh.py so weit, dass ich über ein Attribut 'sqlite_null_value' einen Wert definieren kann, welcher dann mit 'null' (String!) ersetzt wird. Laut Highcharts - Area with missing points geht das mit einem "null" in der Series.

    Leider bekomme ich den Graph dann nicht mehr angezeigt. Schätze, dass das JS (io_smarthome.py.js oder widget.js) irgendwo zwingend eine Zahl erwartet.

    Wenn ich statt 'null' einfach eine Zahl (z.B. 2000) eintrage, funktioniert das ganze (also der Graph geht auf 2000 in dem Bereich).

    Code:
    [iAQ_Stick]
      [[PPM]]
        type = num
        sqlite = true
        sqlite_null_value = 0
        iaqstick_info = ppm
    Code:
    diff --git a/plugins/sqlite/__init__.py b/plugins/sqlite/__init__.py
    index 85b0fa0..a67780e 100755
    --- a/plugins/sqlite/__init__.py
    +++ b/plugins/sqlite/__init__.py
    @@ -343,6 +343,11 @@ class SQL():
             tuples.append((iend, lval))  # add end entry with last valid entry
             if update:  # remove first entry
                 tuples = tuples[1:]
    +        item = self._sh.return_item(item)
    +        if 'sqlite_null_value' in item.conf:
    +            for i in range(len(tuples)):
    +                if tuples[i][1] == int(item.conf['sqlite_null_value']):
    +                    tuples[i] = (tuples[i][0], 'null')
             reply['series'] = tuples
             return reply
    Grüße
    Robert

    #2
    Hi Robert,

    Highcharts erwartet hier wahrscheinlich ein JSON null und kein String null.
    Hinzu kommt die Konversion von Python => JSON.
    Probier mal ein Python None, nicht als String. Wird aber glaube ich zu einem JSON None gemacht.

    Bis bald

    Marcus

    Kommentar

    Lädt...
    X