Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Problem mit eval

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

  • henfri
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    Auch an dieser Stelle wäre ein Debug Log mit Kontext hilfreich

    Bis bald

    Marcus


    Gesendet von unterwegs

    Einen Kommentar schreiben:


  • henfri
    antwortet
    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

    Einen Kommentar schreiben:


  • callidomus
    antwortet
    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

    Einen Kommentar schreiben:


  • Robert
    antwortet
    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.

    Einen Kommentar schreiben:


  • firefox
    antwortet
    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.

    Einen Kommentar schreiben:


  • Robert
    antwortet
    Meine Glaskugel sagt: Da kommt ein string an.

    Einen Kommentar schreiben:


  • firefox
    hat ein Thema erstellt - √ - Problem mit eval.

    - √ - 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
Lädt...
X