Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
nengyuanzhang committed Jul 29, 2024
2 parents 9961cb0 + ac365c2 commit daff521
Showing 1 changed file with 72 additions and 41 deletions.
113 changes: 72 additions & 41 deletions myems-api/reports/energystoragepowerstationdetails.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import falcon
import mysql.connector
import simplejson as json
from core import utilities
from core.useractivity import access_control, api_key_control
import config

Expand Down Expand Up @@ -74,6 +75,12 @@ def on_get(req, resp):
cnx_system = mysql.connector.connect(**config.myems_system_db)
cursor_system = cnx_system.cursor()

cnx_energy = mysql.connector.connect(**config.myems_energy_db)
cursor_energy = cnx_energy.cursor()

cnx_billing = mysql.connector.connect(**config.myems_billing_db)
cursor_billing = cnx_billing.cursor()

cnx_historical = mysql.connector.connect(**config.myems_historical_db)
cursor_historical = cnx_historical.cursor()

Expand Down Expand Up @@ -245,6 +252,7 @@ def on_get(req, resp):
"units": row_point[2],
"object_type": row_point[3]})

charge_meter_id = None
cursor_system.execute(" SELECT m.id, cb.name, m.energy_category_id "
" FROM tbl_energy_storage_containers_batteries cb, tbl_meters m "
" WHERE cb.energy_storage_container_id = %s AND cb.charge_meter_id = m.id ",
Expand All @@ -254,7 +262,9 @@ def on_get(req, resp):
meter_list.append({"id": row_meter[0],
"name": row_meter[1] + '.Charge',
"energy_category_id": row_meter[2]})
charge_meter_id = row_meter[0]

discharge_meter_id = None
cursor_system.execute(" SELECT m.id, cb.name, m.energy_category_id "
" FROM tbl_energy_storage_containers_batteries cb, tbl_meters m "
" WHERE cb.energy_storage_container_id = %s AND cb.discharge_meter_id = m.id ",
Expand All @@ -264,6 +274,7 @@ def on_get(req, resp):
meter_list.append({"id": row_meter[0],
"name": row_meter[1] + '.Discharge',
"energy_category_id": row_meter[2]})
discharge_meter_id = row_meter[0]

################################################################################################################
# Step 5: query associated grids on containers
Expand Down Expand Up @@ -327,50 +338,61 @@ def on_get(req, resp):
# Step 7: query associated power conversion systems on containers
################################################################################################################
# Step 7.1 query energy indicator data
timezone_offset = int(config.utc_offset[1:3]) * 60 + int(config.utc_offset[4:6])
if config.utc_offset[0] == '-':
timezone_offset = -timezone_offset

today_start_datetime_utc = None
today_end_datetime_utc = datetime.utcnow()
today_end_datetime_local = datetime.utcnow() + timedelta(minutes=timezone_offset)
today_start_datetime_local = today_end_datetime_local.replace(hour=0, minute=0, second=0, microsecond=0)
today_start_datetime_utc = today_start_datetime_local - timedelta(minutes=timezone_offset)

today_charge_energy_value = Decimal(0.0)
today_discharge_energy_value = Decimal(0.0)
total_charge_energy_value = Decimal(0.0)
total_discharge_energy_value = Decimal(0.0)
cursor_system.execute(" SELECT run_state_point_id, "
" today_charge_energy_point_id, "
" today_discharge_energy_point_id, "
" total_charge_energy_point_id, "
" total_discharge_energy_point_id "
" FROM tbl_energy_storage_containers_power_conversion_systems "
" WHERE energy_storage_container_id = %s "
" ORDER BY id "
" LIMIT 1 ",
(container_list[0]['id'],))
row_point = cursor_system.fetchone()
if row_point is not None:
pcs_run_state_point_id = row_point[0]
today_charge_energy_point_id = row_point[0]
today_discharge_energy_point_id = row_point[1]
total_charge_energy_point_id = row_point[2]
total_discharge_energy_point_id = row_point[3]

if digital_value_latest_dict.get(pcs_run_state_point_id) is not None:
pcs_run_state_point_value = digital_value_latest_dict.get(pcs_run_state_point_id)

if analog_value_latest_dict.get(today_charge_energy_point_id) is not None:
today_charge_energy_value = analog_value_latest_dict.get(today_charge_energy_point_id)
elif energy_value_latest_dict.get(today_charge_energy_point_id) is not None:
today_charge_energy_value = energy_value_latest_dict.get(today_charge_energy_point_id)

if analog_value_latest_dict.get(today_discharge_energy_point_id) is not None:
today_discharge_energy_value = analog_value_latest_dict.get(today_discharge_energy_point_id)
elif energy_value_latest_dict.get(today_discharge_energy_point_id) is not None:
today_discharge_energy_value = energy_value_latest_dict.get(today_discharge_energy_point_id)

if analog_value_latest_dict.get(total_charge_energy_point_id) is not None:
total_charge_energy_value = analog_value_latest_dict.get(total_charge_energy_point_id)
elif energy_value_latest_dict.get(total_charge_energy_point_id) is not None:
total_charge_energy_value = energy_value_latest_dict.get(total_charge_energy_point_id)

if analog_value_latest_dict.get(total_discharge_energy_point_id) is not None:
total_discharge_energy_value = analog_value_latest_dict.get(total_discharge_energy_point_id)
elif energy_value_latest_dict.get(total_discharge_energy_point_id) is not None:
total_discharge_energy_value = energy_value_latest_dict.get(total_discharge_energy_point_id)

# query meter energy
cursor_energy.execute(" SELECT SUM(actual_value) "
" FROM tbl_meter_hourly "
" WHERE meter_id = %s "
" AND start_datetime_utc >= %s "
" AND start_datetime_utc < %s ",
(charge_meter_id,
today_start_datetime_utc,
today_end_datetime_utc))
row = cursor_energy.fetchone()
if row is not None:
today_charge_energy_value = row[0]

cursor_energy.execute(" SELECT SUM(actual_value) "
" FROM tbl_meter_hourly "
" WHERE meter_id = %s "
" AND start_datetime_utc >= %s "
" AND start_datetime_utc < %s ",
(discharge_meter_id,
today_start_datetime_utc,
today_end_datetime_utc))
row = cursor_energy.fetchone()
if row is not None:
today_discharge_energy_value = row[0]

cursor_energy.execute(" SELECT SUM(actual_value) "
" FROM tbl_meter_hourly "
" WHERE meter_id = %s ",
(charge_meter_id,))
row = cursor_energy.fetchone()
if row is not None:
total_charge_energy_value = row[0]

cursor_energy.execute(" SELECT SUM(actual_value) "
" FROM tbl_meter_hourly "
" WHERE meter_id = %s ",
(discharge_meter_id,))
row = cursor_energy.fetchone()
if row is not None:
total_discharge_energy_value = row[0]
################################################################################################################
# Step 8: query associated schedules on containers
################################################################################################################
Expand Down Expand Up @@ -525,7 +547,16 @@ def on_get(req, resp):
pcs_parameters_data['names'] = list()
pcs_parameters_data['timestamps'] = list()
pcs_parameters_data['values'] = list()
if pcs_run_state_point_id is not None:
cursor_system.execute(" SELECT run_state_point_id "
" FROM tbl_energy_storage_containers_power_conversion_systems "
" WHERE energy_storage_container_id = %s "
" ORDER BY id "
" LIMIT 1 ",
(container_list[0]['id'],))
row_point = cursor_system.fetchone()

if row_point is not None:
pcs_run_state_point_id = row_point[0]
point_values = []
point_timestamps = []
query = (" SELECT utc_date_time, actual_value "
Expand Down

0 comments on commit daff521

Please sign in to comment.