Ankündigung

Einklappen
Keine Ankündigung bisher.

Fehler nur bei aktiviertem SQLite-Plugin

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

    Fehler nur bei aktiviertem SQLite-Plugin

    Hallo,

    habe heute erstmals das SQLIte-Plugin aus dem dev installiert, um das Regelungsverhalten meiner KWL bei bestimmten Temperaturbedingungen nachvollziehen zu können. Anschließend (nach einigen Fehlermeldungen) auch die lib/item.py ausgetauscht, wie hier in einem anderen Thread empfohlen.

    Fast alles läuft problemlos und ohne Fehler - nur 4 Items, die über eval berechnet werden, machen Ärger.

    Was mich wundert: Sobald ich das SQLite-Plugin abschalte, werden die Items sauber und ohne Fehler berechnet, die evals scheinen also zu stimmen (und haben hier schon mehreren Monaten ohne Fehlermeldung ihre Dienste getan). Schalte ich SQLite an, ist das Log schon in der ersten Minute voll.

    Auch haben diese Items gar nichts mit SQLite zu tun - sie werden gar nicht in die Datenbank geschrieben ...

    Das beschrieben Verhalten ist hier definitiv reproduzierbar.

    Die Fehlermeldung bei aktiviertem SQLite:

    Code:
    2016-01-16 17:12:28 WARNING  ventilation.fans.supply.power_consumption Item ventilation.fans.supply.power_consumption: problem evaluating int(sh.ventilation.consumption_per_mode().split()[sh.ventilation.fanspeed()]) / 2: [COLOR=#ff0000]list indices must be integers, not float[/COLOR]
    Die Items:

    Code:
    [ventilation]
    
        [[fanspeed]]
            name = Aktuelle Lüftungsstufe
            type = num
            helios_var = fanspeed
            visu_acl = rw
            sqlite = yes
            enforce_updates = yes
    
        [[consumption_per_mode]]
            name = Verbrauch der Ventilatoren je Stufe in W (siehe Anlagendoku)
            type = str
            value = "0 20 36 50 72 92 130 160 194"
            visu_acl = r
    
        [[airflow_per_mode]]
            name = Volumenstrom je Stufe in m³/h  (siehe Anlagendoku); F7-Filter = jeweils -10%!
            type = str
            value = "0 105 165 195 240 270 305 335 360"
            visu_acl = r 
            
        [[fans]]
        
            [[[supply]]] # Zuluft
            
                [[[[power_consumption]]]]
                    name = Stromverbrauch, siehe Anlagendoku (notwendiges Hilfsitem)
                    type = num
                    visu_acl = r
                    [COLOR=#ff0000]eval = int(sh.ventilation.consumption_per_mode().split()[sh.ventilation.fanspeed()]) / 2[/COLOR]
                    eval_trigger = ventilation.fanspeed | ventilation.fans.supply.is_running | ventilation.fans.supply.percent
                    
                [[[[airflow]]]]
                    name = Luftdurchsatz in m³ gem. Ventilatorkurve
                    type = num
                    visu_acl = r
                    [COLOR=#ff0000]eval = sh.ventilation.airflow_per_mode().split()[sh.ventilation.fanspeed()][/COLOR]
                    eval_trigger = ventilation.fanspeed | ventilation.fans.supply.is_running | ventilation.fans.supply.percent
                    
            [[[[exhaust]]] # Fortluft
            
                [[[[power_consumption]]]]
                    name = Stromverbrauch, siehe Anlagendoku (notwendiges Hilfsitem)
                    type = num
                    visu_acl = r
                    [COLOR=#ff0000]eval = int(sh.ventilation.consumption_per_mode().split()[sh.ventilation.fanspeed()]) / 2[/COLOR]
                    eval_trigger = ventilation.fanspeed | ventilation.fans.exhaust.is_running | ventilation.fans.exhaust.percent
                    
                [[[[airflow]]]]
                    name = Luftdurchsatz in m³ gem. Ventilatorkurve
                    type = num
                    visu_acl = r
                    [COLOR=#ff0000]eval = sh.ventilation.airflow_per_mode().split()[sh.ventilation.fanspeed()][/COLOR]
                    eval_trigger = ventilation.fanspeed | ventilation.fans.exhaust.is_running | ventilation.fans.exhaust.percent
    Ein äußeres int() löst das Problem leider nicht (gleiche Fehlermeldung), es scheint also eher innerhalb der Formel zu liegen. Hat jemand eine Idee, woran es liegen könnte? Danke im Voraus!

    /tom
    Zuletzt geändert von Tom Bombadil; 16.01.2016, 17:59. Grund: Ein item vergessen + nachformatiert

    #2

    Hast Du int(sh.ventilation.fanspeed()) mal probiert?

    Kommentar


      #3
      Hallo Bernd,

      danke für den Tip - gerade probiert, so geht's!

      Trotzdem interessant, dass mit dem SQLite Plugin eine striktere Typprüfung aktiviert wird.

      Egal, jetzt zeigt mein Widget im Debug-Modus wieder alle Werte an - das war wie umfallende Dominosteine, da die genannten 4 Variablen noch in anderen Berechnungen weiterverarbeitet wurden, jetzt passt's wieder:



      Danke nochmal!

      /tom

      Kommentar

      Lädt...
      X