Ankündigung

Einklappen
Keine Ankündigung bisher.

Update auf 1.20: Notwendige Änderungen in Logiken

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

    [callidomus] Update auf 1.20: Notwendige Änderungen in Logiken

    Hi allerseits,

    ich hatte Marcus angeboten, die Stellen zu beschreiben, die ich in Logiken ändern musste, damit sie wieder laufen. Es ist recht wenig, aber man sollte es machen. Die Liste ist nicht unbedingt vollständig, es sind eben nur die Sachen, die bei mir auftraten:

    Alt:
    Code:
        lItem = cd.return_item(trigger.source)
    Neu:
    Code:
        lItem = trigger.node
    Vorteil: Das rufende Item bzw. Node ist jetzt als komplettes Objekt im Trigger vorhanden.

    Alt:
    Code:
        if trigger.source == 'EG.Wohnzimmer.Licht':
    Neu:
    Code:
        if trigger.path == 'EG.Wohnzimmer.Licht':
    trigger.caller trägt den ursprünglichen Auslöser des Triggers, das wird Marcus sicherlich noch in der Doku ausführlicher beschreiben.

    Alt:
    Code:
        lParent = lItem.parent()
    Neu:
    Code:
        lParent = lItem.parent
    Neuerdings liefert parent() den Wert des Parents, nicht mehr den Parent selbst, deswegen jetzt ohne Klammern.

    Das war es schon bei mir. Ich hoffe, das hilft etwas,
    Gruß, Waldemar
    Zuletzt geändert von mumpf; 28.01.2017, 11:17. Grund: parent ergänzt
    OpenKNX www.openknx.de

    #2
    Hi Waldemar,

    danke für die Hinweise. Meine Logiken laufen alle wieder.

    Gruß
    Thomas

    Kommentar


      #3
      Hi Thomas,

      freut mich wenn es geholfen hat, ich habe noch was zum parent ergänzt.

      Gruß, Waldemar
      OpenKNX www.openknx.de

      Kommentar


        #4
        Hallo,

        ich habe die Doku unter https://docs.callidomus.com/de/Logiken/ aktualisiert.

        Bis bald

        Marcus

        Kommentar


          #5
          Ich persönlich finde es ärgerlich dass sich solche relativ grundlegenden Dinge plötzlich ändern und ich mich frage warum auf einmal die Hälfte meiner Logiken nicht mehr funktioniert. Nachdem man dann zufällig Mal hier rein schaut weiß man dann auf einmal warum.

          Hoffen wir Mal dass solche Dinge nicht so oft passieren.

          ...aber Danke Waldemar
          sigpic
          Christian Huck
          Tel.: 089 / 122 80 995
          Email: mail@homeintelligence.de
          Web: www.homeintelligence.de

          Kommentar


            #6
            Hallo Christian,

            Zitat von hoggle Beitrag anzeigen
            Ich persönlich finde es ärgerlich dass sich solche relativ grundlegenden Dinge plötzlich ändern und ich mich frage warum auf einmal die Hälfte meiner Logiken nicht mehr funktioniert. Nachdem man dann zufällig Mal hier rein schaut weiß man dann auf einmal warum.
            Du warst doch auch bei dem Workshop, da habe ich das auch erzählt.

            Du bist auf testing, leitet sich von testen ab. Da kann schon mal was unrund sein.

            Ich habe Dir das alles auch schon in einer privaten Support-Session erklärt. Das war am 4.2.

            Bis bald

            Marcus

            Kommentar


              #7
              Zitat von callidomus Beitrag anzeigen
              Du bist auf testing, leitet sich von testen ab.
              Danke für die Begriffserklärung.

              06.01.
              Zitat von callidomus Beitrag anzeigen
              ich habe Dein System auf Testing umgestellt und das Problem gelöst. Demnächst werde ich das als Stable releasen, bitte dann wieder umstellen.
              Ich habe mein System nicht auf Testing umgestellt.
              sigpic
              Christian Huck
              Tel.: 089 / 122 80 995
              Email: mail@homeintelligence.de
              Web: www.homeintelligence.de

              Kommentar


                #8
                Hallo Christian,

                ja, Du hast Recht.
                Ich hatte Dein System auf testing umgestellt. Tut mir Leid, ich wollte Dir schnell helfen.

                Das Zitat war vom 6.1., am 9.1. gab es das Release.

                Aber keine Angst, ich lerne aus meinen Fehlern.

                Bis bald

                Marcus
                Zuletzt geändert von callidomus; 13.02.2017, 14:53. Grund: Tippfehler verbessert

                Kommentar


                  #9
                  Sorry. War vermutlich etwas zu forsch.

                  Dann sag doch bitte einfach bescheid wenn wieder auf stable umgestellt werden kann.

                  Danke.
                  sigpic
                  Christian Huck
                  Tel.: 089 / 122 80 995
                  Email: mail@homeintelligence.de
                  Web: www.homeintelligence.de

                  Kommentar


                    #10
                    Hi,

                    meine Fenster logick tut seit dem update auch nicht mehr richtig...hat einer eine Idee was falsch ist? Das was zu compile Fehlern führt habe ich mit der anleitung von waldemar behoben. Aber irgentwie wird das nicht mehr gerufen.

                    Code:
                    logger = logging.getLogger('')
                    
                    logger.debug(trigger)
                    
                    ###logger.debug("trigger.caller: {}".format(trigger.caller))
                    ###logger.debug("trigger.value: {}".format( trigger.value))
                    ###logger.debug("trigger.dest: {}".format( trigger.dest))
                    ###logger.debug("trigger.source: {}".format( trigger.source))
                    
                    if( trigger.caller == "Item"):
                        ###sourceitem = cd.return_item( trigger.source )
                        sourceitem =  trigger.node
                        parent = sourceitem.parent()
                        parent( 2 if (parent.oeue()) else 1 if (parent.vsue()) else 0 )
                    
                        dg = 0
                        og = 0
                        eg = 0
                        kg = 0
                    
                        for fenster in cd.find_items("isFenster"):
                            logger.debug("{}: {}".format(fenster,fenster.attr['isFenster']))
                            floor = fenster.attr['isFenster']
                    
                            if( fenster.oeue() or fenster.vsue ):
                                if(floor=="DG"):
                                      dg = dg + 1
                                elif(floor=="OG"):
                                      og = og +1
                                elif(floor=="EG"):
                                      eg = eg +1
                                elif(floor=="KG"):
                                    kg = kg+1
                                else:
                                    logger.error("unkown floor: {}:".format(floor))
                    
                        cd.haus.dg.fenster(dg)
                        cd.haus.og.fenster(og)
                        cd.haus.eg.fenster(eg)
                        cd.haus.kg.fenster(kg)
                        cd.haus.fenster(dg+og+eg+kg)
                    Zuletzt geändert von heckmannju; 06.03.2017, 19:17.

                    Kommentar


                      #11
                      Hi Jürgen,

                      so wie ich das sehe muss dein trigger.caller eigentlich ein trigger.by sein und dein trigger.source muss eigentlich trigger.caller sein. trigger.source und trigger.dest sagt mir nichts. Schau mal hier: http://docs.callidomus.com/de/Logiken/#trigger_objekt.

                      Gruß
                      Thomas

                      Kommentar


                        #12
                        okay was in trigger.caller drinstand ist jetzt in trigger.by drin. Jetzt kommt folgende Fehlermeldung.

                        Das Parent Item ist ein num item und vsue und oeue sind bool items. Woher diese Fehlermeldung in der Zeile 9 mit dem str kommt ist seltsam.



                        2017-03-06 19:33:58 ERROR Fenster logger = logging.getLogger('')

                        logger.debug(trigger)

                        if( trigger.by == "Item"):
                        ###sourceitem = cd.return_item( trigger.source )
                        sourceitem = trigger.node
                        parent = sourceitem.parent()
                        parent( 2 if (parent.oeue()) else 1 if (parent.vsue()) else 0 ) # Zeile 9

                        dg = 0
                        og = 0
                        eg = 0
                        kg = 0

                        for fenster in cd.find_items("isFenster"):
                        logger.debug("{}: {}".format(fenster,fenster.attr['isFenster']))
                        floor = fenster.attr['isFenster']

                        if( fenster.oeue() or fenster.vsue ):
                        if(floor=="DG"):
                        dg = dg + 1
                        elif(floor=="OG"):
                        og = og +1
                        elif(floor=="EG"):
                        eg = eg +1
                        elif(floor=="KG"):
                        kg = kg+1
                        else:
                        logger.error("unkown floor: {}:".format(floor))

                        cd.haus.dg.fenster(dg)
                        cd.haus.og.fenster(og)
                        cd.haus.eg.fenster(eg)
                        cd.haus.kg.fenster(kg)
                        cd.haus.fenster(dg+og+eg+kg): 'str' object has no attribute 'id'
                        Traceback (most recent call last):
                        File "/mfs/core/lib/config.py", line 263, in __call__
                        exec(self.bytecode, self.locals)
                        File "<string>", line 9, in <module>
                        AttributeError: 'int' object has no attribute 'oeue'

                        During handling of the above exception, another exception occurred:

                        Traceback (most recent call last):
                        File "/mfs/core/lib/scheduler.py", line 421, in _worker
                        obj(value, trigger)
                        File "/mfs/core/lib/config.py", line 274, in __call__
                        self.node.id, tb[1], tb[2], e, self.code))
                        AttributeError: 'str' object has no attribute 'id'

                        Kommentar


                          #13
                          Hi Jürgen,

                          Du hast meine Anleitung nicht genau genug befolgt

                          Es geht um die Zeile:
                          Code:
                          parent = sourceitem.parent()
                          Da müssen die Klammern weg:
                          Code:
                          parent = sourceitem.parent
                          Gruß, Waldemar
                          OpenKNX www.openknx.de

                          Kommentar


                            #14
                            ja waldemar, du hast recht nach der änderung tut es.

                            Kommentar

                            Lädt...
                            X