Ankündigung

Einklappen
Keine Ankündigung bisher.

db() liefert NoneType

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

    db() liefert NoneType

    Hallo,

    ich frage ein Item.db() ab. Dabei bekomme ich aber ein Objekt vom NoneType zurück:
    Code:
    >     if objekt.Leistung.db('min', '5i', 'now')<0.01:
    > TypeError: unorderable types: NoneType() < float()
    Das kann nach meinem Verständnis nur passieren, wenn die Database keine Werte in den letzten 5 min enthält.

    Deshalb habe ich mir jetzt mal series() geben lassen:
    Code:
    objekt.Leistung.series('min', '5i', end='now', count=5)
    {'params':
    {'step': 60000, 'end': 'now', 'start': 1568227167743, 'func': 'min', 'item': 'Haustechnik.Waschmaschine.Leistung', 'update': True, 'sid': 'Haustechnik.Waschmaschine.Leistung|min|5i|now|5'},
    'update': datetime.datetime(2019, 9, 11, 20, 40, 27, 743233, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')),
    'sid': 'Haustechnik.Waschmaschine.Leistung|min|5i|now|5',
    'series': [(1568226867742, 0.01), (1568227167743, 0.01)], 'cmd': 'series'}
    Da gibt es jetzt aber Werte, wie es schient -aber auch nur zwei...

    Nebenfrage: Was macht db() denn eigentlich wenn es in den letzten 5 min keinen Wert gab? Wird dann der letzte davor gespeicherte Wert angenommen?


    Aber zur Hauptfrage:
    Wie kann es hier zu "None" kommen?

    Gruß,
    Hendrik

    #2
    Hat hier niemand eine Idee?

    Kommentar


      #3
      hast du geschaut, in welcher tabelle die werte sind? (wie webif des DB plugins)?

      Kommentar


        #4
        Hallo Psilo,

        danke für deine Antwort. Ich verwende noch das sqlite-plugin. Das hat kein Webinterface.

        Kann ich so umstellen:

        Code:
        #sql:
        #   class_name: SQL
        #   class_path: plugins.sqlite_visu2_8
        
        database:
            class_name: Database
            class_path: plugins.database
            driver: sqlite3
            connect:
              - database:/usr/local/smarthome/var/db/smarthome.db
              - check_same_thread:0
        Oder muss ich sonst etwas beachten?

        Aber: Das sollte ja nicht die Ursache sein, sonder nur bei der Fehlersuche helfen, oder? Die Funktion sollte ja auch in sqlite vorhanden sein und so funktionieren, oder?

        Gruß,
        Hendrik

        Kommentar


          #5
          zum verhalten des alten plugins kann ich leider keine aussagen machen und keinen support geben

          umstellung sollte so gehen, backuppe aber vorher lieber das .db file... ich habe das selber nie getestet, da ich gleich auf mysql bin. es hängt vermutlich auch davon ab ,ob du das sqlite_visu28 oder das uralte verwendest. glaube das uralte kannst du so nicht "on the fly" umstellen.

          Kommentar


            #6
            Hallo,

            ich habe jetzt umgestellt. Zusätzlich musste ich noch die Items umstellen von
            sqlite: true auf
            database: true

            Dennoch keine Änderung:
            Code:
            2019-10-05 11:55:39 ERROR    wama_trockner logics.wama_trockner [WamaTrockner] Objekt Haustechnik.Waschmaschine with series {'series': [(1570269284653, 0.0), (1570269313171, 0.0), (1570269339024, 0.01), (1570269339151, 0.01)], 'cmd': 'series', 'update': datetime.datetime(2019, 10, 5, 11, 56, 39, 166941, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')), 'sid': 'Haustechnik.Waschmaschine.Leistung|min|5i|now|5', 'params': {'sid': 'Haustechnik.Waschmaschine.Leistung|min|5i|now|5', 'end': 'now', 'item': 'Haustechnik.Waschmaschine.Leistung', 'start': 1570269339151, 'step': 60000, 'update': True, 'func': 'min'}} -- wama_trockner.py:<module>:6
            2019-10-05 11:55:39 ERROR    wama_trockner logics.wama_trockner [WamaTrockner] Objekt Haustechnik.Trockner with series {'series': [(1570269313172, 0.0), (1570269339173, 0.0)], 'cmd': 'series', 'update': datetime.datetime(2019, 10, 5, 11, 56, 39, 174982, tzinfo=tzfile('/usr/share/zoneinfo/Europe/Berlin')), 'sid': 'Haustechnik.Trockner.Leistung|min|5i|now|5', 'params': {'sid': 'Haustechnik.Trockner.Leistung|min|5i|now|5', 'end': 'now', 'item': 'Haustechnik.Trockner.Leistung', 'start': 1570269339173, 'step': 60000, 'update': True, 'func': 'min'}} -- wama_trockner.py:<module>:6
            2019-10-05 11:55:39 ERROR    scheduler    logics.wama_trockner Logic: logics.wama_trockner, File: /usr/local/smarthome/logics/wama_trockner.py, Line: 7, Method: <module>, Exception: unorderable types: NoneType() < float() -- scheduler.py:_task:512
            > Traceback (most recent call last):
            >   File "/usr/local/smarthome/lib/scheduler.py", line 498, in _task
            >     exec(obj.bytecode)
            >   File "/usr/local/smarthome/logics/wama_trockner.py", line 7, in <module>
            >     if objekt.Leistung.db('min', '5i', 'now')<0.01:
            > TypeError: unorderable types: NoneType() < float()
            In der Datenbank sind auch nur wenige Werte:
            Code:
            time,item_id,duration,val_str,val_num,val_bool,changed
            1570269339024,7,,,0.01,1,1570269339152
            1570269313171,7,25853,,0.0,0,1570269339152
            1570269295542,7,,,0.01,1,1570269297124
            1570269284653,7,10889,,0.0,0,1570269297124
            Ich habe nicht das Gefühl, dass er die alte DB übernommen hat - obwohl die Datei weiterhin >100MB hat.


            Hier mal das Log vom ersten Start:
            Code:
            2019-10-05 11:32:55 INFO Main plugin 'database': Metadata get_plugin_function_defstrings -> '['cleanup()', 'db()', 'deleteItem(id)', 'deleteLog(id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'dump(dumpfile, id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'id(item)', 'insertItem(name, cur)', 'insertLog(id, time, duration, val, it, changed, cur)', 'readItem(id, cur)', 'readItems(id, cur)', 'readLog(id, time)', 'readLogs(id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'updateItem(id, time, duration, val, it, changed, cur)', 'updateLog(id, time, duration, val, it, changed, cur)']'
            2019-10-05 11:32:55 INFO Main plugin 'database': Metadata get_plugin_function_defstrings -> '['cleanup()', 'db()', 'deleteItem(id:int)', 'deleteLog(id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'dump(dumpfile:str, id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'id(item:foo)', 'insertItem(name:str, cur:foo)', 'insertLog(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)', 'readItem(id:int, cur:foo)', 'readItems(id:int, cur:foo)', 'readLog(id:int, time:int)', 'readLogs(id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'updateItem(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)', 'updateLog(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)']'
            2019-10-05 11:32:55 INFO Main plugin 'database': Metadata get_plugin_function_defstrings -> '['cleanup()', 'db()', 'deleteItem(id)', 'deleteLog(id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'dump(dumpfile, id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'id(item)', 'insertItem(name, cur)', 'insertLog(id, time, duration, val, it, changed, cur)', 'readItem(id, cur)', 'readItems(id, cur)', 'readLog(id, time)', 'readLogs(id, time, time_start, time_end, changed, changed_start, changed_end, cur)', 'updateItem(id, time, duration, val, it, changed, cur)', 'updateLog(id, time, duration, val, it, changed, cur)']'
            2019-10-05 11:32:55 INFO Main plugin 'database': Metadata get_plugin_function_defstrings -> '['cleanup()', 'db()', 'deleteItem(id:int)', 'deleteLog(id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'dump(dumpfile:str, id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'id(item:foo)', 'insertItem(name:str, cur:foo)', 'insertLog(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)', 'readItem(id:int, cur:foo)', 'readItems(id:int, cur:foo)', 'readLog(id:int, time:int)', 'readLogs(id:int, time:int, time_start:int, time_end:int, changed:int, changed_start:int, changed_end:int, cur:foo)', 'updateItem(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)', 'updateLog(id:int, time:int, duration:int, val:str, it:str, changed:int, cur:foo)']'
            2019-10-05 11:32:55 DEBUG Main PluginWrapper __init__: Section database, classname Database, classpath plugins.database
            2019-10-05 11:32:55 INFO Main Loading '/usr/local/smarthome/plugins/database/locale.yaml' to 'dict'
            2019-10-05 11:32:55 INFO Main Plugin 'database': Loaded plugin translations = {'Die folgenden Einträge entstammen der log Tabelle mit historischen Daten für das Item {{ item_path }} (Datenbank-ID: {{ item_id }})': {'de': 'Die folgenden Einträge entstammen der log Tabelle mit historischen Daten für das Item', 'en': 'The following entries are derived from the log table with historical data for item )'}, 'Plugin-API': {'de': '=', 'fr': '', 'en': 'Plugin API'}, 'Löschauftrag für die Einträge von Item ID': {'de': 'Löschauftrag für die Einträge von Item ID', 'en': 'Deletion of data for the entries of item ID'}, 'Datenbank-ID': {'de': 'Datenbank-ID', 'en': 'Database ID'}, 'Wollen Sie alle Datensätze ohne zugehöriges Item wirklich löschen?': {'de': '=', 'en': 'Do you really want to delete all data sets without corresponding item?'}, 'Datenbank-Cleanup': {'de': '=', 'en': 'Database Cleanup'}, 'Database Items': {'de': '=', 'fr': '', 'en': '='}, 'Anzahl Datensätze in LOG Tabelle': {'de': '=', 'en': 'Number of data sets in LOG table'}, 'Nein': {'de': 'Nein', 'en': 'No'}, 'in der Tabelle "log" wurde erfolgreich initiiert!': {'de': 'in der Tabelle "log" wurde erfolgreich initiiert!', 'en': 'in table "log" successfully initiated.'}, 'Die folgenden Einträge entstammen der log Tabelle mit historischen Daten für das Item': {'de': 'Die folgenden Einträge entstammen der log Tabelle mit historischen Daten für das Item', 'en': 'The following entries are derived from the log table with historical data for item )'}, 'Anzahl Einträge in LOG Tabelle für Item': {'de': '=', 'en': 'Number of data sets in LOG table for item'}, 'CSV Export der Werte': {'de': 'CSV Export der Werte', 'en': 'CSV Export of Values'}, 'Item ID': {'de': 'Item ID', 'en': 'Item ID'}, 'Aktionen': {'de': 'Aktionen', 'en': 'Actions'}, 'Das Löschen kann noch kurze Zeit dauern, da die Ausführung des Delete Queries erst nach Abschluß der bestehenden Transaktionen erfolgen kann.': {'de': 'Das Löschen kann noch kurze Zeit dauern, da die Ausführung des Delete Queries erst nach Abschluß der bestehenden Transaktionen erfolgen kann.', 'en': 'The deletion could take a short time, as the DELETE query will be processed after the end of already existing database transactions.'}, 'Parameter': {'de': '=', 'fr': '', 'en': 'Parameters'}, 'Ja': {'de': 'Ja', 'en': 'Yes'}, 'Loading...': {'de': '=', 'en': '='}, 'Wert löschen': {'de': 'Wert löschen', 'en': 'Delete Value'}, 'Das Löschen von Einträgen, für die es keine Items mehr gibt, kann noch kurze Zeit dauern, da die Ausführung erst nach Abschluß der bestehenden Transaktionen erfolgen kann.': {'de': '=', 'en': 'The cleanup of entries, for which no items exist anymore, can take a while, as it can only be processed after the end of already existing database transactions.'}, 'Übersicht': {'de': 'Übersicht', 'en': 'Overview'}, 'Historische Daten': {'de': 'Historische Daten', 'en': 'Historical Data'}, 'Wollen Sie die historischen Daten (Tabelle log) dieses Items wirklich löschen?': {'de': 'Wollen Sie die historischen Daten (Tabelle log) dieses Items wirklich löschen?', 'en': 'Do you really want to delete the historical data (table log) of this item?'}, 'am': {'de': 'am', 'en': 'on the'}, 'Die folgenden Items sind dieser Instanz des Database Plugins zugewiesen': {'de': 'Die folgenden Items sind dieser Instanz des Database Plugins zugewiesen', 'en': 'The following items are assigned to this instance of the database plugin'}, 'Zeit': {'de': 'Zeit', 'en': 'Time'}, 'Item-ID in der Datenbank': {'de': 'Item-ID in der Datenbank', 'en': 'Item ID within the database'}, 'Dauer': {'de': 'Dauer', 'en': 'Duration'}, 'Zeige Einträge vom': {'de': 'Zeige Einträge vom', 'en': 'Show entries from'}, 'Wollen Sie den Datensatz (Tabelle log) dieses Items wirklich löschen?': {'de': 'Wollen Sie den Datensatz (Tabelle log) dieses Items wirklich löschen?', 'en': 'Do you really want to delete the historic dataset (table log) of this item?'}, 'Geändert': {'de': 'Geändert', 'en': 'Changed'}, 'Tabelle': {'de': '=', 'en': 'Table'}, 'Aktueller Wert': {'de': '=', 'en': 'Recent Value'}, 'Wertehistorie löschen': {'de': 'Wertehistorie löschen', 'en': 'Delete Historical Data'}, 'Typ': {'de': '=', 'en': 'Type'}, 'Verbunden': {'de': 'Verbunden', 'en': 'Connected'}, 'Datensätze': {'de': 'Datensätze', 'en': 'Data Sets'}, 'Datenbank-Dump': {'de': 'Datenbank-Dump', 'en': 'Database Dump'}, 'Löschauftrag in der Tabelle "log" wurde erfolgreich initiiert!': {'de': 'Löschauftrag in der Tabelle "log" wurde erfolgreich initiiert!', 'en': 'Deletion of data set successfully initiated!'}, 'Datenbank-Cleanup wurde erfolgreich initiiert!': {'de': '=', 'en': 'Database cleanup successfully initiated!'}}
            2019-10-05 11:32:55 DEBUG Main Plugin 'Database': args = '{'driver': "'sqlite3'", 'connect': ['database:/usr/local/smarthome/var/db/smarthome.db', 'check_same_thread:0']}'
            2019-10-05 11:32:55 DEBUG Main plugin 'database': Found 'driver' with value 'sqlite3' in /etc/plugin.yaml
            2019-10-05 11:32:55 DEBUG Main plugin 'database': Found 'connect' with value '['database:/usr/local/smarthome/var/db/smarthome.db', 'check_same_thread:0']' in /etc/plugin.yaml
            2019-10-05 11:32:55 INFO Main plugin 'database': value not found in plugin configuration file for parameter 'prefix' -> using default value '' instead
            2019-10-05 11:32:55 INFO Main plugin 'database': value not found in plugin configuration file for parameter 'cycle' -> using default value '60' instead
            2019-10-05 11:32:55 INFO Main plugin 'database': value not found in plugin configuration file for parameter 'precision' -> using default value '2' instead
            2019-10-05 11:32:55 INFO Main plugin 'database': value not found in plugin configuration file for parameter 'instance' -> using default value '' instead
            2019-10-05 11:32:55 DEBUG Main Database dump next time: 2019-10-05 11:33:05+02:00
            2019-10-05 11:32:55 INFO Main Module http: Registering webinterface 'database' of plugin 'database' from pluginclass 'Database' instance ''
            2019-10-05 11:32:55 INFO Main - conf dict: '{'/gstatic': {'tools.staticdir.on': True, 'tools.staticdir.dir': '/usr/local/smarthome/modules/http/webif/gstatic'}, '/static': {'tools.staticdir.on': True, 'tools.staticdir.dir': 'static'}, '/': {'tools.auth_basic.realm': 'shng_http_webif', 'tools.auth_basic.on': False, 'tools.staticdir.root': '/usr/local/smarthome/plugins/database/webif', 'tools.auth_basic.checkpassword': <bound method Http.validate_password of <modules.http.Http object at 0x7f8e2f116550>>}}'
            2019-10-05 11:32:55 INFO Main self._applications['database'] = {'Pluginname': 'database', 'Mount': '/database', 'Conf': {'/gstatic': {'tools.staticdir.on': True, 'tools.staticdir.dir': '/usr/local/smarthome/modules/http/webif/gstatic'}, '/static': {'tools.staticdir.on': True, 'tools.staticdir.dir': 'static'}, '/': {'tools.auth_basic.realm': 'shng_http_webif', 'tools.auth_basic.on': False, 'tools.staticdir.root': '/usr/local/smarthome/plugins/database/webif', 'tools.auth_basic.checkpassword': <bound method Http.validate_password of <modules.http.Http object at 0x7f8e2f116550>>}}, 'Pluginclass': 'Database', 'Description': 'Webinterface database of plugin database', 'Webifname': 'database', 'Instance': ''}
            2019-10-05 11:32:55 DEBUG Main Plugins: Loaded plugin 'database' (class 'Database') v1.5.7: Database plugin, **seit SmartHomeNG v1.3**
            2019-10-05 11:32:55 INFO Main Initialized plugin 'database' from from section 'database'
            Das sieht doch eigentlich gut aus; ich sehe nicht, wo er sich verschluckt haben könnte.

            Gruß,
            Hendrik

            Kommentar

            Lädt...
            X