Sistema de tiempo y asistencia con frambuesa y Phidgets (3 / 3 paso)

Paso 3: Etiquetas de Rfid

Para guardar la etiqueta de RFID utilizamos un archivo de texto simple. Con un script en Python vamos a leer la etiqueta y si el archivo contiene, grabamos una nueva fila en el archivo attendance.txt.  Al mismo tiempo el script envía un mensaje para mostrar.

Crear un nuevo /home/pi/tag.txt archivo con algunas etiquetas

Crear un nuevo /home/pi/attendance.txt archivo donde guardaremos los movimientos de entrada y salidos

Crear el archivo /home/pi/rfid.py con este contenido

 #!/usr/bin/env python #Basic imports from ctypes import * import sys import time import datetime import urllib2 import urllib #Phidget specific imports from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, OutputChangeEventArgs, TagEventArgs from Phidgets.Devices.RFID import RFID, RFIDTagProtocol tagsList=list() tagStatus=list() with open('tag.txt') as f: tagsList = f.read().splitlines() for index in range(len(tagsList)): tagStatus.append(0) #Create an RFID object try: rfid = RFID() except RuntimeError as e: print("Runtime Exception: %s" % e.details) print("Exiting....") exit(1) #Information Display Function def displayDeviceInfo(): print("|------------|----------------------------------|--------------|------------|") print("|- Attached -|- Type -|- Serial No. -|- Version -|") print("|------------|----------------------------------|--------------|------------|") print("|- %8s -|- %30s -|- %10d -|- %8d -|" % (rfid.isAttached(), rfid.getDeviceName(), rfid.getSerialNum(), rfid.getDeviceVersion())) print("|------------|----------------------------------|--------------|------------|") print("Number of outputs: %i -- Antenna Status: %s -- Onboard LED Status: %s" % (rfid.getOutputCount(), rfid.getAntennaOn(), rfid.getLEDOn())) #Event Handler Callback Functions def rfidAttached(e): attached = e.device print("RFID %i Attached!" % (attached.getSerialNum())) def rfidDetached(e): detached = e.device print("RFID %i Detached!" % (detached.getSerialNum())) def rfidError(e): try: source = e.device print("RFID %i: Phidget Error %i: %s" % (source.getSerialNum(), e.eCode, e.description)) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) def rfidOutputChanged(e): source = e.device print("RFID %i: Output %i State: %s" % (source.getSerialNum(), e.index, e.state)) def rfidTagGained(e): source = e.device rfid.setLEDOn(1) try: if tagStatus[tagsList.index(e.tag)]==0: postdata="Welcome, have a good day" tagStatus[tagsList.index(e.tag)]=1 else: postdata="Hi, see you tomorrow" tagStatus[tagsList.index(e.tag)]=0 if e.tag in tagsList: query_args={'direction':postdata} url='http://localhost/web/message.php' user_agent = 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4' headers = { 'User-Agent' : user_agent } data=urllib.urlencode(query_args) request=urllib2.Request(url,data,headers) request.add_header('Referer', 'http://localhost/web/') response=urllib2.urlopen(request).read() now = datetime.datetime.now() fh = open("/home/pi/attendance.txt", "a") #fh.write(now.strftime('%s')) #fh.write(";{};{};\n".format( tagStatus[tagsList.index(e.tag)], e.tag )) fh.write("{};{};{};\n".format( now.strftime('%s'), tagStatus[tagsList.index(e.tag)], e.tag )) fh.close except ValueError: print("Error unknown tag %s" % (e.tag)) def rfidTagLost(e): source = e.device rfid.setLEDOn(0) time.sleep(2) postdata="Ready.." query_args={'direction':postdata} url='http://localhost/web/message.php' user_agent = 'Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4' headers = { 'User-Agent' : user_agent } data=urllib.urlencode(query_args) request=urllib2.Request(url,data,headers) request.add_header('Referer', 'http://localhost/web/') response=urllib2.urlopen(request).read() #Main Program Code try: rfid.setOnAttachHandler(rfidAttached) rfid.setOnDetachHandler(rfidDetached) rfid.setOnErrorhandler(rfidError) rfid.setOnOutputChangeHandler(rfidOutputChanged) rfid.setOnTagHandler(rfidTagGained) rfid.setOnTagLostHandler(rfidTagLost) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Opening phidget object....") try: rfid.openPhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Waiting for attach....") try: rfid.waitForAttach(10000) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) try: rfid.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Exiting....") exit(1) else: displayDeviceInfo() print("Turning on the RFID antenna....") rfid.setAntennaOn(True) print("Press Enter to quit....") chr = sys.stdin.read(1) try: lastTag = rfid.getLastTag() print("Last Tag: %s" % (lastTag)) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Closing...") try: rfid.closePhidget() except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting....") exit(1) print("Done.") exit(0) 

Ejecutar el script

 sudo python /home/pi/rfid.py 

El lector de RFID se pone en espera, si acercarse a una etiqueta del monitor muestra un mensaje de bienvenida.

Al mismo tiempo la secuencia de comandos guardar una nueva fila en attendance.txt.

Una variable almacena el estado de esa etiqueta y acercarse nuevamente a la misma etiqueta mostrará un mensaje de felicitación a la salida

Artículos Relacionados

Soporte de sistema de video vigilancia solo con frambuesa Pi

Soporte de sistema de video vigilancia solo con frambuesa Pi

Este tutorial describe cómo construir un soporte de sistema de videovigilancia solo basado en Raspberry Pi.Vamos a utilizar una cámara de Pi de frambuesa que continuamente grabar el vídeo en una unidad flash usb. Esto crea archivos de vídeo de 15 min
Sistema de alarma de agua de frambuesa Pi

Sistema de alarma de agua de frambuesa Pi

Instrucciones para emplear un Raspberry PI como un sistema de alarma de aguaVersión 1.0, publicada en enero de 2015El Raspberry Pi lee el estado de uno o dos de agua sensor dispositivo (s) en una o dos de sus pines GPIO. Cuando detecta agua frambuesa
Centro de medios casero con frambuesa pi

Centro de medios casero con frambuesa pi

Con frambuesa pi y una pantalla hdmi/vga de un monitor de escritorio antiguo, puede crear le centro multimedia de casa propia. Este es un proyecto muy simple y requiere conocimientos mínimos requisitos de diseño de sistemas programación/embedded. Tod
Interfaz de BMG160 de Sensor giroscopio de 3 ejes con frambuesa Pi

Interfaz de BMG160 de Sensor giroscopio de 3 ejes con frambuesa Pi

En el mundo de hoy, más de la mitad de los jóvenes y los niños son aficionada a juegos de azar y todos aquellos que gustan de él, fascinado por los aspectos técnicos del juego sabe la importancia de la detección de movimiento en este dominio. Nos sor
Sistema de riego automático con sonda capacitiva y Arduino en el barato (y serio)

Sistema de riego automático con sonda capacitiva y Arduino en el barato (y serio)

Descargo de responsabilidad: Yo no soy un ingeniero en electrónica, por lo que no puedo ofrecer ninguna garantía para el diseño (mucho menos para su implementación). Sólo sé la presentó solución trabajada para mí por lo menos unos 5-6 meses (por lo q
Internet de las cosas con frambuesa Pi - 1

Internet de las cosas con frambuesa Pi - 1

Cuando yo era nuevo en IOT (Internet de las cosas), vi que había apenas cualquier tutoriales que fueron lo suficientemente simples como para un principiante comprender y probar. Había a mucha jerga técnica, o el hardware era demasiado complejo.Ahora
Hackear un juguete de circuito de bolas con frambuesa Pi

Hackear un juguete de circuito de bolas con frambuesa Pi

El concepto es hackear un circuito de bolas con frambuesa ordenador Pi 2 Kano y agregar un sensor y luces para más diversión.El circuito de bola es una Energía Solar circuito de Miniland. La idea es quitar la energía solar y la energía del circuito d
Internet de las cosas con frambuesa Pi-2

Internet de las cosas con frambuesa Pi-2

Se trata de un seguimiento a mi anterior instructivo Internet de las cosas con frambuesa Pi - 1.(Si no está familiarizado con los servidores web, PHP codificación y los conceptos básicos de Internet, se debe probablemente atraviesa parte 1 primera.)E
Sistema de Targeting la bola con comentarios positivos

Sistema de Targeting la bola con comentarios positivos

instrucciones para hacer una bola de impacto variable portátil dirigido a sistema con retroalimentación de audio y luzDeclaración del problemaEl objetivo de crear fue creado específicamente para sus estudiantes y un profesor de educación física adapt
Implementación de reproductor de MP3 con frambuesa Pi

Implementación de reproductor de MP3 con frambuesa Pi

Implementación de reproductor de MP3 con Raspberry PiA través de este instructable que puede reproducir archivos mp3 en una unidad flash USB con frambuesa pi.Requisitos:1-frambuesa Pi B rev2.2-SD tarjeta con sistema operativo Raspbian.3 - ohmios resi
Binario LED con frambuesa Pi

Binario LED con frambuesa Pi

Este proyecto se apagará en/dos luces del LED con frambuesa pi. El control de la luz se puede hacer por código python.Paso 1: Requisitos previos...Frambuesa picables deDos LEDsDos resistenciasConecte los LEDs con pines 3 y 8 del modelo frambuesa b +.
Parpadear un LED con frambuesa pi

Parpadear un LED con frambuesa pi

Hoy voy a publicar como a parpadear un led con frambuesa pi. Un LED parpadea es una tarea para principiantes y simple.componentes necesarios:Frambuesa pi.2 macho a hembra conectores.Una resistencia de 330 omh.UN LED.Un protoboard.Paso 1: procedimient
Pip-Boy 3000 con frambuesa

Pip-Boy 3000 con frambuesa

Hola amigosHoy les voy a de prototipo de mostrar como realizar un Pip Boy 3000 con frambuesa Pi basado en el trabajo de Grieve y que yo portado a la pantalla TFT capacitiva de Adafruit entre sus principales características esta la de utilizar en sus
USO NEXTION para trabajar con frambuesa PI

USO NEXTION para trabajar con frambuesa PI

Tal vez usted ya sabe cómo utilizar Nextion para trabajar con Arduino. Pero tal vez no sabes cómo usarlo con Raspberry Pi. Hay cinco pasos:Paso 1: Instalar SegnixSiga las instrucciones de "Readme.md" de github, instale Segnix en Raspberry Pi.Pas