Ankündigung

Einklappen
Keine Ankündigung bisher.

is not None

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

    [callidomus] is not None

    Hallo zusammen,

    ich check's gerad' ned:

    Ich habe folgende Stelle im Code:

    Code:
    292: if high_vent_since is not None and high_vent_since != '':
    293:  logger.info('high vent status since: ' + str(high_vent_since) + '(floor: ' + str(floor['floor']) + ')')
    294:  delta = now - datetime.datetime.strptime(high_vent_since, "%d.%m.%Y %H:%M:%S")
    295:  delta_in_minutes = delta.seconds / 60
    und folgenden Fehler:
    Code:
    2017-03-06 19:21:42 INFO     ventilation_automation high vent status since: None(floor: basement)
    2017-03-06 19:21:42 ERROR    ventilation_automation time data 'None' does not match format '%d.%m.%Y %H:%M:%S'
    Traceback (most recent call last):
      File "/mfs/core/lib/config.py", line 263, in __call__
        exec(self.bytecode, self.locals)
      File "/data/callidomus/local/logics/ventilation_automation.py", line 294, in <module>
        delta = now - datetime.datetime.strptime(high_vent_since, "%d.%m.%Y %H:%M:%S")
      File "/usr/local/lib/python3.6/_strptime.py", line 565, in _strptime_datetime
        tt, fraction = _strptime(data_string, format)
      File "/usr/local/lib/python3.6/_strptime.py", line 362, in _strptime
        (data_string, format))
    ValueError: time data 'None' does not match format '%d.%m.%Y %H:%M:%S'
    Da high_vent_since None ist dürfte diese Stelle im Code eigentlich nicht erreicht werden.

    Hat jemand ne Idee ?
    sigpic
    Christian Huck
    Tel.: 089 / 122 80 995
    Email: mail@homeintelligence.de
    Web: www.homeintelligence.de

    #2
    Hi Christian,

    kann es sein, dass die Einrückung in den Zeilen 293 und 294 unterschiedlich ist (einmal Tabs und einmal Leerzeichen)? Dann würde er die Zeile 293 nicht mehr zur if-Abfrage zählen und die Zeile 293 in jedem Fall durchlaufen. Nur so ein Gedanke.

    Und high_vent_since ist auch wirklich None und nicht vielleicht "None"?

    Gruß
    Thomas

    Kommentar


      #3
      Hi Thomas,

      nee die Einrückung passt.
      Und es ist wirklich kein String..

      Code:
      > ls basement.ventilation.high_vent_mode_since
      Nodes:
      ======
      basement.ventilation.high_vent_mode_since = None
      sigpic
      Christian Huck
      Tel.: 089 / 122 80 995
      Email: mail@homeintelligence.de
      Web: www.homeintelligence.de

      Kommentar


        #4
        ... und wenn du den zweiten der Teil der Abfrage
        Code:
        and high_vent_since != ''
        mal weglässt?

        Thomas

        Kommentar


          #5
          Hi Christian,

          ich würde um die beiden Teilvergleiche noch Klammern setzen:
          Code:
           
           if (high_vent_since is not None) and (high_vent_since != ''):
          Liegt aber daran, dass ich nicht genau weiß, welcher Operator in Python stärker bindet. Spontan hätte ich auch gedacht, dass das funktionieren sollte...

          Gruß, Waldemar
          OpenKNX www.openknx.de

          Kommentar


            #6
            Hallo Christian,

            aus dem Codefragment ist schwierig nachzuvollziehen was da genau passiert. Insbesondere wie high_vent_since gesetzt wird.
            An anderer Stelle bringst Du den "Beweis" vor, das das Item über das CLI None anzeigt.

            Ich bin mir ziemlich sicher, das Item basement.ventilation.high_vent_mode_since ist von dem Typ 'Zeichenkette'.
            Das kann man nicht mit dem nativen Python None belegen. Das wird in den String 'None' umgewandelt.
            Die Vermutung von Thomas ist daher richtig.

            Ich werde das CLI Plugin wahrscheinlich abändern, damit dieses in Zukunft repr verwendet um die Werte anzuzeigen.
            (Dann sind datetime Objekte aber nicht mehr so einfach zu lesen.)

            Du kannst in Deinem Code in Zeile 291 folgendes einfügen:

            Code:
            logger.warning('WERT: {}'.format(repr([FONT=courier new]high_vent_since[/FONT])))
            Dann wird der wahre Wert angezeigt.

            Bis bald

            Marcus

            Kommentar


              #7
              Ich hab' den Logger Mal eingebaut. Da die Stelle im Code jetzt gerad nicht durchlaufen wird schaue ich es mir morgen nochmal an.

              Danke erstmal für die Rückmeldungen !
              sigpic
              Christian Huck
              Tel.: 089 / 122 80 995
              Email: mail@homeintelligence.de
              Web: www.homeintelligence.de

              Kommentar

              Lädt...
              X