Added Maria DB Instance (for Limits now)

Added Limits
This commit is contained in:
2017-05-18 12:50:24 +02:00
parent 57f578a4f8
commit de84d589b0
3 changed files with 1080 additions and 0 deletions

985
DB_MariaDB.py Executable file
View 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
View 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
View File

@@ -0,0 +1,4 @@
#!/bin/bash
cd /opt/bde
echo "Checkt Limits `pwd` at `date`" >> /var/log/bde/limits.log
python3 ./limits.py