Doorpi mit Öffnungszeiten mittels Tastatureingabe

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    Da in jedem Forum ein paar Regeln eingehalten werden müssen, möchte ich diese auch vorher hier festlegen und niederschreiben. Die grundsätzliche Netiquette setze ich bei Jedem voraus. Darüber hinaus möchte ich nur spezielle Regeln ansprechen:
    - Unterlasse FullQuote sondern nutze Alternativen wie Inline-Quoting
    -> siehe auch https://de.wikipedia.org/wiki/Fullquote vs. https://de.wikipedia.org/wiki/TOFU#Alternativen_zu_TOFU
    - Unterlasse nichtssagende Antworten wie "Danke" oder "werde ich mal testen" oder ähnliches, sofern Du nicht der Threadersteller bist und einen Lösungsvorschlag angeboten bekommen hast.
    - Vermeide Doppel-Posts (zwei Beiträge von Dir hintereinander) sondern editiere wenn möglich Deine Posts.

    Danke...

    • Doorpi mit Öffnungszeiten mittels Tastatureingabe

      Hallo all,

      hatte Hilfe. :P

      Hier ist ein Script womit man steuern kann ob die Tür öffnet oder nicht mit der Beschränkung falsche PIN Eingabe oder außerhalb der Öffnungszeiten. Anstreuerung Relaise oder was auch immer muss angepasst werden. Was man noch in eine Datenbank Ausgliederung sollte sind die validen PINS.

      Source Code

      1. #!/usr/bin/env python
      2. from time import sleep
      3. #import pifacedigitalio as pfio
      4. from subprocess import Popen
      5. import string
      6. from time import *
      7. import sys
      8. import termios
      9. import tty
      10. def checkpin(count):
      11. if count >= 3:
      12. print("Pin 3 mal falsch eingegeben!")
      13. exit()
      14. # end if pin counter check
      15. #
      16. # access array, change it!
      17. # Syntax: [[PIN,"STARTTIME","ENDTIME"], ...]
      18. #
      19. valid_pins = [
      20. [1234,"07:00","13:00"],
      21. [2345],
      22. [12345,"07:00","22:00"]
      23. ]
      24. exitchar = "*"
      25. #
      26. #
      27. #
      28. x = getPin(exitchar)
      29. # filter digits
      30. try:
      31. x = int(x)
      32. except ValueError:
      33. # wenn Buchstaben uebergeben wurden=>neustart
      34. checkpin(count)
      35. # end filter
      36. for valid_array in valid_pins:
      37. valid_pin = valid_array[0]
      38. valid_start_time = 0
      39. valid_end_time = 0
      40. if len(valid_array) == 3:
      41. valid_start_time = valid_array[1]
      42. valid_end_time = valid_array[2]
      43. # end if valid_array_check
      44. if x == valid_pin:
      45. if valid_start_time != 0 and valid_end_time != 0:
      46. shall_pass = check_time(valid_start_time,valid_end_time)
      47. else:
      48. shall_pass = 1
      49. # end if time check
      50. if shall_pass == 1:
      51. # pfio.init()
      52. # p = Popen(['./tuer.sh'])
      53. # pfio.digital_write(0, 1)
      54. # sleep(3)
      55. # pfio.digital_write(0, 0)
      56. # p.terminate()
      57. print("hat geklappt")
      58. exit()
      59. # end if shall_pass check
      60. # pin is valid but user is not in time
      61. print("Ausserhalb der Zeit!")
      62. exit()
      63. # end if valid_pin
      64. # end for
      65. checkpin(count+1)
      66. # end def checkpin
      67. def check_time(start,end):
      68. lt = localtime()
      69. time = strftime("%H:%M",lt)
      70. # fuck ist das geil
      71. if start < time and time < end:
      72. return 1
      73. else:
      74. return 0
      75. # end if time check
      76. #end def check_time
      77. def getPin(exitchar):
      78. # version with enter as exit key
      79. # x = raw_input("Pin?")
      80. print("Pin?"),
      81. x = ''
      82. while True:
      83. old = termios.tcgetattr(sys.stdin)
      84. try:
      85. tty.setraw(sys.stdin)
      86. val = sys.stdin.read(1)
      87. finally:
      88. termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old)
      89. if str(val) == exitchar:
      90. break
      91. else:
      92. print("*"),
      93. x = x + val
      94. # end if str equality
      95. # end while key loop
      96. print("")
      97. return x
      98. # end def getPin
      99. checkpin(0)
      Display All


      Viel Spaß damit

      Sebastian