Ankündigung

Einklappen
Keine Ankündigung bisher.

Python 3.2 Migration in develop bzw. 1.0 Release

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

  • Robert
    antwortet
    *Meldung*

    Code:
    2013-10-11 21:59:08,436 INFO     System       System.Smarthome.Laufzeit = 0h 25m via Logic None -- item.py:_update:254
    2013-10-11 21:59:08,438 INFO     System       Threads (8): Scheduler: 1, System: 1, Main: 1, 1w-io: 1, idle: 3, 1w-sen: 1 -- system.py:<module>:23
    2013-10-11 21:59:08,472 INFO     System       Objects (Top 10): tuple: 92, WeakSet: 113, ExtensionFileLoader: 114, str: 151, SourceFileLoader: 161, BaseException: 196, Exception: 244, Item: 474, Condition: 507, object: 1439 -- system.py:<module>:44
    gc: collectable <FeedParser 0x7f52bd22a310>
    gc: collectable <cell 0x7f52bd22b520>
    gc: collectable <dict 0x7f52bd2f5320>
    gc: collectable <tuple 0x7f52bd246210>
    gc: collectable <function 0x7f52bcfd6320>
    gc: collectable <BufferedSubFile 0x7f52bd22a390>
    gc: collectable <list 0x7f52bd2215f0>
    gc: collectable <dict 0x7f52bd2ab320>
    gc: collectable <list 0x7f52bd2ab050>
    gc: collectable <list 0x7f52bd2ab128>
    gc: collectable <generator 0x7f52bcfcd370>
    gc: collectable <method-wrapper 0x7f52bd22a150>
    gc: collectable <HTTPMessage 0x7f52bd22a290>
    gc: collectable <dict 0x7f52bcf11320>
    gc: collectable <list 0x7f52bd2ab248>
    gc: collectable <list 0x7f52bd2ab098>
    2013-10-11 21:59:08,495 WARNING  System       Garbage: [<email.feedparser.FeedParser object at 0x7f52bd22a310>, <cell at 0x7f52bd22b520: FeedParser object at 0x7f52bd22a310>, {'_headersonly': False, '_parse': <method-wrapper '__next__' of generator object at 0x7f52bcfcd370>, '_factory': <class 'http.client.HTTPMessage'>, 'policy': Compat32(), '_cur': None, '_msgstack': [], '_input': <email.feedparser.BufferedSubFile object at 0x7f52bd22a390>, '_factory_kwds': <function FeedParser.__init__.<locals>.<lambda> at 0x7f52bcfd6320>, '_last': <http.client.HTTPMessage object at 0x7f52bd22a290>}, (<cell at 0x7f52bd22b520: FeedParser object at 0x7f52bd22a310>,), <function FeedParser.__init__.<locals>.<lambda> at 0x7f52bcfd6320>, <email.feedparser.BufferedSubFile object at 0x7f52bd22a390>, [], {'_partial': '', '_closed': True, '_lines': [], '_eofstack': []}, [], [], <generator object _parsegen at 0x7f52bcfcd370>, <method-wrapper '__next__' of generator object at 0x7f52bcfcd370>, <http.client.HTTPMessage object at 0x7f52bd22a290>, {'_payload': '', 'defects': [], 'epilogue': None, '_unixfrom': None, '_headers': [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 19:44:37 GMT'), ('Content-Type', 'text/xml; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:quic')], '_charset': None, 'policy': Compat32(), '_default_type': 'text/plain', 'preamble': None}, [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 19:44:37 GMT'), ('Content-Type', 'text/xml; charset=utf-8'), ('Transfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:quic')], []] -- system.py:<module>:53
    2013-10-11 21:59:08,496 DEBUG    System       Load: 0.01, 0.03, 0.05 -- system.py:<module>:58
    2013-10-11 21:59:08,497 INFO     System       System.Last = 0.03 via Logic None -- item.py:_update:254
    2013-10-11 21:59:08,509 INFO     System       System.Laufzeit = 3d 12h 58m via Logic None -- item.py:_update:254
    Wieder kam die eMail korrekt an. Das einzige was evtl. auch noch reinspielen könnte: Momentan scheint sh.py die Zeitzone nicht richtig zu haben. Die eMail ist von 21:44, das (Debug-)log zeigt auch korrekt die Zeiten, aber in dem Garbage-Dump und auch die contabs werden jeweils zwei Stunden zu früh angezeigt/ausgeführt...

    Viele Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    ich kann das Problem leider nicht nachstellen. Ich habe aber den Code an der Stelle robuster gemacht.

    Melde Dich bitte, falls es nach einem Update noch einmal passiert.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    danke, werde ich mir näher ansehen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hi!

    Scheinbar gibt es im Mail-Plugin ein Memleak!?

    Code:
    2013-10-11 13:09:31 INFO     System       System.Smarthome.Laufzeit = 1h 10m via Logic None
    2013-10-11 13:09:31 INFO     System       Threads (8): idle: 4, Main: 1, 1w-io: 1, System: 1, Scheduler: 1
    2013-10-11 13:09:31 INFO     System       Objects (Top 10): tuple: 92, WeakSet: 107, ExtensionFileLoader: 109, str: 151, SourceFileLoader: 156, BaseException:   193, Exception: 239, Item: 457, Condition: 488, object: 1424
    2013-10-11 13:09:31 WARNING  System       Garbage: [<email.feedparser.FeedParser object at 0x7ff27ce60a10>, <cell at 0x7ff27cee7a60: FeedParser object at 0x7ff  27ce60a10>, {'policy': Compat32(), '_factory_kwds': <function FeedParser.__init__.<locals>.<lambda> at 0x7ff27cf367a0>, '_cur': None, '_last': <http.client.HTT  PMessage object at 0x7ff27ceae090>, '_factory': <class 'http.client.HTTPMessage'>, '_headersonly': False, '_msgstack': [], '_parse': <method-wrapper '__next__'   of generator object at 0x7ff27ced5af0>, '_input': <email.feedparser.BufferedSubFile object at 0x7ff27ce64d90>}, (<cell at 0x7ff27cee7a60: FeedParser object at   0x7ff27ce60a10>,), <function FeedParser.__init__.<locals>.<lambda> at 0x7ff27cf367a0>, <email.feedparser.BufferedSubFile object at 0x7ff27ce64d90>, [], {'_eof  stack': [], '_closed': True, '_lines': [], '_partial': ''}, [], [], <generator object _parsegen at 0x7ff27ced5af0>, <method-wrapper '__next__' of generator obj  ect at 0x7ff27ced5af0>, <http.client.HTTPMessage object at 0x7ff27ceae090>, {'policy': Compat32(), '_charset': None, 'preamble': None, '_default_type': 'text/p  lain', 'epilogue': None, '_headers': [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 11:03:01 GMT'), ('Content-Type', 'text/xml; charset=utf-8'), ('Tra  nsfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:quic')], '_un  ixfrom': None, 'defects': [], '_payload': ''}, [('Server', 'nginx/0.8.55'), ('Date', 'Fri, 11 Oct 2013 11:03:01 GMT'), ('Content-Type', 'text/xml; charset=utf-  8'), ('Transfer-Encoding', 'chunked'), ('Connection', 'keep-alive'), ('Vary', 'Accept-Encoding'), ('Cache-Control', 'private'), ('Alternate-Protocol', '443:qui  c')], []]
    2013-10-11 13:09:31 INFO     System       System.Last = 0.04 via Logic None
    2013-10-11 13:09:31 INFO     System       System.Laufzeit = 3d 4h 8m via Logic None
    Die betreffende eMail wurde in der Tat um 13:01/13:03 erfolgreich versendet (über T-Online), hatte einen Umlaut drin (falls es da hängen könnte), der aber auch korrekt angezeigt wurde.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von mknx Beitrag anzeigen
    Generell ist ist es nun 'böse' in der Config ' oder " zu verwenden um Strings zu umschließen. Mal sehen ob mir da noch eine gute Lösung dazu einfällt.
    Mir ist eine gute Lösung eingefallen. Die ist eingecheckt.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • mode
    antwortet
    Ok ein dir(sh) hat gezeigt dass das ArtNet Plugin nicht geladen wurde weil in der config '' um eine IP Adresse positioniert war.

    Diese Neuerung fällt mir jetzt hoffentlich nicht mehr auf die Füsse ;-)

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Mike,

    danke für die XBMC Fixes.

    Zitat von mode Beitrag anzeigen
    Etwas funktioniert nicht mehr bei mir:
    Plugin aus Logik direkt aufrufen:

    Wahrscheinlich ist der Aufruf nun anders.
    da hat sich nichts geändert. Und es gibt vorher keine Fehlermeldung bzgl. dmx1 im Log?

    Generell ist ist es nun 'böse' in der Config ' oder " zu verwenden um Strings zu umschließen. Mal sehen ob mir da noch eine gute Lösung dazu einfällt.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • mode
    antwortet
    Hab noch etwas gefunden wobei ich mir nicht sicher bin ob es ein Bug ooder ein Feature ist ;-)
    Wird einem Attribut eines Items ein String zugwiesen:
    Code:
    [test]
        [[gesamt]]
            type       = num
            vz_uuid    = "Kauderwelsch"
    So enthält .conf['vz_uuid'] den Wert "Kauderwelsch" mit Anführungszeichen. Vor zwei Tagen war noch der Wert ohne Anführungszeichen enthalten.


    Edit: Scheint der gleiche Fehler wie in Post #125 zu sein

    Einen Kommentar schreiben:


  • mode
    antwortet
    Etwas funktioniert nicht mehr bei mir:
    Plugin aus Logik direkt aufrufen:

    Wahrscheinlich ist der Aufruf nun anders.

    logik.py
    Code:
    sh.dmx1(3,255)
    plugin.conf
    Code:
    [dmx1]
        class_name = ArtNet
        class_path = plugins.artnet
        artnet_subnet = 0
        artnet_net = 0
        artnet_universe = 0
        ip = '192.168.1.2'
        port = 6454
    Log
    Code:
    2013-10-09 16:24:27,014 ERROR    Logi_Init    Logic: Logi_Init, File: logi_init.py, Line: 3, Method: <module>, Exception: 'SmartHome' object has no attribute 'dmx1' -- scheduler.py:_task:334
    Traceback (most recent call last):
      File "/home/mode/smarthome/lib/scheduler.py", line 327, in _task
        exec(obj.bytecode)
      File "logi_init.py", line 3, in <module>
    AttributeError: 'SmartHome' object has no attribute 'dmx1'

    Einen Kommentar schreiben:


  • mike
    antwortet
    Ansonsten habe ich noch das hier als einfachen Fix für xbmc:

    Code:
    diff --git a/plugins/xbmc/__init__.py b/plugins/xbmc/__init__.py
    index a9fee48..ed7f46c 100755
    --- a/plugins/xbmc/__init__.py
    +++ b/plugins/xbmc/__init__.py
    @@ -62,7 +62,7 @@ class xbmc(lib.connection.Client):
             else:
                 port = 9090
             host = item.conf['xbmc_host']
    -        lib.connetion.Client.__init__(self, host, port, monitor=True)
    +        lib.connection.Client.__init__(self, host, port, monitor=True)
             self.terminator = b'}'
             self._sh = smarthome
             self._id = 1
    und dann hier noch kleine Änderungen am xbmc-Plugin:
    * es wird nicht mehr immer davon ausgegangen, dass alle Features genutzt werden (z.B. Zugriff auf 'media'-Items)
    * ist der titel nicht gesetzt, wird ein evtl. vorhandenes Label übernommen
    Code:
    diff --git a/plugins/xbmc/__init__.py b/plugins/xbmc/__init__.py
    index eed39bd..1913e94 100755
    --- a/plugins/xbmc/__init__.py
    +++ b/plugins/xbmc/__init__.py
    @@ -142,8 +142,10 @@ class xbmc(lib.connection.Client):
                     self._items['state']('Pause', 'XBMC')
                 elif event['method'] == 'Player.OnStop':
                     self._items['state']('Menu', 'XBMC')
    -                self._items['media']('', 'XBMC')
    -                self._items['title']('', 'XBMC')
    +                if 'media' in self.items:
    +                    self._items['media']('', 'XBMC')
    +                if 'title' in self.items:
    +                    self._items['title']('', 'XBMC')
                 if event['method'] in ['Player.OnPlay']:
                     # use a different thread for event handling
                     self._sh.trigger('xmbc-event', self._parse_event, 'XBMC', value={'event': event})
    @@ -162,10 +164,14 @@ class xbmc(lib.connection.Client):
                 if typ == 'video':
                     result = self._send('Player.GetItem', {"properties": ["title"], "playerid": playerid}, "VideoGetItem")['result']
                     title = result['item']['title']
    +                if title == '' and 'label' in result['item']:
    +                    title = result['item']['label']
                     typ = result['item']['type']
    -                self._items['media'](typ.capitalize(), 'XBMC')
    +                if 'media' in self._items:
    +                    self._items['media'](typ.capitalize(), 'XBMC')
                 elif typ == 'audio':
    -                self._items['media'](typ.capitalize(), 'XBMC')
    +                if 'media' in self._items:
    +                    self._items['media'](typ.capitalize(), 'XBMC')
                     result = self._send('Player.GetItem', {"properties": ["title", "artist"], "playerid": playerid}, "AudioGetItem")['result']
                     artist = result['item']['artist'][0]
                     title = artist + ' - ' + result['item']['title']
    @@ -175,4 +181,5 @@ class xbmc(lib.connection.Client):
                 else:
                     logger.warning("Unknown type: {0}".format(typ))
                     return
    -            self._items['title'](title, 'XBMC')
    +            if 'title' in self._items:
    +                self._items['title'](title, 'XBMC')
    Grüße
    Mike

    Einen Kommentar schreiben:


  • mike
    antwortet
    Zitat von mknx Beitrag anzeigen
    Lass mal die Anführungszeichen weg. Fix ich heute Abend.
    Ohne Anführungszeichen funktioniert es.

    Danke und Grüße
    Mike

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Python 3.2 Migration in develop bzw. 1.0 Release

    Lass mal die Anführungszeichen weg. Fix ich heute Abend.

    Einen Kommentar schreiben:


  • mike
    antwortet
    Hallo,

    bei mir kommt jetzt kurz nach dem Start die Meldung:
    Code:
    >>> Exception in thread Main:
    Traceback (most recent call last):
      File "/usr/lib/python3.2/threading.py", line 740, in _bootstrap_inner
        self.run()
      File "/usr/lib/python3.2/threading.py", line 693, in run
        self._target(*self._args, **self._kwargs)
      File "/usr/smarthome/bin/smarthome.py", line 338, in start
        self._logics = lib.logic.Logics(self, configfile=self._logic_conf)
      File "/usr/smarthome/lib/logic.py", line 50, in __init__
        self._sh.scheduler.add(name, logic, logic.prio, logic.crontab, logic.cycle)
      File "/usr/smarthome/lib/scheduler.py", line 223, in add
        self._next_time(name, offset)
      File "/usr/smarthome/lib/scheduler.py", line 279, in _next_time
        if ct < next_time:
    TypeError: can't compare offset-naive and offset-aware datetimes
    Ich habe da schon mal hinterhergetraced und festgestellt, dass bei
    Code:
    tz = 'Europe/Berlin'
    in etc/smarthome.conf von dateutil.tz.gettz (in bin/smarthome.py) ein None geliefert wird.

    Platform ist Raspberry Pi.

    Hat jemand eine Idee?

    Grüße
    Mike

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Bitte schön!

    Gut, gleich das ganze gesplitte/gejoine mit der eh vorhandenen Liste zu umgehen ist wohl effizienter.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    Zitat von Robert Beitrag anzeigen
    Habe leider Probleme mit crontab-Einträgen nach der Konvertierung:
    ja, da gab es ein Problem. Ist gefixed. Dein Fix ist ein Teil der Lösung.

    Ich habe geraden noch einmal massiv an der Performance-Schraube gedreht.
    Schneller geht es nicht.

    Bis bald

    Marcus

    Einen Kommentar schreiben:

Lädt...
X