Added Maria DB Instance (for Limits now)
Added Limits
This commit is contained in:
985
DB_MariaDB.py
Executable file
985
DB_MariaDB.py
Executable file
@@ -0,0 +1,985 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import mysql.connector as mariadb
|
||||
from sys import exit
|
||||
from datetime import datetime
|
||||
import os, shutil
|
||||
from pruefpunkte import pruefpunkte, pruefpunktefillG11
|
||||
from Navision import NAV
|
||||
|
||||
def logtest (level, msg):
|
||||
print (msg)
|
||||
|
||||
def errlogtest (msg):
|
||||
print (msg)
|
||||
|
||||
class DBMaria:
|
||||
# Database Stuff
|
||||
# --------------
|
||||
def __init__ (self, database, user, password, talogfile, log = logtest, errlog = errlogtest):
|
||||
self.db = mariadb.connect (user = user, password = password, database = database)
|
||||
self.talogfile = talogfile
|
||||
self.log = log
|
||||
self.errlog = errlog
|
||||
|
||||
def executesql (self, dbstring, arguments = ()):
|
||||
"""
|
||||
Fuehre den uebergebenen SQL-Befehl aus und liefere ein Cursor-Objekt
|
||||
zurueck.
|
||||
"""
|
||||
try:
|
||||
cursor = self.db.cursor ()
|
||||
cursor.execute (dbstring, arguments)
|
||||
except mariadb.Error as error:
|
||||
print ("An error occurred: {}".format (error))
|
||||
raise Warning
|
||||
except OperationalError: #, msg:
|
||||
print ("Datenbankausfuehrung fehlgeschlagen. Ausgeloest durch: " + dbstring)
|
||||
raise Warning
|
||||
except IntegrityError: #, msg:
|
||||
print ("Doppelter Eintrag. Ausgeloest durch: " + dbstring)
|
||||
raise Warning
|
||||
except ProgrammingError: #, msg:
|
||||
print ("Fehlerhaftes SQL. Ausgeloest durch: " + dbstring)
|
||||
raise Warning
|
||||
except Warning: #, msg:
|
||||
pass
|
||||
|
||||
#Build Transaction Log
|
||||
if (dbstring.find ('DELETE') >= 0) or\
|
||||
(dbstring.find ('INSERT') >= 0) or\
|
||||
(dbstring.find ('UPDATE') >= 0):
|
||||
file = open (self.talogfile, "a")
|
||||
dt = datetime.now ()
|
||||
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond))
|
||||
file.write (dbstring + ";\n")
|
||||
file.close ()
|
||||
|
||||
self.db.commit ()
|
||||
return cursor
|
||||
|
||||
|
||||
|
||||
# BDE allgemein
|
||||
#------------------
|
||||
|
||||
def bde (self):
|
||||
"""
|
||||
Return all Data of BE
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT * FROM bde;")
|
||||
except:
|
||||
return None
|
||||
|
||||
res = cursor.fetchall ()
|
||||
return res
|
||||
|
||||
|
||||
def addbde (self, data):
|
||||
"""
|
||||
Add Processdata
|
||||
without station information
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO bde (dmc, startts, ladungstraeger, seriennr) VALUES ('%(dmc)s', '%(startts)s', '%(ladungstraeger)s', '%(seriennr)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert into BDE")
|
||||
raise Warning
|
||||
|
||||
|
||||
def getbde (self, dmc):
|
||||
"""
|
||||
Get Processdata
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, ladungstraeger, seriennr, variante, pruefzelle1, putzzelle, chiron, blindniet, bajonettclip, cclip, masseblech, pruefzelle2, nacharbeit, csv, pruefzelle3, gesamtstatus FROM bde WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt read from BDE")
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def checkbde (self, dmc):
|
||||
"""
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc FROM bde WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt read from BDE")
|
||||
|
||||
l = len (cursor.fetchall ())
|
||||
return l
|
||||
|
||||
|
||||
def updatebde (self, dmc, field, value):
|
||||
"""
|
||||
Updates BDE information
|
||||
"""
|
||||
l = self.getbde (dmc)
|
||||
oldlt = ''
|
||||
if len (l) == 0:
|
||||
print ('Missing bde entry for DMC %s create empty one' % dmc)
|
||||
self.addbde ({'dmc' : dmc, 'startts' : '', 'ladungstraeger' : '', 'seriennr' : ''})
|
||||
else:
|
||||
oldlt = l[0][3]
|
||||
|
||||
|
||||
nval = value
|
||||
if field == 'ladungstraeger':
|
||||
if '\x00' in value:
|
||||
self.errlog ("Nullvalue in LT Data")
|
||||
return
|
||||
if not value in (oldlt.split (',')):
|
||||
nval = oldlt + ',' + value
|
||||
else:
|
||||
return
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("UPDATE bde SET %s = '%s' WHERE dmc = '%s';" % (field, nval, dmc))
|
||||
except:
|
||||
print ("Couldnt update BDE")
|
||||
raise Warning
|
||||
|
||||
|
||||
def addpruefzelle1 (self, data):
|
||||
"""
|
||||
Add Processdata 01 - pruefzelle 1
|
||||
and create BDE data
|
||||
"""
|
||||
if len (self.getpruefzelle1 (data['dmc'])):
|
||||
self.errlog ('PD01 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle1 (dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD01 pruefzelle1")
|
||||
raise Warning
|
||||
if self.checkbde (data['dmc']) > 0:
|
||||
self.errlog ('BDE Data for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
self.addbde (data)
|
||||
self.updatebde (data['dmc'], 'pruefzelle1', data['bauteilstatus'])
|
||||
if data['dmc'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'endts', data['endts'])
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
else:
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.Durchlaufen')
|
||||
self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante'])
|
||||
self.updatebde (data['dmc'], 'csv', '')
|
||||
|
||||
|
||||
def getpruefzelle1 (self, dmc):
|
||||
"""
|
||||
Get Processdata 01 - prufezelle1
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40 FROM pruefzelle1 WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD06 pruefzelle1")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def deletepruefzelle1 (self, dmc):
|
||||
"""
|
||||
Delete Pruefzelle1 info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM pruefzelle1 WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from Pruefzelle1")
|
||||
raise Warning
|
||||
|
||||
|
||||
def addblindniet (self, data):
|
||||
"""
|
||||
Add Processdata 05 - blindniet
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getblindniet (data['dmc'])):
|
||||
self.errlog ('PD05 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindniet (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) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(DGBM8status01)s', '%(DGBM8status02)s', '%(DGBM8status03)s', '%(DGBM8status04)s', '%(NietM8status01)s', '%(NietM8status02)s', '%(NietM6status01)s', '%(NietM6status02)s', '%(NietM6status03)s', '%(NietM6status04)s', '%(NietM6status05)s', '%(DGBM8M01)s', '%(DGBM8D01)s', '%(DGBM8W01)s', '%(DGBM8T01)s', '%(DGBM8M02)s', '%(DGBM8D02)s', '%(DGBM8W02)s', '%(DGBM8T02)s', '%(DGBM8M03)s', '%(DGBM8D03)s', '%(DGBM8W03)s', '%(DGBM8T03)s', '%(DGBM8M04)s', '%(DGBM8D04)s', '%(DGBM8W04)s', '%(DGBM8T04)s', '%(NietM8F01)s', '%(NietM8S01)s', '%(NietM8F02)s', '%(NietM8S02)s', '%(NietM6F01)s', '%(NietM6S01)s', '%(NietM6F02)s', '%(NietM6S02)s', '%(NietM6F03)s', '%(NietM6S03)s', '%(NietM6F04)s', '%(NietM6S04)s', '%(NietM6F05)s', '%(NietM6S05)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD05 blindniet")
|
||||
raise Warning
|
||||
|
||||
self.addblindnietvalues (data);
|
||||
self.updatebde (data['dmc'], 'blindniet', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def addblindnietvalues (self, data):
|
||||
"""
|
||||
Store Setvalues of Blindniet
|
||||
"""
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 1, '%(startts)s', '%(NietM6status01)s', '%(NietM6F01)s', '%(NietM6S01)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 2, '%(startts)s', '%(NietM6status02)s', '%(NietM6F02)s', '%(NietM6S02)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 3, '%(startts)s', '%(NietM6status03)s', '%(NietM6F03)s', '%(NietM6S03)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 4, '%(startts)s', '%(NietM6status04)s', '%(NietM6F04)s', '%(NietM6S04)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm6 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 5, '%(startts)s', '%(NietM6status05)s', '%(NietM6F05)s', '%(NietM6S05)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm8 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 1, '%(startts)s', '%(NietM8status01)s', '%(NietM8F01)s', '%(NietM8S01)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietm8 (dmc, nr, ts, status, F, S) VALUES ('%(dmc)s', 2, '%(startts)s', '%(NietM8status02)s', '%(NietM8F02)s', '%(NietM8S02)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietdgb (dmc, nr, ts, status, M, D, W, T) VALUES ('%(dmc)s', 1, '%(startts)s', '%(DGBM8status01)s', '%(DGBM8M01)s', '%(DGBM8D01)s', '%(DGBM8W01)s', '%(DGBM8T01)s');" % data)
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO blindnietdgb (dmc, nr, ts, status, M, D, W, T) VALUES ('%(dmc)s', 2, '%(startts)s', '%(DGBM8status02)s', '%(DGBM8M02)s', '%(DGBM8D02)s', '%(DGBM8W02)s', '%(DGBM8T02)s');" % data)
|
||||
except:
|
||||
print ("Couldnt store blindniet values")
|
||||
raise Warning
|
||||
|
||||
|
||||
|
||||
def deleteblindniet (self, dmc):
|
||||
"""
|
||||
Delete Blindniet info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM blindniet WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from blindniet")
|
||||
raise Warning
|
||||
|
||||
|
||||
def getblindniet (self, dmc):
|
||||
"""
|
||||
Get Processdata 05 - blindniet
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, DGBM8status01, DGBM8status02, DGBM8status03, DGBM8status04, NietM8status01, NietM8status02, NietM6status01, NietM6status02, NietM6status03, NietM6status04, NietM6status05, DGBM8M01, DGBM8D01, DGBM8W01, DGBM8T01, DGBM8M02, DGBM8D01, DGBM8W02, DGBM8T02, DGBM8M03, DGBM8D03, DGBM8W03, DGBM8T03, DGBM8M04, DGBM8D04, DGBM8W04, DGBM8T04, NietM8F01, NietM8S01, NietM8F02, NietM8S02, NietM6F01, NietM6S01, NietM6F02, NietM6S02, NietM6F03, NietM6S03, NietM6F04, NietM6S04, NietM6F05, NietM6S05 FROM blindniet WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD05 blindniet")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def addputzzelle (self, data):
|
||||
"""
|
||||
Add Processdata 02/03 - putzzelle
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getputzzelle (data['dmc'])):
|
||||
self.errlog ('PD02/03 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO putzzelle (dmc, startts, endts, aufnahme) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD02/03 putzzelle")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'putzzelle', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getputzzelle (self, dmc):
|
||||
"""
|
||||
Get Processdata 06 - putzzelle
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme FROM putzzelle WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD0203 putzzelle")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def addchiron (self, data):
|
||||
"""
|
||||
Add Processdata 99 - chiron
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getchiron (data['dmc'])):
|
||||
self.errlog ('PD99 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO chiron (dmc, startts, endts, chiron) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(chiron)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD99 chiron")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'chiron', data['bauteilstatus'])
|
||||
#self.updatebde (data['dmc'], 'variante', data['variante'])
|
||||
self.updatebde (data['dmc'], 'variante', data['bauteil'] + '-' + data['variante'])
|
||||
self.log (1,'PD99 - Change variante')
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getchiron (self, dmc):
|
||||
"""
|
||||
Get Processdata 06 - chiron
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, chiron FROM chiron WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD0203 putzzelle")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def addbajonettclip (self, data):
|
||||
"""
|
||||
Add Processdata 06 - bajonettclip
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getbajonettclip (data['dmc'])):
|
||||
self.errlog ('PD06 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO bajonettclip (dmc, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s', '%(bajostatus01)s', '%(bajostatus02)s', '%(bajostatus03)s', '%(bajostatus04)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD06 bajonettclip")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'bajonettclip', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getbajonettclip (self, dmc):
|
||||
"""
|
||||
Get Processdata 06 - bajonettclip
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme, bajostatus01, bajostatus02, bajostatus03, bajostatus04 FROM bajonettclip WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD06 bajonettclip")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def deletebajonettclip (self, dmc):
|
||||
"""
|
||||
Delete Bajonettclip info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM bajonettclip WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from bajonettclip")
|
||||
raise Warning
|
||||
|
||||
|
||||
def addcclip (self, data):
|
||||
"""
|
||||
Add Processdata 07 - cclip
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getcclip (data['dmc'])):
|
||||
self.errlog ('PD07 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO cclip (dmc, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(aufnahme)s', '%(clipstatus01)s', '%(clipstatus02)s', '%(clipstatus03)s', '%(clipstatus04)s', '%(clipstatus05)s', '%(clipstatus06)s', '%(clipstatus07)s', '%(clipstatus08)s', '%(clipstatus09)s', '%(clipstatus10)s', '%(clipstatus11)s', '%(clipstatus12)s', '%(clipstatus13)s', '%(clipstatus14)s', '%(clipstatus15)s', '%(clipstatus16)s', '%(clipstatus17)s', '%(clipstatus18)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD07 cclip")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'cclip', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getcclip (self, dmc):
|
||||
"""
|
||||
Get Processdata 07 - cclip
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, aufnahme, clipstatus01, clipstatus02, clipstatus03, clipstatus04, clipstatus05, clipstatus06, clipstatus07, clipstatus08, clipstatus09, clipstatus10, clipstatus11, clipstatus12, clipstatus13, clipstatus14, clipstatus15, clipstatus16, clipstatus17, clipstatus18 FROM cclip WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD07 cclip")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def deletecclip (self, dmc):
|
||||
"""
|
||||
Delete CClip info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM cclip WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from cclip")
|
||||
raise Warning
|
||||
|
||||
|
||||
def addmasseblech (self, data):
|
||||
"""
|
||||
Add Processdata 08 - masseblech
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getmasseblech (data['dmc'])):
|
||||
self.errlog ('PD08 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO masseblech (dmc, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(ausgleichselement)s', '%(schallisolierung)s', '%(masseblech)s', '%(blindniet)s', '%(kombimutter)s' , '%(fniet)s', '%(sniet)s', '%(mmutter)s', '%(dmutter)s', '%(wmutter)s', '%(tmutter)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD08")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'masseblech', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
if data['bauteilstatus'] == 'n.i.O.':
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
def getmasseblech (self, dmc):
|
||||
"""
|
||||
Get Processdata 08 -masseblech
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, ausgleichselement, schallisolierung, masseblech, blindniet, kombimutter, fniet, sniet, mmutter, dmutter, wmutter, tmutter FROM masseblech WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD08 masseblech")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
|
||||
def deletemasseblech (self, dmc):
|
||||
"""
|
||||
Delete Masseblech info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM masseblech WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from masseblech")
|
||||
raise Warning
|
||||
|
||||
|
||||
def addnacharbeit (self, data):
|
||||
"""
|
||||
Add Processdata 09
|
||||
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, 'PD09 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, 'PD09 Blindniet %s nDurchlaufen do nothing' % data['dmc'])
|
||||
_gesio = 0
|
||||
elif _states ['blindniet'] == 'i.O.':
|
||||
self.log (5, 'PD09 Blindniet %s already i.O. do nothing' % data['dmc'])
|
||||
else:
|
||||
io = 1
|
||||
for i in range (1, 5):
|
||||
if data['DGBM8status%02d' % i] == 'i.O. NA':
|
||||
self.log (5, 'PD09 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.updateinformation (data['dmc'], 'blindniet', 'DGBM8status%02d' % i, data['DGBM8status%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'DGBM8M%02d' % i, data['DGBM8M%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'DGBM8D%02d' % i, data['DGBM8D%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'DGBM8W%02d' % i, data['DGBM8W%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'DGBM8T%02d' % i, data['DGBM8T%02d' % i])
|
||||
elif data['DGBM8status%02d' % i] == 'n.i.O.':
|
||||
self.log (5, 'PD09 DGBM8_%02d still n.i.O.' % (i))
|
||||
io = 0
|
||||
elif data['DGBM8status%02d' % i] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 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, 'PD09 NietM8_%02d reworked updating part data F:%d S:%d' % (i, data['NietM8F%02d' % i], data['NietM8S%02d' % i]))
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM8status%02d' % i, data['NietM8status%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM8F%02d' % i, data['NietM8F%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM8S%02d' % i, data['NietM8S%02d' % i])
|
||||
elif data['NietM8status%02d' % i] == 'n.i.O.':
|
||||
self.log (5, 'PD09 NietM8_%02d still n.i.O.' % (i))
|
||||
io = 0
|
||||
elif data['NietM8status%02d' % i] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 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, 'PD09 NietM6_%02d reworked updating part data F:%d S:%d' % (i, data['NietM6F%02d' % i], data['NietM6S%02d' % i]))
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM6status%02d' % i, data['NietM6status%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM6F%02d' % i, data['NietM6F%02d' % i])
|
||||
self.updateinformation (data['dmc'], 'blindniet', 'NietM6S%02d' % i, data['NietM6S%02d' % i])
|
||||
elif data['NietM6status%02d' % i] == 'n.i.O.':
|
||||
self.log (5, 'PD09 NietM6_%02d still n.i.O ' % (i))
|
||||
io = 0
|
||||
elif data['NietM6status%02d' % i] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 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, 'PD09 Bajonett %s nDurchlaufen do nothing' % ['dmc'])
|
||||
_gesio = 0
|
||||
elif _states ['bajonettclip'] == 'i.O.':
|
||||
self.log (5, 'PD09 Bajonett %s i.O. do nothing' % ['dmc'])
|
||||
else:
|
||||
io = 1
|
||||
for i in range (1, 5):
|
||||
if data['bajostatus%02d' % i] == 'i.O. NA':
|
||||
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))
|
||||
io = 0
|
||||
elif data['bajostatus%02d' % i] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 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, 'PD09 CClip %s nDurchlaufen do nothing' % ['dmc'])
|
||||
_gesio = 0
|
||||
elif _states ['cclip'] == 'i.O.':
|
||||
self.log (5, 'PD09 CClip %s i.O. do nothing' % ['dmc'])
|
||||
else:
|
||||
io = 1
|
||||
for i in range (1, 18):
|
||||
if data['clipstatus%02d' % i] == 'i.O. NA':
|
||||
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))
|
||||
io = 0
|
||||
elif data['clipstatus%02d' % i] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 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, 'PD09 Masseblech %s nDurchlaufen do nothing' % ['dmc'])
|
||||
_gesio = 0
|
||||
elif _states ['masseblech'] == 'i.O.':
|
||||
self.log (5, 'PD09 Masseblech %s i.O. do nothing' % ['dmc'])
|
||||
else:
|
||||
io = 1
|
||||
if data['kombimutter'] == 'i.O. NA':
|
||||
self.log (5, 'PD09 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, 'PD09 Kombimutter still n.i.O')
|
||||
io = 0
|
||||
elif data['kombimutter'] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 Kombimutter still n.Bearbeitet')
|
||||
io = 0
|
||||
|
||||
if data['blindniet'] == 'i.O. NA':
|
||||
self.log (5, 'PD09 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, 'PD09 Blindniet still n.i.O')
|
||||
io = 0
|
||||
elif data['blindniet'] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 Blindniet still n.Bearbeitet')
|
||||
io = 0
|
||||
|
||||
if data['masseblech'] == 'i.O. NA':
|
||||
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')
|
||||
io = 0
|
||||
elif data['masseblech'] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 Masseblech still n.Bearbeitet')
|
||||
io = 0
|
||||
|
||||
if data['ausgleichselement'] == 'i.O. NA':
|
||||
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')
|
||||
io = 0
|
||||
elif data['ausgleichselement'] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 Ausgleichselement still n.Bearbeitet')
|
||||
io = 0
|
||||
|
||||
if data['schallisolierung'] == 'i.O. NA':
|
||||
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')
|
||||
io = 0
|
||||
elif data['schallisolierung'] == 'n.Bearbeitet':
|
||||
self.log (5, 'PD09 Schallisolierung still n.Bearbeitet')
|
||||
io = 0
|
||||
|
||||
if io:
|
||||
self.updatebde (data['dmc'], 'masseblech', 'i.O. NA')
|
||||
else:
|
||||
_gesio = 0
|
||||
|
||||
|
||||
|
||||
if _gesio:
|
||||
self.log (5, 'PD09 All part data i.O. Part is i.O.')
|
||||
if _ges != 'i.O.':
|
||||
self.log (5, 'PD09 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
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getpruefzelle2 (data['dmc'])):
|
||||
self.errlog ('PD10 for %s already exists - Overwrite' % data['dmc'])
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle2 (dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41) VALUES ('%(dmc)s', '%(startts)s', '%(endts)s', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s', '%(pp41)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD10 pruefzelle2")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'pruefzelle2', data['bauteilstatus'])
|
||||
self.updatebde (data['dmc'], 'ladungstraeger', data['ladungstraeger'])
|
||||
self.updatebde (data['dmc'], 'endts', data['endts'])
|
||||
|
||||
l = self.getbde (data['dmc'])[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]
|
||||
}
|
||||
if data['bauteilstatus'] == 'i.O.':
|
||||
#Pruefzelle - i.O.
|
||||
self.log (5, 'PD10 .i.O checking part data')
|
||||
if _states['pruefzelle1'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['chiron'] in ('i.O.','n.Durchlaufen') and _states['blindniet'] == 'i.O.' and _states['putzzelle'] == 'i.O.' and _states['bajonettclip'] == 'i.O.' and _states['cclip'] == 'i.O.' and _states['masseblech'] == 'i.O.':
|
||||
self.log (5, 'PD10 .i.O All part data i.O. Part is i.O.')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'i.O.')
|
||||
else:
|
||||
self.log (5, 'PD10 .i.O not All part data i.O. Part is n.i.O.')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
elif data['bauteilstatus'] == 'n.i.O.':
|
||||
self.log (5, 'PD10 n.i.O updating part data')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
for i in range (1,42):
|
||||
if data ['pp%02d' % i] == 'n.i.O.':
|
||||
where, field = pruefpunkte ['pp%02d' % i]
|
||||
if _states [where] != 'n.Durchlaufen':
|
||||
self.log (5, 'PD10 pp%02d n.i.O updating part data and State in bde %s' % (i, where))
|
||||
self.updateinformation (data['dmc'], where, field, 'n.i.O.')
|
||||
self.updatebde (data['dmc'], where, 'n.i.O.')
|
||||
else:
|
||||
self.log (5, 'PD10 pp%02d %s nDurchlaufen do nothing' % (i, where))
|
||||
|
||||
|
||||
nav = NAV (path = "/srv/navision/", db = self)
|
||||
|
||||
if "Error" in data['dmc']:
|
||||
self.log (5, 'PD10 No Read')
|
||||
elif '' == data['dmc'] :
|
||||
self.log (5, 'PD10 No Read')
|
||||
elif int (data['dmc']) == 0:
|
||||
self.log (5, 'PD10 0 Read')
|
||||
else:
|
||||
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 updateinformation (self, dmc, where, field, value):
|
||||
"""
|
||||
Updates part information
|
||||
"""
|
||||
# Disablede Updating of BDE state
|
||||
#try:
|
||||
# cursor = self.executesql ("UPDATE bde SET %s = '%s' WHERE dmc = '%s';" % (where, value, dmc))
|
||||
#except:
|
||||
# self.errlog ("Couldnt update field %s in table %s" % (field, where))
|
||||
|
||||
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' AND %s <> 'n.Bearbeitet';" % (where, field, value, dmc, field))
|
||||
except:
|
||||
self.errlog ("Couldnt update field %s in table %s" % (where, field))
|
||||
|
||||
|
||||
|
||||
def getpruefzelle2 (self, dmc):
|
||||
"""
|
||||
Get Processdata 10 - prufezelle2
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, startts, endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41 FROM pruefzelle2 WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD10 pruefzelle2")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def getpruefzelle2range (self, startts, endts):
|
||||
"""
|
||||
Get Processdata 10 - prufezelle2
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, datetime (startts, 'localtime'), endts, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41 FROM pruefzelle2 WHERE strftime('%%s', datetime (startts, 'localtime')) BETWEEN strftime('%%s', '%s') AND strftime('%%s', '%s');" % (startts, endts))
|
||||
except:
|
||||
print ("Couldnt get PD10 pruefzelle2")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
def deletepruefzelle2 (self, dmc):
|
||||
"""
|
||||
Delete Pruefzelle2 info
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM pruefzelle2 WHERE dmc = '%s';" % (dmc))
|
||||
except:
|
||||
print ("Couldnt delete from Pruefzelle2")
|
||||
raise Warning
|
||||
|
||||
|
||||
|
||||
def addpruefzelle3 (self, data):
|
||||
"""
|
||||
Add Processdata 20 - pruefzelle 3
|
||||
and update BDE data
|
||||
"""
|
||||
if len (self.getpruefzelle3 (data['dmc'])):
|
||||
self.errlog ('PD20 for %s already exists - Overwrite and increment' % data['dmc'])
|
||||
|
||||
#FixMe
|
||||
|
||||
try:
|
||||
cursor = self.executesql ("INSERT OR REPLACE INTO pruefzelle3 (dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42) VALUES ('%(dmc)s', '%(endts)s', '1', '%(pp01)s', '%(pp02)s', '%(pp03)s', '%(pp04)s', '%(pp05)s', '%(pp06)s', '%(pp07)s', '%(pp08)s', '%(pp09)s', '%(pp10)s', '%(pp11)s', '%(pp12)s', '%(pp13)s', '%(pp14)s', '%(pp15)s', '%(pp16)s', '%(pp17)s', '%(pp18)s', '%(pp19)s', '%(pp20)s', '%(pp21)s', '%(pp22)s', '%(pp23)s', '%(pp24)s', '%(pp25)s', '%(pp26)s', '%(pp27)s', '%(pp28)s', '%(pp29)s', '%(pp30)s', '%(pp31)s', '%(pp32)s', '%(pp33)s', '%(pp34)s', '%(pp35)s', '%(pp36)s', '%(pp37)s', '%(pp38)s', '%(pp39)s', '%(pp40)s', '%(pp41)s', '%(pp42)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert PD30 pruefzelle3")
|
||||
raise Warning
|
||||
|
||||
self.updatebde (data['dmc'], 'pruefzelle3', data['bauteilstatus'])
|
||||
l = self.getbde (data['dmc'])[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
|
||||
iostates = ('i.O.', 'i.O. NA')
|
||||
if data['bauteilstatus'] == 'i.O.':
|
||||
#Pruefzelle - i.O.
|
||||
self.log (5, 'PD20 .i.O checking part data')
|
||||
if _ges == 'i.O.':
|
||||
self.log (5, 'PD20 Part already .i.O do nothing')
|
||||
elif _states['pruefzelle1'] in iostates and _states['putzzelle'] in iostates and _states['chiron'] in ('i.O.','n.Durchlaufen') and _states['blindniet'] in iostates and _states['putzzelle'] in iostates and _states['bajonettclip'] in iostates and _states['cclip'] in iostates and _states['masseblech'] in iostates:
|
||||
self.log (5, 'PD20 .i.O All part data i.O. Part is i.O.')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'i.O.')
|
||||
elif _ges != 'n.i.O.':
|
||||
self.log (5, 'PD20 .i.O All part data i.O. Part is i.O.')
|
||||
self.updatebde (data['dmc'], 'gesamtstatus', 'n.i.O.')
|
||||
|
||||
|
||||
if 0 and data['bauteilstatus'] == 'n.i.O.':
|
||||
#Moner or more Points n.I.O
|
||||
self.log (5, 'PD20 n.i.O updating part data')
|
||||
|
||||
for i in range (1,42):
|
||||
if data ['pp%02d' % i] == 'n.i.O.':
|
||||
where, field = pruefpunkte ['pp%02d' % i]
|
||||
if _states [where] != 'n.Durchlaufen':
|
||||
self.log (5, 'PD10 pp%02d n.i.O updating part data and State in bde %s' % (i, where))
|
||||
self.updateinformation (data['dmc'], where, field, 'n.i.O.')
|
||||
self.updatebde (data['dmc'], where, 'n.i.O.')
|
||||
else:
|
||||
self.log (5, 'PD10 pp%02d %s nDurchlaufen do nothing' % (i, where))
|
||||
|
||||
|
||||
def getpruefzelle3 (self, dmc):
|
||||
"""
|
||||
Get Processdata 20 - prufezelle3
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, endts, anzahl, pp01, pp02, pp03, pp04, pp05, pp06, pp07, pp08, pp09, pp10, pp11, pp12, pp13, pp14, pp15, pp16, pp17, pp18, pp19, pp20, pp21, pp22, pp23, pp24, pp25, pp26, pp27, pp28, pp29, pp30, pp31, pp32, pp33, pp34, pp35, pp36, pp37, pp38, pp39, pp40, pp41, pp42 FROM pruefzelle3 WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get PD20 pruefzelle3")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchall ()
|
||||
|
||||
|
||||
|
||||
|
||||
def getactuallimits (self):
|
||||
"""
|
||||
Get limits for processvalues
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT parameter, fromts, valmin, valmax FROM limits WHERE tillts IS NULL ORDER BY fromts DESC;")
|
||||
except:
|
||||
print ("Couldnt get limits")
|
||||
raise Warning
|
||||
|
||||
ret_val = {}
|
||||
for parameter, fromts, valmin, valmax in cursor.fetchall ():
|
||||
if parameter in ret_val:
|
||||
self.log (1, "Parameter %s has multiple limits")
|
||||
ret_val [parameter] = [valmin, valmax]
|
||||
return ret_val
|
||||
|
||||
|
||||
def addlock (self, data):
|
||||
"""
|
||||
Add locked DMC
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("INSERT INTO locked (dmc, rohteilnr, aenderungsidx, sperrts, sperrnr) VALUES ('%(dmc)s', '%(rohteilnr)s', '%(aenderungsidx)s', '%(sperrts)s', '%(sperrnr)s');" % data)
|
||||
except:
|
||||
print ("Couldnt insert into locked")
|
||||
raise Warning
|
||||
|
||||
|
||||
def cleanlock (self):
|
||||
"""
|
||||
Check if a dmc is locked
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("DELETE FROM locked WHERE dmc <> '4711';")
|
||||
except:
|
||||
print ("Couldnt clean locked")
|
||||
raise Warning
|
||||
|
||||
|
||||
def locksize (self):
|
||||
"""
|
||||
Check nr of locks
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT COUNT(*) FROM locked WHERE dmc <> '4711';")
|
||||
except:
|
||||
print ("Couldnt clean locked")
|
||||
raise Warning
|
||||
return cursor.fetchone ()[0]
|
||||
|
||||
|
||||
def checklock (self, dmc):
|
||||
"""
|
||||
Check if a dmc is locked
|
||||
"""
|
||||
try:
|
||||
cursor = self.executesql ("SELECT dmc, rohteilnr, aenderungsidx, sperrts, sperrnr FROM locked WHERE dmc = '%s';" % dmc)
|
||||
except:
|
||||
print ("Couldnt get locked")
|
||||
raise Warning
|
||||
|
||||
return cursor.fetchone ()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
conn = DBMaria ('bde', 'bde', 'eczema-orleans-queuing-surplus', '/tmp/talog.sql', logtest, errlogtest)
|
||||
#print (conn.checklock ('26923900100113758431311'))
|
||||
#data = {'dmc' : '4711',
|
||||
# 'rohteilnr' : '4711',
|
||||
# 'aenderungsidx' : '1',
|
||||
# 'sperrts' : '2017.03.01 14:24:57',
|
||||
# 'sperrnr' : '0'}
|
||||
#conn.addlock (data)
|
||||
#print (conn.locksize ())
|
||||
#conn.cleanlock ()
|
||||
#print (conn.locksize ())
|
||||
|
||||
#print (conn.getpruefzelle2range ('2017-03-15 00:00:00', '2017-03-15 12:00:00'))
|
||||
print (conn.getactuallimits ())
|
||||
#from PD01_tel import TEL_PD01
|
||||
#PD01 = TEL_PD01 ()
|
||||
#from PD10_tel import TEL_PD10
|
||||
#PD10 = TEL_PD10 ()
|
||||
#from PD05_tel import TEL_PD05
|
||||
#PD05 = TEL_PD05 ()
|
||||
|
||||
#print (conn.getcclip ('40649372270716929764515'))
|
||||
#print (conn.getchiron ('40649372270716929764515'))
|
||||
#print (conn.getblindniet ('40649372270716929764515'))
|
||||
|
||||
#conn.addpruefzelle1 (PD01)
|
||||
|
||||
#print (conn.getblindniet (PD05['dmc']))
|
||||
#conn.deleteblindniet (PD05['dmc'])
|
||||
#conn.addblindniet (PD05)
|
||||
#conn.deletebajonettclip (PD06['dmc'])
|
||||
#conn.addbajonettclip (PD06)
|
||||
#conn.deletecclip (PD07['dmc'])
|
||||
#conn.addcclip (PD07)
|
||||
#conn.deletemasseblech (PD08['dmc'])
|
||||
#conn.addmasseblech (PD08)
|
||||
91
limits.py
Executable file
91
limits.py
Executable file
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
__author__ = "Michael Rest"
|
||||
__date__ = "1 June 2009"
|
||||
__email__ = "michi@rosstein.de"
|
||||
__version__ = "$Revision: 1.0 $"[11:-2]
|
||||
|
||||
import pydave3
|
||||
from davedefs import *
|
||||
from DB_MariaDB import DBMaria
|
||||
from datetime import datetime
|
||||
from time import sleep
|
||||
from select import select
|
||||
import sys
|
||||
import os
|
||||
import string
|
||||
import signal
|
||||
|
||||
params = ['DGBM8_12-M', 'DGBM8_12-D', 'DGBM8_12-W', 'DGBM8_12-T', 'DGBM8_34-M', 'DGBM8_34-D', 'DGBM8_34-W', 'DGBM8_34-T', 'M6-F', 'M6-S', 'M8-F', 'M8-S', 'Kombimutter-M', 'Kombimutter-D', 'Kombimutter-W', 'Kombimutter-T', 'Blindniet-F', 'Blindniet-S']
|
||||
|
||||
def loglimits (msg):
|
||||
"""
|
||||
log relevant messages in logfile
|
||||
and print if loglevel is reached
|
||||
"""
|
||||
file = open ("/var/log/bde/limits.log", "a")
|
||||
dt = datetime.now ()
|
||||
file.write ("%4d-%02d-%02d %02d:%02d:%02d.%06d: " %(dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond)),
|
||||
file.write (msg + "\n")
|
||||
file.close ()
|
||||
|
||||
def pydavecon ():
|
||||
#for _id, _name, _proto, _addr, _port, _mpi, _rack, _slot in [[5,'H6L1', 'ISO_TCP', '192.168.100.73', 102, 3, 0, 4]]:
|
||||
_proto, _addr, _port, _mpi, _rack, _slot, _rsid1, _rsid2, _rrack, _rslot, _rmpi = ['ISO_TCP', '192.168.6.80', 102, 0, 0, 2, 0, 0, 0, 0, 0]
|
||||
daveinst = pydave3
|
||||
pydave3.OpenSocket (_proto, _addr, _port, _mpi, _rack, _slot, _rsid1, _rsid2, _rrack, _rslot, _rmpi)
|
||||
#routingSubnetFirst, routingSubnetSecond, routingRack, routingSlot
|
||||
return daveinst
|
||||
|
||||
def getlimits (daveinst):
|
||||
retval = {}
|
||||
param = 0
|
||||
for i in range (0, 12):
|
||||
offset = i * 4
|
||||
temp = pydave3.ReadBytes (daveAreas["DB"], 450, offset, 4)
|
||||
valmin = (temp [0] << 8) + temp [1]
|
||||
valmax = (temp [2] << 8) + temp [3]
|
||||
retval [params[param]] = [valmin, valmax, 450, offset]
|
||||
param += 1
|
||||
|
||||
for i in range (0, 6):
|
||||
offset = i * 4
|
||||
temp = pydave3.ReadBytes (daveAreas["DB"], 451, offset, 4)
|
||||
valmin = (temp [0] << 8) + temp [1]
|
||||
valmax = (temp [2] << 8) + temp [3]
|
||||
retval [params[param]] = [valmin, valmax, 451, offset]
|
||||
param += 1
|
||||
|
||||
return retval
|
||||
|
||||
def setlimit (daveinst, dbnr, offset, minval, maxval):
|
||||
val = [minval >> 8, minval & 255, maxval >> 8, maxval & 255]
|
||||
pydave3.WriteBytes (daveAreas["DB"], dbnr, offset, 4, val)
|
||||
|
||||
def disconnect (daveinst):
|
||||
daveinst.DisconnectPLC ()
|
||||
|
||||
if __name__ == '__main__':
|
||||
dbconn = DBMaria ('bde', 'bde', 'eczema-orleans-queuing-surplus', '/tmp/talog.sql')
|
||||
dblimits = dbconn.getactuallimits ()
|
||||
|
||||
try:
|
||||
daveinst = pydavecon ()
|
||||
plclimits = getlimits (daveinst)
|
||||
except:
|
||||
exit (0)
|
||||
|
||||
# setlimit (daveinst, dbnr, offset, dbmin, dbmax)
|
||||
|
||||
for param in plclimits:
|
||||
dbmin, dbmax = dblimits [param]
|
||||
plcmin, plcmax, dbnr, offset = plclimits [param]
|
||||
#print ("Parameter: %s, DB-%d Offset %d" % (param, dbnr, offset))
|
||||
#print ("DB: %d - %d" % (dbmin, dbmax))
|
||||
#print ("PLC %d - %d" % (plcmin, plcmax))
|
||||
if (dbmin != plcmin or dbmax != plcmax):
|
||||
#print ("Limits different")
|
||||
loglimits ("New Limits from DB for %s: Min: %d Max: %d" % (param, dbmin, dbmax))
|
||||
setlimit (daveinst, dbnr, offset, dbmin, dbmax)
|
||||
|
||||
disconnect (daveinst)
|
||||
4
limits_cron.sh
Executable file
4
limits_cron.sh
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
cd /opt/bde
|
||||
echo "Checkt Limits `pwd` at `date`" >> /var/log/bde/limits.log
|
||||
python3 ./limits.py
|
||||
Reference in New Issue
Block a user