diff --git a/Evaluation/statsdbeval.py b/Evaluation/statsdbeval.py new file mode 100644 index 0000000..a0251ff --- /dev/null +++ b/Evaluation/statsdbeval.py @@ -0,0 +1,111 @@ +import mysql.connector +import datetime +import xlwt + + + +dbh = None +cur = None +xls = None +sheet = None + +try: + dbh = mysql.connector.connect(user='statsuser', password='test123', host='192.168.3.22', database='statsdb') + cur = dbh.cursor() + + query = """ +SELECT d.description, d.address, + cd.ts, + cd.value, cd.id + FROM device_t d, + dataitem_t di, + devicedataitem_t ddi, + collecteddata_t cd + WHERE ddi.device = d.id AND + ddi.dataitem = di.id AND + cd.devicedataitem = ddi.id AND + di.description = 'totalPages' AND + cd.ts BETWEEN %s AND %s + ORDER BY cd.id + +""" + + cur.execute(query, (datetime.datetime(1970, 1, 1), datetime.datetime(2100, 12, 31))) + + printers = {} + + for (printerName, printerAddress, timestamp, totalPages, id) in cur: + totalPages = int(totalPages) + if not printers.has_key(printerAddress): + printers[printerAddress] = {'name': printerName, 'address': printerAddress, + 'first': {'timestamp': timestamp, 'value': totalPages}, + 'last': {'timestamp': timestamp, 'value': totalPages}} + else: + printers[printerAddress]['last'] = {'timestamp': timestamp, 'value': totalPages} + + + secondsPerMonth = datetime.timedelta(30).total_seconds() + secondsPerWeek = datetime.timedelta(7).total_seconds() + + xls = xlwt.Workbook() + sheet = xls.add_sheet('Sheet 1') + rowCnt = 0 + sheet.row(rowCnt).write(0, 'Name') + sheet.row(rowCnt).write(1, 'Address') + sheet.row(rowCnt).write(2, 'First Sample Date') + sheet.row(rowCnt).write(3, 'First Sample Value') + sheet.row(rowCnt).write(4, 'Last Sample Date') + sheet.row(rowCnt).write(5, 'Last Sample Value') + sheet.row(rowCnt).write(6, 'Diff in SampleBox') + sheet.row(rowCnt).write(7, 'MonthFactor') + sheet.row(rowCnt).write(8, 'WeekFactor') + sheet.row(rowCnt).write(9, 'Month Average/Forecast') + sheet.row(rowCnt).write(10, 'Week Average/Forecast') + + sheet.col(2).width = 256 * 20 + sheet.col(4).width = 256 * 20 + dateStyle = xlwt.XFStyle() + dateStyle.num_format_str = 'DD.MM.YYYY hh:mm:ss' + + for printer in printers.values(): + rowCnt += 1 + + print("Printer: %s, %s" % (printer['name'], printer['address'])) + sheet.row(rowCnt).write(0, printer['name']) + sheet.row(rowCnt).write(1, printer['address']) + + print(" First: %s, %s" % (printer['first']['timestamp'], printer['first']['value'])) + sheet.row(rowCnt).write(2, printer['first']['timestamp'], dateStyle) + sheet.row(rowCnt).write(3, printer['first']['value']) + + print(" Last: %s, %s" % (printer['last']['timestamp'], printer['last']['value'])) + sheet.row(rowCnt).write(4, printer['last']['timestamp'], dateStyle) + sheet.row(rowCnt).write(5, printer['last']['value']) + + deltaTime = printer['last']['timestamp'] - printer['first']['timestamp'] + deltaValue = printer['last']['value'] - printer['first']['value'] + print(" Diff: %s, %s" % (deltaTime, deltaValue)) + sheet.row(rowCnt).write(6, deltaValue) + + factorMonth = secondsPerMonth / deltaTime.total_seconds() + sheet.row(rowCnt).write(7, factorMonth) + factorWeek = secondsPerWeek / deltaTime.total_seconds() + sheet.row(rowCnt).write(8, factorWeek) + + print(" Month average/forecast: %s" % (int(deltaValue * factorMonth))) + sheet.row(rowCnt).write(9, int(deltaValue * factorMonth)) + + print(" Week average/forecast: %s" % (int(deltaValue * factorWeek))) + sheet.row(rowCnt).write(10, int(deltaValue * factorWeek)) + + +except mysql.connector.Error as err: + print("Failure when using database: %s" % (err)) +finally: + if xls is not None: + xls.save('printerStats.xls') + if cur is not None: + cur.close() + if dbh is not None: + dbh.close() + diff --git a/Snmp2Mysql.userprefs b/Snmp2Mysql.userprefs index 54d3486..daf8b19 100644 --- a/Snmp2Mysql.userprefs +++ b/Snmp2Mysql.userprefs @@ -3,7 +3,8 @@ - + +