Skip to content

Commit 3c86317

Browse files
committed
Update example
Signed-off-by: Kurt Greaves <kurt.greaves@zepben.com>
1 parent 152fc14 commit 3c86317

File tree

1 file changed

+25
-20
lines changed

1 file changed

+25
-20
lines changed

src/zepben/examples/energy_consumer_device_hierarchy.py

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,12 @@ def _get_client():
3939
return NetworkConsumerClient(channel)
4040

4141

42-
async def get_feeders(_client = None) -> Dict[str, Feeder]:
42+
async def get_feeders(_client=None) -> Dict[str, Feeder]:
4343
_feeders = (await (_client or _get_client()).get_network_hierarchy()).result.feeders
4444
return _feeders
4545

4646

47-
async def get_feeder_equipmet(client: NetworkConsumerClient, feeder_mrid: str) -> None:
47+
async def get_feeder_equipment(client: NetworkConsumerClient, feeder_mrid: str) -> None:
4848
"""Get all objects under the feeder, including LV Feeders"""
4949
(await client.get_equipment_container(
5050
feeder_mrid,
@@ -59,7 +59,7 @@ async def trace_from_energy_consumers(feeder_mrid: str, client=None):
5959
Trace upstream from every EnergyConsumer.
6060
"""
6161
client = client or _get_client()
62-
await get_feeder_equipmet(client, feeder_mrid)
62+
await get_feeder_equipment(client, feeder_mrid)
6363

6464
def _get_equipment_tree_trace(up_data: dict) -> NetworkTrace:
6565
def step_action(step: NetworkTraceStep, _: StepContext):
@@ -104,6 +104,7 @@ async def trace_from_feeder_downstream(feeder_mrid: str, client=None):
104104
Build an equipment tree of everything downstream of the feeder.
105105
Use the Equipment tree to recurse through parent equipment of all EC's and get the equipment we are interested in.
106106
"""
107+
107108
def process_leaf(up_data: dict, leaf: TreeNode):
108109
to_equip: IdentifiedObject = leaf.identified_object
109110

@@ -119,8 +120,8 @@ def process_leaf(up_data: dict, leaf: TreeNode):
119120
elif not up_data.get('regulator') and to_equip.function == TransformerFunctionKind.voltageRegulator:
120121
up_data['regulator'] = to_equip
121122

122-
client = client or _get_client()
123-
await get_feeder_equipmet(client, feeder_mrid)
123+
client = client or _get_client()
124+
await get_feeder_equipment(client, feeder_mrid)
124125

125126
builder = EquipmentTreeBuilder()
126127

@@ -135,10 +136,12 @@ def process_leaf(up_data: dict, leaf: TreeNode):
135136

136137
for leaf in (l for l in builder.leaves if isinstance((ec := l.identified_object), EnergyConsumer)):
137138
ec_data = {'feeder': feeder.mrid, 'energy_consumer_mrid': ec.mrid}
139+
138140
def _process(_leaf):
139141
process_leaf(ec_data, _leaf)
140142
if _leaf.parent:
141143
_process(_leaf.parent)
144+
142145
_process(leaf)
143146

144147
row = _build_row(ec_data)
@@ -154,7 +157,7 @@ async def trace_from_feeder_context(feeder_mrid: str, client=None):
154157
"""
155158
client = client or _get_client()
156159
# Get all objects under the feeder, including Substations and LV Feeders
157-
await get_feeder_equipmet(client, feeder_mrid)
160+
await get_feeder_equipment(client, feeder_mrid)
158161

159162
energy_consumers = []
160163

@@ -210,15 +213,15 @@ class NullEquipment:
210213

211214
def _build_row(up_data: dict[str, IdentifiedObject | str]) -> EnergyConsumerDeviceHierarchy:
212215
return EnergyConsumerDeviceHierarchy(
213-
energy_consumer_mrid = up_data['energy_consumer_mrid'],
214-
upstream_switch_mrid = (up_data.get('upstream_switch') or NullEquipment).mrid,
215-
lv_circuit_name = (up_data.get('upstream_switch') or NullEquipment).name,
216-
upstream_switch_class = type(up_data.get('upstream_switch')).__name__,
217-
distribution_power_transformer_mrid = (up_data.get('distribution_power_transformer') or NullEquipment).mrid,
218-
distribution_power_transformer_name = (up_data.get('distribution_power_transformer') or NullEquipment).name,
219-
regulator_mrid = (up_data.get('regulator') or NullEquipment).mrid,
220-
breaker_mrid = (up_data.get('breaker') or NullEquipment).mrid,
221-
feeder_mrid = up_data.get('feeder'),
216+
energy_consumer_mrid=up_data['energy_consumer_mrid'],
217+
upstream_switch_mrid=(up_data.get('upstream_switch') or NullEquipment).mrid,
218+
lv_circuit_name=(up_data.get('upstream_switch') or NullEquipment).name,
219+
upstream_switch_class=type(up_data.get('upstream_switch')).__name__,
220+
distribution_power_transformer_mrid=(up_data.get('distribution_power_transformer') or NullEquipment).mrid,
221+
distribution_power_transformer_name=(up_data.get('distribution_power_transformer') or NullEquipment).name,
222+
regulator_mrid=(up_data.get('regulator') or NullEquipment).mrid,
223+
breaker_mrid=(up_data.get('breaker') or NullEquipment).mrid,
224+
feeder_mrid=up_data.get('feeder'),
222225
)
223226

224227

@@ -236,22 +239,23 @@ async def main_async(trace_type: Callable):
236239
"""
237240
from tqdm import tqdm
238241
client = _get_client()
239-
feeders = list(await get_feeders(client))
242+
feeders = ["<FEEDER_ID>"]
243+
# feeders = list(await get_feeders(client)) # Uncomment to process all feeders
240244
for _feeder in tqdm(feeders):
241245
await trace_type(_feeder, client)
242246

243247
# Uncomment to run other trace functions
244248
asyncio.run(main_async(trace_from_feeder_context))
245-
#asyncio.run(main_async(trace_from_feeder_downstream))
246-
#asyncio.run(main_async(trace_from_energy_consumers))
249+
# asyncio.run(main_async(trace_from_feeder_downstream))
250+
# asyncio.run(main_async(trace_from_energy_consumers))
247251

248252

249253
def process_feeders_concurrently():
250254
def multi_proc(_feeder):
251255
# Uncomment to run other trace functions
252256
asyncio.run(trace_from_feeder_context(_feeder))
253-
#asyncio.run(trace_from_feeder_downstream(_feeder))
254-
#asyncio.run(trace_from_energy_consumers(_feeder))
257+
# asyncio.run(trace_from_feeder_downstream(_feeder))
258+
# asyncio.run(trace_from_energy_consumers(_feeder))
255259

256260
# Get a list of feeders before entering main compute section of script.
257261
feeders = list(asyncio.run(get_feeders()))
@@ -262,3 +266,4 @@ def multi_proc(_feeder):
262266

263267
if __name__ == "__main__":
264268
process_feeders_sequentially()
269+
# process_feeders_concurrently() # Uncomment and comment sequentially above to multi-process, note this is resource intensive and may cause issues.

0 commit comments

Comments
 (0)