Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Problem mit eval

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

    - √ - Problem mit eval

    Hallo,

    ich mach hier mal einen neuen Thread auf, die Fehlermeldung hat ja ersteinmal nichts mit dem RTR zu tun.

    Diese Fehlermeldung tritt auf, seit ich die Version 1.0 installiert habe. Hat also vorher funktioniert. Was hat sich hier geändert?


    Code:
    2013-12-01 23:28:05,991 WARNING  EG.Buero.Temperatur.komfort-eval Item EG.Buero.Temperatur.komfort: problem evaluating value if value < 2 else (sh.EG.Buero.Temperatur.modus() & 0x01): unorderable types: str() < int() -- item.py:__run_eval:331

    #2
    Meine Glaskugel sagt: Da kommt ein string an.

    Kommentar


      #3
      Ja, soweit kann ich noch folgen. Die Frage ist, warum kommt der da an:

      Code:
                  [[[[modus]]]]
                      type = num
                      knx_dpt = 20
                      knx_init = 5/2/64
                  [[[[txtmodus]]]]
                      type = str
                      visu = yes
                  [[[[komfort]]]]
                      type = bool
                      visu = yes
                      knx_dpt = 1
                      knx_send = 5/2/34
                      visu_acl = rw
                      eval = value if value < 2 else (sh.EG.Buero.Temperatur.modus() & 0x01)
                      eval_trigger = EG.Buero.Temperatur.modus
      oder noch konkreter, warum kommt jetzt ein string und früher nicht.

      Kommentar


        #4
        Direkt sehe ich außer den redundanten "visu = yes" keine Fehler.

        Evtl. mal eine funktional gleiche Logic erstellen und zu Beginn "trigger" ausgeben, damit man weiß wo es her kommt.

        Evtl. unsauber: Abfrage "num(value) < 2", dann aber dem bool-Item value zuweisen. Da würde ein "1,5" auch durchkommen (aber wohl korrekt gecastet).

        Evtl. Zuweisung von woanders? Z.b. irgendwo in einer Logic item("1") statt item(1)? Mal den eval_trigger entfernen oder eben mit gesonderter Logik.

        Kommentar


          #5
          Nee bitte keine " die sind nicht - mehr - nötig. Ich vermute der String kommt von der Visu. Python 3 ist etwas pingeliger geworden.

          Bis bald

          Marcus


          Gesendet von unterwegs

          Kommentar


            #6
            Hallo,

            ich habe das Gleiche Problem und hatte dies getestet. (Zitat aus dem Nachbar-Thread)
            Code:
             og.Elternbad.heizung.komfort-eval Item og.Elternbad.heizung.komfort: problem evaluating value if value < 2 else (sh.og.Elternbad.heizung.modus() & 0x01): unorderable types: str() < int()
            Code:
             
            [og]
              [[Elternbad]]
                    [[[heizung]]]
                        [[[[modus]]]]
                            type = num
                            knx_send = 3/2/29
                            knx_dpt = 20
                            knx_init = 3/2/29
                            sqlite = cache
                        [[[[komfort]]]]
                            type = num
                            knx_send = 3/2/31
                            knx_dpt = 1
                            sqlite = cache
                            eval = value if value < 2 else (sh.og.Elternbad.heizung.modus() & 0x01)
                            eval_trigger = og.Elternbad.heizung.modus
            Code:
             sh.og.Elternbad.heizung.komfort()
            0
            >>> type(0x01)
            <class 'int'>
            >>> type(sh.og.Elternbad.heizung.komfort())
            <class 'int'>
            >>> type(sh.og.Elternbad.heizung.komfort() & 0x01)
            <class 'int'>
            >>> type(sh.og.Elternbad.heizung.modus() & 0x01)
            <class 'int'>
            >>> type(sh.og.Elternbad.heizung.modus() )
            <class 'int'>
            >>> sh.og.Elternbad.heizung.modus()
            40
            Woher kann das type "str()" kommen?

            Moment...
            Das kann es nicht sein, oder?
            Code:
            type(sh.og.Elternbad.heizung.komfort)
            <class 'lib.item.Item'>
            Nee, ich denke nicht...
            Das einzige, das ich nicht prüfen kann ist "value". Aber das sollte ja
            sh.og.Elternbad.heizung.komfort()
            sein, oder?


            Gruß,
            Hendrik

            Kommentar


              #7
              Auch an dieser Stelle wäre ein Debug Log mit Kontext hilfreich

              Bis bald

              Marcus


              Gesendet von unterwegs

              Kommentar


                #8
                also ich hab mal source, value und type ausgelesen.

                Code:
                2013-12-11 20:40:36,941 INFO     logik_test   Item Source :EG.Buero.Temperatur.modus -- logik_test.py:<module>:4
                2013-12-11 20:40:36,947 INFO     logik_test   34 -- logik_test.py:<module>:5
                2013-12-11 20:40:36,957 INFO     logik_test   <class 'int'> -- logik_test.py:<module>:6
                Sieht doch alles gut aus oder? Ich seh immer noch keinen Fehler

                Kommentar


                  #9
                  Hallo,

                  was ist daran so schwierig die angefragten Informationen bereit zu stellen?

                  Das eval funktioniert bei mir. Wenn der Kontext nicht passt, kann ich den Fehler bzw. das Verhalten reproduzieren. Das Problem liegt mit sehr großer Wahrscheinlichkeit bei Dir.

                  Viel Glück

                  Marcus

                  Kommentar


                    #10
                    Guten morgen,

                    nun das liegt daran, dass es eben auch Leute gibt, die sich nicht jeden Tag mit Python, Linux und Co beschäftigen und teilweise nur raten können, was die Antworten hier zu bedeuten haben.
                    Ich mach das nicht um jemand zu ärgern und ebenfalls nicht weil ich zu faul bin, sondern weil mir dann eben einfach der Zusammenhang fehlt. Es hat mich schon über eine Stunde gekostet die letzte Information über das Item aus dem System zu kitzeln.

                    Auf mein Problem hin kamen als Antwort:
                    Code:
                    Meine Glaskugel sagt: Da kommt ein string an.
                    und

                    Code:
                    Direkt sehe ich außer den redundanten "visu = yes" keine Fehler.
                     
                    Evtl. mal eine funktional gleiche Logic erstellen und zu Beginn "trigger" ausgeben, damit man weiß wo es her kommt.
                     
                    Evtl. unsauber: Abfrage "num(value) < 2", dann aber dem bool-Item value zuweisen. Da würde ein "1,5" auch durchkommen (aber wohl korrekt gecastet).
                     
                    Evtl. Zuweisung von woanders? Z.b. irgendwo in einer Logic item("1") statt item(1)? Mal den eval_trigger entfernen oder eben mit gesonderter Logik.
                    und

                    Code:
                    Nee bitte keine " die sind nicht - mehr - nötig. Ich vermute der String kommt von der Visu. Python 3 ist etwas pingeliger geworden.

                    Ich hatte zumindest gehofft, dass euch der letzte Post weiterhilft.
                    Ansonsten weiß ich immer noch nicht welche Informationen ich nun eigentlich bereit stellen soll.

                    Code:
                    Das Problem liegt mit sehr großer Wahrscheinlichkeit bei Dir.
                    95% aller Probleme sitzen 20cm vor dem Bildschirm.
                    Offensichtlich bin ich aber nicht der einzige, schließlich haben im anderen Thread drei Leute das gleiche Problem. Und das Problem tritt erst seit dem Update auf.

                    Entfernt - man sollte erst denken und dann schreiben - schlechte Laune an der falschen Stelle abgeladen.

                    Kommentar


                      #11
                      Hallo, Marcus meint das Debug Log.
                      Das ist doch machbar. Ich hab ja das Gleiche Problem, schaffe es aber erst am Wochenende.

                      Gruß,
                      Hendrik

                      von unterwegs gesendet

                      Kommentar


                        #12
                        So, hier endlich mein Debug-Log.

                        Sorry, dass es so lange gedauert hat!

                        Gruß,
                        Hendrik
                        Angehängte Dateien

                        Kommentar


                          #13
                          Hallo,

                          es werde Licht. Die Fehlermeldung taucht, bei Hendrik, ja nur beim Start auf!
                          Dieser Umstand wurde bis jetzt noch nicht so deutlich.

                          Den Fehler habe ich vor drei Tagen in develop gefixt.

                          Deswegen bitte immer ein vollständiges Debug Log anhängen.

                          Bis bald

                          Marcus

                          Kommentar


                            #14
                            Danke!

                            von unterwegs gesendet

                            Kommentar


                              #15
                              danke.

                              Reicht es ein update über das webif zu machen oder geht das nur mit git pull wie in der doku beschrieben?

                              Kommentar

                              Lädt...
                              X