Mul on lihtne Pythoni skript, mis jälgib kahte GPIO tihvti. Olen määranud tagasipöördeaja parameetri väärtusele 500 ms, kuid mulle helistatakse mitu (peaaegu alati 2) kõnet tagasi helistades, tavaliselt 3 või 4 ms kaugusel. >
See on minu esimene Pythoni skript, nii et mul võib puududa mõni muu peensus kui GPIO käitlemine.
#! / usr / bin / env python2.7import os, datetime, atexit , aeg, urllib2, sysimport RPi.GPIO kui GPIOGPIO.setmode (GPIO.BCM) GPIO.setup (17, GPIO.IN) GPIO.setup (27, GPIO.IN) def gate_moving_callback (kanal): kui GPIO.input (kanal ): print (str (datetime.datetime.now ()), "Värava sulgemine") urllib2.urlopen ("http: // <redacted> / prog / GateClose") .read () sys.stdout.flush () muu: print (str (datetime.datetime.now ()), "Värava avamine") urllib2.urlopen ("http: // <redacted> / prog / GateOpen"). read () os.system ('./gatepic') sys.stdout .flush () def shutdown_request (kanal): print "muutus GPIO27-s:", kanaliprint GP IO.input (kanal), kui GPIO.input (kanal): print str (datetime.datetime.now ()), "Shutdown request" sys.stdout.flush () os.system ('/ sbin / shutdown -h now' ) def cleanup (): #print ("Koristamine") GPIO.cleanup () atexit.register (puhastamine) GPIO.add_event_detect (17, GPIO.BOTH, tagasihelistamine = gate_moving_callback, bouncetime = 500) GPIO.add_event_detect (27, GPIO . MÕlemad, tagasihelistamine = shutdown_request, põrgatusaeg = 500) # Oodake lõputult ... print str (datetime.datetime.now ()), "Valmis!" Sys.stdout.flush () samas True: time.sleep (1);
Siin on üsna tüüpiline näide logist:
('2014-03-02 12: 26: 42.196143', 'Värava avamine') ( '2014-03-02 12: 26: 42.200036', 'värava avamine') ('2014-03-02 12: 27: 49.946151', 'värava sulgemine')
Pange tähele, et teine värava avamise teade on kõigest 4 ms pärast esimest, kuigi olen määranud põrgeoleku aja = 500.
See teatab alati kahest avamisest ja ühest sulgemisest.