Ankündigung

Einklappen
Keine Ankündigung bisher.

Umstieg auf 1.4 " 'tzstr' object has no attribute 'hasdst'"

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

    Umstieg auf 1.4 " 'tzstr' object has no attribute 'hasdst'"

    Hallo,

    nach vermeintlich unproblematischem Umstieg auf 1.4 (von 1.2). Habe ich auf Seiten in denen ich mir in Smartvisu ein Datumsformat anzeigen will diesen Fehler im log:
    PHP-Code:
    2018-01-01 23:46:16 ERROR    __init__     Main         _websocket.json_parse exception'tzstr' object has no attribute 'hasdst' -- __init__.py:rfc6455_parse:657
    Traceback 
    (most recent call last):
      
    File "/usr/local/smarthome/plugins/visu_websocket/__init__.py"line 655in rfc6455_parse
        self
    .json_parse(payload.decode())
      
    File "/usr/local/smarthome/plugins/visu_websocket/__init__.py"line 408in json_parse
        self
    .json_send({'cmd''item''items'items})
      
    File "/usr/local/smarthome/plugins/visu_websocket/__init__.py"line 661in rfc6455_send
        data 
    json.dumps(datacls=JSONEncoderseparators=(','':'))
      
    File "/usr/lib/python3.4/json/__init__.py"line 237in dumps
        
    **kw).encode(obj)
      
    File "/usr/lib/python3.4/json/encoder.py"line 192in encode
        chunks 
    self.iterencode(o_one_shot=True)
      
    File "/usr/lib/python3.4/json/encoder.py"line 250in iterencode
        
    return _iterencode(o0)
      
    File "/usr/local/smarthome/plugins/visu_websocket/__init__.py"line 722in default
        return 
    obj.isoformat()
      
    File "/usr/local/lib/python3.4/dist-packages/dateutil/tz/_common.py"line 259in utcoffset
        isdst 
    self._isdst(dt)
      
    File "/usr/local/lib/python3.4/dist-packages/dateutil/tz/_common.py"line 341in _isdst
        
    if not self.hasdst:
    AttributeError'tzstr' object has no attribute 'hasdst' 
    Ich kann mir die Itemwerte im Backend auch nicht anzeigen lassen (lädt beim öffnen des Items ewig).
    Über die Console erhalte ich aber eine meiner Meinung nach richtiges Datum:
    PHP-Code:
    >>> sh.indego.mowedDate()
    datetime.datetime(2017115151235394857tzinfo=tzstr('CET-1CEST,M3.5.0,M10.5.0/3')) 
    Ggf. liegt es daran, dass das Datum falsch in den Item gespeichert wird, diese stammen nämlich jeweils aus eigenen Plugins von mir:

    PHP-Code:
    self._sh.return_item('indego.mowedDate')(self._sh.now(),'indego plugin'
    smartvisu ist version 2.8


    #2
    Moin,

    Zitat von Marcov Beitrag anzeigen
    Ich kann mir die Itemwerte im Backend auch nicht anzeigen lassen (lädt beim öffnen des Items ewig).
    Das klingt danach, als wäre SmartHomeNG neu gestartet worden und danach die Item Seite des Backend im Browser nicht neu geladen worden sondern nur auf ein Item geklickt worden.

    Um das Problem eingrenzen zu können bräuchte ich einige Informationen:
    • Hast Du das Update In-Place durchgeführt oder ein neues Verzeichnis erstellt?
    • Falls Du einIn-Place Update durchgeführt hast, hast Du auch ein Update der Plugins durchgeführt?
    • Was für WARNINGs oder ERRORs sind im Log zwischen dem Start von SmartHomeNG und dem von Dir geposteten Auszug aus dem Log?
    • Wie sind die von Dir angesprochenen Items definiert?
    • Wie speicherst Du die Datumsangaben in den Items?

    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Hi, danke für die Antwort

      - Ich habe ein neues Verzeichnis erstelle und 1.4 "clean" installiert und dann die relevanten Elemente in das neue Verzeichnis kopiert
      - meiner Meinung nach keine hiefür relevanten:
      PHP-Code:
      2018-01-02  00:11:38 WARNING  Main         --------------------   Init SmartHomeNG 1.4.1.master (5240008)   --------------------
      2018-01-02  00:11:44 WARNING  Main         Loaded Modules: ['http']
      2018-01-02  00:11:44 WARNING  Main         YAML-file not found: /usr/local/smarthome/plugins/MBus/plugin.yaml
      2018
      -01-02  00:11:45 WARNING  Main         CLIYou should set a password for this plugin.
      2018-01-02  00:12:12 WARNING  Main         YAML-file not found: /usr/local/smarthome/plugins/indego/plugin.yaml
      2018
      -01-02  00:12:12 WARNING  Main         YAML-file not found: /usr/local/smarthome/plugins/fritzbox/plugin.yaml
      2018
      -01-02  00:12:12 ERROR    Main         Plugin 'fritzbox' exception during import of __init__.pyNo module named 'plugins.fritzbox'
      Traceback (most recent call last):
        
      File "/usr/local/smarthome/lib/plugin.py"line 364in __init__
          exec
      ("import {0}".format(classpath))
        
      File "<string>"line 1in <module>
      ImportErrorNo module named 'plugins.fritzbox'
      2018-01-02  00:12:13 WARNING  Main         YAML-file not found: /usr/local/smarthome/plugins/enocean/plugin.yaml
      2018
      -01-02  00:12:29 WARNING  Main         KNX[default]: Ignoring monitor_statusplease add knx_dpt.
      2018-01-02  00:12:53 WARNING  Main         Item 'strom.gartenhaus.monatsverbrauch'problem parsing 'cache'.
      2018-01-02  00:12:57 WARNING  Squeezebox_Fahrradkeller.Play-eval Item Squeezebox_Fahrradkeller.Playproblem evaluating or: unexpected EOF while parsing (<string>, line 1)
      2018-01-02  00:13:12 WARNING  wassermenge.beregnung_1h Item wassermenge.beregnung_1hproblem evaluating sh.wassermenge.zaehler() - sh.wassermenge.zaehler.db('min',sh.minute.since.hour.dbstr()): string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.terrasse_rechts_an_aus.counter.heute Item ventil.terrasse_rechts_an_aus.counter.heuteproblem evaluating sh.ventil.terrasse_rechts_an_aus.counter() - sh.ventil.terrasse_rechts_an_aus.counter.db('min',sh.minute.since.midnight.dbstr()): string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.terrasse_rechts_an_aus.menge.heute Item ventil.terrasse_rechts_an_aus.menge.heuteproblem evaluating sh.ventil.terrasse_rechts_an_aus.db('on',sh.minute.since.midnight.dbstr())*sh.minute.since.midnight()*5string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.terrasse_links_an_aus.counter.heute Item ventil.terrasse_links_an_aus.counter.heuteproblem evaluating sh.ventil.terrasse_links_an_aus.counter() - sh.ventil.terrasse_links_an_aus.counter.db('min',sh.minute.since.midnight.dbstr()): string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.terrasse_links_an_aus.menge.heute Item ventil.terrasse_links_an_aus.menge.heuteproblem evaluating sh.ventil.terrasse_links_an_aus.db('on',sh.minute.since.midnight.dbstr())*sh.minute.since.midnight()*5string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.unten_an_aus.counter.heute Item ventil.unten_an_aus.counter.heuteproblem evaluating sh.ventil.terrasse_unten_an_aus.counter() - sh.ventil.terrasse_unten_an_aus.counter.db('min',sh.minute.since.midnight.dbstr()): 'Item' object has no attribute 'terrasse_unten_an_aus'
      2018-01-02  00:13:12 WARNING  ventil.unten_an_aus.menge.heute Item ventil.unten_an_aus.menge.heuteproblem evaluating sh.ventil.unten_an_aus.db('on',sh.minute.since.midnight.dbstr())*sh.minute.since.midnight()*5string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.vorgarten_an_aus.counter.heute Item ventil.vorgarten_an_aus.counter.heuteproblem evaluating sh.ventil.vorgarten_an_aus.counter() - sh.ventil.vorgarten_an_aus.counter.db('min',sh.minute.since.midnight.dbstr()): string index out of range
      2018
      -01-02  00:13:12 WARNING  ventil.vorgarten_an_aus.menge.heute Item ventil.vorgarten_an_aus.menge.heuteproblem evaluating sh.ventil.vorgarten_an_aus.db('on',sh.minute.since.midnight.dbstr())*sh.minute.since.midnight()*5string index out of range
      2018
      -01-02  00:13:12 WARNING  Enocean.Hoppe.Waschkueche.kipp Item Enocean.Hoppe.Waschkueche.kippproblem evaluating true if sh.Enocean.Hoppe.Waschkueche.Status()  == else Falsename 'true' is not defined
      2018
      -01-02  00:13:12 WARNING  ventilation.thermal_efficiency.efficiency Item ventilation.thermal_efficiency.efficiencyproblem evaluating round((sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp()) / (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._outside_temp()) * 100): division by zero
      2018
      -01-02  00:13:13 WARNING  Aussen.Markise.Status Item Aussen.Markise.Statusproblem evaluating 0 if sh.Aussen.Markise.Position() = else 1invalid syntax (<string>, line 1)
      2018-01-02  00:13:13 WARNING  strom.kwh1h  Item strom.kwh1hproblem evaluating (sh.Wohnzimmer.ZaehlerstandBeamer()- sh.Wohnzimmer.ZaehlerstandBeamer.db('min''1h')): 'Item' object has no attribute 'ZaehlerstandBeamer'
      2018-01-02  00:13:14 ERROR    WMZ0.Connection.last_update Method WMZ0.Connection.last_update exception'tzstr' object has no attribute 'hasdst'
      Traceback (most recent call last):
        
      File "/usr/local/smarthome/lib/scheduler.py"line 451in _task
          obj
      (**value)
        
      File "/usr/local/smarthome/lib/item.py"line 771in __run_eval
          self
      .__update(valuecallersourcedest)
        
      File "/usr/local/smarthome/lib/item.py"line 840in __update
          
      if value != self._value:
        
      File "/usr/local/lib/python3.4/dist-packages/dateutil/tz/_common.py"line 259in utcoffset
          isdst 
      self._isdst(dt)
        
      File "/usr/local/lib/python3.4/dist-packages/dateutil/tz/_common.py"line 341in _isdst
          
      if not self.hasdst:
      AttributeError'tzstr' object has no attribute 'hasdst' 
      - als foo:
      PHP-Code:
      [indego]
          [[
      mowedDate]]
              
      type foo
              cache 
      on 
      - ich speichere es im Plugin so:
      PHP-Code:
      self._sh.return_item('indego.mowedDate')(self._sh.now(),'indego plugin'

      Kommentar


        #4
        Im Log fallen mir erstmal einige Sachen auf, die schon in SmartHomeNG v1.2 nicht funktioniert haben können (die haben aber nichts mit Deinem Dat Problem zu tun):
        • Ein Plugin fritzbox hat es bei uns nie gegeben. Die letzten Versionen hatte Marcos Popp nicht unter gpl gestellt. Daher haben wir bereits mit dem ersten Release ein eigenes Plugin avm ausgeliefert.
        • Das enocean Plugin ist nicht aktuell oder nicht das mit dem Release ausgelieferte Plugin. (das Plugin aus dem Release enthält Metadaten (die plugin.yaml im Plugin Verzeichnis)
        • Diverse eval Ausdrücke in Item Definitionen werfen Warnungen:
          • unvollständiger Ausdruck
          • Beim Vergleich ein = statt ==
          • diverse Meldungen die sich auf Datenbank Abfragen beziehen: Nutzt Du das richtige sqlite Plugin für die smartVISU Version die Du einsetzt?
          • ...

        Mir ist nicht klar was self._sh.now(),'indego plugin' genau in das Item schreiben soll.

        Auf jeden Fall beschwert sich Python, dass bei einem Vergleich innerhalb der Item Wertzuweisung entweder der alte oder der neue Wert kein gültiger Datumswert ist (dem Objekt tzstr fehlt das Attribut hasdst)

        Das sieht im Moment so aus, als würdest Du einem Item Wert ein Python Objekt zuweisen.
        Zuletzt geändert von Msinn; 02.01.2018, 14:17.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Hi, ja Du hast recht - ich muss mal etwas aufräumen. Das Fritzbox Plugin habe ich eigentlich nicht im Einsatz, es steht aber noch in der Plugin.conf.
          Bei Enocean habe ich mir ein EEP hinzugefügt, deshalb nutze ich nicht die aktuelle Version dieses Plugins.
          Mit den Datenbankrechnereien habe ich das Problem, dass SQLITE ja keine 0-Werte speichert und dann ggf. für den abgefragten Zeitraum NoneType Werte zurückgibt, mit denen dann nicht gerechnet werden kann. Siehe hier: https://knx-user-forum.de/forum/supp...nonetype/page2 (soll aber jetzt nicht Thema sein)

          self._sh.now() liefert die aktuelle Datetime zurück, mit "self._sh.return_item('indego.mowedDate')(self._sh.now(),'indego plugin') schreibe ich also die aktuelle DateTime als Wert für das Item indego.mowedDate, dies hat in 1.2 auch funktioniert. Das Item hat bei Abfrage im interaktiven Modus meiner Meinung nach auch ein richtiges Format "datetime.datetime(2017, 11, 5, 15, 12, 35, 394857, tzinfo=tzstr('CET-1CEST,M3.5.0,M10.5.0/3'))" oder hat sich hieran etwas geändert?

          Kommentar


            #6
            Hallo @Marcov,

            neue Enocean EEPs kannst Du gerne per Pullrequest oder PM an mich senden. Wir fügen Sie dann unkompliziert ein.

            Viele Grüße
            Alex

            Kommentar


              #7
              Hi Alex,

              danke - habe ich glaube ich schon mal gemacht, dort ist aber noch ein recht unsauberer Teach-In Prozess drin, ggf. hast Du es deshalb nicht mit ins Plugin genommen?!
              Ich sende es Dir gerne gleich noch mal.

              Gruß Marco

              EDIT: gerade gesehen, dass Du mir darauf mit Hausaufgabgen geantwortet hast - die versuche ich schnell zu erledigen und sende Sie dann noch mal.
              Zuletzt geändert von Marcov; 03.01.2018, 23:07.

              Kommentar


                #8
                Sorry fürs pushen, aber kann mir jemand sagen, wie eine valide Datums / Zeitangabe für die 1.4. Version auszusehen hat? Mein Item mit "datetime.datetime(2017, 11, 5, 15, 12, 35, 394857, tzinfo=tzstr('CET-1CEST,M3.5.0,M10.5.0/3' geht in 1.4. nicht mehr.

                Kommentar


                  #9
                  Zitat von Marcov Beitrag anzeigen
                  Sorry fürs pushen
                  Da musst Du Dich pushen. Ohne weiter Infos könnte ich nur raten.
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Ohne zu wissen, welche weiteren Infos für meine obige, meiner Meinung nach sehr konkrete Frage relevant gewesen wären, habe ich das Problem anscheinend behoben, indem ich die alten Cache Dateien mit Datumswerten gelöscht habe.

                    Ich bin jetzt nicht sicher, ob es irgendwo in der Anleitung steht, ggf. sollte man hinzufügen, dass man die Cache Dateien besser nicht in eine Neuinstallation übernimmt?!

                    Kommentar


                      #11
                      ich habe die bisher immer übernommen und noch nie probleme gehabt..
                      und das nicht nur zw. releases (auf meinen verteilten raspis), so sondern auch zw. einzelnen commits (auf meiner dev instanz)

                      Kommentar


                        #12
                        Hi, ja ich auch, obwohl das Format unverändert ist, hat es nach dem löschen der Cache-Einträge sofort funktioniert.
                        Vorher hat er sogar dei threads des plugins, die die Items beschreiben wollten nicht sauber beendet.

                        Kommentar

                        Lädt...
                        X