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

  • JNK
    antwortet
    Code:
    [noah]
        [[klima]]
             [[[heizung]]]
                  [[[[modus]]]]
                      [[[[[nacht]]]]]
                          type = bool
                          knx_dpt = 1
                          knx_send = 4/0/106
                          crontab = 30 5 * * = 0 | 30 19 * * = 1
    Code:
     noah.klima.heizung.modus.nacht Item 'noah.klima.heizung.modus.nacht': value (1,30 5 * * = 0) does not match 
    type (bool). Via Scheduler None -- item.py:__call__:230
    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hi Jan,

    ich schau mir das einmal näher an.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    Zitat von Robert Beitrag anzeigen
    da momentan der WAF leidet...
    das tut mir Leid. Kann ich nachvollziehen ich verbringen momentan auch sehr viele Zeit vor dem Computer.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von mknx Beitrag anzeigen
    deaktiviere bitte die System-Logik von mir.
    Gemacht, hatte ich schon gesehen und auf meiner Liste.

    Zitat von mknx Beitrag anzeigen
    Kannst Du mir evtl. das komplette Log zur Verfügung stellen (z.B. Webserver).
    Leider nein, hatte die 2,7 GB (sic!) entsorgt.

    Zitat von mknx Beitrag anzeigen
    bzgl des NMA Plugins, war es schon vorher identisch mit dem Prowl Plugin?
    Und wie lauten die Fehlermeldungen, bevor der Garbage erzeugt wird?
    Vorher war es schon quasi-identisch, bei der Adaption für Python3 habe ich es fast komplett übernommen. Jetzt habe ich den Code sogar noch gleich sortiert um Abweichungen zu finden. Evtl. sollten die Plugins als "Notification"-Plugin zusammengefasst werden?
    Fehlermeldungen gibt es keine! D.h. die Exception tritt nicht auf, genauso wenig wie HTTP-Fehlercodes. Hatte es jetzt erstmal deaktiviert, da momentan der WAF leidet...

    Ich habe noch zwei Meldungen aufgetan, die als "Errors" deklariert sind, aber scheinbar keine weiteren Folgen haben:
    Code:
    2013-10-15 12:51:37 ERROR    Main         WebSocketHandler: [Errno 110] Die Wartezeit für die Verbindung ist abgelaufen
    2013-10-15 12:51:37 ERROR    Main         Connections: 14
    2013-10-15 18:23:47 ERROR    Main         WebSocketHandler: [Errno 110] Die Wartezeit für die Verbindung ist abgelaufen
    2013-10-15 18:23:47 ERROR    Main         Connections: 14
    Viele Grüße
    Robert

    Einen Kommentar schreiben:


  • JNK
    antwortet
    Hab ich was verpasst und das Config-Format hat sich geändert, oder geht da was schief?

    Code:
    [wez]
        [[fenster]]
            [[[garten]]]
                [[[[rolllade]]]]
                    [[[[[position]]]]]
                        type = num
                        visu = yes
                        knx_dpt = 5.001
                        knx_cache = 3/1/150
                        knx_send = 3/0/150
                        crontab = 30 21 * * = 100 | 0 7 * 0,1,2,3,4 = 0
    daraus macht der Scheduler:

    Code:
    2013-10-14 21:57:58,857 DEBUG    Main         wez.fenster.strasse.rolllade.position next time: 2013-10-15 21:30:00+02:00 -- scheduler.py:_next_time:289
    Und vergisst dann auch die Rollläden hochzufahren. Nebenbei:

    Code:
                        crontab = 21:30<sunset+60m = 100 | 0 7 * 0,1,2,3,4 = 0
    fährt die Rollläden nie herunter. Und ein (zugegeben fehlerhaftes)

    Code:
                        crontab = 21:30 = 100 | 0 7 * 0,1,2,3,4 = 0
    löst eine Exception aus und dann geht nix mehr.

    Gruss,

    der Jan

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Kann auch mein Speicher-Problem damit zusammenhängen?
    Momentan sieht's gut aus...

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von mknx Beitrag anzeigen
    Ich denke, ich habe gerade ein Problem bzgl der ausufernden WorkerThreads gefunden. Mal sehen.
    Oh ja, das war ein böser Bug. Er sollte nun weg sein.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    deaktiviere bitte die System-Logik von mir. In develop gibt es einen Item Bereich "env" der die entsprechenden Informationen generiert. Darin sollte auch das Problem der selbst referenzierenden Warnings behoben sein.

    Kannst Du mir evtl. das komplette Log zur Verfügung stellen (z.B. Webserver).
    Mit den Schnipseln kann ich nur sehr schwer Zusammenhänge erkennen.

    bzgl des NMA Plugins, war es schon vorher identisch mit dem Prowl Plugin?
    Und wie lauten die Fehlermeldungen, bevor der Garbage erzeugt wird?

    Ich denke, ich habe gerade ein Problem bzgl der ausufernden WorkerThreads gefunden. Mal sehen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Ich habe leider immer noch diverse Probleme mit der Stabilität...

    Ein Problem: Die Garbage-Collection scheint sich irgendwie selber zu replizieren. Es werden immer mehr Backticks ('\') den eigentlichen Objekten voran- und nachgestellt, so dass ich jetzt zum dritten mal Log-Dateien von über 2GB hatte, die dann zum Exitus führten. Also nicht (nur) fehlender Speicher, sondern sh.py schreibt sich nen Wolf...

    Dann habe ich noch:
    Code:
    2013-10-13 23:59:39 ERROR    series       SQLite: problem generating series value: '[]': list index out of range
    Traceback (most recent call last):
      File "/usr/local/smarthome/plugins/sqlite/__init__.py", line 336, in _series
        lval = tuples[-1][1]
    IndexError: list index out of range
    danach gehen die workerthreads hoch bis Stillstand.

    Was das Speicherleck im NMA-Plugin angeht:

    MIttlerweile ist das NMA-Plugin quasi eine Kopie des Prowl-Plugins (evtl. könnte man das doch über zwei Parametersätze in einem Dict zusammenfassen?):

    PHP-Code:
    #!/usr/bin/env python3
    # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
    #########################################################################
    # Copyright 2011 KNX-User-Forum e.V.            https://knx-user-forum.de/
    #########################################################################
    #  This file is part of SmartHome.py.   http://smarthome.sourceforge.net/
    #
    #  SmartHome.py is free software: you can redistribute it and/or modify
    #  it under the terms of the GNU General Public License as published by
    #  the Free Software Foundation, either version 3 of the License, or
    #  (at your option) any later version.
    #
    #  SmartHome.py is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with SmartHome.py. If not, see <http://www.gnu.org/licenses/>.
    #########################################################################

    import logging
    import urllib
    .parse
    import http
    .client

    logger 
    logging.getLogger('NMA')


    class 
    NMA():
        
    _host 'www.notifymyandroid.com'
        
    _api '/publicapi/notify'

        
    def __init__(selfsmarthomeapikey=None):
            
    self._apikey apikey
            self
    ._sh smarthome

        def run
    (self):
            
    pass

        def stop
    (self):
            
    pass

        def __call__
    (selfevent=''description=''priority=Noneurl=Noneapikey=Noneapplication='SmartHome'):
            
    data = {}
            
    headers = {'User-Agent'"SmartHome.py"'Content-Type'"application/x-www-form-urlencoded"}
            
    data['event'] = event[:1000].encode()
            
    data['description'] = description[:1000].encode()
            
    data['application'] = application[:256].encode()
            if 
    apikey:
                
    data['apikey'] = apikey
            
    else:
                
    data['apikey'] = self._apikey
            
    if priority:
                
    data['priority'] = priority
            
    if url:
                
    data['url'] = url[:2000]
            try:
                
    conn http.client.HTTPSConnection(self._hosttimeout=4)
                
    conn.request("POST"self._apiurllib.parse.urlencode(data), headers)
                
    resp conn.getresponse()
                
    conn.close()
                if (
    resp.status == 200):
                    
    logger.debug("NMA returns: Notification submitted.")
                
    elif (resp.status == 400):
                    
    logger.warning("NMA returns: The data supplied is in the wrong format, invalid length or null.")
                
    elif (resp.status == 401):
                    
    logger.warning("NMA returns: None of the API keys provided were valid.")
                
    elif (resp.status == 402):
                    
    logger.warning("NMA returns: Maximum number of API calls per hour exceeded.")
                
    elif (resp.status == 500):
                    
    logger.warning("NMA returns: Internal server error. Please contact our support if the problem persists.")
                else:
                    
    logger.error("NAME returns unknown HTTP status code = {0}".format(p.getcode()))
            
    except Exception as e:
                
    logger.warning("Could not send NMA notification: {0}. Error: {1}".format(evente)) 
    Wie kann da was über bleiben? Bzw. wenn, dann müsste das Prowl-Plugin auch Probleme haben!?

    Ist evtl. das conn.close(9 ein Problem, wenn es vorher schon eine Exception gab? Allerdings habe ich im ganzen Log keine Fehlermeldung (Exception bzw. Teilstring der Fehlermeldung).

    Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo,

    @Robert: Entschuldige bitte, ich habe Deinen 'Bug-Report' falsch interpretiert.

    Ich habe den Timezone Bug gefixed.

    Weiterhin habe ich die sqlite series robuster gemacht. Das sollte nicht mehr zum Stop führen.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Zitat von JNK Beitrag anzeigen
    Also irgendwas ist aber bei der Timezone schon schief. Ein Item-Crontab 19:15 wird als 19:15:00+00 im Scheduler eingetragen und auch nicht um 19:15 Lokalzeit ausgeführt. Fände ich aber richtig.
    Ack.

    Wie gesagt, crontab ist (45 5 * 1,2,3,4,5), aber wird erst um 7:45 ausgeführt. Gleiches mit dem Verriegeln der Haustür um 21 Uhr -> 23 Uhr. Hatte schon ein dpkg-reconfigure tzdata gemacht - ist aber alles korrekt!?

    Einen Kommentar schreiben:


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

    Also irgendwas ist aber bei der Timezone schon schief. Ein Item-Crontab 19:15 wird als 19:15:00+00 im Scheduler eingetragen und auch nicht um 19:15 Lokalzeit ausgeführt. Fände ich aber richtig.

    Gruß,

    der Jan

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Zitat von Robert Beitrag anzeigen
    Code der eMail und NMA aufruft:
    na, das Speicherleck ist in dem NMA Plugin! Fix erst einmal das, dann sehen wir weiter ob bei dem Mail-Versenden noch ein Problem ist.
    Du kannst ja mal lib/tools.py fetch_url ansehen, oder verwenden.

    Bis bald

    Marcus

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Hi Marcus,

    vielen Dank für deine Hilfe!

    Code der eMail und NMA aufruft:

    PHP-Code:
    # check if presence changed to true while all entrances were locked
    if ('Anwesenheit' in trigger['source']) and sh.Ueberwachung.Anwesenheit() and sh.Ueberwachung.Verriegelung.Alle():
        
    sh.mail('robert.bxxxxx@gmx.net''Bewegung ohne Öffnung''Bewegung ohne Öffnung')
        
    sh.nma('Bewegung ohne Öffnung''Bewegung ohne Öffnung'
    Ist halt nix drin außer Umlauten. Habe jetzt gerade noch mal geupdated - außer boxcar und artnet kam da aber nix...

    Dann ein frischer Bug:

    Code:
    2013-10-12 05:03:41 ERROR    series       Problem updating series for {'update': True, 'item': 'Wechselrichter.DC_Leistung_String2', 'sid': 'Wechselrichter.DC_Leistung_String2|avg|1d|now', 'func': 'avg', 'end': 'now', 'step': 0, 'start': 1381543311185}: list index out of range
    Traceback (most recent call last):
      File "/usr/local/smarthome/plugins/visu/__init__.py", line 234, in update_series
        reply = self.items[series['params']['item']].series(**series['params'])
      File "/usr/local/smarthome/plugins/sqlite/__init__.py", line 329, in _series
        lval = tuples[-1][1]
    IndexError: list index out of range
    2013-10-12 05:03:42 INFO     Modbus       Waermepumpe.Warmwasser.Ist = 43.2 via Modbus Reg 1681
    2013-10-12 05:03:42 INFO     Scheduler    Adding worker thread. Total: 7
    2013-10-12 05:03:42 INFO     Scheduler    Current Threads: Main, Scheduler, Modbus, 1w-io, Modbus, Modbus, series, Modbus, idle, Thread-7
    2013-10-12 05:03:47 INFO     Modbus       Waermepumpe.Warmwasser.Ist = 43.3 via Modbus Reg 1681
    2013-10-12 05:04:43 INFO     Scheduler    Adding worker thread. Total: 8
    2013-10-12 05:04:43 INFO     Scheduler    Current Threads: Main, Scheduler, Modbus, 1w-io, Modbus, Thread-8, Modbus, series, Modbus, Modbus, series
    2013-10-12 05:05:45 INFO     Scheduler    Adding worker thread. Total: 9
    Bei 30 steht der Karren wie schon bekannt.

    Viele Grüße
    Robert

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Hallo Robert,

    sorry, ich hatte die Änderungen gestern nicht eingecheckt. Gegen Abend ist mir der Fehler aufgefallen und ich habe es eingecheckt.

    Die Zeit passt schon. Das ist GMT.

    Was mich irritiert, sind die http.client.HTTPMessage und nginx in dem Garbage.
    Du verschickst nicht zufällig eine Webseite?


    Bis bald

    Marcus

    Einen Kommentar schreiben:

Lädt...
X