Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Kennt sich wer mit Python aus?

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Kennt sich wer mit Python aus?

    This topic has been deleted. Only users with topic management privileges can see it.
    • kmxak
      kmxak Most Active last edited by

      Ich suche jemanden der sich mit Python auskennt und mir bei einem Script kurz weiterhelfen kann.

      Es geht darum in ein Script einen Befehl zum warten bevor fortgesetzt wird einzubauen.

      Einfach kurz schreiben ich melde mich dann.

      1 Reply Last reply Reply Quote 0
      • arteck
        arteck Developer Most Active last edited by

        wasn ???

        eine einfache time.sleep(yx)

        #!/usr/bin/python
        import time
        
        print "anfang: %s" % time.ctime()
        time.sleep(2)
        print "ende: %s" % time.ctime()
        
        

        reicht nicht ??

        1 Reply Last reply Reply Quote 0
        • kmxak
          kmxak Most Active last edited by

          Danke ich probiere es nachher mal. Hatte gestern nur das time.sleep eingefügt das ging aber nicht.

          Gesendet von meinem SM-G928F mit Tapatalk

          1 Reply Last reply Reply Quote 0
          • kmxak
            kmxak Most Active last edited by

            Ich bekomme es nun hin das das komplette Script pausiert aber nicht das es da stoppt wenn ich es will.

            Das Script ist für das RFID Projekt.

            Das Script fragt den Chip selbst bei langsamen dran halten extrem oft ab. Das wollte ich unterbinden das wenn ein Chip erkannt wird einfach X Sekunden gewartet wird und dann das Script einfach weiter macht.

            Wollte unter den Prints für Karte1,2 oder wrong card````
            time.sleep(X)

            
            

            import MFRC522
            import signal
            import time

            continue_reading = True
            MIFAREReader = MFRC522.MFRC522()

            Karten konfigurieren

            karte1 = [xy]
            karte2 = [yx]

            def end_read(signal, frame):
            global continue_reading
            continue_reading = False
            print "Ctrl+C captured, ending read."
            MIFAREReader.GPIO_CLEEN()

            signal.signal(signal.SIGINT, end_read)

            Script starten

            print "\x1b[2J" # Terminal leeren
            print "RFID Card Reader ioBroker Script"
            print "Zum Abbrechen des Skripts STRG-C druecken."

            while continue_reading:
            (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
            if status == MIFAREReader.MI_OK:
            print "Card detected"
            (status,backData) = MIFAREReader.MFRC522_Anticoll()
            if status == MIFAREReader.MI_OK:
            print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
            # Hier werden die Karten abgefragt
            if backData == karte1:
            import urllib
            urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
            print "Status True gesetzt! - Karte 1"
            elif backData == karte2:
            print "Karte 2"
            else:
            print "wrong Card"

            1 Reply Last reply Reply Quote 0
            • arteck
              arteck Developer Most Active last edited by

              import MFRC522
              import signal
              import time
              
              continue_reading = True
              MIFAREReader = MFRC522.MFRC522()
              
              # Karten konfigurieren
              karte1 = [xy]
              karte2 = [yx]
              
              def end_read(signal, frame):
                global continue_reading
                continue_reading = False
                print "Ctrl+C captured, ending read."
                MIFAREReader.GPIO_CLEEN()
              
              signal.signal(signal.SIGINT, end_read)
              
              # Script starten
              
              print "\x1b[2J" # Terminal leeren
              print "RFID Card Reader ioBroker Script"
              print "Zum Abbrechen des Skripts STRG-C druecken."
              
              while continue_reading:
                (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                if status == MIFAREReader.MI_OK:
                  print "Card detected"
              # hier könntest du es einbauen warte 1 sec. = 1000 milisec
                  time.sleep(1000)
              
                 (status,backData) = MIFAREReader.MFRC522_Anticoll()
              
                 if status == MIFAREReader.MI_OK:
                  print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                      # Hier werden die Karten abgefragt
                  if  backData == karte1:
                    import urllib
                    urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                    print "Status True gesetzt! - Karte 1"
                  elif backData == karte2:
                    print "Karte 2"
                  else:
                    print "wrong Card"
              
              1 Reply Last reply Reply Quote 0
              • kmxak
                kmxak Most Active last edited by

                nein das ist auch nicht die passende Lösung.

                Es kommt dann Card detected und dann muss ich die Karte die ganze Wartezeit über dran halten damit er die dann richtig liest.

                time.sleep(1000) sind meine ich übrigens 1000 sekunden kann das sein?

                time.sleep(.1000) sollten 1000 ms sein oder?

                1 Reply Last reply Reply Quote 0
                • arteck
                  arteck Developer Most Active last edited by

                  ok ich dachte du willst die länger drann halten dann so..

                  import MFRC522
                  import signal
                  import time
                  import urllib
                  
                  continue_reading = True
                  MIFAREReader = MFRC522.MFRC522()
                  
                  # Karten konfigurieren
                  karte1 = [xy]
                  karte2 = [yx]
                  
                  def end_read(signal, frame):
                    global continue_reading
                    continue_reading = False
                    print "Ctrl+C captured, ending read."
                    MIFAREReader.GPIO_CLEEN()
                  
                  signal.signal(signal.SIGINT, end_read)
                  
                  # Script starten
                  
                  print "\x1b[2J" # Terminal leeren
                  print "RFID Card Reader ioBroker Script"
                  print "Zum Abbrechen des Skripts STRG-C druecken."
                  
                  while continue_reading:   
                    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                    if status == MIFAREReader.MI_OK:
                      print "Card detected"
                  
                     (status,backData) = MIFAREReader.MFRC522_Anticoll()
                  
                     if status == MIFAREReader.MI_OK:
                      print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                          # Hier werden die Karten abgefragt
                  
                  #   hier direkt nach erkennen der Karte 
                      time.sleep(1)        
                  
                      if  backData == karte1:     
                        urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                        print "Status True gesetzt! - Karte 1"
                      elif backData == karte2:
                        print "Karte 2"
                      else:
                        print "wrong Card"
                  
                  #   oder am ende der schleife
                      time.sleep(1)
                  
                  

                  priber mal aus

                  das kommt davon wenn man mit mehrere Sprachen hantiert.. die funktion arbeitet mit sekunden

                  time.sleep(1)

                  solltest auch mal den import urllib nach oben ziehen

                  1 Reply Last reply Reply Quote 0
                  • kmxak
                    kmxak Most Active last edited by

                    Am ende ging auch was nicht müsste ich heute abend nochmal schauen. Am besten wäre es direkt hinter die letzten print von den Karten. Aber da bekomme ich einen Script Fehler. Heute Abend geht es weiter. Danke dir schon mal

                    Gesendet von meinem SM-G928F mit Tapatalk

                    1 Reply Last reply Reply Quote 0
                    • kmxak
                      kmxak Most Active last edited by

                      selbst wenn ich es so mache kommt die wartezeit erst wenn ich das script mit strg c abbreche:

                      import MFRC522
                      import signal
                      import time
                      import urllib
                      
                      continue_reading = True
                      MIFAREReader = MFRC522.MFRC522()
                      
                      # Karten konfigurieren
                      karte1 = [1111111111]
                      karte2 = [1111111111]
                      
                      def end_read(signal, frame):
                        global continue_reading
                        continue_reading = False
                        print "Ctrl+C captured, ending read."
                        MIFAREReader.GPIO_CLEEN()
                      
                      signal.signal(signal.SIGINT, end_read)
                      
                      # Script starten
                      
                      print "\x1b[2J" # Terminal leeren
                      print "RFID Card Reader ioBroker Script"
                      print "Zum Abbrechen des Skripts STRG-C druecken."
                      
                      while continue_reading:
                        (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                        if status == MIFAREReader.MI_OK:
                          print "Card detected"
                        (status,backData) = MIFAREReader.MFRC522_Anticoll()
                        if status == MIFAREReader.MI_OK:
                          print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                              # Hier werden die Karten abgefragt
                          if  backData == karte1:
                            urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                            print "Status True gesetzt! - Karte 1"
                          elif backData == karte2:
                            print "Karte 2"
                          else:
                            print "wrong Card"
                      time.sleep(5)
                      print "wartezeit"
                      
                      

                      verstehe das einfach nicht.

                      Scanne eine "falsche karte" nach meinem verständnis müsste nun wrong card kommen und nach 5 sec wartezeit. das tut es aber nicht. es kommt immer wieder im millisekundentakt wrong card und das wartezeit erst mit strg c

                      1 Reply Last reply Reply Quote 0
                      • arteck
                        arteck Developer Most Active last edited by

                        @kmxak:

                        selbst wenn ich es so mache kommt die wartezeit erst wenn ich das script mit strg c abbreche:

                        import MFRC522
                        import signal
                        import time
                        import urllib
                        
                        continue_reading = True
                        MIFAREReader = MFRC522.MFRC522()
                        
                        # Karten konfigurieren
                        karte1 = [1111111111]
                        karte2 = [1111111111]
                        
                        def end_read(signal, frame):
                          global continue_reading
                          continue_reading = False
                          print "Ctrl+C captured, ending read."
                          MIFAREReader.GPIO_CLEEN()
                        
                        signal.signal(signal.SIGINT, end_read)
                        
                        # Script starten
                        
                        print "\x1b[2J" # Terminal leeren
                        print "RFID Card Reader ioBroker Script"
                        print "Zum Abbrechen des Skripts STRG-C druecken."
                        
                        while continue_reading:
                          (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                          if status == MIFAREReader.MI_OK:
                            print "Card detected"
                          (status,backData) = MIFAREReader.MFRC522_Anticoll()
                          if status == MIFAREReader.MI_OK:
                            print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                                # Hier werden die Karten abgefragt
                            if  backData == karte1:
                              urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                              print "Status True gesetzt! - Karte 1"
                            elif backData == karte2:
                              print "Karte 2"
                            else:
                              print "wrong Card"
                              
                            time.sleep(5)
                            print "wartezeit"
                        
                        

                        verstehe das einfach nicht.

                        Scanne eine "falsche karte" nach meinem verständnis müsste nun wrong card kommen und nach 5 sec wartezeit. das tut es aber nicht. es kommt immer wieder im millisekundentakt wrong card und das wartezeit erst mit strg c `

                        wie währe es wenn du dich mit python ein wenig auseinander setzt..

                        wiki Python_(Programmiersprache)

                        vor allem der Absatz

                        #Syntax

                        das

                        while continue_reading:
                          (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                          if status == MIFAREReader.MI_OK:
                            print "Card detected"
                          (status,backData) = MIFAREReader.MFRC522_Anticoll()
                          if status == MIFAREReader.MI_OK:
                            print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                                # Hier werden die Karten abgefragt
                            if  backData == karte1:
                              urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                              print "Status True gesetzt! - Karte 1"
                            elif backData == karte2:
                              print "Karte 2"
                            else:
                              print "wrong Card"
                        time.sleep(5)
                        print "wartezeit"
                        
                        

                        ist was andereas als das

                        while continue_reading:
                          (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)
                          if status == MIFAREReader.MI_OK:
                            print "Card detected"
                          (status,backData) = MIFAREReader.MFRC522_Anticoll()
                          if status == MIFAREReader.MI_OK:
                            print "Card read UID: "+str(backData[0])+","+str(backData[1])+","+str(backData[2])+","+str(backData[3])+","+str(backData[4])
                                # Hier werden die Karten abgefragt
                            if  backData == karte1:
                              urllib.urlretrieve('http://ip/set/Test?value=true') # ioBroker URL
                              print "Status True gesetzt! - Karte 1"
                            elif backData == karte2:
                              print "Karte 2"
                            else:
                              print "wrong Card"
                        
                            time.sleep(5)
                            print "wartezeit"
                        
                        

                        aus die Einrückung kommt es an wann was ausgeführt wird

                        zumidest Grundinformationen habe ich erwartet

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        530
                        Online

                        31.7k
                        Users

                        79.8k
                        Topics

                        1.3m
                        Posts

                        2
                        10
                        1845
                        Loading More Posts
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes
                        Reply
                        • Reply as topic
                        Log in to reply
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                        The ioBroker Community 2014-2023
                        logo