Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik wird doppelt aufgerufen

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

    Logik wird doppelt aufgerufen

    Hallo,

    ich habe meine Klingel an eine Binäreingang, welcher immer nur ein Ein schickt wenn jemand Klingelt. Aus wird daher nie gesendet.

    Nun habe ich in sh.py eine logik gebaut, welche mir eine push-benachrichtigung zusendet, diese wird jedoch immer doppelt aufgerufen. Es kommt ganz sicher immer nur einmal ein EIN Signal über den Bus, habe dies bereits mittels den Gruppenmonitor überprüft. Jemand eine Idee was es da haben kann?

    ITEM:
    Code:
    [Sicherheit]
            [[HofEingang]]
                    [[[KlingelWohnung]]]
                            [[[[EinAus]]]]
                                    type = bool
                                    visu_acl = rw
                                    knx_dpt = 1
                                    knx_listen = 2/0/0
                                    knx_send = 2/0/0
                                    enforce_updates = true
                    [[[KlingelHaus]]]
                            [[[[EinAus]]]]
                                    type = bool
                                    visu_acl = rw
                                    knx_dpt = 1
                                    knx_listen = 2/0/3
                                    knx_send = 2/0/3
                                    knx_init = 2/0/3
                                    enforce_updates = true
                    [[[TuerOffnen]]]
                            [[[[EinAus]]]]
                                    type = bool
                                    visu_acl = rw
                                    enforce_updates = true
                                    knx_dpt = 1
                                    knx_listen = 2/0/1
                                    knx_send = 2/0/1
                                    knx_init = 2/0/1
    Debug-Log:
    Code:
    2015-01-07 20:32:51,669 DEBUG    Main         Triggering Push_Wohnung_Klingel - by: Item source: Sicherheit.HofEingang.KlingelWohnung.EinAus dest: None value: True -- scheduler.py:trigger:162
    2015-01-07 20:32:51,697 DEBUG    Main         knx: 0.0.0 set 2/0/0 to True -- __init__.py:parse_telegram:190
    2015-01-07 20:32:51,705 DEBUG    Main         Triggering Push_Wohnung_Klingel - by: Item source: Sicherheit.HofEingang.KlingelWohnung.EinAus dest: None value: True -- scheduler.py:trigger:162
    2015-01-07 20:32:51,752 DEBUG    Push_Wohnung_Klingel Pruefen ob IP erreichbar ist! -- push_wohnung_klingel.py:<module>:11
    2015-01-07 20:32:51,763 DEBUG    Push_Wohnung_Klingel IP erreichbar -- push_wohnung_klingel.py:<module>:12
    2015-01-07 20:32:51,793 DEBUG    Push_Wohnung_Klingel Pruefen ob IP erreichbar ist! -- push_wohnung_klingel.py:<module>:11
    2015-01-07 20:32:51,801 DEBUG    Push_Wohnung_Klingel IP erreichbar -- push_wohnung_klingel.py:<module>:12
    Danke

    #2
    Ohne Logik keine Hilfe, die Glaskugel ist im Moment im Geschirrspüler.
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    Kommentar


      #3
      Hallo,

      mich würde mehr das komplette Logfile interessieren.

      Auf dem Bus kommt anscheinend zwei Mal ein Telegramm (Schalten & Status).
      Durch enforce_updates wird die Logik dann auch zwei Mal getriggert.

      Bis bald

      Marcus

      Kommentar


        #4
        sorry, ich hatte die Logik bereits ausgeschlossen da ja sh.py ja das skript doppelt aufruft. Auch wenn die logik eine Fehler hat wird dieser in der console doppelt ausgegeben.

        Code:
        import http.client, urllib
        from time import *
        from datetime import *
        import uuid
        import ftplib
        import urllib.request
        
        ip = sh.zentral.Anwesenheit.Manuel_IP()
        
        if sh.tools.ping(ip) is True:
                logger.debug('Pruefen ob IP erreichbar ist!')
                logger.debug('IP erreichbar')
                token = uuid.uuid1()
                url = "********"
                print (url)
        else:
                logger.debug('Pruefen ob IP erreichbar ist!')
                logger.debug('IP nicht erreichbar')
                token = uuid.uuid1()
                url = "*********"
                print (url)
        
        
        #token und link uebermitteln
        conn = http.client.HTTPSConnection("************")
        conn.request("POST", "/1/messages.json",
          urllib.parse.urlencode({
            "token": "**********",
            "user": "*******",
            "message": "Es hat gel&auml;utet!",
            "url": url,
          }), { "Content-type": "application/x-www-form-urlencoded" })
        conn.getresponse()
        
        
        # Bild auf ftp laden
        urllib.request.urlretrieve("********", "/tmp/**********")
        
        session = ftplib.FTP('*******','*****','****')
        file = open('/tmp/***********','rb')        # file to send
        session.storbinary('STOR **********', file)      # send the file
        file.close()                                    # close file and FTP
        session.quit()

        Kommentar


          #5
          Auf dem Gruppenmonitor scheint nur 1 Telegram auf. Eine Status GA habe ich keine dafür (zumindest nicht beabsichigt) ;-)

          Es ist im log nicht mehr zu finden.

          Kommentar


            #6
            Dann zeig doch mal das Log.

            Kommentar


              #7
              Code:
              2015-01-07 20:55:16,540 DEBUG    Main         knx: 1.1.13 set 3/3/0 to 0000 -- __init__.py:parse_telegram:181
              2015-01-07 20:55:18,614 DEBUG    Main         192.168.1.99:54396 sent '{"cmd":"item","id":"Sicherheit.HofEingang.KlingelWohnung.EinAus","val":"1"}' -- __init__.py:json_parse:269
              2015-01-07 20:55:18,620 DEBUG    Main         Item Sicherheit.HofEingang.KlingelWohnung.EinAus = True via Visu 192.168.1.99:54396 None -- item.py:__update:363
              2015-01-07 20:55:18,627 DEBUG    Main         Triggering Push_Wohnung_Klingel - by: Item source: Sicherheit.HofEingang.KlingelWohnung.EinAus dest: None value: True -- scheduler.py:trigger:162
              2015-01-07 20:55:18,653 DEBUG    Main         knx: 0.0.0 set 2/0/0 to True -- __init__.py:parse_telegram:190
              2015-01-07 20:55:18,686 DEBUG    Main         Triggering Push_Wohnung_Klingel - by: Item source: Sicherheit.HofEingang.KlingelWohnung.EinAus dest: None value: True -- scheduler.py:trigger:162
              2015-01-07 20:55:19,005 DEBUG    Push_Wohnung_Klingel Pruefen ob IP erreichbar ist! -- push_wohnung_klingel.py:<module>:11
              2015-01-07 20:55:19,010 DEBUG    Push_Wohnung_Klingel Pruefen ob IP erreichbar ist! -- push_wohnung_klingel.py:<module>:11
              2015-01-07 20:55:19,016 DEBUG    Push_Wohnung_Klingel IP erreichbar -- push_wohnung_klingel.py:<module>:12
              2015-01-07 20:55:19,019 DEBUG    Push_Wohnung_Klingel IP erreichbar -- push_wohnung_klingel.py:<module>:12
              http://*****/smartvisu/index.php?page=multimedia_camera
              http://*****/smartvisu/index.php?page=multimedia_camera
              2015-01-07 20:55:21,540 DEBUG    Main         knx: 1.1.13 set 3/3/0 to 0000 -- __init__.py:parse_telegram:181
              2015-01-07 20:55:23,447 DEBUG    anwesenheit  192.168.1.99 -- anwesenheit.py:<module>:10
              2015-01-07 20:55:23,507 DEBUG    anwesenheit  True -- anwesenheit.py:<module>:11
              2015-01-07 20:55:23,514 DEBUG    anwesenheit  39.354365 -- anwesenheit.py:<module>:12
              2015-01-07 20:55:23,964 DEBUG    Scheduler    anwesenheit next time: 2015-01-07 20:55:33+01:00 -- scheduler.py:_next_time:289

              Kommentar


                #8
                Hallo,

                nimm entweder das enforce_updates oder das knx_send aus dem Item, dann wird die Logik nicht doppelt augerufen.

                Oder ändere das Item nicht über die Visu.

                Bis bald

                Marcus

                Kommentar


                  #9
                  habe das knx_send rausgenommen, jedoch ist es noch immer doppelt. Auch wenn ich es nicht über die Visu sonder direkt an der klingel teste.

                  Wenn ich das enforce_update rausnehme, dann wird die logik nur 1 mal nach dem start aufgerufen, danach nicht mehr da der status immer auf EIN ist.

                  Kommentar

                  Lädt...
                  X