changed float datatype to Decimal datatype for offline meter normalization
parent
faecb1f670
commit
77ba4b9233
|
@ -2,6 +2,7 @@ import time
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
import mysql.connector
|
import mysql.connector
|
||||||
from openpyxl import load_workbook
|
from openpyxl import load_workbook
|
||||||
|
from decimal import Decimal
|
||||||
import config
|
import config
|
||||||
|
|
||||||
################################################################################################################
|
################################################################################################################
|
||||||
|
@ -71,7 +72,7 @@ def calculate_hourly(logger):
|
||||||
# STEP 2: for each new files, dump file object to local file and then load workbook from the local file
|
# STEP 2: for each new files, dump file object to local file and then load workbook from the local file
|
||||||
################################################################################################################
|
################################################################################################################
|
||||||
for excel_file in excel_file_list:
|
for excel_file in excel_file_list:
|
||||||
print("read data from each offline meter file" + excel_file['name'])
|
print("read data from offline meter file" + excel_file['name'])
|
||||||
is_valid_file = True
|
is_valid_file = True
|
||||||
fw = None
|
fw = None
|
||||||
try:
|
try:
|
||||||
|
@ -134,20 +135,20 @@ def calculate_hourly(logger):
|
||||||
elif col_num > 3:
|
elif col_num > 3:
|
||||||
# get date of the cell
|
# get date of the cell
|
||||||
try:
|
try:
|
||||||
offline_datetime = datetime(year=ws['A2'].value,
|
start_datetime_local = datetime(year=ws['A2'].value,
|
||||||
month=ws['B2'].value,
|
month=ws['B2'].value,
|
||||||
day=col_num - 3)
|
day=col_num - 3)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
# invalid date and go to next cell in this row until reach max_col
|
# invalid date and go to next cell in this row until reach max_col
|
||||||
continue
|
continue
|
||||||
|
|
||||||
offline_datetime_utc = offline_datetime - timedelta(minutes=timezone_offset)
|
start_datetime_utc = start_datetime_local - timedelta(minutes=timezone_offset)
|
||||||
|
|
||||||
if cell.value is None:
|
if cell.value is None:
|
||||||
# if the cell is empty then stop at that day
|
# if the cell is empty then stop at that day
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
offline_meter_data['data'][offline_datetime_utc] = cell.value
|
offline_meter_data['data'][start_datetime_utc] = Decimal(cell.value)
|
||||||
|
|
||||||
if len(offline_meter_data['data']) > 0:
|
if len(offline_meter_data['data']) > 0:
|
||||||
print("offline_meter_data:" + str(offline_meter_data))
|
print("offline_meter_data:" + str(offline_meter_data))
|
||||||
|
@ -224,10 +225,10 @@ def calculate_hourly(logger):
|
||||||
for energy_data_item in energy_data_list:
|
for energy_data_item in energy_data_list:
|
||||||
offline_meter_id = energy_data_item['offline_meter_id']
|
offline_meter_id = energy_data_item['offline_meter_id']
|
||||||
print(energy_data_item['data'].items())
|
print(energy_data_item['data'].items())
|
||||||
for k, v in energy_data_item['data'].items():
|
for start_datetime_utc, daily_value in energy_data_item['data'].items():
|
||||||
start_datetime_utc = k
|
|
||||||
end_datetime_utc = start_datetime_utc + timedelta(hours=24)
|
end_datetime_utc = start_datetime_utc + timedelta(hours=24)
|
||||||
actual_value = v / (24 * 60 / config.minutes_to_count)
|
actual_value = \
|
||||||
|
daily_value / (Decimal(24) * Decimal(60) / Decimal(config.minutes_to_count))
|
||||||
cursor.execute(" DELETE FROM tbl_offline_meter_hourly "
|
cursor.execute(" DELETE FROM tbl_offline_meter_hourly "
|
||||||
" WHERE offline_meter_id = %s "
|
" WHERE offline_meter_id = %s "
|
||||||
" AND start_datetime_utc >= %s "
|
" AND start_datetime_utc >= %s "
|
||||||
|
|
Loading…
Reference in New Issue