Implemented manual rework stations

This commit is contained in:
2017-10-01 20:59:13 +02:00
parent 39c7d1de4d
commit 63aa3fbd5d
5 changed files with 482 additions and 109 deletions

325
DB.py
View File

@@ -212,7 +212,7 @@ class DB:
raise Warning
def addblindniet (self, data):
def addblindniet (self, data, store = 1):
"""
Add Processdata 05 - blindniet
and update BDE data
@@ -226,7 +226,8 @@ class DB:
print ("Couldnt insert PD05 blindniet")
raise Warning
self.addblindnietvalues (data);
if store:
self.addblindnietvalues (data);
self.updatebde (data['dmc'], 'blindniet', data['bauteilstatus'])
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
if data['bauteilstatus'] == 'n.i.O.':
@@ -423,7 +424,20 @@ class DB:
return cursor.fetchall ()
def getcclipdict (self, dmc):
"""
Get Processdata 07 - cclip as dict
"""
ret_val = {}
keys = ['dmc', 'startts', 'endts', 'aufnahme', 'clipstatus01', 'clipstatus02', 'clipstatus03', 'clipstatus04', 'clipstatus05', 'clipstatus06', 'clipstatus07',
'clipstatus08', 'clipstatus09', 'clipstatus10', 'clipstatus11', 'clipstatus12', 'clipstatus13', 'clipstatus14', 'clipstatus15', 'clipstatus16',
'clipstatus17', 'clipstatus18']
d = self.getcclip (dmc)
if len (d):
for i in range (len (d [0])):
ret_val [keys [i]] = d [0][i]
return ret_val
def deletecclip (self, dmc):
"""
Delete CClip info
@@ -573,7 +587,7 @@ class DB:
self.log (5, 'PD09 bajonett%02d reworked updating part data' % (i))
self.updateinformation (data['dmc'], 'bajonettclip', 'bajostatus%02d' % i, data['bajostatus%02d' % i])
elif data['bajostatus%02d' % i] == 'n.i.O.':
self.log (5, 'PD09 bajonett%02d still n.i.O' % (i))
self.log (5, 'PD09 bajonett%02d still n.i.O.' % (i))
io = 0
elif data['bajostatus%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD09 bajonett%02d still n.Bearbeitet' % (i))
@@ -586,7 +600,7 @@ class DB:
#'CClip'
if _states ['cclip'] == 'n.Durchlaufen':
self.log (5, 'PD09 CClip %s nDurchlaufen do nothing' % ['dmc'])
self.log (5, 'PD09 CClip %s nDurchlaufen do nothing' % data['dmc'])
_gesio = 0
elif _states ['cclip'] == 'i.O.':
self.log (5, 'PD09 CClip %s i.O. do nothing' % ['dmc'])
@@ -597,7 +611,7 @@ class DB:
self.log (5, 'PD09 CClip%02d reworked updating part data' % (i))
self.updateinformation (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i])
elif data['clipstatus%02d' % i] == 'n.i.O.':
self.log (5, 'PD09 clipstatus%02d still n.i.O' % (i))
self.log (5, 'PD09 clipstatus%02d still n.i.O.' % (i))
io = 0
elif data['clipstatus%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD09 clipstatus%02d still n.Bearbeitet' % (i))
@@ -624,7 +638,7 @@ class DB:
self.updateinformation (data['dmc'], 'masseblech', 'wmutter', data['wmutter'])
self.updateinformation (data['dmc'], 'masseblech', 'tmutter', data['tmutter'])
elif data['kombimutter'] == 'n.i.O.':
self.log (5, 'PD09 Kombimutter still n.i.O')
self.log (5, 'PD09 Kombimutter still n.i.O.')
io = 0
elif data['kombimutter'] == 'n.Bearbeitet':
self.log (5, 'PD09 Kombimutter still n.Bearbeitet')
@@ -636,7 +650,7 @@ class DB:
self.updateinformation (data['dmc'], 'masseblech', 'fniet', data['fniet'])
self.updateinformation (data['dmc'], 'masseblech', 'sniet', data['sniet'])
elif data['blindniet'] == 'n.i.O.':
self.log (5, 'PD09 Blindniet still n.i.O')
self.log (5, 'PD09 Blindniet still n.i.O.')
io = 0
elif data['blindniet'] == 'n.Bearbeitet':
self.log (5, 'PD09 Blindniet still n.Bearbeitet')
@@ -646,7 +660,7 @@ class DB:
self.log (5, 'PD09 Masseblech reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'masseblech', data['masseblech'])
elif data['masseblech'] == 'n.i.O.':
self.log (5, 'PD09 Masseblech still n.i.O')
self.log (5, 'PD09 Masseblech still n.i.O.')
io = 0
elif data['masseblech'] == 'n.Bearbeitet':
self.log (5, 'PD09 Masseblech still n.Bearbeitet')
@@ -656,7 +670,7 @@ class DB:
self.log (5, 'PD09 Ausgleichselement reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'ausgleichselement', data['ausgleichselement'])
elif data['ausgleichselement'] == 'n.i.O.':
self.log (5, 'PD09 Ausgleichselement still n.i.O')
self.log (5, 'PD09 Ausgleichselement still n.i.O.')
io = 0
elif data['ausgleichselement'] == 'n.Bearbeitet':
self.log (5, 'PD09 Ausgleichselement still n.Bearbeitet')
@@ -666,7 +680,7 @@ class DB:
self.log (5, 'PD09 Schallisolierung reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'schallisolierung', data['schallisolierung'])
elif data['schallisolierung'] == 'n.i.O.':
self.log (5, 'PD09 Schallisolierung still n.i.O')
self.log (5, 'PD09 Schallisolierung still n.i.O.')
io = 0
elif data['schallisolierung'] == 'n.Bearbeitet':
self.log (5, 'PD09 Schallisolierung still n.Bearbeitet')
@@ -695,6 +709,278 @@ class DB:
#self.updatebde (data['dmc'], 'csv', 'erzeugt')
def addnacharbeitg11 (self, data):
"""
Add Processdata 30 für G11 Hand / Rework
and update BDE data
"""
#self.updatebde (data['dmc'], 'nacharbeit', data['bauteilstatus'])
#self.updatebde (data['dmc'], 'endts', data['endts'])
#if data['bauteilstatus'] == 'n.i.O.':
try:
l = self.getbde (data['dmc'])[0]
except:
self.log (1, 'PD30 keine BDE Daten %s abbruch' % data['dmc'])
return 0
#dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus
_states = {'pruefzelle1' : l[6],
'putzzelle' : l[7],
'chiron' : l[8],
'blindniet': l[9],
'bajonettclip': l[10],
'cclip': l[11],
'masseblech' : l[12]
}
_ges = l[17]
_gesio = 1
#'Blindniet'
if _states ['blindniet'] == 'n.Durchlaufen':
self.log (5, 'PD30 Blindniet %s nDurchlaufen create Blindnietdata' % data['dmc'])
bnkeys = ['dmc', 'startts', 'endts', 'DGBM8status01', 'DGBM8status02', 'DGBM8status03', 'DGBM8status04', 'NietM8status01', 'NietM8status02', 'NietM6status01',
'NietM6status02', 'NietM6status03', 'NietM6status04', 'NietM6status05', 'DGBM8M01', 'DGBM8D01', 'DGBM8W01', 'DGBM8T01', 'DGBM8M02', 'DGBM8D02', 'DGBM8W02',
'DGBM8T02', 'DGBM8M03', 'DGBM8D03', 'DGBM8W03', 'DGBM8T03', 'DGBM8M04', 'DGBM8D04', 'DGBM8W04', 'DGBM8T04', 'NietM8F01', 'NietM8S01', 'NietM8F02', 'NietM8S02'
, 'NietM6F01', 'NietM6S01', 'NietM6F02', 'NietM6S02', 'NietM6F03', 'NietM6S03', 'NietM6F04', 'NietM6S04', 'NietM6F05', 'NietM6S05', 'ladungstraeger']
_bndata = {}
_bntatus = 'i.O. NA'
for k in bnkeys:
_bndata [k] = data [k]
if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']:
self.log (5, 'PD30 %s still NiO so complete state is NiO' % k)
_bnstatus = 'n.i.O.'
_gesio = 0
_bndata ['bauteilstatus'] = _bnstatus
self.addblindniet (_bndata, store = 0)
elif _states ['blindniet'] in ['i.O.', 'i.O. NA']:
self.log (5, 'PD30 Blindniet %s already i.O. do nothing' % data['dmc'])
else:
self.log (5, 'PD30 check Blindniet values ')
io = 1
for i in range (1, 5):
if data['DGBM8status%02d' % i] == 'i.O. NA':
self.log (5, 'PD30 DGBM8_%02d reworked updating part data M:%d D:%d W:%d' % (i, data['DGBM8M%02d' % i], data['DGBM8D%02d' % i], data['DGBM8W%02d' % i] ))
self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8status%02d' % i, data['DGBM8status%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8M%02d' % i, data['DGBM8M%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8D%02d' % i, data['DGBM8D%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8W%02d' % i, data['DGBM8W%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'DGBM8T%02d' % i, data['DGBM8T%02d' % i])
elif data['DGBM8status%02d' % i] == 'n.i.O.':
self.log (5, 'PD30 DGBM8_%02d still n.i.O.' % (i))
io = 0
elif data['DGBM8status%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD30 DGBM8_%02d still n.Bearbeitet ' % (i))
io = 0
for i in range (1, 3):
if data['NietM8status%02d' % i] == 'i.O. NA':
self.log (5, 'PD30 NietM8_%02d reworked updating part data F:%d S:%d' % (i, data['NietM8F%02d' % i], data['NietM8S%02d' % i]))
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8status%02d' % i, data['NietM8status%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8F%02d' % i, data['NietM8F%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM8S%02d' % i, data['NietM8S%02d' % i])
elif data['NietM8status%02d' % i] == 'n.i.O.':
self.log (5, 'PD30 NietM8_%02d still n.i.O.' % (i))
io = 0
elif data['NietM8status%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD30 NietM8_%02d still n.Bearbeitet' % (i))
io = 0
for i in range (1, 6):
if data['NietM6status%02d' % i] == 'i.O. NA':
self.log (5, 'PD30 NietM6_%02d reworked updating part data F:%d S:%d' % (i, data['NietM6F%02d' % i], data['NietM6S%02d' % i]))
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6status%02d' % i, data['NietM6status%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6F%02d' % i, data['NietM6F%02d' % i])
self.updateinformationfixed (data['dmc'], 'blindniet', 'NietM6S%02d' % i, data['NietM6S%02d' % i])
elif data['NietM6status%02d' % i] == 'n.i.O.':
self.log (5, 'PD30 NietM6_%02d still n.i.O ' % (i))
io = 0
elif data['NietM6status%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD30 NietM6_%02d still n.Bearbeitet' % (i))
io = 0
if io:
self.updatebde (data['dmc'], 'blindniet', 'i.O. NA')
else:
_gesio = 0
#'Bajonettclip'
if _states ['bajonettclip'] == 'n.Durchlaufen':
self.log (5, 'PD30 Bajonett %s nDurchlaufen create Bajonettdata' % ['dmc'])
bjkeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'bajostatus01', 'bajostatus02', 'bajostatus03', 'bajostatus04']
_bjdata = {}
_bjtatus = 'i.O. NA'
for k in bjkeys:
_bjdata [k] = data [k]
if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']:
self.log (5, 'PD30 %s still NiO so complete state is NiO' % k)
_bjstatus = 'n.i.O.'
_gesio = 0
_bjdata ['aufnahme'] = '0'
_bjdata ['bauteilstatus'] = _bjstatus
self.addbajonettclip (_bjdata)
elif _states ['bajonettclip'] == 'i.O.':
self.log (5, 'PD30 Bajonett %s i.O. do nothing' % data['dmc'])
else:
io = 1
for i in range (1, 5):
if data['bajostatus%02d' % i] == 'i.O. NA':
self.log (5, 'PD30 bajonett%02d reworked updating part data' % (i))
self.updateinformationfixed (data['dmc'], 'bajonettclip', 'bajostatus%02d' % i, data['bajostatus%02d' % i])
elif data['bajostatus%02d' % i] == 'n.i.O.':
self.log (5, 'PD30 bajonett%02d still n.i.O.' % (i))
io = 0
elif data['bajostatus%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD30 bajonett%02d still n.Bearbeitet' % (i))
io = 0
if io:
self.updatebde (data['dmc'], 'bajonettclip', 'i.O. NA')
else:
_gesio = 0
#'CClip'
if _states ['cclip'] == 'n.Durchlaufen':
self.log (5, 'PD30 CClip %s nDurchlaufen create C-Clipdata' % data['dmc'])
cckeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'clipstatus01', 'clipstatus02', 'clipstatus03', 'clipstatus04', 'clipstatus05', 'clipstatus06',
'clipstatus07', 'clipstatus08', 'clipstatus09', 'clipstatus10', 'clipstatus11', 'clipstatus12', 'clipstatus13', 'clipstatus14', 'clipstatus15',
'clipstatus16', 'clipstatus17', 'clipstatus18']
_ccdata = {}
_ccstatus = 'i.O. NA'
for k in cckeys:
_ccdata [k] = data [k]
if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']:
self.log (5, 'PD30 %s still NiO so complete state is NiO' % k)
_ccstatus = 'n.i.O.'
_gesio = 0
_ccdata ['aufnahme'] = '0'
_ccdata ['bauteilstatus'] = _ccstatus
self.addcclip (_ccdata)
elif _states ['cclip'] == 'i.O.':
self.log (5, 'PD30 CClip %s i.O. do nothing' % ['dmc'])
else:
io = 1
dbdata = self.getcclipdict (data['dmc'])
for i in range (1, 18):
if data['clipstatus%02d' % i] == dbdata['clipstatus%02d' % i]:
self.log (5, 'PD30 CClip%02d nothing changed in DB (old %s)' % (i, dbdata['clipstatus%02d' % i]))
elif data['clipstatus%02d' % i] == 'i.O. NA':
self.log (5, 'PD30 CClip%02d reworked updating part data in DB (old %s)' % (i, dbdata['clipstatus%02d' % i]))
self.updateinformationfixed (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i])
elif (data['clipstatus%02d' % i] == 'i.O.') and (dbdata['clipstatus%02d' % i] not in ['i.O.', 'i.O. NA']):
self.log (5, 'PD30 CClip%02d was not i.O updating part data' % (i))
self.updateinformationfixed (data['dmc'], 'cclip', 'clipstatus%02d' % i, data['clipstatus%02d' % i])
elif data['clipstatus%02d' % i] == 'n.i.O.':
self.log (5, 'PD30 clipstatus%02d still n.i.O.' % (i))
io = 0
elif data['clipstatus%02d' % i] == 'n.Bearbeitet':
self.log (5, 'PD30 clipstatus%02d still n.Bearbeitet' % (i))
io = 0
if io:
self.updatebde (data['dmc'], 'cclip', 'i.O. NA')
else:
_gesio = 0
#'Maseblech'
if _states ['masseblech'] == 'n.Durchlaufen':
self.log (5, 'PD30 Masseblech %s nDurchlaufen create masseblechdata' % ['dmc'])
mbkeys = ['dmc', 'startts', 'endts', 'ladungstraeger', 'startts', 'endts', 'ausgleichselement', 'schallisolierung',
'masseblech', 'blindniet', 'kombimutter', 'fniet', 'sniet', 'mmutter', 'dmutter', 'wmutter', 'tmutter']
_mbdata = {}
_mbstatus = 'i.O. NA'
for k in mbkeys:
_mbdata [k] = data [k]
if 'status' in k and data [k] not in ['i.O.', 'i.O. NA']:
self.log (5, 'PD30 %s still NiO so complete state is NiO' % k)
_mbstatus = 'n.i.O.'
_gesio = 0
_mbdata ['aufnahme'] = '0'
_mbdata ['bauteilstatus'] = _mbstatus
self.addmasseblech (_mbdata)
elif _states ['masseblech'] == 'i.O.':
self.log (5, 'PD30 Masseblech %s i.O. do nothing' % data['dmc'])
else:
io = 1
if data['kombimutter'] == 'i.O. NA':
self.log (5, 'PD30 Kombimutter reworked updating part data M:%d D:%d W:%d' % (data['mmutter'], data['dmutter'], data['wmutter'] ))
self.updateinformation (data['dmc'], 'masseblech', 'kombimutter', data['kombimutter'])
self.updateinformation (data['dmc'], 'masseblech', 'mmutter', data['mmutter'])
self.updateinformation (data['dmc'], 'masseblech', 'dmutter', data['dmutter'])
self.updateinformation (data['dmc'], 'masseblech', 'wmutter', data['wmutter'])
self.updateinformation (data['dmc'], 'masseblech', 'tmutter', data['tmutter'])
elif data['kombimutter'] == 'n.i.O.':
self.log (5, 'PD30 Kombimutter still n.i.O.')
io = 0
elif data['kombimutter'] == 'n.Bearbeitet':
self.log (5, 'PD30 Kombimutter still n.Bearbeitet')
io = 0
if data['blindniet'] == 'i.O. NA':
self.log (5, 'PD30 Niet reworked updating part data F:%d S:%d' % (data['fniet' % i], data['sniet']))
self.updateinformation (data['dmc'], 'masseblech', 'blindniet', data['blindniet'])
self.updateinformation (data['dmc'], 'masseblech', 'fniet', data['fniet'])
self.updateinformation (data['dmc'], 'masseblech', 'sniet', data['sniet'])
elif data['blindniet'] == 'n.i.O.':
self.log (5, 'PD30 Blindniet still n.i.O.')
io = 0
elif data['blindniet'] == 'n.Bearbeitet':
self.log (5, 'PD30 Blindniet still n.Bearbeitet')
io = 0
if data['masseblech'] == 'i.O. NA':
self.log (5, 'PD30 Masseblech reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'masseblech', data['masseblech'])
elif data['masseblech'] == 'n.i.O.':
self.log (5, 'PD30 Masseblech still n.i.O.')
io = 0
elif data['masseblech'] == 'n.Bearbeitet':
self.log (5, 'PD30 Masseblech still n.Bearbeitet')
io = 0
if data['ausgleichselement'] == 'i.O. NA':
self.log (5, 'PD30 Ausgleichselement reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'ausgleichselement', data['ausgleichselement'])
elif data['ausgleichselement'] == 'n.i.O.':
self.log (5, 'PD30 Ausgleichselement still n.i.O.')
io = 0
elif data['ausgleichselement'] == 'n.Bearbeitet':
self.log (5, 'PD30 Ausgleichselement still n.Bearbeitet')
io = 0
if data['schallisolierung'] == 'i.O. NA':
self.log (5, 'PD30 Schallisolierung reworked updating part data')
self.updateinformation (data['dmc'], 'masseblech', 'schallisolierung', data['schallisolierung'])
elif data['schallisolierung'] == 'n.i.O.':
self.log (5, 'PD30 Schallisolierung still n.i.O.')
io = 0
elif data['schallisolierung'] == 'n.Bearbeitet':
self.log (5, 'PD30 Schallisolierung still n.Bearbeitet')
io = 0
if io:
self.updatebde (data['dmc'], 'masseblech', 'i.O. NA')
else:
_gesio = 0
if _gesio:
self.log (5, 'PD30 All part data i.O. Part is i.O.')
if _ges != 'i.O.':
self.log (5, 'PD30 part not i.O. yet set i.O.')
self.updatebde (data['dmc'], 'gesamtstatus', 'i.O. NA')
#nav = NAV (path = "/srv/navision/", db = self)
#nav.createcsv (data['dmc'])
#try:
# shutil.move ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share")
#except:
# self.errlog ("/srv/navision/share/%s.csv already esist" % data['dmc'])
# os.rename ("/srv/navision/%s.csv" % data['dmc'], "/srv/navision/share/%s.csv" % data['dmc'])
#self.updatebde (data['dmc'], 'csv', 'erzeugt')
def addpruefzelle2 (self, data):
"""
Add Processdata 10 - pruefzelle 2
@@ -784,7 +1070,22 @@ class DB:
try:
cursor = self.executesql ("UPDATE %s SET %s = '%s' WHERE dmc = '%s' AND %s <> 'n.Bearbeitet';" % (where, field, value, dmc, field))
except:
self.errlog ("Couldnt update field %s in table %s" % (where, field))
self.errlog ("Couldnt update field %s in table %s" % (field, where))
def updateinformationfixed (self, dmc, where, field, value):
"""
Updates part information
even if n.Bearbeitet
"""
if where == 'chiron':
self.log (5, 'Where is Chiron no need to update')
return
try:
cursor = self.executesql ("UPDATE %s SET %s = '%s' WHERE dmc = '%s';" % (where, field, value, dmc))
except:
self.errlog ("Couldnt update field %s in table %s" % (field, where))

View File

@@ -29,7 +29,7 @@ def fromstring (data):
tel.attrib['type'] = data [6:10].decode ()
tel.attrib['position'] = data [10:14].decode ()
tel.attrib['dmc'] = (data [14:42]).decode ().rstrip (' \x00')
tel.attrib['starts'] = tsdecode (data [42:56].decode ())
tel.attrib['startts'] = tsdecode (data [42:56].decode ())
# Bitarray other Byte Order !!
tel.attrib['bauteil'] = bauteil.get ((data [57] << 8) + data [56], '')
tel.attrib['variante'] = variante.get ((data [59] << 8) + data [58], '')

View File

@@ -9,6 +9,7 @@ __version__ = "$Revision: 1.1 $"[11:-2]
from telegram import TELEGRAM, TEL_PD30
from telegram import tsdecode
from states import *
from parts import *
def fromstring (data):
"""
@@ -29,6 +30,8 @@ def fromstring (data):
tel.attrib['dmc'] = (data [10:38]).decode ().rstrip (' \x00')
tel.attrib['startts'] = tsdecode (data [38:52].decode ())
tel.attrib['endts'] = tsdecode (data [38:52].decode ())
tel.attrib['bauteil'] = bauteil.get ((data [53] << 8) + data [52], '')
tel.attrib['variante'] = variante.get ((data [55] << 8) + data [54], '')
#52-56 Varianten daten
tel.attrib['PutzzelleStatus'] = bearbeitungsstatus.get (chr (data [56]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['NietM6status01'] = bearbeitungsstatus.get (chr (data [58]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
@@ -76,153 +79,175 @@ def fromstring (data):
tel.attrib['NietM6S05'] = (data [86] << 8) + data [87]
except:
print ("Debug-NietM6S05", data[86], data[87])
tel.attrib['NietM8status01'] = bearbeitungsstatus.get (chr (data [71]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['NietM8status02'] = bearbeitungsstatus.get (chr (data [72]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['DGBM8status01'] = bearbeitungsstatus.get (chr (data [73]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['DGBM8status02'] = bearbeitungsstatus.get (chr (data [74]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['DGBM8status03'] = bearbeitungsstatus.get (chr (data [75]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['DGBM8status04'] = bearbeitungsstatus.get (chr (data [76]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#DGB
tel.attrib['DGBM8status01'] = bearbeitungsstatus.get (chr (data [88]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['DGBM8M01'] = (data [90] << 8) + data [91]
except:
print ("Debug-DGBM8M01", data[90], data[91])
try:
tel.attrib['DGBM8D01'] = (data [92] << 8) + data [93]
tel.attrib['DGBM8W01'] = (data [92] << 8) + data [93]
except:
print ("Debug-DGBM8D01", data[92], data[93])
print ("Debug-DGBM8W01", data[92], data[93])
try:
tel.attrib['DGBM8W01'] = (data [94] << 8) + data [95]
tel.attrib['DGBM8D01'] = (data [94] << 8) + data [95]
except:
print ("Debug-DGBM8W01", data[94], data[95])
print ("Debug-DGBM8D01", data[94], data[95])
try:
tel.attrib['DGBM8T01'] = (data [96] << 8) + data [97]
except:
print ("Debug-DGBM8T01", data[96], data[97])
tel.attrib['DGBM8status02'] = bearbeitungsstatus.get (chr (data [98]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['DGBM8M02'] = (data [98] << 8) + data [99]
tel.attrib['DGBM8M02'] = (data [100] << 8) + data [101]
except:
print ("Debug-DGBM8M02", data[98], data[99])
try:
tel.attrib['DGBM8D02'] = (data [100] << 8) + data [101]
except:
print ("Debug-DGBM8D02", data[100], data[101])
print ("Debug-DGBM8M02", data[100], data[101])
try:
tel.attrib['DGBM8W02'] = (data [102] << 8) + data [103]
except:
print ("Debug-DGBM8W02", data[102], data[103])
try:
tel.attrib['DGBM8T02'] = (data [104] << 8) + data [105]
tel.attrib['DGBM8D02'] = (data [104] << 8) + data [105]
except:
print ("Debug-DGBM8T02", data[104], data[105])
print ("Debug-DGBM8D02", data[104], data[105])
try:
tel.attrib['DGBM8M03'] = (data [106] << 8) + data [107]
tel.attrib['DGBM8T02'] = (data [106] << 8) + data [107]
except:
print ("Debug-DGBM8M03", data[106], data[107])
print ("Debug-DGBM8T02", data[106], data[107])
tel.attrib['DGBM8status03'] = bearbeitungsstatus.get (chr (data [108]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['DGBM8D03'] = (data [108] << 8) + data [109]
tel.attrib['DGBM8M03'] = (data [110] << 8) + data [111]
except:
print ("Debug-DGBM8D03", data[108], data[109])
print ("Debug-DGBM8M03", data[110], data[111])
try:
tel.attrib['DGBM8W03'] = (data [110] << 8) + data [111]
tel.attrib['DGBM8W03'] = (data [112] << 8) + data [113]
except:
print ("Debug-DGBM8W03", data[110], data[111])
print ("Debug-DGBM8W03", data[112], data[113])
try:
tel.attrib['DGBM8T03'] = (data [112] << 8) + data [113]
tel.attrib['DGBM8D03'] = (data [114] << 8) + data [115]
except:
print ("Debug-DGBM8T03", data[112], data[113])
print ("Debug-DGBM8D03", data[114], data[115])
try:
tel.attrib['DGBM8M04'] = (data [114] << 8) + data [115]
tel.attrib['DGBM8T03'] = (data [116] << 8) + data [117]
except:
print ("Debug-DGBM8M04", data[114], data[115])
print ("Debug-DGBM8T03", data[116], data[117])
tel.attrib['DGBM8status04'] = bearbeitungsstatus.get (chr (data [118]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['DGBM8D04'] = (data [116] << 8) + data [117]
tel.attrib['DGBM8M04'] = (data [120] << 8) + data [121]
except:
print ("Debug-DGBM8D04", data[116], data[117])
print ("Debug-DGBM8M04", data[120], data[121])
try:
tel.attrib['DGBM8W04'] = (data [118] << 8) + data [119]
tel.attrib['DGBM8W04'] = (data [122] << 8) + data [123]
except:
print ("Debug-DGBM8W04", data[118], data[119])
print ("Debug-DGBM8W04", data[122], data[123])
try:
tel.attrib['DGBM8T04'] = (data [120] << 8) + data [121]
tel.attrib['DGBM8D04'] = (data [124] << 8) + data [125]
except:
print ("Debug-DGBM8T04", data[120], data[121])
print ("Debug-DGBM8D04", data[124], data[125])
try:
tel.attrib['NietM8F01'] = (data [142] << 8) + data [143]
tel.attrib['DGBM8T04'] = (data [126] << 8) + data [127]
except:
print ("Debug-NietM8F01", data[142], data[143])
print ("Debug-DGBM8T04", data[126], data[127])
tel.attrib['NietM8status01'] = bearbeitungsstatus.get (chr (data [128]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['NietM8S01'] = (data [144] << 8) + data [145]
tel.attrib['NietM8F01'] = (data [130] << 8) + data [131]
except:
print ("Debug-NietM8S01", data[144], data[145])
print ("Debug-NietM8F01", data[130], data[131])
try:
tel.attrib['NietM8F02'] = (data [146] << 8) + data [147]
tel.attrib['NietM8S01'] = (data [132] << 8) + data [133]
except:
print ("Debug-NietM8F02", data[146], data[147])
print ("Debug-NietM8S01", data[132], data[133])
tel.attrib['NietM8status02'] = bearbeitungsstatus.get (chr (data [134]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['NietM8S02'] = (data [148] << 8) + data [149]
tel.attrib['NietM8F02'] = (data [136] << 8) + data [139]
except:
print ("Debug-NietM8S02", data[148], data[149])
print ("Debug-NietM8F02", data[136], data[137])
try:
tel.attrib['NietM8S02'] = (data [138] << 8) + data [139]
except:
print ("Debug-NietM8S02", data[138], data[139])
#Bajonettclip Status
#tel.attrib['bauteilstatusbajo'] = bauteilstatus.get (chr (data [160]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['bajostatus01'] = bearbeitungsstatus.get (chr (data [161]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['bajostatus02'] = bearbeitungsstatus.get (chr (data [162]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['bajostatus03'] = bearbeitungsstatus.get (chr (data [163]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['bajostatus04'] = bearbeitungsstatus.get (chr (data [164]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
for i in range (4):
tel.attrib['bajostatus%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [140 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#CClip
tel.attrib['clipstatus01'] = bearbeitungsstatus.get (chr (data [191]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus02'] = bearbeitungsstatus.get (chr (data [192]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus03'] = bearbeitungsstatus.get (chr (data [193]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus04'] = bearbeitungsstatus.get (chr (data [194]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus05'] = bearbeitungsstatus.get (chr (data [195]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus06'] = bearbeitungsstatus.get (chr (data [196]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus07'] = bearbeitungsstatus.get (chr (data [197]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus08'] = bearbeitungsstatus.get (chr (data [198]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus09'] = bearbeitungsstatus.get (chr (data [199]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus10'] = bearbeitungsstatus.get (chr (data [200]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus11'] = bearbeitungsstatus.get (chr (data [201]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus12'] = bearbeitungsstatus.get (chr (data [202]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus13'] = bearbeitungsstatus.get (chr (data [203]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus14'] = bearbeitungsstatus.get (chr (data [204]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus15'] = bearbeitungsstatus.get (chr (data [205]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus16'] = bearbeitungsstatus.get (chr (data [206]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus17'] = bearbeitungsstatus.get (chr (data [207]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['clipstatus18'] = bearbeitungsstatus.get (chr (data [208]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
for i in range (29):
tel.attrib['clipstatus%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [144 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#Masseblech
#tel.attrib['bauteilstatus'] = bauteilstatus.get (chr (data [70]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['ausgleichselement'] = bearbeitungsstatus.get (chr (data [221]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['schallisolierung'] = bearbeitungsstatus.get (chr (data [222]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['masseblech'] = bearbeitungsstatus.get (chr (data [223]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['blindniet'] = bearbeitungsstatus.get (chr (data [224]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['kombimutter'] = bearbeitungsstatus.get (chr (data [225]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['blindniet'] = bearbeitungsstatus.get (chr (data [174]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['fniet'] = (data [240] << 8) + data [241]
tel.attrib['fniet'] = (data [176] << 8) + data [177]
except:
print ("Debug-fniet", data[240], data[241])
print ("Debug-fniet", data[176], data[177])
try:
tel.attrib['sniet'] = (data [242] << 8) + data [243]
tel.attrib['sniet'] = (data [178] << 8) + data [179]
except:
print ("Debug-sniet", data[242], data[243])
print ("Debug-sniet", data[178], data[179])
tel.attrib['kombimutter'] = bearbeitungsstatus.get (chr (data [180]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['mmutter'] = (data [244] << 8) + data [245]
tel.attrib['mmutter'] = (data [182] << 8) + data [183]
except:
print ("Debug-mmutter", data[244], data[245])
print ("Debug-mmutter", data[182], data[183])
try:
tel.attrib['dmutter'] = (data [246] << 8) + data [247]
tel.attrib['wmutter'] = (data [184] << 8) + data [185]
except:
print ("Debug-dmutter", data[246], data[247])
print ("Debug-wmutter", data[184], data[185])
try:
tel.attrib['wmutter'] = (data [248] << 8) + data [249]
tel.attrib['dmutter'] = (data [186] << 8) + data [187]
except:
print ("Debug-wmutter", data[248], data[249])
print ("Debug-dmutter", data[186], data[187])
try:
tel.attrib['tmutter'] = (data [250] << 8) + data [251]
tel.attrib['tmutter'] = (data [188] << 8) + data [189]
except:
print ("Debug-tmutter", data[250], data[251])
print ("Debug-tmutter", data[188], data[189])
tel.attrib['masseblech'] = bearbeitungsstatus.get (chr (data [190]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['ausgleichselement'] = bearbeitungsstatus.get (chr (data [191]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['schallisolierung'] = bearbeitungsstatus.get (chr (data [192]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
for i in range (4):
tel.attrib['BNM8status%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [194 + i * 6]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['BNM8f%02d' % ( i + 1)] = (data [196 + i * 6] << 8) + data [197 + i * 6]
except:
print ("Debug-BNM8f%02d" % ( i + 1) , data[196 + i * 6], data[197 + i * 6])
try:
tel.attrib['BNM8s%02d' % ( i + 1) ] = (data [198 + i * 6] << 8) + data [199 + i * 6]
except:
print ("Debug-BNM8f%02d" % ( i + 1) , data[198 + i * 6], data[199 + i * 6])
for i in range (4):
tel.attrib['SKSM8status%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [218 + i * 6]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
try:
tel.attrib['SKSM8M%02d' % ( i + 1)] = (data [220 + i * 6] << 8) + data [221 + i * 6]
except:
print ("Debug-SKSM8M%02d" % ( i + 1) , data[220 + i * 6], data[221 + i * 6])
try:
tel.attrib['SKSM8W%02d' % ( i + 1) ] = (data [222 + i * 6] << 8) + data [223 + i * 6]
except:
print ("Debug-SKSM8W%02d" % ( i + 1) , data[222 + i * 6], data[223 + i * 6])
#Bleche
for i in range (4):
tel.attrib['Blechstatus%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [242 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#Linksenkopfschraube in CClip
for i in range (4):
tel.attrib['LKSC%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [246 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#ODB
tel.attrib['ODBstatus'] = bearbeitungsstatus.get (chr (data [250]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['ODBSchraubestatus'] = bearbeitungsstatus.get (chr (data [251]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#Bleche
for i in range (4):
tel.attrib['Filzstatus%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [252 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#Bohgrung Chiron
for i in range (8):
tel.attrib['Bohrungstatus%02d' % (i + 1)] = bearbeitungsstatus.get (chr (data [256 + i]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
tel.attrib['bauteilstatus'] = bauteilstatus.get (chr (data [264]), '') #0 - unbearbeitet; 1 - iO; 2 - niO
#UserID
try:
tel.attrib['userid'] = (data [266] << 8) + data [267]
except:
print ("Debug-tmutter", data[266], data[267])
tel.attrib['ladungstraeger'] = ''
return tel

68
bde.py
View File

@@ -231,37 +231,59 @@ class BDEServer ():
else:
self.message (3, ' DT_handler : DONNOT Store Data from PD20 Pruefzelle Fill for %s' % ret_val['dmc'])
elif teltype == 'PD30':
self.message (3, ' DT_handler : Store Data from PD30 Nacharbeit for %s' % ret_val['dmc'])
self.message (3, ' DT_handler : Store Data from PD30 Hand/Nacharbeit for %s' % ret_val['dmc'])
if (ret_val['bauteil'] in ('G11', 'G32')):
self.message (3, ' DT_handler : Update G11/G32 Data Hand / Nacharbeit in BDE for %s' % ret_val['dmc'])
DB_con.addnacharbeitg11 (ret_val)
elif teltype == 'DM30':
self.message (3, ' DT_handler : Requested Data from PD30 Handmontage Scanner %s for %s' % (ret_val['position'], ret_val['dmc']))
#1st Check if Part in Table
_partinfo = []
if (ret_val['dmc'] in ('G11', 'G32')):
if (ret_val['bauteil'] in ('G11', 'G32')):
self.message (3, ' DT_handler : Found G11/G32 Data in BDE for %s' % ret_val['dmc'])
_partinfo = DB_con.getbde (ret_val['dmc'])
if ret_val['position'] == 'BC01':
#Scanner BC01 Putzzelle
#Teil anlegen und geputzt setzen
if (ret_val['dmc'] in ('G11', 'G32')):
if (ret_val['bauteil'] in ('G11', 'G32')):
if not len (_partinfo):
self.message (3, ' DT_handler : Create G11/G32 Data from BC01 in BDE for %s' % ret_val['dmc'])
DB_con.addbde (ret_val, anlage = 'Hand')
DB_con.updatebde (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
else:
self.message (3, ' DT_handler : G11/G32 Data from BC01 in BDE for %s already existing' % ret_val['dmc'])
#DB_con.updatebde (ret_val['dmc'], 'variante', ret_val['bauteil'] + '-' + ret_val['variante'])
#Fixme if _partinfo[7] == 'n.Durchlaufen':
self.message (3, ' DT_handler : Bad state G11/G32 at BC04 for %s' % ret_val['dmc'])
_quit = 2
self.message (3, ' DT_handler : Add Putzzellendata for G11/G32 from BC01 in BDE for %s' % ret_val['dmc'])
ret_val['bauteilstatus'] = 'i.O.'
ret_val['endts'] = ret_val['startts']
DB_con.addputzzelle (ret_val)
_tmpdat = ret_val.attrib
_tmpdat['bauteilstatus'] = 'i.O.'
_tmpdat['endts'] = ret_val['startts']
#FixMe
DB_con.addputzzelle (_tmpdat)
else:
if len (_partinfo):
if ret_val['position'] == 'BC02':
#Scanner BC02 Chiron
xx = 0
if len (_partinfo):
self.message (3, ' DT_handler : BC02 G11/G32 exists set HUD in BDE for %s' % ret_val['dmc'])
_tmpdat = ret_val.attrib
_tmpdat['chiron'] = 2 # i.O. state
_tmpdat['endts'] = ret_val['startts']
_tmpdat['bauteilstatus'] = 'i.O.'
#FixMe set Error if not geputzt
DB_con.addchiron (_tmpdat)
else:
_quit = 1
elif ret_val['position'] == 'BC03':
#Scanner BC03 Vormontage RR
xx = 0
elif ret_val['position'] == 'BC04':
#Scanner BC04 WE
if (ret_val['dmc'] in ('G11', 'G32')):
if (ret_val['bauteil'] in ('G11', 'G32')):
if _partinfo[7] == 'n.Durchlaufen':
self.message (3, ' DT_handler : Bad state G11/G32 at BC04 for %s' % ret_val['dmc'])
_quit = 2
@@ -269,7 +291,7 @@ class BDEServer ():
self.message (3, ' DT_handler : Not G11/G32 at BC04 for %s' % ret_val['dmc'])
_quit = 3
elif ret_val['position'] in ('BC05', 'BC06', 'BC07'):
if (ret_val['dmc'] in ('G11', 'G32')):
if (ret_val['bauteil'] in ('G11', 'G32')):
print ('passt scho')
else:
#Part not found return error Code
@@ -295,7 +317,7 @@ class BDEServer ():
_quit = 99
if _quit > -1:
if teltype not in ('DM01', 'DM09', 'DM20', 'DM30'):
if teltype not in ('DM01', 'DM09', 'DM20', 'DM30', 'PD30'):
# Prepare Quit teltgramm
self.generatequit (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
self.message (5, ' DT_handler : Quit Tel queued: Result: %d teltype %s' % (_quit, teltype))
@@ -312,7 +334,10 @@ class BDEServer ():
if ret_val['position'] in ('BC05', 'BC06', 'BC07'):
self.generatepdg11 (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], ret_val['dmc'], _quit)
else:
self.generatequit (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
self.generatequitfixed (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
elif teltype == 'PD30':
#Fixed Quit
self.generatequitfixed (count, _channel, client_id, teltype, ret_val ['src'], ret_val ['dst'], _quit)
#count_old = count
self.connections[_channel][(client_id)][1][teltype] = count
@@ -991,6 +1016,27 @@ class BDEServer ():
return
def generatequitfixed (self, count, channel, client_id, msgtype, src, dst, quit):
"""
Generate an QUIT telegram and send it
"""
self. message (3, " generatequit : generate Quit Telegram for %s on channel %s, with quit %d" % (msgtype, channel, quit))
_data = bytes ([1]) + bytes ([1]) + bytes ([((count >> 8) & 0xFF)]) + bytes ([(count & 0xFF)])
_data2 = \
doublechar (src) +\
doublechar (dst) +\
msgtype
_data3 = bytes ([0]) + bytes ([quit % 256])
_data = _data + _data2.encode () + _data3
#self.message (6, " generatequit : " + _data)
#self.log ( "generatequit" + _data)
self.queue_add (channel, client_id, msgtype, _data)
return
def generatequit (self, count, channel, client_id, msgtype, src, dst, quit):
"""
Generate an QUIT telegram and send it

View File

@@ -2,6 +2,7 @@
while true; do
echo "Starting BDE in `pwd` at `date`" >> /var/log/bde/startstop.log
echo "BDE restarted" | mail -s "BDE Restart" admin@apc910.finoba.by
python3 ./bde.py `pwd` 2>&1 >> log_`date -Idate`.txt
echo "BDE stopped in `pwd` at `date`" >> /var/log/bde/startstop.log
sleep 3