Added Animalrecognition over TCP-Socket
This commit is contained in:
15
DB.py
15
DB.py
@@ -122,6 +122,18 @@ class DB:
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def getanimalnrbyrfid (self, rfid):
|
||||
"""
|
||||
Get Animalnr by RFID
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT animalnr FROM animals WHERE rfid = '%s';" % rfid)
|
||||
except:
|
||||
print ("Couldnt read from animals")
|
||||
|
||||
return cursor.fetchone ()
|
||||
|
||||
|
||||
def addmilkdata (self, data):
|
||||
"""
|
||||
Add Milkingdata
|
||||
@@ -175,6 +187,9 @@ class DB:
|
||||
|
||||
if __name__ == "__main__":
|
||||
conn = DB ('/opt/data/animaldb.sqlite', '/tmp/talog.sql', logtest, errlogtest)
|
||||
anr = conn.getanimalnrbyrfid ('7678l43'.lstrip('0'))
|
||||
if anr:
|
||||
print (anr [0])
|
||||
data = {'animalnr' : 711,
|
||||
'earmark' : 'DE09 4711',
|
||||
'rfid' : '123543546'
|
||||
|
||||
@@ -15,5 +15,5 @@ herdewritefile = TAU_PRC.2
|
||||
|
||||
[Animal Recognition]
|
||||
animalrecognition = 1
|
||||
rfiddev = /dev/serial0
|
||||
|
||||
rfidip = 192.168.178.101
|
||||
rfidport = 100
|
||||
|
||||
85
lactor.py
85
lactor.py
@@ -2,12 +2,13 @@
|
||||
import sys, os
|
||||
from pathlib import Path
|
||||
import can
|
||||
import serial
|
||||
from DB import *
|
||||
from time import sleep, time, strftime
|
||||
from datetime import *
|
||||
from configparser import *
|
||||
from Taurus import *
|
||||
from socket import *
|
||||
from select import select
|
||||
|
||||
bus = None
|
||||
infotype = {0 : 'S-Buffer deleted',
|
||||
@@ -19,7 +20,7 @@ infotype = {0 : 'S-Buffer deleted',
|
||||
6 : 'state'
|
||||
}
|
||||
|
||||
ganimalnr = 0
|
||||
grfid = 0
|
||||
|
||||
class CanListener (can.Listener):
|
||||
def on_message_received (self, msg):
|
||||
@@ -105,10 +106,13 @@ class CanListener (can.Listener):
|
||||
if infotype [_info_type] == 'animal nr':
|
||||
if 'REQ' in str (_data):
|
||||
self.log ("Anforderung Tiernummer von Tiererkennung", 3)
|
||||
#FixMe AnimalNr from rFID
|
||||
animalnr = ganimalnr
|
||||
#AnimalNr from RFID
|
||||
animalnr = 0
|
||||
anr = conn.getanimalnrbyrfid (grfid.lstrip('0'))
|
||||
if anr:
|
||||
animalnr = int (anr)
|
||||
#_sendecho = 0
|
||||
_repdata = bytearray (('REP00%03d' % animalnr).encode ())
|
||||
_repdata = bytearray (('REP00%03d' % anr).encode ())
|
||||
self.waitack [_address] = 1
|
||||
|
||||
elif self.waitack [_address]:
|
||||
@@ -296,32 +300,25 @@ if __name__ == "__main__":
|
||||
|
||||
|
||||
c_animalrecognition = config.get ('Animal Recognition', 'animalrecognition')
|
||||
c_animalrecognition = 0
|
||||
if c_animalrecognition:
|
||||
print ('Animalrecognition configured')
|
||||
c_rfiddev = config.get ('Animal Recognition', 'rfiddev')
|
||||
print (' with device %s' % c_rfiddev)
|
||||
if not c_rfiddev:
|
||||
c_rfidip = config.get ('Animal Recognition', 'rfidip')
|
||||
c_rfidport = int (config.get ('Animal Recognition', 'rfidport'))
|
||||
print (' with ip %s port %s' % (c_rfidip, c_rfidport))
|
||||
if not c_rfidip or not c_rfidport:
|
||||
print ('No RFID Device configured')
|
||||
sys.exit (0)
|
||||
"""
|
||||
Nedap RFID Reader
|
||||
Nedap RFID Reader over RS232 / TCP
|
||||
"""
|
||||
print ('RFID configured')
|
||||
rfid = serial.Serial (port = c_rfiddev,\
|
||||
baudrate = "9600",\
|
||||
bytesize = 8,\
|
||||
parity = "N",\
|
||||
stopbits = 1,\
|
||||
timeout = 0,\
|
||||
xonxoff = 0,\
|
||||
rtscts = 0,\
|
||||
writeTimeout = None)
|
||||
srfid = socket(AF_INET, SOCK_STREAM)
|
||||
srfid.connect ((c_rfidip, c_rfidport))
|
||||
herdefiletslatch = None
|
||||
herdechanged = 0
|
||||
readbuffer = ''
|
||||
online = 0
|
||||
animalnr = ''
|
||||
rfidonline = 0
|
||||
rfidnr = ''
|
||||
while 1:
|
||||
if c_herde:
|
||||
if Path (c_herdepath + c_herdereadfile).exists ():
|
||||
@@ -337,29 +334,33 @@ if __name__ == "__main__":
|
||||
herdefiletslatch = _herdets
|
||||
#Tiererkennung
|
||||
if c_animalrecognition:
|
||||
try:
|
||||
d = rfid.read ()
|
||||
if len (d):
|
||||
try:
|
||||
b = d.decode("utf-8")
|
||||
except:
|
||||
print ("Decode Error %s" % d)
|
||||
b = ''
|
||||
readbuffer += b
|
||||
reads = [srfid]
|
||||
writes = []
|
||||
(read, writes, xlist) = select (reads, writes, [], 0.01)
|
||||
for i in read:
|
||||
data = i.recv (512)
|
||||
if len (data):
|
||||
d = data.decode("utf-8", "ignore")
|
||||
readbuffer += d
|
||||
if readbuffer [-2:] == '\r\n':
|
||||
if online:
|
||||
if rfidonline:
|
||||
data = readbuffer.split (' ')
|
||||
if len (data) == 3:
|
||||
newanimalnr = data [2]
|
||||
print ("Tiernummer gelesen %s" % newanimalnr)
|
||||
if newanimalnr != animalnr:
|
||||
print ("Neue Tiernummer %s" % newanimalnr)
|
||||
animalnr = newanimalnr
|
||||
ganimalnr = animalnr
|
||||
|
||||
readbuffer = ''
|
||||
online = 1
|
||||
except KeyboardInterrupt:
|
||||
newrfid = data [2]
|
||||
if newrfid != rfidnr:
|
||||
print ("Neue RFID %s" % newrfid)
|
||||
rfidnr = newrfid
|
||||
grfid = rfidnr
|
||||
readbuffer =''
|
||||
rfidonline = 1
|
||||
for i in xlist:
|
||||
print ("Closed Socket")
|
||||
i.close ()
|
||||
bus.shutdown ()
|
||||
rfid.close ()
|
||||
sys.exit (0)
|
||||
|
||||
try:
|
||||
foo = 0
|
||||
except KeyboardInterrupt:
|
||||
bus.shutdown ()
|
||||
srfid.close ()
|
||||
|
||||
Reference in New Issue
Block a user