zepben.ewb 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- zepben/ewb/__init__.py +601 -0
- zepben/ewb/auth/__init__.py +10 -0
- zepben/ewb/auth/client/__init__.py +5 -0
- zepben/ewb/auth/client/zepben_token_fetcher.py +273 -0
- zepben/ewb/auth/common/__init__.py +5 -0
- zepben/ewb/auth/common/auth_exception.py +16 -0
- zepben/ewb/auth/common/auth_method.py +28 -0
- zepben/ewb/auth/common/auth_provider_config.py +96 -0
- zepben/ewb/database/__init__.py +4 -0
- zepben/ewb/database/paths/__init__.py +4 -0
- zepben/ewb/database/paths/database_type.py +34 -0
- zepben/ewb/database/paths/ewb_data_file_paths.py +237 -0
- zepben/ewb/database/sql/__init__.py +4 -0
- zepben/ewb/database/sql/column.py +37 -0
- zepben/ewb/database/sql/sql_table.py +142 -0
- zepben/ewb/database/sqlite/__init__.py +4 -0
- zepben/ewb/database/sqlite/common/__init__.py +4 -0
- zepben/ewb/database/sqlite/common/base_cim_reader.py +212 -0
- zepben/ewb/database/sqlite/common/base_cim_writer.py +159 -0
- zepben/ewb/database/sqlite/common/base_collection_reader.py +96 -0
- zepben/ewb/database/sqlite/common/base_collection_writer.py +73 -0
- zepben/ewb/database/sqlite/common/base_database_reader.py +127 -0
- zepben/ewb/database/sqlite/common/base_database_tables.py +137 -0
- zepben/ewb/database/sqlite/common/base_database_writer.py +195 -0
- zepben/ewb/database/sqlite/common/base_entry_writer.py +34 -0
- zepben/ewb/database/sqlite/common/base_service_reader.py +50 -0
- zepben/ewb/database/sqlite/common/base_service_writer.py +104 -0
- zepben/ewb/database/sqlite/common/metadata_collection_reader.py +39 -0
- zepben/ewb/database/sqlite/common/metadata_collection_writer.py +38 -0
- zepben/ewb/database/sqlite/common/metadata_entry_reader.py +45 -0
- zepben/ewb/database/sqlite/common/metadata_entry_writer.py +41 -0
- zepben/ewb/database/sqlite/common/reader_exceptions.py +30 -0
- zepben/ewb/database/sqlite/customer/__init__.py +4 -0
- zepben/ewb/database/sqlite/customer/customer_cim_reader.py +169 -0
- zepben/ewb/database/sqlite/customer/customer_cim_writer.py +137 -0
- zepben/ewb/database/sqlite/customer/customer_database_reader.py +44 -0
- zepben/ewb/database/sqlite/customer/customer_database_tables.py +37 -0
- zepben/ewb/database/sqlite/customer/customer_database_writer.py +45 -0
- zepben/ewb/database/sqlite/customer/customer_service_reader.py +57 -0
- zepben/ewb/database/sqlite/customer/customer_service_writer.py +47 -0
- zepben/ewb/database/sqlite/diagram/__init__.py +4 -0
- zepben/ewb/database/sqlite/diagram/diagram_cim_reader.py +105 -0
- zepben/ewb/database/sqlite/diagram/diagram_cim_writer.py +81 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_reader.py +45 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_tables.py +29 -0
- zepben/ewb/database/sqlite/diagram/diagram_database_writer.py +44 -0
- zepben/ewb/database/sqlite/diagram/diagram_service_reader.py +49 -0
- zepben/ewb/database/sqlite/diagram/diagram_service_writer.py +41 -0
- zepben/ewb/database/sqlite/extensions/__init__.py +4 -0
- zepben/ewb/database/sqlite/extensions/prepared_statement.py +112 -0
- zepben/ewb/database/sqlite/extensions/result_set.py +153 -0
- zepben/ewb/database/sqlite/network/__init__.py +4 -0
- zepben/ewb/database/sqlite/network/network_cim_reader.py +3167 -0
- zepben/ewb/database/sqlite/network/network_cim_writer.py +2561 -0
- zepben/ewb/database/sqlite/network/network_database_reader.py +175 -0
- zepben/ewb/database/sqlite/network/network_database_tables.py +242 -0
- zepben/ewb/database/sqlite/network/network_database_writer.py +43 -0
- zepben/ewb/database/sqlite/network/network_service_reader.py +265 -0
- zepben/ewb/database/sqlite/network/network_service_writer.py +209 -0
- zepben/ewb/database/sqlite/tables/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/associations/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/associations/loop_substation_relationship.py +17 -0
- zepben/ewb/database/sqlite/tables/associations/table_asset_organisation_roles_assets.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_assets_power_system_resources.py +41 -0
- zepben/ewb/database/sqlite/tables/associations/table_battery_units_battery_controls.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_circuits_substations.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_circuits_terminals.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_customer_agreements_pricing_structures.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_end_devices_end_device_functions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_equipment_containers.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_operational_restrictions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_equipment_usage_points.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_loops_substations.py +43 -0
- zepben/ewb/database/sqlite/tables/associations/table_pricing_structures_tariffs.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_protected_switches.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_functions_sensors.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_protection_relay_schemes_protection_relay_functions.py +40 -0
- zepben/ewb/database/sqlite/tables/associations/table_synchronous_machines_reactive_capability_curves.py +39 -0
- zepben/ewb/database/sqlite/tables/associations/table_usage_points_end_devices.py +40 -0
- zepben/ewb/database/sqlite/tables/exceptions.py +10 -0
- zepben/ewb/database/sqlite/tables/extensions/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_reclose_delays.py +38 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/assetinfo/table_relay_info.py +21 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61968/metering/table_pan_demand_response_functions.py +21 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/core/table_sites.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_loops.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/feeder/table_lv_feeders.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/generation/production/table_ev_charging_units.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_distance_relays.py +28 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_thresholds.py +36 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_function_time_limits.py +34 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_functions.py +24 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_schemes.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_protection_relay_systems.py +20 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/protection/table_voltage_relays.py +15 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_battery_controls.py +23 -0
- zepben/ewb/database/sqlite/tables/extensions/iec61970/base/wires/table_power_transformer_end_ratings.py +34 -0
- zepben/ewb/database/sqlite/tables/iec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_cable_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_no_load_tests.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_open_circuit_tests.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_overhead_wire_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_power_transformer_info.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_short_circuit_tests.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_shunt_compensator_info.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_switch_info.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_end_info.py +46 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_tank_info.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_transformer_test.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/assetinfo/table_wire_info.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_functions.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_info.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_organisation_roles.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_asset_owners.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_assets.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_streetlights.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61968/assets/table_structures.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_agreements.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_documents.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_address_field.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_location_street_addresses.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_locations.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_organisation_roles.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_organisations.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_position_points.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_street_addresses.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61968/common/table_town_details.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_customer_agreements.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_customers.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_pricing_structures.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/customers/table_tariffs.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_current_transformer_info.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassetinfo/table_potential_transformer_info.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/infiec61968/infassets/table_poles.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_device_functions.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_end_devices.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_meters.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61968/metering/table_usage_points.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61968/operations/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61968/operations/table_operational_restrictions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_auxiliary_equipment.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_current_transformers.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_fault_indicators.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_potential_transformers.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/auxiliaryequipment/table_sensors.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_ac_dc_terminals.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_base_voltages.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_conducting_equipment.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_node_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_connectivity_nodes.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curve_data.py +46 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_curves.py +17 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_equipment_containers.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_feeders.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_geographical_regions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_identified_objects.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_name_types.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_names.py +36 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_power_system_resources.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_sub_geographical_regions.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_substations.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/core/table_terminals.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_object_points.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagram_objects.py +31 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/diagramlayout/table_diagrams.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_branches.py +35 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/equivalents/table_equivalent_equipment.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_battery_units.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_photo_voltaic_units.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_units.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/generation/production/table_power_electronics_wind_units.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_accumulators.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_analogs.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_controls.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_discretes.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_io_points.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/meas/table_measurements.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/protection/table_current_relays.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_controls.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_points.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/scada/table_remote_sources.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ac_line_segments.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_breakers.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_busbar_sections.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_clamps.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_conductors.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_connectors.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_cuts.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_disconnectors.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_earth_fault_compensators.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_connections.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumer_phases.py +37 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_consumers.py +26 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_source_phases.py +33 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_energy_sources.py +44 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_fuses.py +20 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ground_disconnectors.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounding_impedances.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_grounds.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_jumpers.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_junctions.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_linear_shunt_compensators.py +23 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_lines.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_load_break_switches.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_impedances.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_line_parameters.py +14 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_phase_impedances.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_per_length_sequence_impedances.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_petersen_coils.py +27 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_phase_impedance_data.py +52 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connection_phases.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_electronics_connections.py +50 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformer_ends.py +43 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_power_transformers.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_protected_switches.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_ratio_tap_changers.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reactive_capability_curves.py +18 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_reclosers.py +15 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_cond_eq.py +19 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_regulating_controls.py +29 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_rotating_machines.py +36 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_series_compensators.py +25 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_shunt_compensators.py +22 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_static_var_compensator.py +24 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_switches.py +21 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_synchronous_machines.py +95 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changer_controls.py +28 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_tap_changers.py +25 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_ends.py +30 -0
- zepben/ewb/database/sqlite/tables/iec61970/base/wires/table_transformer_star_impedances.py +32 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/__init__.py +4 -0
- zepben/ewb/database/sqlite/tables/iec61970/infiec61970/feeder/table_circuits.py +27 -0
- zepben/ewb/database/sqlite/tables/sqlite_table.py +45 -0
- zepben/ewb/database/sqlite/tables/table_metadata_data_sources.py +21 -0
- zepben/ewb/database/sqlite/tables/table_version.py +39 -0
- zepben/ewb/dataclassy/__init__.py +15 -0
- zepben/ewb/dataclassy/dataclass.py +192 -0
- zepben/ewb/dataclassy/decorator.py +35 -0
- zepben/ewb/dataclassy/functions.py +80 -0
- zepben/ewb/examples/__init__.py +6 -0
- zepben/ewb/examples/simple_test_network.py +158 -0
- zepben/ewb/exceptions.py +52 -0
- zepben/ewb/model/__init__.py +4 -0
- zepben/ewb/model/busbranch/__init__.py +4 -0
- zepben/ewb/model/busbranch/bus_branch.py +1051 -0
- zepben/ewb/model/cim/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/assetinfo/relay_info.py +128 -0
- zepben/ewb/model/cim/extensions/iec61968/metering/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61968/metering/pan_demand_reponse_function.py +112 -0
- zepben/ewb/model/cim/extensions/iec61970/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/core/site.py +37 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/loop.py +207 -0
- zepben/ewb/model/cim/extensions/iec61970/base/feeder/lv_feeder.py +258 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/generation/production/ev_charging_unit.py +18 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/distance_relay.py +69 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/power_direction_kind.py +36 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_kind.py +112 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_function.py +448 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_scheme.py +97 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/protection_relay_system.py +97 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/relay_setting.py +35 -0
- zepben/ewb/model/cim/extensions/iec61970/base/protection/voltage_relay.py +20 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control.py +36 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/battery_control_mode.py +83 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_cooling_type.py +57 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/transformer_end_rated_s.py +26 -0
- zepben/ewb/model/cim/extensions/iec61970/base/wires/vector_group.py +293 -0
- zepben/ewb/model/cim/extensions/zbex.py +17 -0
- zepben/ewb/model/cim/iec61968/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assetinfo/cable_info.py +15 -0
- zepben/ewb/model/cim/iec61968/assetinfo/no_load_test.py +42 -0
- zepben/ewb/model/cim/iec61968/assetinfo/open_circuit_test.py +42 -0
- zepben/ewb/model/cim/iec61968/assetinfo/overhead_wire_info.py +15 -0
- zepben/ewb/model/cim/iec61968/assetinfo/power_transformer_info.py +103 -0
- zepben/ewb/model/cim/iec61968/assetinfo/short_circuit_test.py +67 -0
- zepben/ewb/model/cim/iec61968/assetinfo/shunt_compensator_info.py +26 -0
- zepben/ewb/model/cim/iec61968/assetinfo/switch_info.py +17 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_end_info.py +137 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_tank_info.py +108 -0
- zepben/ewb/model/cim/iec61968/assetinfo/transformer_test.py +26 -0
- zepben/ewb/model/cim/iec61968/assetinfo/wire_info.py +24 -0
- zepben/ewb/model/cim/iec61968/assetinfo/wire_material_kind.py +57 -0
- zepben/ewb/model/cim/iec61968/assets/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/assets/asset.py +154 -0
- zepben/ewb/model/cim/iec61968/assets/asset_container.py +16 -0
- zepben/ewb/model/cim/iec61968/assets/asset_function.py +15 -0
- zepben/ewb/model/cim/iec61968/assets/asset_info.py +19 -0
- zepben/ewb/model/cim/iec61968/assets/asset_organisation_role.py +13 -0
- zepben/ewb/model/cim/iec61968/assets/asset_owner.py +13 -0
- zepben/ewb/model/cim/iec61968/assets/streetlight.py +29 -0
- zepben/ewb/model/cim/iec61968/assets/structure.py +16 -0
- zepben/ewb/model/cim/iec61968/common/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/common/agreement.py +16 -0
- zepben/ewb/model/cim/iec61968/common/document.py +36 -0
- zepben/ewb/model/cim/iec61968/common/location.py +129 -0
- zepben/ewb/model/cim/iec61968/common/organisation.py +15 -0
- zepben/ewb/model/cim/iec61968/common/organisation_role.py +22 -0
- zepben/ewb/model/cim/iec61968/common/position_point.py +44 -0
- zepben/ewb/model/cim/iec61968/common/street_address.py +28 -0
- zepben/ewb/model/cim/iec61968/common/street_detail.py +46 -0
- zepben/ewb/model/cim/iec61968/common/town_detail.py +25 -0
- zepben/ewb/model/cim/iec61968/customers/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/customers/customer.py +93 -0
- zepben/ewb/model/cim/iec61968/customers/customer_agreement.py +107 -0
- zepben/ewb/model/cim/iec61968/customers/customer_kind.py +69 -0
- zepben/ewb/model/cim/iec61968/customers/pricing_structure.py +88 -0
- zepben/ewb/model/cim/iec61968/customers/tariff.py +18 -0
- zepben/ewb/model/cim/iec61968/infiec61968/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/current_transformer_info.py +51 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/potential_transformer_info.py +33 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_construction_kind.py +69 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassetinfo/transformer_function_kind.py +45 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/pole.py +87 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infassets/streetlight_lamp_kind.py +27 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infcommon/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/infiec61968/infcommon/ratio.py +34 -0
- zepben/ewb/model/cim/iec61968/metering/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/metering/controlled_appliance.py +152 -0
- zepben/ewb/model/cim/iec61968/metering/end_device.py +165 -0
- zepben/ewb/model/cim/iec61968/metering/end_device_function.py +17 -0
- zepben/ewb/model/cim/iec61968/metering/end_device_function_kind.py +48 -0
- zepben/ewb/model/cim/iec61968/metering/meter.py +28 -0
- zepben/ewb/model/cim/iec61968/metering/usage_point.py +186 -0
- zepben/ewb/model/cim/iec61968/operations/__init__.py +4 -0
- zepben/ewb/model/cim/iec61968/operations/operational_restriction.py +92 -0
- zepben/ewb/model/cim/iec61970/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/auxiliary_equipment.py +24 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/current_transformer.py +37 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/fault_indicator.py +18 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer.py +38 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/potential_transformer_kind.py +30 -0
- zepben/ewb/model/cim/iec61970/base/auxiliaryequipment/sensor.py +92 -0
- zepben/ewb/model/cim/iec61970/base/core/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/core/ac_dc_terminal.py +16 -0
- zepben/ewb/model/cim/iec61970/base/core/base_voltage.py +17 -0
- zepben/ewb/model/cim/iec61970/base/core/conducting_equipment.py +198 -0
- zepben/ewb/model/cim/iec61970/base/core/connectivity_node.py +105 -0
- zepben/ewb/model/cim/iec61970/base/core/connectivity_node_container.py +15 -0
- zepben/ewb/model/cim/iec61970/base/core/curve.py +125 -0
- zepben/ewb/model/cim/iec61970/base/core/curve_data.py +29 -0
- zepben/ewb/model/cim/iec61970/base/core/equipment.py +366 -0
- zepben/ewb/model/cim/iec61970/base/core/equipment_container.py +199 -0
- zepben/ewb/model/cim/iec61970/base/core/feeder.py +260 -0
- zepben/ewb/model/cim/iec61970/base/core/geographical_region.py +82 -0
- zepben/ewb/model/cim/iec61970/base/core/identified_object.py +239 -0
- zepben/ewb/model/cim/iec61970/base/core/name.py +36 -0
- zepben/ewb/model/cim/iec61970/base/core/name_type.py +203 -0
- zepben/ewb/model/cim/iec61970/base/core/phase_code.py +202 -0
- zepben/ewb/model/cim/iec61970/base/core/power_system_resource.py +106 -0
- zepben/ewb/model/cim/iec61970/base/core/sub_geographical_region.py +93 -0
- zepben/ewb/model/cim/iec61970/base/core/substation.py +277 -0
- zepben/ewb/model/cim/iec61970/base/core/terminal.py +171 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram.py +109 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object.py +160 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_object_point.py +25 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/diagram_style.py +28 -0
- zepben/ewb/model/cim/iec61970/base/diagramlayout/orientation_kind.py +29 -0
- zepben/ewb/model/cim/iec61970/base/domain/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/domain/unit_symbol.py +494 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_branch.py +113 -0
- zepben/ewb/model/cim/iec61970/base/equivalents/equivalent_equipment.py +15 -0
- zepben/ewb/model/cim/iec61970/base/generation/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/battery_state_kind.py +39 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/battery_unit.py +108 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/photo_voltaic_unit.py +13 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_unit.py +28 -0
- zepben/ewb/model/cim/iec61970/base/generation/production/power_electronics_wind_unit.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/meas/accumulator.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/accumulator_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/analog.py +18 -0
- zepben/ewb/model/cim/iec61970/base/meas/analog_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/control.py +26 -0
- zepben/ewb/model/cim/iec61970/base/meas/discrete.py +13 -0
- zepben/ewb/model/cim/iec61970/base/meas/discrete_value.py +20 -0
- zepben/ewb/model/cim/iec61970/base/meas/iopoint.py +16 -0
- zepben/ewb/model/cim/iec61970/base/meas/measurement.py +60 -0
- zepben/ewb/model/cim/iec61970/base/meas/measurement_value.py +21 -0
- zepben/ewb/model/cim/iec61970/base/protection/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/protection/current_relay.py +23 -0
- zepben/ewb/model/cim/iec61970/base/scada/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_control.py +22 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_point.py +16 -0
- zepben/ewb/model/cim/iec61970/base/scada/remote_source.py +22 -0
- zepben/ewb/model/cim/iec61970/base/wires/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/base/wires/ac_line_segment.py +214 -0
- zepben/ewb/model/cim/iec61970/base/wires/breaker.py +32 -0
- zepben/ewb/model/cim/iec61970/base/wires/busbar_section.py +19 -0
- zepben/ewb/model/cim/iec61970/base/wires/clamp.py +32 -0
- zepben/ewb/model/cim/iec61970/base/wires/conductor.py +49 -0
- zepben/ewb/model/cim/iec61970/base/wires/connector.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/cut.py +36 -0
- zepben/ewb/model/cim/iec61970/base/wires/disconnector.py +17 -0
- zepben/ewb/model/cim/iec61970/base/wires/earth_fault_compensator.py +21 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_connection.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_consumer.py +107 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_consumer_phase.py +56 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_source.py +172 -0
- zepben/ewb/model/cim/iec61970/base/wires/energy_source_phase.py +45 -0
- zepben/ewb/model/cim/iec61970/base/wires/fuse.py +23 -0
- zepben/ewb/model/cim/iec61970/base/wires/ground.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/ground_disconnector.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/grounding_impedance.py +19 -0
- zepben/ewb/model/cim/iec61970/base/wires/jumper.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/junction.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/line.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/linear_shunt_compensator.py +26 -0
- zepben/ewb/model/cim/iec61970/base/wires/load_break_switch.py +14 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_impedance.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_line_parameter.py +13 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_phase_impedance.py +99 -0
- zepben/ewb/model/cim/iec61970/base/wires/per_length_sequence_impedance.py +43 -0
- zepben/ewb/model/cim/iec61970/base/wires/petersen_coil.py +22 -0
- zepben/ewb/model/cim/iec61970/base/wires/phase_impedance_data.py +37 -0
- zepben/ewb/model/cim/iec61970/base/wires/phase_shunt_connection_kind.py +40 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection.py +524 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_electronics_connection_phase.py +34 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_transformer.py +217 -0
- zepben/ewb/model/cim/iec61970/base/wires/power_transformer_end.py +208 -0
- zepben/ewb/model/cim/iec61970/base/wires/protected_switch.py +96 -0
- zepben/ewb/model/cim/iec61970/base/wires/ratio_tap_changer.py +30 -0
- zepben/ewb/model/cim/iec61970/base/wires/reactive_capability_curve.py +16 -0
- zepben/ewb/model/cim/iec61970/base/wires/recloser.py +15 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_cond_eq.py +45 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_control.py +173 -0
- zepben/ewb/model/cim/iec61970/base/wires/regulating_control_mode_kind.py +48 -0
- zepben/ewb/model/cim/iec61970/base/wires/rotating_machine.py +36 -0
- zepben/ewb/model/cim/iec61970/base/wires/series_compensator.py +42 -0
- zepben/ewb/model/cim/iec61970/base/wires/shunt_compensator.py +59 -0
- zepben/ewb/model/cim/iec61970/base/wires/single_phase_kind.py +107 -0
- zepben/ewb/model/cim/iec61970/base/wires/static_var_compensator.py +40 -0
- zepben/ewb/model/cim/iec61970/base/wires/svc_control_mode.py +30 -0
- zepben/ewb/model/cim/iec61970/base/wires/switch.py +119 -0
- zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine.py +168 -0
- zepben/ewb/model/cim/iec61970/base/wires/synchronous_machine_kind.py +46 -0
- zepben/ewb/model/cim/iec61970/base/wires/tap_changer.py +150 -0
- zepben/ewb/model/cim/iec61970/base/wires/tap_changer_control.py +49 -0
- zepben/ewb/model/cim/iec61970/base/wires/transformer_end.py +73 -0
- zepben/ewb/model/cim/iec61970/base/wires/transformer_star_impedance.py +48 -0
- zepben/ewb/model/cim/iec61970/base/wires/winding_connection.py +45 -0
- zepben/ewb/model/cim/iec61970/infiec61970/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/infiec61970/feeder/__init__.py +4 -0
- zepben/ewb/model/cim/iec61970/infiec61970/feeder/circuit.py +144 -0
- zepben/ewb/model/phases.py +168 -0
- zepben/ewb/model/resistance_reactance.py +40 -0
- zepben/ewb/services/__init__.py +4 -0
- zepben/ewb/services/common/__init__.py +16 -0
- zepben/ewb/services/common/base_service.py +383 -0
- zepben/ewb/services/common/base_service_comparator.py +394 -0
- zepben/ewb/services/common/difference.py +47 -0
- zepben/ewb/services/common/enum_mapper.py +55 -0
- zepben/ewb/services/common/meta/__init__.py +4 -0
- zepben/ewb/services/common/meta/data_source.py +16 -0
- zepben/ewb/services/common/meta/metadata_collection.py +28 -0
- zepben/ewb/services/common/meta/metadata_translations.py +47 -0
- zepben/ewb/services/common/meta/service_info.py +22 -0
- zepben/ewb/services/common/reference_resolvers.py +374 -0
- zepben/ewb/services/common/resolver.py +597 -0
- zepben/ewb/services/common/translator/__init__.py +4 -0
- zepben/ewb/services/common/translator/base_cim2proto.py +115 -0
- zepben/ewb/services/common/translator/base_proto2cim.py +146 -0
- zepben/ewb/services/common/translator/service_differences.py +81 -0
- zepben/ewb/services/common/translator/util.py +75 -0
- zepben/ewb/services/customer/__init__.py +4 -0
- zepben/ewb/services/customer/customer_service_comparator.py +52 -0
- zepben/ewb/services/customer/customers.py +23 -0
- zepben/ewb/services/customer/translator/__init__.py +21 -0
- zepben/ewb/services/customer/translator/customer_cim2proto.py +71 -0
- zepben/ewb/services/customer/translator/customer_enum_mappers.py +18 -0
- zepben/ewb/services/customer/translator/customer_proto2cim.py +87 -0
- zepben/ewb/services/diagram/__init__.py +4 -0
- zepben/ewb/services/diagram/diagram_service_comparator.py +39 -0
- zepben/ewb/services/diagram/diagrams.py +107 -0
- zepben/ewb/services/diagram/translator/__init__.py +11 -0
- zepben/ewb/services/diagram/translator/diagram_cim2proto.py +51 -0
- zepben/ewb/services/diagram/translator/diagram_enum_mappers.py +21 -0
- zepben/ewb/services/diagram/translator/diagram_proto2cim.py +61 -0
- zepben/ewb/services/measurement/__init__.py +4 -0
- zepben/ewb/services/measurement/measurements.py +35 -0
- zepben/ewb/services/measurement/translator/__init__.py +6 -0
- zepben/ewb/services/measurement/translator/measurement_cim2proto.py +42 -0
- zepben/ewb/services/measurement/translator/measurement_proto2cim.py +52 -0
- zepben/ewb/services/network/__init__.py +4 -0
- zepben/ewb/services/network/network_extensions.py +119 -0
- zepben/ewb/services/network/network_service.py +302 -0
- zepben/ewb/services/network/network_service_comparator.py +1322 -0
- zepben/ewb/services/network/network_state.py +36 -0
- zepben/ewb/services/network/tracing/__init__.py +4 -0
- zepben/ewb/services/network/tracing/busbranch_trace.py +36 -0
- zepben/ewb/services/network/tracing/connectivity/__init__.py +4 -0
- zepben/ewb/services/network/tracing/connectivity/connectivity_result.py +105 -0
- zepben/ewb/services/network/tracing/connectivity/nominal_phase_path.py +23 -0
- zepben/ewb/services/network/tracing/connectivity/phase_paths.py +70 -0
- zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_connected.py +226 -0
- zepben/ewb/services/network/tracing/connectivity/terminal_connectivity_internal.py +64 -0
- zepben/ewb/services/network/tracing/connectivity/transformer_phase_paths.py +202 -0
- zepben/ewb/services/network/tracing/connectivity/xy_candidate_phase_paths.py +235 -0
- zepben/ewb/services/network/tracing/connectivity/xy_phase_step.py +24 -0
- zepben/ewb/services/network/tracing/feeder/__init__.py +4 -0
- zepben/ewb/services/network/tracing/feeder/assign_to_feeders.py +202 -0
- zepben/ewb/services/network/tracing/feeder/assign_to_lv_feeders.py +202 -0
- zepben/ewb/services/network/tracing/feeder/clear_direction.py +80 -0
- zepben/ewb/services/network/tracing/feeder/direction_status.py +133 -0
- zepben/ewb/services/network/tracing/feeder/feeder_direction.py +107 -0
- zepben/ewb/services/network/tracing/feeder/set_direction.py +143 -0
- zepben/ewb/services/network/tracing/find_swer_equipment.py +175 -0
- zepben/ewb/services/network/tracing/networktrace/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/actions/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/actions/equipment_tree_builder.py +104 -0
- zepben/ewb/services/network/tracing/networktrace/actions/tree_node.py +35 -0
- zepben/ewb/services/network/tracing/networktrace/compute_data.py +60 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/__init__.py +4 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/conditions.py +73 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/direction_condition.py +63 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/equipment_step_limit_condition.py +26 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/equipment_type_step_limit_condition.py +44 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_queue_condition.py +67 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/network_trace_stop_condition.py +65 -0
- zepben/ewb/services/network/tracing/networktrace/conditions/open_condition.py +39 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace.py +433 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_action_type.py +42 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_queue_next.py +84 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_step.py +128 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_step_path_provider.py +351 -0
- zepben/ewb/services/network/tracing/networktrace/network_trace_tracker.py +39 -0
- zepben/ewb/services/network/tracing/networktrace/operators/__init__.py +14 -0
- zepben/ewb/services/network/tracing/networktrace/operators/equipment_container_state_operators.py +264 -0
- zepben/ewb/services/network/tracing/networktrace/operators/feeder_direction_state_operations.py +181 -0
- zepben/ewb/services/network/tracing/networktrace/operators/in_service_state_operators.py +76 -0
- zepben/ewb/services/network/tracing/networktrace/operators/network_state_operators.py +120 -0
- zepben/ewb/services/network/tracing/networktrace/operators/open_state_operators.py +104 -0
- zepben/ewb/services/network/tracing/networktrace/operators/phase_state_operators.py +56 -0
- zepben/ewb/services/network/tracing/networktrace/tracing.py +132 -0
- zepben/ewb/services/network/tracing/phases/__init__.py +4 -0
- zepben/ewb/services/network/tracing/phases/phase_inferrer.py +205 -0
- zepben/ewb/services/network/tracing/phases/phase_status.py +101 -0
- zepben/ewb/services/network/tracing/phases/remove_phases.py +143 -0
- zepben/ewb/services/network/tracing/phases/set_phases.py +490 -0
- zepben/ewb/services/network/tracing/traversal/__init__.py +4 -0
- zepben/ewb/services/network/tracing/traversal/context_value_computer.py +63 -0
- zepben/ewb/services/network/tracing/traversal/debug_logging.py +124 -0
- zepben/ewb/services/network/tracing/traversal/queue.py +112 -0
- zepben/ewb/services/network/tracing/traversal/queue_condition.py +75 -0
- zepben/ewb/services/network/tracing/traversal/step_action.py +83 -0
- zepben/ewb/services/network/tracing/traversal/step_context.py +59 -0
- zepben/ewb/services/network/tracing/traversal/stop_condition.py +57 -0
- zepben/ewb/services/network/tracing/traversal/traversal.py +634 -0
- zepben/ewb/services/network/tracing/traversal/traversal_condition.py +22 -0
- zepben/ewb/services/network/tracing/traversal/weighted_priority_queue.py +85 -0
- zepben/ewb/services/network/tracing/util.py +93 -0
- zepben/ewb/services/network/translator/__init__.py +392 -0
- zepben/ewb/services/network/translator/network_cim2proto.py +1867 -0
- zepben/ewb/services/network/translator/network_enum_mappers.py +78 -0
- zepben/ewb/services/network/translator/network_proto2cim.py +2201 -0
- zepben/ewb/services/services.py +48 -0
- zepben/ewb/streaming/__init__.py +4 -0
- zepben/ewb/streaming/data/__init__.py +4 -0
- zepben/ewb/streaming/data/current_state_event.py +314 -0
- zepben/ewb/streaming/data/current_state_event_batch.py +25 -0
- zepben/ewb/streaming/data/set_current_states_status.py +286 -0
- zepben/ewb/streaming/exceptions.py +14 -0
- zepben/ewb/streaming/get/__init__.py +4 -0
- zepben/ewb/streaming/get/consumer.py +209 -0
- zepben/ewb/streaming/get/customer_consumer.py +111 -0
- zepben/ewb/streaming/get/diagram_consumer.py +107 -0
- zepben/ewb/streaming/get/hierarchy/__init__.py +4 -0
- zepben/ewb/streaming/get/hierarchy/data.py +27 -0
- zepben/ewb/streaming/get/included_energized_containers.py +36 -0
- zepben/ewb/streaming/get/included_energizing_containers.py +36 -0
- zepben/ewb/streaming/get/network_consumer.py +870 -0
- zepben/ewb/streaming/get/query_network_state_client.py +64 -0
- zepben/ewb/streaming/get/query_network_state_service.py +94 -0
- zepben/ewb/streaming/grpc/__init__.py +4 -0
- zepben/ewb/streaming/grpc/auth_token_plugin.py +24 -0
- zepben/ewb/streaming/grpc/connect.py +209 -0
- zepben/ewb/streaming/grpc/grpc.py +107 -0
- zepben/ewb/streaming/grpc/grpc_channel_builder.py +190 -0
- zepben/ewb/streaming/mutations/__init__.py +4 -0
- zepben/ewb/streaming/mutations/update_network_state_client.py +80 -0
- zepben/ewb/streaming/mutations/update_network_state_service.py +61 -0
- zepben/ewb/testing/__init__.py +4 -0
- zepben/ewb/testing/test_network_builder.py +816 -0
- zepben/ewb/types.py +17 -0
- zepben/ewb/util.py +200 -0
- zepben_ewb-1.0.0.dist-info/METADATA +90 -0
- zepben_ewb-1.0.0.dist-info/RECORD +641 -0
- zepben_ewb-1.0.0.dist-info/WHEEL +5 -0
- zepben_ewb-1.0.0.dist-info/licenses/LICENSE +374 -0
- zepben_ewb-1.0.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,2201 @@
|
|
|
1
|
+
# Copyright 2024 Zeppelin Bend Pty Ltd
|
|
2
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
3
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
4
|
+
# file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"cable_info_to_cim", "no_load_test_to_cim", "open_circuit_test_to_cim", "overhead_wire_info_to_cim", "power_transformer_info_to_cim",
|
|
10
|
+
"short_circuit_test_to_cim", "shunt_compensator_info_to_cim", "switch_info_to_cim", "transformer_end_info_to_cim", "transformer_tank_info_to_cim",
|
|
11
|
+
"transformer_test_to_cim", "wire_info_to_cim", "asset_to_cim", "asset_container_to_cim", "asset_info_to_cim", "asset_organisation_role_to_cim",
|
|
12
|
+
"asset_owner_to_cim", "pole_to_cim", "streetlight_to_cim", "structure_to_cim", "location_to_cim", "position_point_to_cim", "street_address_to_cim",
|
|
13
|
+
"street_detail_to_cim", "town_detail_to_cim", "relay_info_to_cim", "current_transformer_info_to_cim", "potential_transformer_info_to_cim",
|
|
14
|
+
"ratio_to_cim", "end_device_to_cim", "meter_to_cim", "usage_point_to_cim", "operational_restriction_to_cim", "auxiliary_equipment_to_cim",
|
|
15
|
+
"current_transformer_to_cim", "fault_indicator_to_cim", "potential_transformer_to_cim", "sensor_to_cim", "ac_dc_terminal_to_cim", "base_voltage_to_cim",
|
|
16
|
+
"conducting_equipment_to_cim", "connectivity_node_to_cim", "connectivity_node_container_to_cim", "equipment_to_cim", "equipment_container_to_cim",
|
|
17
|
+
"feeder_to_cim", "geographical_region_to_cim", "power_system_resource_to_cim", "site_to_cim", "sub_geographical_region_to_cim", "substation_to_cim",
|
|
18
|
+
"terminal_to_cim", "equivalent_branch_to_cim", "equivalent_equipment_to_cim", "accumulator_to_cim", "analog_to_cim", "control_to_cim", "discrete_to_cim",
|
|
19
|
+
"io_point_to_cim", "measurement_to_cim", "current_relay_to_cim", "protection_relay_function_to_cim", "remote_control_to_cim", "remote_point_to_cim",
|
|
20
|
+
"remote_source_to_cim", "battery_unit_to_cim", "photo_voltaic_unit_to_cim", "power_electronics_unit_to_cim", "power_electronics_wind_unit_to_cim",
|
|
21
|
+
"ac_line_segment_to_cim", "breaker_to_cim", "conductor_to_cim", "connector_to_cim", "disconnector_to_cim", "energy_connection_to_cim",
|
|
22
|
+
"energy_consumer_to_cim", "energy_consumer_phase_to_cim", "energy_source_to_cim", "energy_source_phase_to_cim", "fuse_to_cim", "jumper_to_cim",
|
|
23
|
+
"junction_to_cim", "busbar_section_to_cim", "line_to_cim", "linear_shunt_compensator_to_cim", "load_break_switch_to_cim",
|
|
24
|
+
"per_length_line_parameter_to_cim", "per_length_impedance_to_cim", "per_length_sequence_impedance_to_cim", "power_electronics_connection_to_cim",
|
|
25
|
+
"power_electronics_connection_phase_to_cim", "power_transformer_to_cim", "power_transformer_end_to_cim", "transformer_star_impedance_to_cim",
|
|
26
|
+
"protected_switch_to_cim", "ratio_tap_changer_to_cim", "recloser_to_cim", "regulating_cond_eq_to_cim", "shunt_compensator_to_cim", "switch_to_cim",
|
|
27
|
+
"tap_changer_to_cim", "transformer_end_to_cim", "circuit_to_cim", "loop_to_cim", "lv_feeder_to_cim", "ev_charging_unit_to_cim",
|
|
28
|
+
"transformer_end_rated_s_to_cim", "tap_changer_control_to_cim", "regulating_control_to_cim", "distance_relay_to_cim", "protection_relay_scheme_to_cim",
|
|
29
|
+
"protection_relay_system_to_cim", "relay_setting_to_cim", "voltage_relay_to_cim", "ground_to_cim", "ground_disconnector_to_cim",
|
|
30
|
+
"series_compensator_to_cim", "pan_demand_response_function_to_cim", 'battery_control_to_cim', "asset_function_to_cim", "end_device_function_to_cim",
|
|
31
|
+
"static_var_compensator_to_cim", "clamp_to_cim", "cut_to_cim"
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
from typing import Optional
|
|
35
|
+
|
|
36
|
+
from zepben.protobuf.cim.extensions.iec61968.assetinfo.RelayInfo_pb2 import RelayInfo as PBRelayInfo
|
|
37
|
+
from zepben.protobuf.cim.extensions.iec61968.metering.PanDemandResponseFunction_pb2 import PanDemandResponseFunction as PBPanDemandResponseFunction
|
|
38
|
+
from zepben.protobuf.cim.extensions.iec61970.base.core.Site_pb2 import Site as PBSite
|
|
39
|
+
from zepben.protobuf.cim.extensions.iec61970.base.feeder.Loop_pb2 import Loop as PBLoop
|
|
40
|
+
from zepben.protobuf.cim.extensions.iec61970.base.feeder.LvFeeder_pb2 import LvFeeder as PBLvFeeder
|
|
41
|
+
from zepben.protobuf.cim.extensions.iec61970.base.generation.production.EvChargingUnit_pb2 import EvChargingUnit as PBEvChargingUnit
|
|
42
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.DistanceRelay_pb2 import DistanceRelay as PBDistanceRelay
|
|
43
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelayFunction_pb2 import ProtectionRelayFunction as PBProtectionRelayFunction
|
|
44
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelayScheme_pb2 import ProtectionRelayScheme as PBProtectionRelayScheme
|
|
45
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.ProtectionRelaySystem_pb2 import ProtectionRelaySystem as PBProtectionRelaySystem
|
|
46
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.RelaySetting_pb2 import RelaySetting as PBRelaySetting
|
|
47
|
+
from zepben.protobuf.cim.extensions.iec61970.base.protection.VoltageRelay_pb2 import VoltageRelay as PBVoltageRelay
|
|
48
|
+
from zepben.protobuf.cim.extensions.iec61970.base.wires.BatteryControl_pb2 import BatteryControl as PBBatteryControl
|
|
49
|
+
from zepben.protobuf.cim.extensions.iec61970.base.wires.TransformerEndRatedS_pb2 import TransformerEndRatedS as PBTransformerEndRatedS
|
|
50
|
+
from zepben.protobuf.cim.iec61968.assetinfo.CableInfo_pb2 import CableInfo as PBCableInfo
|
|
51
|
+
from zepben.protobuf.cim.iec61968.assetinfo.NoLoadTest_pb2 import NoLoadTest as PBNoLoadTest
|
|
52
|
+
from zepben.protobuf.cim.iec61968.assetinfo.OpenCircuitTest_pb2 import OpenCircuitTest as PBOpenCircuitTest
|
|
53
|
+
from zepben.protobuf.cim.iec61968.assetinfo.OverheadWireInfo_pb2 import OverheadWireInfo as PBOverheadWireInfo
|
|
54
|
+
from zepben.protobuf.cim.iec61968.assetinfo.PowerTransformerInfo_pb2 import PowerTransformerInfo as PBPowerTransformerInfo
|
|
55
|
+
from zepben.protobuf.cim.iec61968.assetinfo.ShortCircuitTest_pb2 import ShortCircuitTest as PBShortCircuitTest
|
|
56
|
+
from zepben.protobuf.cim.iec61968.assetinfo.ShuntCompensatorInfo_pb2 import ShuntCompensatorInfo as PBShuntCompensatorInfo
|
|
57
|
+
from zepben.protobuf.cim.iec61968.assetinfo.SwitchInfo_pb2 import SwitchInfo as PBSwitchInfo
|
|
58
|
+
from zepben.protobuf.cim.iec61968.assetinfo.TransformerEndInfo_pb2 import TransformerEndInfo as PBTransformerEndInfo
|
|
59
|
+
from zepben.protobuf.cim.iec61968.assetinfo.TransformerTankInfo_pb2 import TransformerTankInfo as PBTransformerTankInfo
|
|
60
|
+
from zepben.protobuf.cim.iec61968.assetinfo.TransformerTest_pb2 import TransformerTest as PBTransformerTest
|
|
61
|
+
from zepben.protobuf.cim.iec61968.assetinfo.WireInfo_pb2 import WireInfo as PBWireInfo
|
|
62
|
+
from zepben.protobuf.cim.iec61968.assets.AssetContainer_pb2 import AssetContainer as PBAssetContainer
|
|
63
|
+
from zepben.protobuf.cim.iec61968.assets.AssetFunction_pb2 import AssetFunction as PBAssetFunction
|
|
64
|
+
from zepben.protobuf.cim.iec61968.assets.AssetInfo_pb2 import AssetInfo as PBAssetInfo
|
|
65
|
+
from zepben.protobuf.cim.iec61968.assets.AssetOrganisationRole_pb2 import AssetOrganisationRole as PBAssetOrganisationRole
|
|
66
|
+
from zepben.protobuf.cim.iec61968.assets.AssetOwner_pb2 import AssetOwner as PBAssetOwner
|
|
67
|
+
from zepben.protobuf.cim.iec61968.assets.Asset_pb2 import Asset as PBAsset
|
|
68
|
+
from zepben.protobuf.cim.iec61968.assets.Streetlight_pb2 import Streetlight as PBStreetlight
|
|
69
|
+
from zepben.protobuf.cim.iec61968.assets.Structure_pb2 import Structure as PBStructure
|
|
70
|
+
from zepben.protobuf.cim.iec61968.common.Location_pb2 import Location as PBLocation
|
|
71
|
+
from zepben.protobuf.cim.iec61968.common.PositionPoint_pb2 import PositionPoint as PBPositionPoint
|
|
72
|
+
from zepben.protobuf.cim.iec61968.common.StreetAddress_pb2 import StreetAddress as PBStreetAddress
|
|
73
|
+
from zepben.protobuf.cim.iec61968.common.StreetDetail_pb2 import StreetDetail as PBStreetDetail
|
|
74
|
+
from zepben.protobuf.cim.iec61968.common.TownDetail_pb2 import TownDetail as PBTownDetail
|
|
75
|
+
from zepben.protobuf.cim.iec61968.infiec61968.infassetinfo.CurrentTransformerInfo_pb2 import CurrentTransformerInfo as PBCurrentTransformerInfo
|
|
76
|
+
from zepben.protobuf.cim.iec61968.infiec61968.infassetinfo.PotentialTransformerInfo_pb2 import PotentialTransformerInfo as PBPotentialTransformerInfo
|
|
77
|
+
from zepben.protobuf.cim.iec61968.infiec61968.infassets.Pole_pb2 import Pole as PBPole
|
|
78
|
+
from zepben.protobuf.cim.iec61968.infiec61968.infcommon.Ratio_pb2 import Ratio as PBRatio
|
|
79
|
+
from zepben.protobuf.cim.iec61968.metering.EndDeviceFunction_pb2 import EndDeviceFunction as PBEndDeviceFunction
|
|
80
|
+
from zepben.protobuf.cim.iec61968.metering.EndDevice_pb2 import EndDevice as PBEndDevice
|
|
81
|
+
from zepben.protobuf.cim.iec61968.metering.Meter_pb2 import Meter as PBMeter
|
|
82
|
+
from zepben.protobuf.cim.iec61968.metering.UsagePoint_pb2 import UsagePoint as PBUsagePoint
|
|
83
|
+
from zepben.protobuf.cim.iec61968.operations.OperationalRestriction_pb2 import OperationalRestriction as PBOperationalRestriction
|
|
84
|
+
from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.AuxiliaryEquipment_pb2 import AuxiliaryEquipment as PBAuxiliaryEquipment
|
|
85
|
+
from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.CurrentTransformer_pb2 import CurrentTransformer as PBCurrentTransformer
|
|
86
|
+
from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.FaultIndicator_pb2 import FaultIndicator as PBFaultIndicator
|
|
87
|
+
from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.PotentialTransformer_pb2 import PotentialTransformer as PBPotentialTransformer
|
|
88
|
+
from zepben.protobuf.cim.iec61970.base.auxiliaryequipment.Sensor_pb2 import Sensor as PBSensor
|
|
89
|
+
from zepben.protobuf.cim.iec61970.base.core.AcDcTerminal_pb2 import AcDcTerminal as PBAcDcTerminal
|
|
90
|
+
from zepben.protobuf.cim.iec61970.base.core.BaseVoltage_pb2 import BaseVoltage as PBBaseVoltage
|
|
91
|
+
from zepben.protobuf.cim.iec61970.base.core.ConductingEquipment_pb2 import ConductingEquipment as PBConductingEquipment
|
|
92
|
+
from zepben.protobuf.cim.iec61970.base.core.ConnectivityNodeContainer_pb2 import ConnectivityNodeContainer as PBConnectivityNodeContainer
|
|
93
|
+
from zepben.protobuf.cim.iec61970.base.core.ConnectivityNode_pb2 import ConnectivityNode as PBConnectivityNode
|
|
94
|
+
from zepben.protobuf.cim.iec61970.base.core.CurveData_pb2 import CurveData as PBCurveData
|
|
95
|
+
from zepben.protobuf.cim.iec61970.base.core.Curve_pb2 import Curve as PBCurve
|
|
96
|
+
from zepben.protobuf.cim.iec61970.base.core.EquipmentContainer_pb2 import EquipmentContainer as PBEquipmentContainer
|
|
97
|
+
from zepben.protobuf.cim.iec61970.base.core.Equipment_pb2 import Equipment as PBEquipment
|
|
98
|
+
from zepben.protobuf.cim.iec61970.base.core.Feeder_pb2 import Feeder as PBFeeder
|
|
99
|
+
from zepben.protobuf.cim.iec61970.base.core.GeographicalRegion_pb2 import GeographicalRegion as PBGeographicalRegion
|
|
100
|
+
from zepben.protobuf.cim.iec61970.base.core.PowerSystemResource_pb2 import PowerSystemResource as PBPowerSystemResource
|
|
101
|
+
from zepben.protobuf.cim.iec61970.base.core.SubGeographicalRegion_pb2 import SubGeographicalRegion as PBSubGeographicalRegion
|
|
102
|
+
from zepben.protobuf.cim.iec61970.base.core.Substation_pb2 import Substation as PBSubstation
|
|
103
|
+
from zepben.protobuf.cim.iec61970.base.core.Terminal_pb2 import Terminal as PBTerminal
|
|
104
|
+
from zepben.protobuf.cim.iec61970.base.equivalents.EquivalentBranch_pb2 import EquivalentBranch as PBEquivalentBranch
|
|
105
|
+
from zepben.protobuf.cim.iec61970.base.equivalents.EquivalentEquipment_pb2 import EquivalentEquipment as PBEquivalentEquipment
|
|
106
|
+
from zepben.protobuf.cim.iec61970.base.generation.production.BatteryUnit_pb2 import BatteryUnit as PBBatteryUnit
|
|
107
|
+
from zepben.protobuf.cim.iec61970.base.generation.production.PhotoVoltaicUnit_pb2 import PhotoVoltaicUnit as PBPhotoVoltaicUnit
|
|
108
|
+
from zepben.protobuf.cim.iec61970.base.generation.production.PowerElectronicsUnit_pb2 import PowerElectronicsUnit as PBPowerElectronicsUnit
|
|
109
|
+
from zepben.protobuf.cim.iec61970.base.generation.production.PowerElectronicsWindUnit_pb2 import PowerElectronicsWindUnit as PBPowerElectronicsWindUnit
|
|
110
|
+
from zepben.protobuf.cim.iec61970.base.meas.Accumulator_pb2 import Accumulator as PBAccumulator
|
|
111
|
+
from zepben.protobuf.cim.iec61970.base.meas.Analog_pb2 import Analog as PBAnalog
|
|
112
|
+
from zepben.protobuf.cim.iec61970.base.meas.Control_pb2 import Control as PBControl
|
|
113
|
+
from zepben.protobuf.cim.iec61970.base.meas.Discrete_pb2 import Discrete as PBDiscrete
|
|
114
|
+
from zepben.protobuf.cim.iec61970.base.meas.IoPoint_pb2 import IoPoint as PBIoPoint
|
|
115
|
+
from zepben.protobuf.cim.iec61970.base.meas.Measurement_pb2 import Measurement as PBMeasurement
|
|
116
|
+
from zepben.protobuf.cim.iec61970.base.protection.CurrentRelay_pb2 import CurrentRelay as PBCurrentRelay
|
|
117
|
+
from zepben.protobuf.cim.iec61970.base.scada.RemoteControl_pb2 import RemoteControl as PBRemoteControl
|
|
118
|
+
from zepben.protobuf.cim.iec61970.base.scada.RemotePoint_pb2 import RemotePoint as PBRemotePoint
|
|
119
|
+
from zepben.protobuf.cim.iec61970.base.scada.RemoteSource_pb2 import RemoteSource as PBRemoteSource
|
|
120
|
+
from zepben.protobuf.cim.iec61970.base.wires.AcLineSegment_pb2 import AcLineSegment as PBAcLineSegment
|
|
121
|
+
from zepben.protobuf.cim.iec61970.base.wires.Breaker_pb2 import Breaker as PBBreaker
|
|
122
|
+
from zepben.protobuf.cim.iec61970.base.wires.BusbarSection_pb2 import BusbarSection as PBBusbarSection
|
|
123
|
+
from zepben.protobuf.cim.iec61970.base.wires.Clamp_pb2 import Clamp as PBClamp
|
|
124
|
+
from zepben.protobuf.cim.iec61970.base.wires.Conductor_pb2 import Conductor as PBConductor
|
|
125
|
+
from zepben.protobuf.cim.iec61970.base.wires.Connector_pb2 import Connector as PBConnector
|
|
126
|
+
from zepben.protobuf.cim.iec61970.base.wires.Cut_pb2 import Cut as PBCut
|
|
127
|
+
from zepben.protobuf.cim.iec61970.base.wires.Disconnector_pb2 import Disconnector as PBDisconnector
|
|
128
|
+
from zepben.protobuf.cim.iec61970.base.wires.EarthFaultCompensator_pb2 import EarthFaultCompensator as PBEarthFaultCompensator
|
|
129
|
+
from zepben.protobuf.cim.iec61970.base.wires.EnergyConnection_pb2 import EnergyConnection as PBEnergyConnection
|
|
130
|
+
from zepben.protobuf.cim.iec61970.base.wires.EnergyConsumerPhase_pb2 import EnergyConsumerPhase as PBEnergyConsumerPhase
|
|
131
|
+
from zepben.protobuf.cim.iec61970.base.wires.EnergyConsumer_pb2 import EnergyConsumer as PBEnergyConsumer
|
|
132
|
+
from zepben.protobuf.cim.iec61970.base.wires.EnergySourcePhase_pb2 import EnergySourcePhase as PBEnergySourcePhase
|
|
133
|
+
from zepben.protobuf.cim.iec61970.base.wires.EnergySource_pb2 import EnergySource as PBEnergySource
|
|
134
|
+
from zepben.protobuf.cim.iec61970.base.wires.Fuse_pb2 import Fuse as PBFuse
|
|
135
|
+
from zepben.protobuf.cim.iec61970.base.wires.GroundDisconnector_pb2 import GroundDisconnector as PBGroundDisconnector
|
|
136
|
+
from zepben.protobuf.cim.iec61970.base.wires.Ground_pb2 import Ground as PBGround
|
|
137
|
+
from zepben.protobuf.cim.iec61970.base.wires.GroundingImpedance_pb2 import GroundingImpedance as PBGroundingImpedance
|
|
138
|
+
from zepben.protobuf.cim.iec61970.base.wires.Jumper_pb2 import Jumper as PBJumper
|
|
139
|
+
from zepben.protobuf.cim.iec61970.base.wires.Junction_pb2 import Junction as PBJunction
|
|
140
|
+
from zepben.protobuf.cim.iec61970.base.wires.Line_pb2 import Line as PBLine
|
|
141
|
+
from zepben.protobuf.cim.iec61970.base.wires.LinearShuntCompensator_pb2 import LinearShuntCompensator as PBLinearShuntCompensator
|
|
142
|
+
from zepben.protobuf.cim.iec61970.base.wires.LoadBreakSwitch_pb2 import LoadBreakSwitch as PBLoadBreakSwitch
|
|
143
|
+
from zepben.protobuf.cim.iec61970.base.wires.PerLengthImpedance_pb2 import PerLengthImpedance as PBPerLengthImpedance
|
|
144
|
+
from zepben.protobuf.cim.iec61970.base.wires.PerLengthLineParameter_pb2 import PerLengthLineParameter as PBPerLengthLineParameter
|
|
145
|
+
from zepben.protobuf.cim.iec61970.base.wires.PerLengthPhaseImpedance_pb2 import PerLengthPhaseImpedance as PBPerLengthPhaseImpedance
|
|
146
|
+
from zepben.protobuf.cim.iec61970.base.wires.PerLengthSequenceImpedance_pb2 import PerLengthSequenceImpedance as PBPerLengthSequenceImpedance
|
|
147
|
+
from zepben.protobuf.cim.iec61970.base.wires.PetersenCoil_pb2 import PetersenCoil as PBPetersenCoil
|
|
148
|
+
from zepben.protobuf.cim.iec61970.base.wires.PhaseImpedanceData_pb2 import PhaseImpedanceData as PBPhaseImpedanceData
|
|
149
|
+
from zepben.protobuf.cim.iec61970.base.wires.PowerElectronicsConnectionPhase_pb2 import PowerElectronicsConnectionPhase as PBPowerElectronicsConnectionPhase
|
|
150
|
+
from zepben.protobuf.cim.iec61970.base.wires.PowerElectronicsConnection_pb2 import PowerElectronicsConnection as PBPowerElectronicsConnection
|
|
151
|
+
from zepben.protobuf.cim.iec61970.base.wires.PowerTransformerEnd_pb2 import PowerTransformerEnd as PBPowerTransformerEnd
|
|
152
|
+
from zepben.protobuf.cim.iec61970.base.wires.PowerTransformer_pb2 import PowerTransformer as PBPowerTransformer
|
|
153
|
+
from zepben.protobuf.cim.iec61970.base.wires.ProtectedSwitch_pb2 import ProtectedSwitch as PBProtectedSwitch
|
|
154
|
+
from zepben.protobuf.cim.iec61970.base.wires.RatioTapChanger_pb2 import RatioTapChanger as PBRatioTapChanger
|
|
155
|
+
from zepben.protobuf.cim.iec61970.base.wires.ReactiveCapabilityCurve_pb2 import ReactiveCapabilityCurve as PBReactiveCapabilityCurve
|
|
156
|
+
from zepben.protobuf.cim.iec61970.base.wires.Recloser_pb2 import Recloser as PBRecloser
|
|
157
|
+
from zepben.protobuf.cim.iec61970.base.wires.RegulatingCondEq_pb2 import RegulatingCondEq as PBRegulatingCondEq
|
|
158
|
+
from zepben.protobuf.cim.iec61970.base.wires.RegulatingControl_pb2 import RegulatingControl as PBRegulatingControl
|
|
159
|
+
from zepben.protobuf.cim.iec61970.base.wires.RotatingMachine_pb2 import RotatingMachine as PBRotatingMachine
|
|
160
|
+
from zepben.protobuf.cim.iec61970.base.wires.SeriesCompensator_pb2 import SeriesCompensator as PBSeriesCompensator
|
|
161
|
+
from zepben.protobuf.cim.iec61970.base.wires.ShuntCompensator_pb2 import ShuntCompensator as PBShuntCompensator
|
|
162
|
+
from zepben.protobuf.cim.iec61970.base.wires.StaticVarCompensator_pb2 import StaticVarCompensator as PBStaticVarCompensator
|
|
163
|
+
from zepben.protobuf.cim.iec61970.base.wires.Switch_pb2 import Switch as PBSwitch
|
|
164
|
+
from zepben.protobuf.cim.iec61970.base.wires.SynchronousMachine_pb2 import SynchronousMachine as PBSynchronousMachine
|
|
165
|
+
from zepben.protobuf.cim.iec61970.base.wires.TapChangerControl_pb2 import TapChangerControl as PBTapChangerControl
|
|
166
|
+
from zepben.protobuf.cim.iec61970.base.wires.TapChanger_pb2 import TapChanger as PBTapChanger
|
|
167
|
+
from zepben.protobuf.cim.iec61970.base.wires.TransformerEnd_pb2 import TransformerEnd as PBTransformerEnd
|
|
168
|
+
from zepben.protobuf.cim.iec61970.base.wires.TransformerStarImpedance_pb2 import TransformerStarImpedance as PBTransformerStarImpedance
|
|
169
|
+
from zepben.protobuf.cim.iec61970.infiec61970.feeder.Circuit_pb2 import Circuit as PBCircuit
|
|
170
|
+
|
|
171
|
+
import zepben.ewb.services.common.resolver as resolver
|
|
172
|
+
from zepben.ewb import IdentifiedObject
|
|
173
|
+
from zepben.ewb.model.cim.extensions.iec61968.assetinfo.relay_info import *
|
|
174
|
+
from zepben.ewb.model.cim.extensions.iec61968.metering.pan_demand_reponse_function import PanDemandResponseFunction
|
|
175
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.core.site import *
|
|
176
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.feeder.loop import *
|
|
177
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.feeder.lv_feeder import *
|
|
178
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.generation.production.ev_charging_unit import *
|
|
179
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.distance_relay import *
|
|
180
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.power_direction_kind import *
|
|
181
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_kind import *
|
|
182
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_relay_function import *
|
|
183
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_relay_scheme import *
|
|
184
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.protection_relay_system import *
|
|
185
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.relay_setting import *
|
|
186
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.protection.voltage_relay import *
|
|
187
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.wires.battery_control import BatteryControl
|
|
188
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.wires.battery_control_mode import BatteryControlMode
|
|
189
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.wires.transformer_cooling_type import *
|
|
190
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.wires.transformer_end_rated_s import TransformerEndRatedS
|
|
191
|
+
from zepben.ewb.model.cim.extensions.iec61970.base.wires.vector_group import *
|
|
192
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.cable_info import CableInfo
|
|
193
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.no_load_test import *
|
|
194
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.open_circuit_test import *
|
|
195
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.overhead_wire_info import OverheadWireInfo
|
|
196
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.power_transformer_info import *
|
|
197
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.short_circuit_test import *
|
|
198
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.shunt_compensator_info import *
|
|
199
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.switch_info import *
|
|
200
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.transformer_end_info import *
|
|
201
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.transformer_tank_info import *
|
|
202
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.transformer_test import *
|
|
203
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.wire_info import *
|
|
204
|
+
from zepben.ewb.model.cim.iec61968.assetinfo.wire_material_kind import *
|
|
205
|
+
from zepben.ewb.model.cim.iec61968.assets.asset import *
|
|
206
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_container import *
|
|
207
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_function import AssetFunction
|
|
208
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_info import *
|
|
209
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_organisation_role import *
|
|
210
|
+
from zepben.ewb.model.cim.iec61968.assets.asset_owner import *
|
|
211
|
+
from zepben.ewb.model.cim.iec61968.assets.streetlight import *
|
|
212
|
+
from zepben.ewb.model.cim.iec61968.assets.structure import *
|
|
213
|
+
from zepben.ewb.model.cim.iec61968.common.location import *
|
|
214
|
+
from zepben.ewb.model.cim.iec61968.common.position_point import *
|
|
215
|
+
from zepben.ewb.model.cim.iec61968.common.street_address import *
|
|
216
|
+
from zepben.ewb.model.cim.iec61968.common.street_detail import *
|
|
217
|
+
from zepben.ewb.model.cim.iec61968.common.town_detail import *
|
|
218
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.current_transformer_info import *
|
|
219
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.potential_transformer_info import *
|
|
220
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.transformer_construction_kind import *
|
|
221
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassetinfo.transformer_function_kind import *
|
|
222
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassets.pole import *
|
|
223
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infassets.streetlight_lamp_kind import StreetlightLampKind
|
|
224
|
+
from zepben.ewb.model.cim.iec61968.infiec61968.infcommon.ratio import *
|
|
225
|
+
from zepben.ewb.model.cim.iec61968.metering.end_device import *
|
|
226
|
+
from zepben.ewb.model.cim.iec61968.metering.end_device_function import *
|
|
227
|
+
from zepben.ewb.model.cim.iec61968.metering.end_device_function_kind import *
|
|
228
|
+
from zepben.ewb.model.cim.iec61968.metering.meter import *
|
|
229
|
+
from zepben.ewb.model.cim.iec61968.metering.usage_point import *
|
|
230
|
+
from zepben.ewb.model.cim.iec61968.operations.operational_restriction import *
|
|
231
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.auxiliary_equipment import *
|
|
232
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.current_transformer import *
|
|
233
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.fault_indicator import *
|
|
234
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.potential_transformer import *
|
|
235
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.potential_transformer_kind import *
|
|
236
|
+
from zepben.ewb.model.cim.iec61970.base.auxiliaryequipment.sensor import *
|
|
237
|
+
from zepben.ewb.model.cim.iec61970.base.core.ac_dc_terminal import AcDcTerminal
|
|
238
|
+
from zepben.ewb.model.cim.iec61970.base.core.base_voltage import *
|
|
239
|
+
from zepben.ewb.model.cim.iec61970.base.core.conducting_equipment import *
|
|
240
|
+
from zepben.ewb.model.cim.iec61970.base.core.connectivity_node import *
|
|
241
|
+
from zepben.ewb.model.cim.iec61970.base.core.connectivity_node_container import *
|
|
242
|
+
from zepben.ewb.model.cim.iec61970.base.core.curve import Curve
|
|
243
|
+
from zepben.ewb.model.cim.iec61970.base.core.curve_data import CurveData
|
|
244
|
+
from zepben.ewb.model.cim.iec61970.base.core.equipment import *
|
|
245
|
+
from zepben.ewb.model.cim.iec61970.base.core.equipment_container import *
|
|
246
|
+
from zepben.ewb.model.cim.iec61970.base.core.feeder import *
|
|
247
|
+
from zepben.ewb.model.cim.iec61970.base.core.geographical_region import GeographicalRegion
|
|
248
|
+
from zepben.ewb.model.cim.iec61970.base.core.phase_code import *
|
|
249
|
+
from zepben.ewb.model.cim.iec61970.base.core.power_system_resource import *
|
|
250
|
+
from zepben.ewb.model.cim.iec61970.base.core.sub_geographical_region import SubGeographicalRegion
|
|
251
|
+
from zepben.ewb.model.cim.iec61970.base.core.substation import *
|
|
252
|
+
from zepben.ewb.model.cim.iec61970.base.core.terminal import *
|
|
253
|
+
from zepben.ewb.model.cim.iec61970.base.domain.unit_symbol import *
|
|
254
|
+
from zepben.ewb.model.cim.iec61970.base.equivalents.equivalent_branch import *
|
|
255
|
+
from zepben.ewb.model.cim.iec61970.base.equivalents.equivalent_equipment import *
|
|
256
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.battery_state_kind import *
|
|
257
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.battery_unit import *
|
|
258
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.photo_voltaic_unit import *
|
|
259
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.power_electronics_unit import *
|
|
260
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.power_electronics_wind_unit import *
|
|
261
|
+
from zepben.ewb.model.cim.iec61970.base.meas.accumulator import *
|
|
262
|
+
from zepben.ewb.model.cim.iec61970.base.meas.analog import *
|
|
263
|
+
from zepben.ewb.model.cim.iec61970.base.meas.control import *
|
|
264
|
+
from zepben.ewb.model.cim.iec61970.base.meas.discrete import *
|
|
265
|
+
from zepben.ewb.model.cim.iec61970.base.meas.iopoint import *
|
|
266
|
+
from zepben.ewb.model.cim.iec61970.base.meas.measurement import *
|
|
267
|
+
from zepben.ewb.model.cim.iec61970.base.protection.current_relay import *
|
|
268
|
+
from zepben.ewb.model.cim.iec61970.base.scada.remote_control import *
|
|
269
|
+
from zepben.ewb.model.cim.iec61970.base.scada.remote_point import *
|
|
270
|
+
from zepben.ewb.model.cim.iec61970.base.scada.remote_source import *
|
|
271
|
+
from zepben.ewb.model.cim.iec61970.base.wires.ac_line_segment import *
|
|
272
|
+
from zepben.ewb.model.cim.iec61970.base.wires.breaker import Breaker
|
|
273
|
+
from zepben.ewb.model.cim.iec61970.base.wires.busbar_section import *
|
|
274
|
+
from zepben.ewb.model.cim.iec61970.base.wires.clamp import *
|
|
275
|
+
from zepben.ewb.model.cim.iec61970.base.wires.conductor import *
|
|
276
|
+
from zepben.ewb.model.cim.iec61970.base.wires.connector import *
|
|
277
|
+
from zepben.ewb.model.cim.iec61970.base.wires.cut import *
|
|
278
|
+
from zepben.ewb.model.cim.iec61970.base.wires.disconnector import Disconnector
|
|
279
|
+
from zepben.ewb.model.cim.iec61970.base.wires.earth_fault_compensator import EarthFaultCompensator
|
|
280
|
+
from zepben.ewb.model.cim.iec61970.base.wires.energy_connection import *
|
|
281
|
+
from zepben.ewb.model.cim.iec61970.base.wires.energy_consumer import *
|
|
282
|
+
from zepben.ewb.model.cim.iec61970.base.wires.energy_consumer_phase import *
|
|
283
|
+
from zepben.ewb.model.cim.iec61970.base.wires.energy_source import *
|
|
284
|
+
from zepben.ewb.model.cim.iec61970.base.wires.energy_source_phase import *
|
|
285
|
+
from zepben.ewb.model.cim.iec61970.base.wires.fuse import Fuse
|
|
286
|
+
from zepben.ewb.model.cim.iec61970.base.wires.ground import *
|
|
287
|
+
from zepben.ewb.model.cim.iec61970.base.wires.ground_disconnector import *
|
|
288
|
+
from zepben.ewb.model.cim.iec61970.base.wires.grounding_impedance import GroundingImpedance
|
|
289
|
+
from zepben.ewb.model.cim.iec61970.base.wires.jumper import Jumper
|
|
290
|
+
from zepben.ewb.model.cim.iec61970.base.wires.junction import *
|
|
291
|
+
from zepben.ewb.model.cim.iec61970.base.wires.line import *
|
|
292
|
+
from zepben.ewb.model.cim.iec61970.base.wires.linear_shunt_compensator import LinearShuntCompensator
|
|
293
|
+
from zepben.ewb.model.cim.iec61970.base.wires.load_break_switch import LoadBreakSwitch
|
|
294
|
+
from zepben.ewb.model.cim.iec61970.base.wires.per_length_impedance import PerLengthImpedance
|
|
295
|
+
from zepben.ewb.model.cim.iec61970.base.wires.per_length_line_parameter import PerLengthLineParameter
|
|
296
|
+
from zepben.ewb.model.cim.iec61970.base.wires.per_length_phase_impedance import *
|
|
297
|
+
from zepben.ewb.model.cim.iec61970.base.wires.per_length_sequence_impedance import PerLengthSequenceImpedance
|
|
298
|
+
from zepben.ewb.model.cim.iec61970.base.wires.petersen_coil import PetersenCoil
|
|
299
|
+
from zepben.ewb.model.cim.iec61970.base.wires.phase_impedance_data import *
|
|
300
|
+
from zepben.ewb.model.cim.iec61970.base.wires.phase_shunt_connection_kind import *
|
|
301
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection import *
|
|
302
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection_phase import PowerElectronicsConnectionPhase
|
|
303
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_transformer import *
|
|
304
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_transformer_end import PowerTransformerEnd
|
|
305
|
+
from zepben.ewb.model.cim.iec61970.base.wires.protected_switch import ProtectedSwitch
|
|
306
|
+
from zepben.ewb.model.cim.iec61970.base.wires.ratio_tap_changer import RatioTapChanger
|
|
307
|
+
from zepben.ewb.model.cim.iec61970.base.wires.reactive_capability_curve import ReactiveCapabilityCurve
|
|
308
|
+
from zepben.ewb.model.cim.iec61970.base.wires.recloser import Recloser
|
|
309
|
+
from zepben.ewb.model.cim.iec61970.base.wires.regulating_cond_eq import *
|
|
310
|
+
from zepben.ewb.model.cim.iec61970.base.wires.regulating_control import *
|
|
311
|
+
from zepben.ewb.model.cim.iec61970.base.wires.regulating_control_mode_kind import *
|
|
312
|
+
from zepben.ewb.model.cim.iec61970.base.wires.rotating_machine import RotatingMachine
|
|
313
|
+
from zepben.ewb.model.cim.iec61970.base.wires.series_compensator import *
|
|
314
|
+
from zepben.ewb.model.cim.iec61970.base.wires.shunt_compensator import *
|
|
315
|
+
from zepben.ewb.model.cim.iec61970.base.wires.single_phase_kind import *
|
|
316
|
+
from zepben.ewb.model.cim.iec61970.base.wires.static_var_compensator import StaticVarCompensator
|
|
317
|
+
from zepben.ewb.model.cim.iec61970.base.wires.svc_control_mode import SVCControlMode
|
|
318
|
+
from zepben.ewb.model.cim.iec61970.base.wires.switch import *
|
|
319
|
+
from zepben.ewb.model.cim.iec61970.base.wires.synchronous_machine import SynchronousMachine
|
|
320
|
+
from zepben.ewb.model.cim.iec61970.base.wires.synchronous_machine_kind import SynchronousMachineKind
|
|
321
|
+
from zepben.ewb.model.cim.iec61970.base.wires.tap_changer import TapChanger
|
|
322
|
+
from zepben.ewb.model.cim.iec61970.base.wires.tap_changer_control import *
|
|
323
|
+
from zepben.ewb.model.cim.iec61970.base.wires.transformer_end import TransformerEnd
|
|
324
|
+
from zepben.ewb.model.cim.iec61970.base.wires.transformer_star_impedance import *
|
|
325
|
+
from zepben.ewb.model.cim.iec61970.base.wires.winding_connection import *
|
|
326
|
+
from zepben.ewb.model.cim.iec61970.infiec61970.feeder.circuit import *
|
|
327
|
+
from zepben.ewb.services.common.translator.base_proto2cim import identified_object_to_cim, organisation_role_to_cim, document_to_cim, add_to_network_or_none, \
|
|
328
|
+
bind_to_cim, get_nullable
|
|
329
|
+
from zepben.ewb.services.common.translator.util import int_or_none, float_or_none, long_or_none, str_or_none, uint_or_none
|
|
330
|
+
from zepben.ewb.services.network.network_service import NetworkService
|
|
331
|
+
from zepben.ewb.services.network.tracing.feeder.feeder_direction import FeederDirection
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
##################################
|
|
335
|
+
# Extensions IEC61968 Asset Info #
|
|
336
|
+
##################################
|
|
337
|
+
|
|
338
|
+
@bind_to_cim
|
|
339
|
+
@add_to_network_or_none
|
|
340
|
+
def relay_info_to_cim(pb: PBRelayInfo, network_service: NetworkService) -> Optional[RelayInfo]:
|
|
341
|
+
# noinspection PyUnresolvedReferences
|
|
342
|
+
cim = RelayInfo(
|
|
343
|
+
mrid=pb.mrid(),
|
|
344
|
+
curve_setting=get_nullable(pb, 'curveSetting'),
|
|
345
|
+
reclose_fast=get_nullable(pb, 'recloseFast'),
|
|
346
|
+
reclose_delays=list(pb.recloseDelays)
|
|
347
|
+
)
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
351
|
+
return cim
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
################################
|
|
355
|
+
# Extensions IEC61968 Metering #
|
|
356
|
+
################################
|
|
357
|
+
|
|
358
|
+
@bind_to_cim
|
|
359
|
+
@add_to_network_or_none
|
|
360
|
+
def pan_demand_response_function_to_cim(pb: PBPanDemandResponseFunction, network_service: NetworkService) -> PanDemandResponseFunction:
|
|
361
|
+
"""
|
|
362
|
+
Convert the protobuf :class:`PBPanDemandResponseFunction` into its CIM counterpart.
|
|
363
|
+
:param pb: The protobuf :class:`PBPanDemandResponseFunction` to convert
|
|
364
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
365
|
+
:return: The converted `pb` as a CIM :class:`PanDemandResponseFunction`
|
|
366
|
+
"""
|
|
367
|
+
# noinspection PyUnresolvedReferences
|
|
368
|
+
cim = PanDemandResponseFunction(mrid=pb.mrid())
|
|
369
|
+
cim.appliance = get_nullable(pb, 'appliance')
|
|
370
|
+
cim.kind = EndDeviceFunctionKind(pb.kind)
|
|
371
|
+
end_device_function_to_cim(pb.edf, cim, network_service)
|
|
372
|
+
|
|
373
|
+
return cim
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
#################################
|
|
377
|
+
# Extensions IEC61970 Base Core #
|
|
378
|
+
#################################
|
|
379
|
+
|
|
380
|
+
@bind_to_cim
|
|
381
|
+
@add_to_network_or_none
|
|
382
|
+
def site_to_cim(pb: PBSite, network_service: NetworkService) -> Optional[Site]:
|
|
383
|
+
# noinspection PyUnresolvedReferences
|
|
384
|
+
cim = Site(mrid=pb.mrid())
|
|
385
|
+
|
|
386
|
+
equipment_container_to_cim(pb.ec, cim, network_service)
|
|
387
|
+
return cim
|
|
388
|
+
|
|
389
|
+
|
|
390
|
+
###################################
|
|
391
|
+
# Extensions IEC61970 Base Feeder #
|
|
392
|
+
###################################
|
|
393
|
+
|
|
394
|
+
@bind_to_cim
|
|
395
|
+
@add_to_network_or_none
|
|
396
|
+
def loop_to_cim(pb: PBLoop, network_service: NetworkService) -> Optional[Loop]:
|
|
397
|
+
# noinspection PyUnresolvedReferences
|
|
398
|
+
cim = Loop(mrid=pb.mrid())
|
|
399
|
+
|
|
400
|
+
for mrid in pb.circuitMRIDs:
|
|
401
|
+
network_service.resolve_or_defer_reference(resolver.loop_circuits(cim), mrid)
|
|
402
|
+
for mrid in pb.substationMRIDs:
|
|
403
|
+
network_service.resolve_or_defer_reference(resolver.loop_substations(cim), mrid)
|
|
404
|
+
for mrid in pb.normalEnergizingSubstationMRIDs:
|
|
405
|
+
network_service.resolve_or_defer_reference(resolver.loop_energizing_substations(cim), mrid)
|
|
406
|
+
|
|
407
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
408
|
+
return cim
|
|
409
|
+
|
|
410
|
+
|
|
411
|
+
@bind_to_cim
|
|
412
|
+
@add_to_network_or_none
|
|
413
|
+
def lv_feeder_to_cim(pb: PBLvFeeder, network_service: NetworkService) -> Optional[LvFeeder]:
|
|
414
|
+
# noinspection PyUnresolvedReferences
|
|
415
|
+
cim = LvFeeder(mrid=pb.mrid())
|
|
416
|
+
|
|
417
|
+
network_service.resolve_or_defer_reference(resolver.lv_feeder_normal_head_terminal(cim), pb.normalHeadTerminalMRID)
|
|
418
|
+
for mrid in pb.normalEnergizingFeederMRIDs:
|
|
419
|
+
network_service.resolve_or_defer_reference(resolver.normal_energizing_feeders(cim), mrid)
|
|
420
|
+
for mrid in pb.currentlyEnergizingFeederMRIDs:
|
|
421
|
+
network_service.resolve_or_defer_reference(resolver.current_energizing_feeders(cim), mrid)
|
|
422
|
+
|
|
423
|
+
equipment_container_to_cim(pb.ec, cim, network_service)
|
|
424
|
+
return cim
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
##################################################
|
|
428
|
+
# Extensions IEC61970 Base Generation Production #
|
|
429
|
+
##################################################
|
|
430
|
+
|
|
431
|
+
@bind_to_cim
|
|
432
|
+
@add_to_network_or_none
|
|
433
|
+
def ev_charging_unit_to_cim(pb: PBEvChargingUnit, network_service: NetworkService) -> Optional[EvChargingUnit]:
|
|
434
|
+
# noinspection PyUnresolvedReferences
|
|
435
|
+
cim = EvChargingUnit(mrid=pb.mrid())
|
|
436
|
+
power_electronics_unit_to_cim(pb.peu, cim, network_service)
|
|
437
|
+
return cim
|
|
438
|
+
|
|
439
|
+
#######################################
|
|
440
|
+
# Extensions IEC61970 Base Protection #
|
|
441
|
+
#######################################
|
|
442
|
+
|
|
443
|
+
@bind_to_cim
|
|
444
|
+
@add_to_network_or_none
|
|
445
|
+
def distance_relay_to_cim(pb: PBDistanceRelay, network_service: NetworkService) -> Optional[DistanceRelay]:
|
|
446
|
+
# noinspection PyUnresolvedReferences
|
|
447
|
+
cim = DistanceRelay(
|
|
448
|
+
mrid=pb.mrid(),
|
|
449
|
+
backward_blind=get_nullable(pb, 'backwardBlind'),
|
|
450
|
+
backward_reach=get_nullable(pb, 'backwardReach'),
|
|
451
|
+
backward_reactance=get_nullable(pb, 'backwardReactance'),
|
|
452
|
+
forward_blind=get_nullable(pb, 'forwardBlind'),
|
|
453
|
+
forward_reach=get_nullable(pb, 'forwardReach'),
|
|
454
|
+
forward_reactance=get_nullable(pb, 'forwardReactance'),
|
|
455
|
+
operation_phase_angle1=get_nullable(pb, 'operationPhaseAngle1'),
|
|
456
|
+
operation_phase_angle2=get_nullable(pb, 'operationPhaseAngle2'),
|
|
457
|
+
operation_phase_angle3=get_nullable(pb, 'operationPhaseAngle3'),
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
protection_relay_function_to_cim(pb.prf, cim, network_service)
|
|
461
|
+
return cim
|
|
462
|
+
|
|
463
|
+
|
|
464
|
+
def protection_relay_function_to_cim(pb: PBProtectionRelayFunction, cim: ProtectionRelayFunction, network_service: NetworkService):
|
|
465
|
+
cim.model = get_nullable(pb, 'model')
|
|
466
|
+
cim.reclosing = get_nullable(pb, 'reclosing')
|
|
467
|
+
for time_limit in pb.timeLimits:
|
|
468
|
+
cim.add_time_limit(time_limit)
|
|
469
|
+
for threshold in pb.thresholds:
|
|
470
|
+
cim.add_threshold(relay_setting_to_cim(threshold))
|
|
471
|
+
cim.relay_delay_time = get_nullable(pb, 'relayDelayTime')
|
|
472
|
+
cim.protection_kind = ProtectionKind(pb.protectionKind)
|
|
473
|
+
for mrid in pb.protectedSwitchMRIDs:
|
|
474
|
+
network_service.resolve_or_defer_reference(resolver.prf_protected_switch(cim), mrid)
|
|
475
|
+
cim.directable = get_nullable(pb, 'directable')
|
|
476
|
+
cim.power_direction = PowerDirectionKind(pb.powerDirection)
|
|
477
|
+
for mrid in pb.sensorMRIDs:
|
|
478
|
+
network_service.resolve_or_defer_reference(resolver.prf_sensor(cim), mrid)
|
|
479
|
+
for mrid in pb.schemeMRIDs:
|
|
480
|
+
network_service.resolve_or_defer_reference(resolver.prf_scheme(cim), mrid)
|
|
481
|
+
# noinspection PyUnresolvedReferences
|
|
482
|
+
network_service.resolve_or_defer_reference(resolver.relay_info(cim), pb.asset_info_mrid())
|
|
483
|
+
|
|
484
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
@bind_to_cim
|
|
488
|
+
@add_to_network_or_none
|
|
489
|
+
def protection_relay_scheme_to_cim(pb: PBProtectionRelayScheme, network_service: NetworkService) -> Optional[ProtectionRelayScheme]:
|
|
490
|
+
# noinspection PyUnresolvedReferences
|
|
491
|
+
cim = ProtectionRelayScheme(
|
|
492
|
+
mrid=pb.mrid()
|
|
493
|
+
)
|
|
494
|
+
|
|
495
|
+
# TODO: I think I just throw the nullable mrid at the bound resolver safely?
|
|
496
|
+
network_service.resolve_or_defer_reference(resolver.prscheme_system(cim), pb.systemMRID)
|
|
497
|
+
|
|
498
|
+
for mrid in pb.functionMRIDs:
|
|
499
|
+
network_service.resolve_or_defer_reference(resolver.prscheme_function(cim), mrid)
|
|
500
|
+
|
|
501
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
502
|
+
return cim
|
|
503
|
+
|
|
504
|
+
|
|
505
|
+
@bind_to_cim
|
|
506
|
+
@add_to_network_or_none
|
|
507
|
+
def protection_relay_system_to_cim(pb: PBProtectionRelaySystem, network_service: NetworkService) -> Optional[ProtectionRelaySystem]:
|
|
508
|
+
# noinspection PyUnresolvedReferences
|
|
509
|
+
cim = ProtectionRelaySystem(
|
|
510
|
+
mrid=pb.mrid(),
|
|
511
|
+
protection_kind=ProtectionKind(pb.protectionKind)
|
|
512
|
+
)
|
|
513
|
+
|
|
514
|
+
for mrid in pb.schemeMRIDs:
|
|
515
|
+
network_service.resolve_or_defer_reference(resolver.prsystem_scheme(cim), mrid)
|
|
516
|
+
|
|
517
|
+
equipment_to_cim(pb.eq, cim, network_service)
|
|
518
|
+
return cim
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
def relay_setting_to_cim(pb: PBRelaySetting) -> Optional[RelaySetting]:
|
|
522
|
+
return RelaySetting(
|
|
523
|
+
name=get_nullable(pb, 'name'),
|
|
524
|
+
unit_symbol=unit_symbol_from_id(pb.unitSymbol),
|
|
525
|
+
value=float_or_none(pb.value)
|
|
526
|
+
)
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
@bind_to_cim
|
|
530
|
+
@add_to_network_or_none
|
|
531
|
+
def voltage_relay_to_cim(pb: PBVoltageRelay, network_service: NetworkService) -> Optional[VoltageRelay]:
|
|
532
|
+
# noinspection PyUnresolvedReferences
|
|
533
|
+
cim = VoltageRelay(mrid=pb.mrid())
|
|
534
|
+
|
|
535
|
+
protection_relay_function_to_cim(pb.prf, cim, network_service)
|
|
536
|
+
return cim
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
##################################
|
|
540
|
+
# Extensions IEC61970 Base Wires #
|
|
541
|
+
##################################
|
|
542
|
+
|
|
543
|
+
@bind_to_cim
|
|
544
|
+
@add_to_network_or_none
|
|
545
|
+
def battery_control_to_cim(pb: PBBatteryControl, network_service: NetworkService) -> BatteryControl:
|
|
546
|
+
"""
|
|
547
|
+
Convert the protobuf :class:`PBBatteryControl` into its CIM counterpart.
|
|
548
|
+
:param pb: The protobuf :class:`PBBatteryControl` to convert
|
|
549
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
550
|
+
:return: The converted `pb` as a CIM :class:`BatteryControl`
|
|
551
|
+
"""
|
|
552
|
+
# noinspection PyUnresolvedReferences
|
|
553
|
+
cim = BatteryControl(
|
|
554
|
+
mrid=pb.mrid(),
|
|
555
|
+
charging_rate=get_nullable(pb, 'chargingRate'),
|
|
556
|
+
discharging_rate=get_nullable(pb, 'dischargingRate'),
|
|
557
|
+
reserve_percent=get_nullable(pb, 'reservePercent'),
|
|
558
|
+
control_mode=BatteryControlMode(pb.controlMode),
|
|
559
|
+
)
|
|
560
|
+
|
|
561
|
+
regulating_control_to_cim(pb.rc, cim, network_service)
|
|
562
|
+
|
|
563
|
+
return cim
|
|
564
|
+
|
|
565
|
+
|
|
566
|
+
#######################
|
|
567
|
+
# IEC61968 Asset Info #
|
|
568
|
+
#######################
|
|
569
|
+
|
|
570
|
+
|
|
571
|
+
@bind_to_cim
|
|
572
|
+
@add_to_network_or_none
|
|
573
|
+
def cable_info_to_cim(pb: PBCableInfo, network_service: NetworkService) -> Optional[CableInfo]:
|
|
574
|
+
# noinspection PyUnresolvedReferences
|
|
575
|
+
cim = CableInfo(mrid=pb.mrid())
|
|
576
|
+
|
|
577
|
+
wire_info_to_cim(pb.wi, cim, network_service)
|
|
578
|
+
return cim
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
@bind_to_cim
|
|
582
|
+
@add_to_network_or_none
|
|
583
|
+
def no_load_test_to_cim(pb: PBNoLoadTest, network_service: NetworkService) -> Optional[NoLoadTest]:
|
|
584
|
+
# noinspection PyUnresolvedReferences
|
|
585
|
+
cim = NoLoadTest(
|
|
586
|
+
mrid=pb.mrid(),
|
|
587
|
+
energised_end_voltage=get_nullable(pb, 'energisedEndVoltage'),
|
|
588
|
+
exciting_current=get_nullable(pb, 'excitingCurrent'),
|
|
589
|
+
exciting_current_zero=get_nullable(pb, 'excitingCurrentZero'),
|
|
590
|
+
loss=get_nullable(pb, 'loss'),
|
|
591
|
+
loss_zero=get_nullable(pb, 'lossZero'),
|
|
592
|
+
)
|
|
593
|
+
|
|
594
|
+
transformer_test_to_cim(pb.tt, cim, network_service)
|
|
595
|
+
return cim
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
@bind_to_cim
|
|
599
|
+
@add_to_network_or_none
|
|
600
|
+
def open_circuit_test_to_cim(pb: PBOpenCircuitTest, network_service: NetworkService) -> Optional[OpenCircuitTest]:
|
|
601
|
+
# noinspection PyUnresolvedReferences
|
|
602
|
+
cim = OpenCircuitTest(
|
|
603
|
+
mrid=pb.mrid(),
|
|
604
|
+
energised_end_step=get_nullable(pb, 'energisedEndStep'),
|
|
605
|
+
energised_end_voltage=get_nullable(pb, 'energisedEndVoltage'),
|
|
606
|
+
open_end_step=get_nullable(pb, 'openEndStep'),
|
|
607
|
+
open_end_voltage=get_nullable(pb, 'openEndVoltage'),
|
|
608
|
+
phase_shift=get_nullable(pb, 'phaseShift'),
|
|
609
|
+
)
|
|
610
|
+
|
|
611
|
+
transformer_test_to_cim(pb.tt, cim, network_service)
|
|
612
|
+
return cim
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
@bind_to_cim
|
|
616
|
+
@add_to_network_or_none
|
|
617
|
+
def overhead_wire_info_to_cim(pb: PBOverheadWireInfo, network_service: NetworkService) -> Optional[OverheadWireInfo]:
|
|
618
|
+
# noinspection PyUnresolvedReferences
|
|
619
|
+
cim = OverheadWireInfo(mrid=pb.mrid())
|
|
620
|
+
|
|
621
|
+
wire_info_to_cim(pb.wi, cim, network_service)
|
|
622
|
+
return cim
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
@bind_to_cim
|
|
626
|
+
@add_to_network_or_none
|
|
627
|
+
def power_transformer_info_to_cim(pb: PBPowerTransformerInfo, network_service: NetworkService) -> Optional[PowerTransformerInfo]:
|
|
628
|
+
# noinspection PyUnresolvedReferences
|
|
629
|
+
cim = PowerTransformerInfo(mrid=pb.mrid())
|
|
630
|
+
|
|
631
|
+
for mrid in pb.transformerTankInfoMRIDs:
|
|
632
|
+
network_service.resolve_or_defer_reference(resolver.power_transformer_info_transformer_tank_info(cim), mrid)
|
|
633
|
+
|
|
634
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
635
|
+
return cim
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
@bind_to_cim
|
|
639
|
+
@add_to_network_or_none
|
|
640
|
+
def short_circuit_test_to_cim(pb: PBShortCircuitTest, network_service: NetworkService) -> Optional[ShortCircuitTest]:
|
|
641
|
+
# noinspection PyUnresolvedReferences
|
|
642
|
+
cim = ShortCircuitTest(
|
|
643
|
+
mrid=pb.mrid(),
|
|
644
|
+
current=get_nullable(pb, 'current'),
|
|
645
|
+
energised_end_step=get_nullable(pb, 'energisedEndStep'),
|
|
646
|
+
grounded_end_step=get_nullable(pb, 'groundedEndStep'),
|
|
647
|
+
leakage_impedance=get_nullable(pb, 'leakageImpedance'),
|
|
648
|
+
leakage_impedance_zero=get_nullable(pb, 'leakageImpedanceZero'),
|
|
649
|
+
loss=get_nullable(pb, 'loss'),
|
|
650
|
+
loss_zero=get_nullable(pb, 'lossZero'),
|
|
651
|
+
power=get_nullable(pb, 'power'),
|
|
652
|
+
voltage=get_nullable(pb, 'voltage'),
|
|
653
|
+
voltage_ohmic_part=get_nullable(pb, 'voltageOhmicPart'),
|
|
654
|
+
)
|
|
655
|
+
|
|
656
|
+
transformer_test_to_cim(pb.tt, cim, network_service)
|
|
657
|
+
return cim
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
@bind_to_cim
|
|
661
|
+
@add_to_network_or_none
|
|
662
|
+
def shunt_compensator_info_to_cim(pb: PBShuntCompensatorInfo, network_service: NetworkService) -> Optional[ShuntCompensatorInfo]:
|
|
663
|
+
# noinspection PyUnresolvedReferences
|
|
664
|
+
cim = ShuntCompensatorInfo(
|
|
665
|
+
mrid=pb.mrid(),
|
|
666
|
+
max_power_loss=get_nullable(pb, 'maxPowerLoss'),
|
|
667
|
+
rated_current=get_nullable(pb, 'ratedCurrent'),
|
|
668
|
+
rated_reactive_power=get_nullable(pb, 'ratedReactivePower'),
|
|
669
|
+
rated_voltage=get_nullable(pb, 'ratedVoltage'),
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
673
|
+
return cim
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
@bind_to_cim
|
|
677
|
+
@add_to_network_or_none
|
|
678
|
+
def switch_info_to_cim(pb: PBSwitchInfo, network_service: NetworkService) -> Optional[SwitchInfo]:
|
|
679
|
+
# noinspection PyUnresolvedReferences
|
|
680
|
+
cim = SwitchInfo(
|
|
681
|
+
mrid=pb.mrid(),
|
|
682
|
+
rated_interrupting_time=get_nullable(pb, 'ratedInterruptingTime')
|
|
683
|
+
)
|
|
684
|
+
|
|
685
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
686
|
+
return cim
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
@bind_to_cim
|
|
690
|
+
@add_to_network_or_none
|
|
691
|
+
def transformer_end_info_to_cim(pb: PBTransformerEndInfo, network_service: NetworkService) -> Optional[TransformerEndInfo]:
|
|
692
|
+
# noinspection PyUnresolvedReferences
|
|
693
|
+
cim = TransformerEndInfo(
|
|
694
|
+
mrid=pb.mrid(),
|
|
695
|
+
connection_kind=WindingConnection(pb.connectionKind),
|
|
696
|
+
emergency_s=get_nullable(pb, 'emergencyS'),
|
|
697
|
+
end_number=pb.endNumber,
|
|
698
|
+
insulation_u=get_nullable(pb, 'insulationU'),
|
|
699
|
+
phase_angle_clock=get_nullable(pb, 'phaseAngleClock'),
|
|
700
|
+
r=get_nullable(pb, 'r'),
|
|
701
|
+
rated_s=get_nullable(pb, 'ratedS'),
|
|
702
|
+
rated_u=get_nullable(pb, 'ratedU'),
|
|
703
|
+
short_term_s=get_nullable(pb, 'shortTermS'),
|
|
704
|
+
)
|
|
705
|
+
|
|
706
|
+
network_service.resolve_or_defer_reference(resolver.transformer_tank_info(cim), pb.transformerTankInfoMRID)
|
|
707
|
+
network_service.resolve_or_defer_reference(resolver.transformer_star_impedance(cim), pb.transformerStarImpedanceMRID)
|
|
708
|
+
network_service.resolve_or_defer_reference(resolver.energised_end_no_load_tests(cim), pb.energisedEndNoLoadTestsMRID)
|
|
709
|
+
network_service.resolve_or_defer_reference(resolver.energised_end_short_circuit_tests(cim), pb.energisedEndShortCircuitTestsMRID)
|
|
710
|
+
network_service.resolve_or_defer_reference(resolver.grounded_end_short_circuit_tests(cim), pb.groundedEndShortCircuitTestsMRID)
|
|
711
|
+
network_service.resolve_or_defer_reference(resolver.open_end_open_circuit_tests(cim), pb.openEndOpenCircuitTestsMRID)
|
|
712
|
+
network_service.resolve_or_defer_reference(resolver.energised_end_open_circuit_tests(cim), pb.energisedEndOpenCircuitTestsMRID)
|
|
713
|
+
|
|
714
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
715
|
+
return cim
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
@bind_to_cim
|
|
719
|
+
@add_to_network_or_none
|
|
720
|
+
def transformer_tank_info_to_cim(pb: PBTransformerTankInfo, network_service: NetworkService) -> Optional[TransformerTankInfo]:
|
|
721
|
+
# noinspection PyUnresolvedReferences
|
|
722
|
+
cim = TransformerTankInfo(mrid=pb.mrid())
|
|
723
|
+
|
|
724
|
+
for mrid in pb.transformerEndInfoMRIDs:
|
|
725
|
+
network_service.resolve_or_defer_reference(resolver.transformer_end_info(cim), mrid)
|
|
726
|
+
|
|
727
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
728
|
+
return cim
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
def transformer_test_to_cim(pb: PBTransformerTest, cim: TransformerTest, network_service: NetworkService):
|
|
732
|
+
cim.base_power = get_nullable(pb, 'basePower')
|
|
733
|
+
cim.temperature = get_nullable(pb, 'temperature')
|
|
734
|
+
|
|
735
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
def wire_info_to_cim(pb: PBWireInfo, cim: WireInfo, network_service: NetworkService):
|
|
739
|
+
cim.rated_current = get_nullable(pb, 'ratedCurrent')
|
|
740
|
+
cim.material = WireMaterialKind(pb.material)
|
|
741
|
+
|
|
742
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
###################
|
|
746
|
+
# IEC61968 Assets #
|
|
747
|
+
###################
|
|
748
|
+
|
|
749
|
+
def asset_to_cim(pb: PBAsset, cim: Asset, network_service: NetworkService):
|
|
750
|
+
network_service.resolve_or_defer_reference(resolver.at_location(cim), pb.locationMRID)
|
|
751
|
+
|
|
752
|
+
for mrid in pb.organisationRoleMRIDs:
|
|
753
|
+
network_service.resolve_or_defer_reference(resolver.organisation_roles(cim), mrid)
|
|
754
|
+
|
|
755
|
+
for mrid in pb.powerSystemResourceMRIDs:
|
|
756
|
+
network_service.resolve_or_defer_reference(resolver.power_system_resources(cim), mrid)
|
|
757
|
+
|
|
758
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
759
|
+
|
|
760
|
+
|
|
761
|
+
def asset_container_to_cim(pb: PBAssetContainer, cim: AssetContainer, network_service: NetworkService):
|
|
762
|
+
asset_to_cim(pb.at, cim, network_service)
|
|
763
|
+
|
|
764
|
+
|
|
765
|
+
def asset_function_to_cim(pb: PBAssetFunction, cim: AssetFunction, network_service: NetworkService):
|
|
766
|
+
"""
|
|
767
|
+
Convert the protobuf :class:`PBAssetFunction` into its CIM counterpart.
|
|
768
|
+
:param pb: The protobuf :class:`PBAssetFunction` to convert.
|
|
769
|
+
:param cim: The CIM :class:`AssetFunction` undergoing construction.
|
|
770
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
771
|
+
:return: The converted `pb` as a CIM :class:`AssetFunction`
|
|
772
|
+
"""
|
|
773
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
774
|
+
|
|
775
|
+
|
|
776
|
+
def asset_info_to_cim(pb: PBAssetInfo, cim: AssetInfo, network_service: NetworkService):
|
|
777
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
def asset_organisation_role_to_cim(pb: PBAssetOrganisationRole, cim: AssetOrganisationRole,
|
|
781
|
+
network_service: NetworkService):
|
|
782
|
+
organisation_role_to_cim(getattr(pb, "or"), cim, network_service)
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
@bind_to_cim
|
|
786
|
+
@add_to_network_or_none
|
|
787
|
+
def asset_owner_to_cim(pb: PBAssetOwner, network_service: NetworkService) -> Optional[AssetOwner]:
|
|
788
|
+
# noinspection PyUnresolvedReferences
|
|
789
|
+
cim = AssetOwner(mrid=pb.mrid())
|
|
790
|
+
|
|
791
|
+
asset_organisation_role_to_cim(pb.aor, cim, network_service)
|
|
792
|
+
return cim
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
@bind_to_cim
|
|
796
|
+
@add_to_network_or_none
|
|
797
|
+
def streetlight_to_cim(pb: PBStreetlight, network_service: NetworkService) -> Optional[Streetlight]:
|
|
798
|
+
# noinspection PyUnresolvedReferences
|
|
799
|
+
cim = Streetlight(
|
|
800
|
+
mrid=pb.mrid(),
|
|
801
|
+
light_rating=get_nullable(pb, 'lightRating'),
|
|
802
|
+
lamp_kind=StreetlightLampKind(pb.lampKind)
|
|
803
|
+
)
|
|
804
|
+
|
|
805
|
+
network_service.resolve_or_defer_reference(resolver.pole(cim), pb.poleMRID)
|
|
806
|
+
|
|
807
|
+
asset_to_cim(pb.at, cim, network_service)
|
|
808
|
+
return cim
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
def structure_to_cim(pb: PBStructure, cim: Structure, network_service: NetworkService):
|
|
812
|
+
asset_container_to_cim(pb.ac, cim, network_service)
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
###################
|
|
816
|
+
# IEC61968 Common #
|
|
817
|
+
###################
|
|
818
|
+
|
|
819
|
+
@bind_to_cim
|
|
820
|
+
@add_to_network_or_none
|
|
821
|
+
def location_to_cim(pb: PBLocation, network_service: NetworkService) -> Optional[Location]:
|
|
822
|
+
# noinspection PyUnresolvedReferences
|
|
823
|
+
cim = Location(mrid=pb.mrid(), main_address=street_address_to_cim(pb.mainAddress) if pb.HasField("mainAddress") else None)
|
|
824
|
+
|
|
825
|
+
for point in pb.positionPoints:
|
|
826
|
+
cim.add_point(position_point_to_cim(point))
|
|
827
|
+
|
|
828
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
829
|
+
return cim
|
|
830
|
+
|
|
831
|
+
|
|
832
|
+
def position_point_to_cim(pb: PBPositionPoint) -> Optional[PositionPoint]:
|
|
833
|
+
return PositionPoint(pb.xPosition, pb.yPosition)
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
def street_address_to_cim(pb: PBStreetAddress) -> Optional[StreetAddress]:
|
|
837
|
+
return StreetAddress(
|
|
838
|
+
postal_code=get_nullable(pb, 'postalCode'),
|
|
839
|
+
town_detail=town_detail_to_cim(pb.townDetail) if pb.HasField("townDetail") else None,
|
|
840
|
+
po_box=get_nullable(pb, 'poBox'),
|
|
841
|
+
street_detail=street_detail_to_cim(pb.streetDetail) if pb.HasField("streetDetail") else None
|
|
842
|
+
)
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
def street_detail_to_cim(pb: PBStreetDetail) -> Optional[StreetDetail]:
|
|
846
|
+
return StreetDetail(
|
|
847
|
+
building_name=get_nullable(pb, 'buildingName'),
|
|
848
|
+
floor_identification=get_nullable(pb, 'floorIdentification'),
|
|
849
|
+
name=get_nullable(pb, 'name'),
|
|
850
|
+
number=get_nullable(pb, 'number'),
|
|
851
|
+
suite_number=get_nullable(pb, 'suiteNumber'),
|
|
852
|
+
type=get_nullable(pb, 'type'),
|
|
853
|
+
display_address=get_nullable(pb, 'displayAddress'),
|
|
854
|
+
)
|
|
855
|
+
|
|
856
|
+
|
|
857
|
+
def town_detail_to_cim(pb: PBTownDetail) -> Optional[TownDetail]:
|
|
858
|
+
return TownDetail(
|
|
859
|
+
name=get_nullable(pb, 'name'),
|
|
860
|
+
state_or_province=get_nullable(pb, 'stateOrProvince'),
|
|
861
|
+
)
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
#####################################
|
|
865
|
+
# IEC61968 InfIEC61968 InfAssetInfo #
|
|
866
|
+
#####################################
|
|
867
|
+
|
|
868
|
+
@bind_to_cim
|
|
869
|
+
@add_to_network_or_none
|
|
870
|
+
def current_transformer_info_to_cim(pb: PBCurrentTransformerInfo, network_service: NetworkService) -> Optional[CurrentTransformerInfo]:
|
|
871
|
+
# noinspection PyUnresolvedReferences
|
|
872
|
+
cim = CurrentTransformerInfo(
|
|
873
|
+
mrid=pb.mrid(),
|
|
874
|
+
accuracy_class=get_nullable(pb, 'accuracyClass'),
|
|
875
|
+
accuracy_limit=get_nullable(pb, 'accuracyLimit'),
|
|
876
|
+
core_count=get_nullable(pb, 'coreCount'),
|
|
877
|
+
ct_class=get_nullable(pb, 'ctClass'),
|
|
878
|
+
knee_point_voltage=get_nullable(pb, 'kneePointVoltage'),
|
|
879
|
+
max_ratio=ratio_to_cim(pb.maxRatio) if pb.HasField("maxRatio") else None,
|
|
880
|
+
nominal_ratio=ratio_to_cim(pb.nominalRatio) if pb.HasField("nominalRatio") else None,
|
|
881
|
+
primary_ratio=get_nullable(pb, 'primaryRatio'),
|
|
882
|
+
rated_current=get_nullable(pb, 'ratedCurrent'),
|
|
883
|
+
secondary_fls_rating=get_nullable(pb, 'secondaryFlsRating'),
|
|
884
|
+
secondary_ratio=get_nullable(pb, 'secondaryRatio'),
|
|
885
|
+
usage=get_nullable(pb, 'usage'),
|
|
886
|
+
)
|
|
887
|
+
|
|
888
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
889
|
+
return cim
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
@bind_to_cim
|
|
893
|
+
@add_to_network_or_none
|
|
894
|
+
def potential_transformer_info_to_cim(pb: PBPotentialTransformerInfo, network_service: NetworkService) -> Optional[PotentialTransformerInfo]:
|
|
895
|
+
# noinspection PyUnresolvedReferences
|
|
896
|
+
cim = PotentialTransformerInfo(
|
|
897
|
+
mrid=pb.mrid(),
|
|
898
|
+
accuracy_class=get_nullable(pb, 'accuracyClass'),
|
|
899
|
+
nominal_ratio=ratio_to_cim(pb.nominalRatio) if pb.HasField("nominalRatio") else None,
|
|
900
|
+
primary_ratio=get_nullable(pb, 'primaryRatio'),
|
|
901
|
+
pt_class=get_nullable(pb, 'ptClass'),
|
|
902
|
+
rated_voltage=get_nullable(pb, 'ratedVoltage'),
|
|
903
|
+
secondary_ratio=get_nullable(pb, 'secondaryRatio'),
|
|
904
|
+
)
|
|
905
|
+
|
|
906
|
+
asset_info_to_cim(pb.ai, cim, network_service)
|
|
907
|
+
return cim
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
##################################
|
|
911
|
+
# IEC61968 InfIEC61968 InfAssets #
|
|
912
|
+
##################################
|
|
913
|
+
|
|
914
|
+
@bind_to_cim
|
|
915
|
+
@add_to_network_or_none
|
|
916
|
+
def pole_to_cim(pb: PBPole, network_service: NetworkService) -> Optional[Pole]:
|
|
917
|
+
# noinspection PyUnresolvedReferences
|
|
918
|
+
cim = Pole(
|
|
919
|
+
mrid=pb.mrid(),
|
|
920
|
+
classification=get_nullable(pb, 'classification')
|
|
921
|
+
)
|
|
922
|
+
|
|
923
|
+
for mrid in pb.streetlightMRIDs:
|
|
924
|
+
network_service.resolve_or_defer_reference(resolver.streetlights(cim), mrid)
|
|
925
|
+
|
|
926
|
+
structure_to_cim(pb.st, cim, network_service)
|
|
927
|
+
return cim
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
##################################
|
|
931
|
+
# IEC61968 InfIEC61968 InfCommon #
|
|
932
|
+
##################################
|
|
933
|
+
|
|
934
|
+
@bind_to_cim
|
|
935
|
+
def ratio_to_cim(pb: PBRatio) -> Ratio:
|
|
936
|
+
return Ratio(pb.numerator, pb.denominator)
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
#####################
|
|
940
|
+
# IEC61968 Metering #
|
|
941
|
+
#####################
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
def end_device_to_cim(pb: PBEndDevice, cim: EndDevice, network_service: NetworkService):
|
|
945
|
+
"""
|
|
946
|
+
Convert the protobuf :class:`PBEndDevice` into its CIM counterpart.
|
|
947
|
+
:param pb: The protobuf :class:`PBEndDevice` to convert.
|
|
948
|
+
:param cim: The CIM :class:`EndDevice` undergoing construction.
|
|
949
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
950
|
+
:return: The converted `pb` as a CIM :class:`EndDevice`
|
|
951
|
+
"""
|
|
952
|
+
cim.customer_mrid = pb.customerMRID if pb.customerMRID else None
|
|
953
|
+
|
|
954
|
+
for mrid in pb.usagePointMRIDs:
|
|
955
|
+
network_service.resolve_or_defer_reference(resolver.ed_usage_points(cim), mrid)
|
|
956
|
+
|
|
957
|
+
for mrid in pb.endDeviceFunctionMRIDs:
|
|
958
|
+
network_service.resolve_or_defer_reference(resolver.end_device_functions(cim), mrid)
|
|
959
|
+
|
|
960
|
+
network_service.resolve_or_defer_reference(resolver.service_location(cim), pb.serviceLocationMRID)
|
|
961
|
+
asset_container_to_cim(pb.ac, cim, network_service)
|
|
962
|
+
|
|
963
|
+
|
|
964
|
+
def end_device_function_to_cim(pb: PBEndDeviceFunction, cim: EndDeviceFunction, network_service: NetworkService):
|
|
965
|
+
"""
|
|
966
|
+
Convert the protobuf :class:`PBEndDeviceFunction` into its CIM counterpart.
|
|
967
|
+
:param pb: The protobuf :class:`PBEndDeviceFunction` to convert.
|
|
968
|
+
:param cim: The CIM :class:`EndDeviceFunction` undergoing construction.
|
|
969
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
970
|
+
:return: The converted `pb` as a CIM :class:`EndDeviceFunction`
|
|
971
|
+
"""
|
|
972
|
+
cim.enabled = None if pb.HasField("enabledNull") else pb.enabledSet
|
|
973
|
+
asset_function_to_cim(pb.af, cim, network_service)
|
|
974
|
+
|
|
975
|
+
|
|
976
|
+
@bind_to_cim
|
|
977
|
+
@add_to_network_or_none
|
|
978
|
+
def meter_to_cim(pb: PBMeter, network_service: NetworkService) -> Optional[Meter]:
|
|
979
|
+
# noinspection PyUnresolvedReferences
|
|
980
|
+
cim = Meter(mrid=pb.mrid())
|
|
981
|
+
|
|
982
|
+
end_device_to_cim(pb.ed, cim, network_service)
|
|
983
|
+
return cim
|
|
984
|
+
|
|
985
|
+
|
|
986
|
+
@bind_to_cim
|
|
987
|
+
@add_to_network_or_none
|
|
988
|
+
def usage_point_to_cim(pb: PBUsagePoint, network_service: NetworkService) -> Optional[UsagePoint]:
|
|
989
|
+
# noinspection PyUnresolvedReferences
|
|
990
|
+
cim = UsagePoint(mrid=pb.mrid())
|
|
991
|
+
|
|
992
|
+
network_service.resolve_or_defer_reference(resolver.usage_point_location(cim), pb.usagePointLocationMRID)
|
|
993
|
+
cim.is_virtual = get_nullable(pb, 'isVirtual')
|
|
994
|
+
cim.connection_category = get_nullable(pb, 'connectionCategory')
|
|
995
|
+
cim.rated_power = get_nullable(pb, 'ratedPower')
|
|
996
|
+
cim.approved_inverter_capacity = get_nullable(pb, 'approvedInverterCapacity')
|
|
997
|
+
cim.phase_code = phase_code_by_id(pb.phaseCode)
|
|
998
|
+
|
|
999
|
+
for mrid in pb.equipmentMRIDs:
|
|
1000
|
+
network_service.resolve_or_defer_reference(resolver.up_equipment(cim), mrid)
|
|
1001
|
+
for mrid in pb.endDeviceMRIDs:
|
|
1002
|
+
network_service.resolve_or_defer_reference(resolver.end_devices(cim), mrid)
|
|
1003
|
+
|
|
1004
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1005
|
+
return cim
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
#######################
|
|
1009
|
+
# IEC61968 Operations #
|
|
1010
|
+
#######################
|
|
1011
|
+
|
|
1012
|
+
@bind_to_cim
|
|
1013
|
+
@add_to_network_or_none
|
|
1014
|
+
def operational_restriction_to_cim(pb: PBOperationalRestriction, network_service: NetworkService) -> Optional[OperationalRestriction]:
|
|
1015
|
+
# noinspection PyUnresolvedReferences
|
|
1016
|
+
cim = OperationalRestriction(mrid=pb.mrid())
|
|
1017
|
+
document_to_cim(pb.doc, cim, network_service)
|
|
1018
|
+
return cim
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
#####################################
|
|
1022
|
+
# IEC61970 Base Auxiliary Equipment #
|
|
1023
|
+
#####################################
|
|
1024
|
+
|
|
1025
|
+
def auxiliary_equipment_to_cim(pb: PBAuxiliaryEquipment, cim: AuxiliaryEquipment, network_service: NetworkService):
|
|
1026
|
+
network_service.resolve_or_defer_reference(resolver.ae_terminal(cim), pb.terminalMRID)
|
|
1027
|
+
|
|
1028
|
+
equipment_to_cim(pb.eq, cim, network_service)
|
|
1029
|
+
|
|
1030
|
+
|
|
1031
|
+
@bind_to_cim
|
|
1032
|
+
@add_to_network_or_none
|
|
1033
|
+
def current_transformer_to_cim(pb: PBCurrentTransformer, network_service: NetworkService) -> Optional[CurrentTransformer]:
|
|
1034
|
+
# noinspection PyUnresolvedReferences
|
|
1035
|
+
cim = CurrentTransformer(mrid=pb.mrid(), core_burden=int_or_none(get_nullable(pb, 'coreBurden')))
|
|
1036
|
+
|
|
1037
|
+
# noinspection PyUnresolvedReferences
|
|
1038
|
+
network_service.resolve_or_defer_reference(resolver.current_transformer_info(cim), pb.asset_info_mrid())
|
|
1039
|
+
|
|
1040
|
+
sensor_to_cim(pb.sn, cim, network_service)
|
|
1041
|
+
return cim
|
|
1042
|
+
|
|
1043
|
+
|
|
1044
|
+
@bind_to_cim
|
|
1045
|
+
@add_to_network_or_none
|
|
1046
|
+
def fault_indicator_to_cim(pb: PBFaultIndicator, network_service: NetworkService) -> Optional[FaultIndicator]:
|
|
1047
|
+
# noinspection PyUnresolvedReferences
|
|
1048
|
+
cim = FaultIndicator(mrid=pb.mrid())
|
|
1049
|
+
|
|
1050
|
+
auxiliary_equipment_to_cim(pb.ae, cim, network_service)
|
|
1051
|
+
return cim
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
@bind_to_cim
|
|
1055
|
+
@add_to_network_or_none
|
|
1056
|
+
def potential_transformer_to_cim(pb: PBPotentialTransformer, network_service: NetworkService) -> Optional[PotentialTransformer]:
|
|
1057
|
+
# noinspection PyUnresolvedReferences
|
|
1058
|
+
cim = PotentialTransformer(mrid=pb.mrid(), type=PotentialTransformerKind(pb.type))
|
|
1059
|
+
|
|
1060
|
+
# noinspection PyUnresolvedReferences
|
|
1061
|
+
network_service.resolve_or_defer_reference(resolver.potential_transformer_info(cim), pb.asset_info_mrid())
|
|
1062
|
+
|
|
1063
|
+
sensor_to_cim(pb.sn, cim, network_service)
|
|
1064
|
+
return cim
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
def sensor_to_cim(pb: PBSensor, cim: Sensor, network_service: NetworkService):
|
|
1068
|
+
for mrid in pb.relayFunctionMRIDs:
|
|
1069
|
+
network_service.resolve_or_defer_reference(resolver.sen_relay_function(cim), mrid)
|
|
1070
|
+
auxiliary_equipment_to_cim(pb.ae, cim, network_service)
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
######################
|
|
1074
|
+
# IEC61970 Base Core #
|
|
1075
|
+
######################
|
|
1076
|
+
|
|
1077
|
+
def ac_dc_terminal_to_cim(pb: PBAcDcTerminal, cim: AcDcTerminal, network_service: NetworkService):
|
|
1078
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
@bind_to_cim
|
|
1082
|
+
@add_to_network_or_none
|
|
1083
|
+
def base_voltage_to_cim(pb: PBBaseVoltage, network_service: NetworkService) -> Optional[BaseVoltage]:
|
|
1084
|
+
# noinspection PyUnresolvedReferences
|
|
1085
|
+
cim = BaseVoltage(mrid=pb.mrid(), nominal_voltage=pb.nominalVoltage)
|
|
1086
|
+
|
|
1087
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1088
|
+
return cim
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
def conducting_equipment_to_cim(pb: PBConductingEquipment, cim: ConductingEquipment, network_service: NetworkService):
|
|
1092
|
+
network_service.resolve_or_defer_reference(resolver.ce_base_voltage(cim), pb.baseVoltageMRID)
|
|
1093
|
+
for mrid in pb.terminalMRIDs:
|
|
1094
|
+
network_service.resolve_or_defer_reference(resolver.ce_terminals(cim), mrid)
|
|
1095
|
+
|
|
1096
|
+
equipment_to_cim(pb.eq, cim, network_service)
|
|
1097
|
+
|
|
1098
|
+
|
|
1099
|
+
@bind_to_cim
|
|
1100
|
+
@add_to_network_or_none
|
|
1101
|
+
def connectivity_node_to_cim(pb: PBConnectivityNode, network_service: NetworkService) -> Optional[ConnectivityNode]:
|
|
1102
|
+
# noinspection PyUnresolvedReferences
|
|
1103
|
+
cim = ConnectivityNode(mrid=pb.mrid())
|
|
1104
|
+
|
|
1105
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1106
|
+
return cim
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
def connectivity_node_container_to_cim(pb: PBConnectivityNodeContainer, cim: ConnectivityNodeContainer, network_service: NetworkService):
|
|
1110
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
def curve_to_cim(pb: PBCurve, cim: Curve, network_service: NetworkService):
|
|
1114
|
+
for curve_data in pb.curveData:
|
|
1115
|
+
cim.add_curve_data(curve_data_to_cim(curve_data))
|
|
1116
|
+
|
|
1117
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
def curve_data_to_cim(pb: PBCurveData) -> Optional[CurveData]:
|
|
1121
|
+
return CurveData(
|
|
1122
|
+
pb.xValue,
|
|
1123
|
+
pb.y1Value,
|
|
1124
|
+
get_nullable(pb, 'y2Value'),
|
|
1125
|
+
get_nullable(pb, 'y3Value'),
|
|
1126
|
+
)
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
def equipment_to_cim(pb: PBEquipment, cim: Equipment, network_service: NetworkService):
|
|
1130
|
+
cim.in_service = pb.inService
|
|
1131
|
+
cim.normally_in_service = pb.normallyInService
|
|
1132
|
+
cim.commissioned_date = pb.commissionedDate.ToDatetime() if pb.HasField("commissionedDate") else None
|
|
1133
|
+
|
|
1134
|
+
for mrid in pb.equipmentContainerMRIDs:
|
|
1135
|
+
network_service.resolve_or_defer_reference(resolver.containers(cim), mrid)
|
|
1136
|
+
for mrid in pb.usagePointMRIDs:
|
|
1137
|
+
network_service.resolve_or_defer_reference(resolver.eq_usage_points(cim), mrid)
|
|
1138
|
+
for mrid in pb.operationalRestrictionMRIDs:
|
|
1139
|
+
network_service.resolve_or_defer_reference(resolver.operational_restrictions(cim), mrid)
|
|
1140
|
+
for mrid in pb.currentContainerMRIDs:
|
|
1141
|
+
network_service.resolve_or_defer_reference(resolver.current_containers(cim), mrid)
|
|
1142
|
+
|
|
1143
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
def equipment_container_to_cim(pb: PBEquipmentContainer, cim: EquipmentContainer, network_service: NetworkService):
|
|
1147
|
+
connectivity_node_container_to_cim(pb.cnc, cim, network_service)
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
@bind_to_cim
|
|
1151
|
+
@add_to_network_or_none
|
|
1152
|
+
def feeder_to_cim(pb: PBFeeder, network_service: NetworkService) -> Optional[Feeder]:
|
|
1153
|
+
# noinspection PyUnresolvedReferences
|
|
1154
|
+
cim = Feeder(mrid=pb.mrid())
|
|
1155
|
+
|
|
1156
|
+
network_service.resolve_or_defer_reference(resolver.normal_head_terminal(cim), pb.normalHeadTerminalMRID)
|
|
1157
|
+
network_service.resolve_or_defer_reference(resolver.normal_energizing_substation(cim), pb.normalEnergizingSubstationMRID)
|
|
1158
|
+
for mrid in pb.normalEnergizedLvFeederMRIDs:
|
|
1159
|
+
network_service.resolve_or_defer_reference(resolver.normal_energized_lv_feeders(cim), mrid)
|
|
1160
|
+
for mrid in pb.currentlyEnergizedLvFeedersMRIDs:
|
|
1161
|
+
network_service.resolve_or_defer_reference(resolver.current_energized_lv_feeders(cim), mrid)
|
|
1162
|
+
|
|
1163
|
+
equipment_container_to_cim(pb.ec, cim, network_service)
|
|
1164
|
+
return cim
|
|
1165
|
+
|
|
1166
|
+
|
|
1167
|
+
@bind_to_cim
|
|
1168
|
+
@add_to_network_or_none
|
|
1169
|
+
def geographical_region_to_cim(pb: PBGeographicalRegion, network_service: NetworkService) -> Optional[GeographicalRegion]:
|
|
1170
|
+
# noinspection PyUnresolvedReferences
|
|
1171
|
+
cim = GeographicalRegion(mrid=pb.mrid())
|
|
1172
|
+
|
|
1173
|
+
for mrid in pb.subGeographicalRegionMRIDs:
|
|
1174
|
+
network_service.resolve_or_defer_reference(resolver.sub_geographical_regions(cim), mrid)
|
|
1175
|
+
|
|
1176
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1177
|
+
return cim
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
def power_system_resource_to_cim(pb: PBPowerSystemResource, cim: PowerSystemResource, network_service: NetworkService):
|
|
1181
|
+
network_service.resolve_or_defer_reference(resolver.psr_location(cim), pb.locationMRID)
|
|
1182
|
+
|
|
1183
|
+
for mrid in pb.assetMRIDs:
|
|
1184
|
+
network_service.resolve_or_defer_reference(resolver.assets(cim), mrid)
|
|
1185
|
+
|
|
1186
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
@bind_to_cim
|
|
1190
|
+
@add_to_network_or_none
|
|
1191
|
+
def sub_geographical_region_to_cim(pb: PBSubGeographicalRegion, network_service: NetworkService) -> Optional[SubGeographicalRegion]:
|
|
1192
|
+
# noinspection PyUnresolvedReferences
|
|
1193
|
+
cim = SubGeographicalRegion(mrid=pb.mrid())
|
|
1194
|
+
|
|
1195
|
+
network_service.resolve_or_defer_reference(resolver.geographical_region(cim), pb.geographicalRegionMRID)
|
|
1196
|
+
for mrid in pb.substationMRIDs:
|
|
1197
|
+
network_service.resolve_or_defer_reference(resolver.substations(cim), mrid)
|
|
1198
|
+
|
|
1199
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1200
|
+
return cim
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
@bind_to_cim
|
|
1204
|
+
@add_to_network_or_none
|
|
1205
|
+
def substation_to_cim(pb: PBSubstation, network_service: NetworkService) -> Optional[Substation]:
|
|
1206
|
+
# noinspection PyUnresolvedReferences
|
|
1207
|
+
cim = Substation(mrid=pb.mrid())
|
|
1208
|
+
|
|
1209
|
+
network_service.resolve_or_defer_reference(resolver.sub_geographical_region(cim), pb.subGeographicalRegionMRID)
|
|
1210
|
+
for mrid in pb.normalEnergizedFeederMRIDs:
|
|
1211
|
+
network_service.resolve_or_defer_reference(resolver.normal_energized_feeders(cim), mrid)
|
|
1212
|
+
for mrid in pb.loopMRIDs:
|
|
1213
|
+
network_service.resolve_or_defer_reference(resolver.loops(cim), mrid)
|
|
1214
|
+
for mrid in pb.normalEnergizedLoopMRIDs:
|
|
1215
|
+
network_service.resolve_or_defer_reference(resolver.normal_energized_loops(cim), mrid)
|
|
1216
|
+
for mrid in pb.circuitMRIDs:
|
|
1217
|
+
network_service.resolve_or_defer_reference(resolver.circuits(cim), mrid)
|
|
1218
|
+
|
|
1219
|
+
equipment_container_to_cim(pb.ec, cim, network_service)
|
|
1220
|
+
return cim
|
|
1221
|
+
|
|
1222
|
+
|
|
1223
|
+
@bind_to_cim
|
|
1224
|
+
@add_to_network_or_none
|
|
1225
|
+
def terminal_to_cim(pb: PBTerminal, network_service: NetworkService) -> Optional[Terminal]:
|
|
1226
|
+
# noinspection PyUnresolvedReferences
|
|
1227
|
+
cim = Terminal(
|
|
1228
|
+
mrid=pb.mrid(),
|
|
1229
|
+
phases=phase_code_by_id(pb.phases),
|
|
1230
|
+
sequence_number=pb.sequenceNumber,
|
|
1231
|
+
normal_feeder_direction=FeederDirection(pb.normalFeederDirection),
|
|
1232
|
+
current_feeder_direction=FeederDirection(pb.currentFeederDirection),
|
|
1233
|
+
)
|
|
1234
|
+
|
|
1235
|
+
network_service.resolve_or_defer_reference(resolver.conducting_equipment(cim), pb.conductingEquipmentMRID)
|
|
1236
|
+
network_service.resolve_or_defer_reference(resolver.connectivity_node(cim), pb.connectivityNodeMRID)
|
|
1237
|
+
|
|
1238
|
+
ac_dc_terminal_to_cim(pb.ad, cim, network_service)
|
|
1239
|
+
return cim
|
|
1240
|
+
|
|
1241
|
+
|
|
1242
|
+
#############################
|
|
1243
|
+
# IEC61970 Base Equivalents #
|
|
1244
|
+
#############################
|
|
1245
|
+
|
|
1246
|
+
@bind_to_cim
|
|
1247
|
+
@add_to_network_or_none
|
|
1248
|
+
def equivalent_branch_to_cim(pb: PBEquivalentBranch, network_service: NetworkService) -> Optional[EquivalentBranch]:
|
|
1249
|
+
# noinspection PyUnresolvedReferences
|
|
1250
|
+
cim = EquivalentBranch(
|
|
1251
|
+
mrid=pb.mrid(),
|
|
1252
|
+
negative_r12=get_nullable(pb, 'negativeR12'),
|
|
1253
|
+
negative_r21=get_nullable(pb, 'negativeR21'),
|
|
1254
|
+
negative_x12=get_nullable(pb, 'negativeX12'),
|
|
1255
|
+
negative_x21=get_nullable(pb, 'negativeX21'),
|
|
1256
|
+
positive_r12=get_nullable(pb, 'positiveR12'),
|
|
1257
|
+
positive_r21=get_nullable(pb, 'positiveR21'),
|
|
1258
|
+
positive_x12=get_nullable(pb, 'positiveX12'),
|
|
1259
|
+
positive_x21=get_nullable(pb, 'positiveX21'),
|
|
1260
|
+
r=get_nullable(pb, 'r'),
|
|
1261
|
+
r21=get_nullable(pb, 'r21'),
|
|
1262
|
+
x=get_nullable(pb, 'x'),
|
|
1263
|
+
x21=get_nullable(pb, 'x21'),
|
|
1264
|
+
zero_r12=get_nullable(pb, 'zeroR12'),
|
|
1265
|
+
zero_r21=get_nullable(pb, 'zeroR21'),
|
|
1266
|
+
zero_x12=get_nullable(pb, 'zeroX12'),
|
|
1267
|
+
zero_x21=get_nullable(pb, 'zeroX21'),
|
|
1268
|
+
)
|
|
1269
|
+
|
|
1270
|
+
equivalent_equipment_to_cim(pb.ee, cim, network_service)
|
|
1271
|
+
return cim
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
def equivalent_equipment_to_cim(pb: PBEquivalentEquipment, cim: EquivalentEquipment, network_service: NetworkService):
|
|
1275
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
#######################################
|
|
1279
|
+
# IEC61970 Base Generation Production #
|
|
1280
|
+
#######################################
|
|
1281
|
+
|
|
1282
|
+
@bind_to_cim
|
|
1283
|
+
@add_to_network_or_none
|
|
1284
|
+
def battery_unit_to_cim(pb: PBBatteryUnit, network_service: NetworkService) -> Optional[BatteryUnit]:
|
|
1285
|
+
"""
|
|
1286
|
+
Convert the protobuf :class:`PBBatteryUnit` into its CIM counterpart.
|
|
1287
|
+
:param pb: The protobuf :class:`PBBatteryUnit` to convert.
|
|
1288
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
1289
|
+
:return: The converted `pb` as a CIM :class:`BatteryUnit`
|
|
1290
|
+
"""
|
|
1291
|
+
# noinspection PyUnresolvedReferences
|
|
1292
|
+
cim = BatteryUnit(
|
|
1293
|
+
mrid=pb.mrid(),
|
|
1294
|
+
battery_state=BatteryStateKind(pb.batteryState),
|
|
1295
|
+
rated_e=get_nullable(pb, "ratedE"),
|
|
1296
|
+
stored_e=get_nullable(pb, "storedE"),
|
|
1297
|
+
)
|
|
1298
|
+
|
|
1299
|
+
for mrid in pb.batteryControlMRIDs:
|
|
1300
|
+
network_service.resolve_or_defer_reference(resolver.battery_controls(cim), mrid)
|
|
1301
|
+
|
|
1302
|
+
power_electronics_unit_to_cim(pb.peu, cim, network_service)
|
|
1303
|
+
return cim
|
|
1304
|
+
|
|
1305
|
+
|
|
1306
|
+
@bind_to_cim
|
|
1307
|
+
@add_to_network_or_none
|
|
1308
|
+
def photo_voltaic_unit_to_cim(pb: PBPhotoVoltaicUnit, network_service: NetworkService) -> Optional[PhotoVoltaicUnit]:
|
|
1309
|
+
# noinspection PyUnresolvedReferences
|
|
1310
|
+
cim = PhotoVoltaicUnit(mrid=pb.mrid())
|
|
1311
|
+
|
|
1312
|
+
power_electronics_unit_to_cim(pb.peu, cim, network_service)
|
|
1313
|
+
return cim
|
|
1314
|
+
|
|
1315
|
+
|
|
1316
|
+
def power_electronics_unit_to_cim(pb: PBPowerElectronicsUnit, cim: PowerElectronicsUnit, network_service: NetworkService):
|
|
1317
|
+
cim.max_p = get_nullable(pb, 'maxP')
|
|
1318
|
+
cim.min_p = get_nullable(pb, 'minP')
|
|
1319
|
+
|
|
1320
|
+
network_service.resolve_or_defer_reference(resolver.unit_power_electronics_connection(cim), pb.powerElectronicsConnectionMRID)
|
|
1321
|
+
|
|
1322
|
+
equipment_to_cim(pb.eq, cim, network_service)
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
@bind_to_cim
|
|
1326
|
+
@add_to_network_or_none
|
|
1327
|
+
def power_electronics_wind_unit_to_cim(pb: PBPowerElectronicsWindUnit, network_service: NetworkService) -> Optional[PowerElectronicsWindUnit]:
|
|
1328
|
+
# noinspection PyUnresolvedReferences
|
|
1329
|
+
cim = PowerElectronicsWindUnit(mrid=pb.mrid())
|
|
1330
|
+
|
|
1331
|
+
power_electronics_unit_to_cim(pb.peu, cim, network_service)
|
|
1332
|
+
return cim
|
|
1333
|
+
|
|
1334
|
+
|
|
1335
|
+
######################
|
|
1336
|
+
# IEC61970 Base Meas #
|
|
1337
|
+
######################
|
|
1338
|
+
|
|
1339
|
+
@bind_to_cim
|
|
1340
|
+
@add_to_network_or_none
|
|
1341
|
+
def accumulator_to_cim(pb: PBAccumulator, network_service: NetworkService) -> Optional[Accumulator]:
|
|
1342
|
+
# noinspection PyUnresolvedReferences
|
|
1343
|
+
cim = Accumulator(mrid=pb.mrid())
|
|
1344
|
+
|
|
1345
|
+
measurement_to_cim(pb.measurement, cim, network_service)
|
|
1346
|
+
return cim
|
|
1347
|
+
|
|
1348
|
+
|
|
1349
|
+
@bind_to_cim
|
|
1350
|
+
@add_to_network_or_none
|
|
1351
|
+
def analog_to_cim(pb: PBAnalog, network_service: NetworkService) -> Optional[Analog]:
|
|
1352
|
+
# noinspection PyUnresolvedReferences
|
|
1353
|
+
cim = Analog(mrid=pb.mrid(), positive_flow_in=get_nullable(pb, "positiveFlowIn"))
|
|
1354
|
+
|
|
1355
|
+
measurement_to_cim(pb.measurement, cim, network_service)
|
|
1356
|
+
return cim
|
|
1357
|
+
|
|
1358
|
+
@bind_to_cim
|
|
1359
|
+
@add_to_network_or_none
|
|
1360
|
+
def control_to_cim(pb: PBControl, network_service: NetworkService) -> Optional[Control]:
|
|
1361
|
+
# noinspection PyUnresolvedReferences
|
|
1362
|
+
cim = Control(
|
|
1363
|
+
mrid=pb.mrid(),
|
|
1364
|
+
# noinspection PyUnresolvedReferences
|
|
1365
|
+
power_system_resource_mrid=pb.powerSystemResourceMRID if pb.powerSystemResourceMRID else None
|
|
1366
|
+
)
|
|
1367
|
+
|
|
1368
|
+
network_service.resolve_or_defer_reference(resolver.remote_control(cim), pb.remoteControlMRID)
|
|
1369
|
+
|
|
1370
|
+
io_point_to_cim(pb.ip, cim, network_service)
|
|
1371
|
+
return cim
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
@bind_to_cim
|
|
1375
|
+
@add_to_network_or_none
|
|
1376
|
+
def discrete_to_cim(pb: PBDiscrete, network_service: NetworkService) -> Optional[Discrete]:
|
|
1377
|
+
# noinspection PyUnresolvedReferences
|
|
1378
|
+
cim = Discrete(mrid=pb.mrid())
|
|
1379
|
+
|
|
1380
|
+
measurement_to_cim(pb.measurement, cim, network_service)
|
|
1381
|
+
return cim
|
|
1382
|
+
|
|
1383
|
+
|
|
1384
|
+
def io_point_to_cim(pb: PBIoPoint, cim: IoPoint, service: NetworkService):
|
|
1385
|
+
identified_object_to_cim(pb.io, cim, service)
|
|
1386
|
+
|
|
1387
|
+
|
|
1388
|
+
def measurement_to_cim(pb: PBMeasurement, cim: Measurement, service: NetworkService):
|
|
1389
|
+
cim.power_system_resource_mrid = str_or_none(pb.powerSystemResourceMRID)
|
|
1390
|
+
cim.terminal_mrid = str_or_none(pb.terminalMRID)
|
|
1391
|
+
cim.phases = phase_code_by_id(pb.phases)
|
|
1392
|
+
cim.unit_symbol = unit_symbol_from_id(pb.unitSymbol)
|
|
1393
|
+
|
|
1394
|
+
service.resolve_or_defer_reference(resolver.remote_source(cim), pb.remoteSourceMRID)
|
|
1395
|
+
|
|
1396
|
+
identified_object_to_cim(pb.io, cim, service)
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
############################
|
|
1400
|
+
# IEC61970 Base Protection #
|
|
1401
|
+
############################
|
|
1402
|
+
|
|
1403
|
+
@bind_to_cim
|
|
1404
|
+
@add_to_network_or_none
|
|
1405
|
+
def current_relay_to_cim(pb: PBCurrentRelay, network_service: NetworkService) -> Optional[CurrentRelay]:
|
|
1406
|
+
# noinspection PyUnresolvedReferences
|
|
1407
|
+
cim = CurrentRelay(
|
|
1408
|
+
mrid=pb.mrid(),
|
|
1409
|
+
current_limit_1=get_nullable(pb, "currentLimit1"),
|
|
1410
|
+
inverse_time_flag=get_nullable(pb, "inverseTimeFlag"),
|
|
1411
|
+
time_delay_1=get_nullable(pb, "timeDelay1"),
|
|
1412
|
+
)
|
|
1413
|
+
|
|
1414
|
+
protection_relay_function_to_cim(pb.prf, cim, network_service)
|
|
1415
|
+
return cim
|
|
1416
|
+
|
|
1417
|
+
|
|
1418
|
+
#######################
|
|
1419
|
+
# IEC61970 Base Scada #
|
|
1420
|
+
#######################
|
|
1421
|
+
|
|
1422
|
+
@bind_to_cim
|
|
1423
|
+
@add_to_network_or_none
|
|
1424
|
+
def remote_control_to_cim(pb: PBRemoteControl, network_service: NetworkService) -> Optional[RemoteControl]:
|
|
1425
|
+
# noinspection PyUnresolvedReferences
|
|
1426
|
+
cim = RemoteControl(mrid=pb.mrid())
|
|
1427
|
+
|
|
1428
|
+
network_service.resolve_or_defer_reference(resolver.control(cim), pb.controlMRID)
|
|
1429
|
+
|
|
1430
|
+
remote_point_to_cim(pb.rp, cim, network_service)
|
|
1431
|
+
return cim
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
def remote_point_to_cim(pb: PBRemotePoint, cim: RemotePoint, service: NetworkService):
|
|
1435
|
+
identified_object_to_cim(pb.io, cim, service)
|
|
1436
|
+
|
|
1437
|
+
|
|
1438
|
+
@bind_to_cim
|
|
1439
|
+
@add_to_network_or_none
|
|
1440
|
+
def remote_source_to_cim(pb: PBRemoteSource, network_service: NetworkService) -> Optional[RemoteSource]:
|
|
1441
|
+
# noinspection PyUnresolvedReferences
|
|
1442
|
+
cim = RemoteSource(mrid=pb.mrid())
|
|
1443
|
+
|
|
1444
|
+
network_service.resolve_or_defer_reference(resolver.measurement(cim), pb.measurementMRID)
|
|
1445
|
+
|
|
1446
|
+
remote_point_to_cim(pb.rp, cim, network_service)
|
|
1447
|
+
return cim
|
|
1448
|
+
|
|
1449
|
+
|
|
1450
|
+
#######################
|
|
1451
|
+
# IEC61970 Base Wires #
|
|
1452
|
+
#######################
|
|
1453
|
+
|
|
1454
|
+
@bind_to_cim
|
|
1455
|
+
@add_to_network_or_none
|
|
1456
|
+
def ac_line_segment_to_cim(pb: PBAcLineSegment, network_service: NetworkService) -> Optional[AcLineSegment]:
|
|
1457
|
+
"""
|
|
1458
|
+
Convert the protobuf :class:`PBAcLineSegment` into its CIM counterpart.
|
|
1459
|
+
:param pb: The protobuf :class:`PBAcLineSegment` to convert.
|
|
1460
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
1461
|
+
:return: The converted `pb` as a CIM :class:`AcLineSegment`
|
|
1462
|
+
"""
|
|
1463
|
+
# noinspection PyUnresolvedReferences
|
|
1464
|
+
cim = AcLineSegment(mrid=pb.mrid())
|
|
1465
|
+
|
|
1466
|
+
network_service.resolve_or_defer_reference(resolver.per_length_impedance(cim), pb.perLengthImpedanceMRID)
|
|
1467
|
+
for mrid in pb.cutMRIDs:
|
|
1468
|
+
network_service.resolve_or_defer_reference(resolver.cuts(cim), mrid)
|
|
1469
|
+
for mrid in pb.clampMRIDs:
|
|
1470
|
+
network_service.resolve_or_defer_reference(resolver.clamps(cim), mrid)
|
|
1471
|
+
|
|
1472
|
+
conductor_to_cim(pb.cd, cim, network_service)
|
|
1473
|
+
return cim
|
|
1474
|
+
|
|
1475
|
+
|
|
1476
|
+
@bind_to_cim
|
|
1477
|
+
@add_to_network_or_none
|
|
1478
|
+
def breaker_to_cim(pb: PBBreaker, network_service: NetworkService) -> Optional[Breaker]:
|
|
1479
|
+
# noinspection PyUnresolvedReferences
|
|
1480
|
+
cim = Breaker(
|
|
1481
|
+
mrid=pb.mrid(),
|
|
1482
|
+
in_transit_time=get_nullable(pb, "inTransitTime")
|
|
1483
|
+
)
|
|
1484
|
+
|
|
1485
|
+
protected_switch_to_cim(pb.sw, cim, network_service)
|
|
1486
|
+
return cim
|
|
1487
|
+
|
|
1488
|
+
|
|
1489
|
+
@bind_to_cim
|
|
1490
|
+
@add_to_network_or_none
|
|
1491
|
+
def busbar_section_to_cim(pb: PBBusbarSection, network_service: NetworkService) -> Optional[BusbarSection]:
|
|
1492
|
+
# noinspection PyUnresolvedReferences
|
|
1493
|
+
cim = BusbarSection(mrid=pb.mrid())
|
|
1494
|
+
|
|
1495
|
+
connector_to_cim(pb.cn, cim, network_service)
|
|
1496
|
+
return cim
|
|
1497
|
+
|
|
1498
|
+
|
|
1499
|
+
@bind_to_cim
|
|
1500
|
+
@add_to_network_or_none
|
|
1501
|
+
def clamp_to_cim(pb: PBClamp, network_service: NetworkService) -> Optional[Clamp]:
|
|
1502
|
+
# noinspection PyUnresolvedReferences
|
|
1503
|
+
cim = Clamp(mrid=pb.mrid())
|
|
1504
|
+
|
|
1505
|
+
cim.length_from_terminal_1 = get_nullable(pb, "lengthFromTerminal1")
|
|
1506
|
+
network_service.resolve_or_defer_reference(resolver.clamp_ac_line_segment(cim), pb.acLineSegmentMRID)
|
|
1507
|
+
|
|
1508
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1509
|
+
return cim
|
|
1510
|
+
|
|
1511
|
+
|
|
1512
|
+
def conductor_to_cim(pb: PBConductor, cim: Conductor, network_service: NetworkService):
|
|
1513
|
+
cim.length = get_nullable(pb, 'length')
|
|
1514
|
+
cim.design_temperature = get_nullable(pb, 'designTemperature')
|
|
1515
|
+
cim.design_rating = get_nullable(pb, 'designRating')
|
|
1516
|
+
|
|
1517
|
+
# noinspection PyUnresolvedReferences
|
|
1518
|
+
network_service.resolve_or_defer_reference(resolver.wire_info(cim), pb.asset_info_mrid())
|
|
1519
|
+
|
|
1520
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1521
|
+
|
|
1522
|
+
|
|
1523
|
+
def connector_to_cim(pb: PBConnector, cim: Connector, network_service: NetworkService):
|
|
1524
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
@bind_to_cim
|
|
1528
|
+
@add_to_network_or_none
|
|
1529
|
+
def cut_to_cim(pb: PBCut, network_service: NetworkService) -> Optional[Cut]:
|
|
1530
|
+
# noinspection PyUnresolvedReferences
|
|
1531
|
+
cim = Cut(mrid=pb.mrid())
|
|
1532
|
+
|
|
1533
|
+
cim.length_from_terminal_1 = get_nullable(pb, 'lengthFromTerminal1')
|
|
1534
|
+
network_service.resolve_or_defer_reference(resolver.cut_ac_line_segment(cim), pb.acLineSegmentMRID)
|
|
1535
|
+
|
|
1536
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1537
|
+
return cim
|
|
1538
|
+
|
|
1539
|
+
|
|
1540
|
+
@bind_to_cim
|
|
1541
|
+
@add_to_network_or_none
|
|
1542
|
+
def disconnector_to_cim(pb: PBDisconnector, network_service: NetworkService) -> Optional[Disconnector]:
|
|
1543
|
+
# noinspection PyUnresolvedReferences
|
|
1544
|
+
cim = Disconnector(mrid=pb.mrid())
|
|
1545
|
+
|
|
1546
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1547
|
+
return cim
|
|
1548
|
+
|
|
1549
|
+
|
|
1550
|
+
def earth_fault_compensator_to_cim(pb: PBEarthFaultCompensator, cim: EarthFaultCompensator, network_service: NetworkService):
|
|
1551
|
+
cim.r = get_nullable(pb, 'r')
|
|
1552
|
+
|
|
1553
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1554
|
+
|
|
1555
|
+
|
|
1556
|
+
def energy_connection_to_cim(pb: PBEnergyConnection, cim: EnergyConnection, network_service: NetworkService):
|
|
1557
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
@bind_to_cim
|
|
1561
|
+
@add_to_network_or_none
|
|
1562
|
+
def energy_consumer_to_cim(pb: PBEnergyConsumer, network_service: NetworkService) -> Optional[EnergyConsumer]:
|
|
1563
|
+
# noinspection PyUnresolvedReferences
|
|
1564
|
+
cim = EnergyConsumer(
|
|
1565
|
+
mrid=pb.mrid(),
|
|
1566
|
+
customer_count=get_nullable(pb, "customerCount"),
|
|
1567
|
+
grounded=get_nullable(pb, 'grounded'),
|
|
1568
|
+
phase_connection=PhaseShuntConnectionKind(pb.phaseConnection),
|
|
1569
|
+
p=get_nullable(pb, 'p'),
|
|
1570
|
+
p_fixed=get_nullable(pb, 'pFixed'),
|
|
1571
|
+
q=get_nullable(pb, 'q'),
|
|
1572
|
+
q_fixed=get_nullable(pb, 'qFixed'),
|
|
1573
|
+
)
|
|
1574
|
+
|
|
1575
|
+
for mrid in pb.energyConsumerPhasesMRIDs:
|
|
1576
|
+
network_service.resolve_or_defer_reference(resolver.ec_phases(cim), mrid)
|
|
1577
|
+
|
|
1578
|
+
energy_connection_to_cim(pb.ec, cim, network_service)
|
|
1579
|
+
return cim
|
|
1580
|
+
|
|
1581
|
+
|
|
1582
|
+
@bind_to_cim
|
|
1583
|
+
@add_to_network_or_none
|
|
1584
|
+
def energy_consumer_phase_to_cim(pb: PBEnergyConsumerPhase, network_service: NetworkService) -> Optional[EnergyConsumerPhase]:
|
|
1585
|
+
# noinspection PyUnresolvedReferences
|
|
1586
|
+
cim = EnergyConsumerPhase(
|
|
1587
|
+
mrid=pb.mrid(),
|
|
1588
|
+
phase=single_phase_kind_by_id(pb.phase),
|
|
1589
|
+
p=get_nullable(pb, 'p'),
|
|
1590
|
+
p_fixed=get_nullable(pb, 'pFixed'),
|
|
1591
|
+
q=get_nullable(pb, 'q'),
|
|
1592
|
+
q_fixed=get_nullable(pb, 'qFixed'),
|
|
1593
|
+
)
|
|
1594
|
+
|
|
1595
|
+
network_service.resolve_or_defer_reference(resolver.energy_consumer(cim), pb.energyConsumerMRID)
|
|
1596
|
+
|
|
1597
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
1598
|
+
return cim
|
|
1599
|
+
|
|
1600
|
+
|
|
1601
|
+
@bind_to_cim
|
|
1602
|
+
@add_to_network_or_none
|
|
1603
|
+
def energy_source_to_cim(pb: PBEnergySource, network_service: NetworkService) -> Optional[EnergySource]:
|
|
1604
|
+
# noinspection PyUnresolvedReferences
|
|
1605
|
+
cim = EnergySource(
|
|
1606
|
+
mrid=pb.mrid(),
|
|
1607
|
+
active_power=get_nullable(pb, 'activePower'),
|
|
1608
|
+
reactive_power=get_nullable(pb, 'reactivePower'),
|
|
1609
|
+
voltage_angle=get_nullable(pb, 'voltageAngle'),
|
|
1610
|
+
voltage_magnitude=get_nullable(pb, 'voltageMagnitude'),
|
|
1611
|
+
r=get_nullable(pb, 'r'),
|
|
1612
|
+
x=get_nullable(pb, 'x'),
|
|
1613
|
+
p_max=get_nullable(pb, 'pMax'),
|
|
1614
|
+
p_min=get_nullable(pb, 'pMin'),
|
|
1615
|
+
r0=get_nullable(pb, 'r0'),
|
|
1616
|
+
rn=get_nullable(pb, 'rn'),
|
|
1617
|
+
x0=get_nullable(pb, 'x0'),
|
|
1618
|
+
xn=get_nullable(pb, 'xn'),
|
|
1619
|
+
is_external_grid=get_nullable(pb, 'isExternalGrid'),
|
|
1620
|
+
r_min=get_nullable(pb, 'rMin'),
|
|
1621
|
+
rn_min=get_nullable(pb, 'rnMin'),
|
|
1622
|
+
r0_min=get_nullable(pb, 'r0Min'),
|
|
1623
|
+
x_min=get_nullable(pb, 'xMin'),
|
|
1624
|
+
xn_min=get_nullable(pb, 'xnMin'),
|
|
1625
|
+
x0_min=get_nullable(pb, 'x0Min'),
|
|
1626
|
+
r_max=get_nullable(pb, 'rMax'),
|
|
1627
|
+
rn_max=get_nullable(pb, 'rnMax'),
|
|
1628
|
+
r0_max=get_nullable(pb, 'r0Max'),
|
|
1629
|
+
x_max=get_nullable(pb, 'xMax'),
|
|
1630
|
+
xn_max=get_nullable(pb, 'xnMax'),
|
|
1631
|
+
x0_max=get_nullable(pb, 'x0Max'),
|
|
1632
|
+
)
|
|
1633
|
+
|
|
1634
|
+
for mrid in pb.energySourcePhasesMRIDs:
|
|
1635
|
+
network_service.resolve_or_defer_reference(resolver.es_phases(cim), mrid)
|
|
1636
|
+
|
|
1637
|
+
energy_connection_to_cim(pb.ec, cim, network_service)
|
|
1638
|
+
return cim
|
|
1639
|
+
|
|
1640
|
+
|
|
1641
|
+
@bind_to_cim
|
|
1642
|
+
@add_to_network_or_none
|
|
1643
|
+
def energy_source_phase_to_cim(pb: PBEnergySourcePhase, network_service: NetworkService) -> Optional[EnergySourcePhase]:
|
|
1644
|
+
# noinspection PyUnresolvedReferences
|
|
1645
|
+
cim = EnergySourcePhase(mrid=pb.mrid(), phase=single_phase_kind_by_id(pb.phase))
|
|
1646
|
+
|
|
1647
|
+
network_service.resolve_or_defer_reference(resolver.energy_source(cim), pb.energySourceMRID)
|
|
1648
|
+
|
|
1649
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
1650
|
+
return cim
|
|
1651
|
+
|
|
1652
|
+
|
|
1653
|
+
@bind_to_cim
|
|
1654
|
+
@add_to_network_or_none
|
|
1655
|
+
def fuse_to_cim(pb: PBFuse, network_service: NetworkService) -> Optional[Fuse]:
|
|
1656
|
+
# noinspection PyUnresolvedReferences
|
|
1657
|
+
cim = Fuse(mrid=pb.mrid())
|
|
1658
|
+
|
|
1659
|
+
network_service.resolve_or_defer_reference(resolver.fuse_function(cim), pb.functionMRID)
|
|
1660
|
+
|
|
1661
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1662
|
+
return cim
|
|
1663
|
+
|
|
1664
|
+
|
|
1665
|
+
@bind_to_cim
|
|
1666
|
+
@add_to_network_or_none
|
|
1667
|
+
def ground_to_cim(pb: PBGround, network_service: NetworkService) -> Optional[Ground]:
|
|
1668
|
+
# noinspection PyUnresolvedReferences
|
|
1669
|
+
cim = Ground(mrid=pb.mrid())
|
|
1670
|
+
|
|
1671
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1672
|
+
return cim
|
|
1673
|
+
|
|
1674
|
+
|
|
1675
|
+
@bind_to_cim
|
|
1676
|
+
@add_to_network_or_none
|
|
1677
|
+
def ground_disconnector_to_cim(pb: PBGroundDisconnector, network_service: NetworkService) -> Optional[GroundDisconnector]:
|
|
1678
|
+
# noinspection PyUnresolvedReferences
|
|
1679
|
+
cim = GroundDisconnector(mrid=pb.mrid())
|
|
1680
|
+
|
|
1681
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1682
|
+
return cim
|
|
1683
|
+
|
|
1684
|
+
|
|
1685
|
+
@bind_to_cim
|
|
1686
|
+
@add_to_network_or_none
|
|
1687
|
+
def grounding_impedance_to_cim(pb: PBGroundingImpedance, network_service: NetworkService) -> Optional[GroundingImpedance]:
|
|
1688
|
+
# noinspection PyUnresolvedReferences
|
|
1689
|
+
cim = GroundingImpedance(mrid=pb.mrid(), x=get_nullable(pb, "x"))
|
|
1690
|
+
|
|
1691
|
+
earth_fault_compensator_to_cim(pb.efc, cim, network_service)
|
|
1692
|
+
return cim
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
@bind_to_cim
|
|
1696
|
+
@add_to_network_or_none
|
|
1697
|
+
def jumper_to_cim(pb: PBJumper, network_service: NetworkService) -> Optional[Jumper]:
|
|
1698
|
+
# noinspection PyUnresolvedReferences
|
|
1699
|
+
cim = Jumper(mrid=pb.mrid())
|
|
1700
|
+
|
|
1701
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1702
|
+
return cim
|
|
1703
|
+
|
|
1704
|
+
|
|
1705
|
+
@bind_to_cim
|
|
1706
|
+
@add_to_network_or_none
|
|
1707
|
+
def junction_to_cim(pb: PBJunction, network_service: NetworkService) -> Optional[Junction]:
|
|
1708
|
+
# noinspection PyUnresolvedReferences
|
|
1709
|
+
cim = Junction(mrid=pb.mrid())
|
|
1710
|
+
|
|
1711
|
+
connector_to_cim(pb.cn, cim, network_service)
|
|
1712
|
+
return cim
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
def line_to_cim(pb: PBLine, cim: Line, network_service: NetworkService):
|
|
1716
|
+
equipment_container_to_cim(pb.ec, cim, network_service)
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
@bind_to_cim
|
|
1720
|
+
@add_to_network_or_none
|
|
1721
|
+
def linear_shunt_compensator_to_cim(pb: PBLinearShuntCompensator, network_service: NetworkService) -> Optional[LinearShuntCompensator]:
|
|
1722
|
+
# noinspection PyUnresolvedReferences
|
|
1723
|
+
cim = LinearShuntCompensator(
|
|
1724
|
+
mrid=pb.mrid(),
|
|
1725
|
+
b0_per_section=get_nullable(pb, 'b0PerSection'),
|
|
1726
|
+
b_per_section=get_nullable(pb, 'bPerSection'),
|
|
1727
|
+
g0_per_section=get_nullable(pb, 'g0PerSection'),
|
|
1728
|
+
g_per_section=get_nullable(pb, 'gPerSection'),
|
|
1729
|
+
)
|
|
1730
|
+
|
|
1731
|
+
shunt_compensator_to_cim(pb.sc, cim, network_service)
|
|
1732
|
+
return cim
|
|
1733
|
+
|
|
1734
|
+
|
|
1735
|
+
@bind_to_cim
|
|
1736
|
+
@add_to_network_or_none
|
|
1737
|
+
def load_break_switch_to_cim(pb: PBLoadBreakSwitch, network_service: NetworkService) -> Optional[LoadBreakSwitch]:
|
|
1738
|
+
# noinspection PyUnresolvedReferences
|
|
1739
|
+
cim = LoadBreakSwitch(mrid=pb.mrid())
|
|
1740
|
+
|
|
1741
|
+
protected_switch_to_cim(pb.ps, cim, network_service)
|
|
1742
|
+
return cim
|
|
1743
|
+
|
|
1744
|
+
|
|
1745
|
+
def per_length_line_parameter_to_cim(pb: PBPerLengthLineParameter, cim: PerLengthLineParameter, network_service: NetworkService):
|
|
1746
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
def per_length_impedance_to_cim(pb: PBPerLengthImpedance, cim: PerLengthImpedance, network_service: NetworkService):
|
|
1750
|
+
per_length_line_parameter_to_cim(pb.lp, cim, network_service)
|
|
1751
|
+
|
|
1752
|
+
|
|
1753
|
+
@bind_to_cim
|
|
1754
|
+
@add_to_network_or_none
|
|
1755
|
+
def per_length_phase_impedance_to_cim(pb: PBPerLengthPhaseImpedance, network_service: NetworkService) -> Optional[PerLengthPhaseImpedance]:
|
|
1756
|
+
"""
|
|
1757
|
+
Convert the protobuf :class:`PBPerLengthPhaseImpedance` into its CIM counterpart.
|
|
1758
|
+
:param pb: The protobuf :class:`PBPerLengthPhaseImpedance` to convert.
|
|
1759
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
1760
|
+
:return: The converted `pb` as a CIM :class:`PerLengthPhaseImpedance`
|
|
1761
|
+
"""
|
|
1762
|
+
# noinspection PyUnresolvedReferences
|
|
1763
|
+
cim = PerLengthPhaseImpedance(mrid=pb.mrid())
|
|
1764
|
+
|
|
1765
|
+
for phase_impedance_data in pb.phaseImpedanceData:
|
|
1766
|
+
cim.add_data(phase_impedance_data_to_cim(phase_impedance_data))
|
|
1767
|
+
|
|
1768
|
+
per_length_impedance_to_cim(pb.pli, cim, network_service)
|
|
1769
|
+
return cim
|
|
1770
|
+
|
|
1771
|
+
|
|
1772
|
+
@bind_to_cim
|
|
1773
|
+
@add_to_network_or_none
|
|
1774
|
+
def per_length_sequence_impedance_to_cim(pb: PBPerLengthSequenceImpedance, network_service: NetworkService) -> Optional[PerLengthSequenceImpedance]:
|
|
1775
|
+
# noinspection PyUnresolvedReferences
|
|
1776
|
+
cim = PerLengthSequenceImpedance(
|
|
1777
|
+
mrid=pb.mrid(),
|
|
1778
|
+
r=get_nullable(pb, 'r'),
|
|
1779
|
+
x=get_nullable(pb, 'x'),
|
|
1780
|
+
r0=get_nullable(pb, 'r0'),
|
|
1781
|
+
x0=get_nullable(pb, 'x0'),
|
|
1782
|
+
bch=get_nullable(pb, 'bch'),
|
|
1783
|
+
gch=get_nullable(pb, 'gch'),
|
|
1784
|
+
b0ch=get_nullable(pb, 'b0ch'),
|
|
1785
|
+
g0ch=get_nullable(pb, 'g0ch'),
|
|
1786
|
+
)
|
|
1787
|
+
|
|
1788
|
+
per_length_impedance_to_cim(pb.pli, cim, network_service)
|
|
1789
|
+
return cim
|
|
1790
|
+
|
|
1791
|
+
|
|
1792
|
+
@bind_to_cim
|
|
1793
|
+
@add_to_network_or_none
|
|
1794
|
+
def petersen_coil_to_cim(pb: PBPetersenCoil, network_service: NetworkService) -> Optional[PetersenCoil]:
|
|
1795
|
+
# noinspection PyUnresolvedReferences
|
|
1796
|
+
cim = PetersenCoil(mrid=pb.mrid(), x_ground_nominal=get_nullable(pb, 'xGroundNominal'))
|
|
1797
|
+
|
|
1798
|
+
earth_fault_compensator_to_cim(pb.efc, cim, network_service)
|
|
1799
|
+
return cim
|
|
1800
|
+
|
|
1801
|
+
|
|
1802
|
+
def phase_impedance_data_to_cim(pb: PBPhaseImpedanceData) -> Optional[PhaseImpedanceData]:
|
|
1803
|
+
"""
|
|
1804
|
+
Convert the protobuf :class:`PBPhaseImpedanceData` into its CIM counterpart.
|
|
1805
|
+
:param pb: The protobuf :class:`PBPhaseImpedanceData` to convert.
|
|
1806
|
+
:return: The converted `pb` as a CIM :class:`PhaseImpedanceData`
|
|
1807
|
+
"""
|
|
1808
|
+
return PhaseImpedanceData(
|
|
1809
|
+
single_phase_kind_by_id(pb.fromPhase),
|
|
1810
|
+
single_phase_kind_by_id(pb.toPhase),
|
|
1811
|
+
get_nullable(pb, "b"),
|
|
1812
|
+
get_nullable(pb, "g"),
|
|
1813
|
+
get_nullable(pb, "r"),
|
|
1814
|
+
get_nullable(pb, "x"),
|
|
1815
|
+
)
|
|
1816
|
+
|
|
1817
|
+
|
|
1818
|
+
@bind_to_cim
|
|
1819
|
+
@add_to_network_or_none
|
|
1820
|
+
def power_electronics_connection_to_cim(pb: PBPowerElectronicsConnection, network_service: NetworkService) -> Optional[PowerElectronicsConnection]:
|
|
1821
|
+
# noinspection PyUnresolvedReferences
|
|
1822
|
+
cim = PowerElectronicsConnection(
|
|
1823
|
+
mrid=pb.mrid(),
|
|
1824
|
+
max_i_fault=get_nullable(pb, "maxIFault"),
|
|
1825
|
+
p=get_nullable(pb, 'p'),
|
|
1826
|
+
q=get_nullable(pb, 'q'),
|
|
1827
|
+
max_q=get_nullable(pb, 'maxQ'),
|
|
1828
|
+
min_q=get_nullable(pb, 'minQ'),
|
|
1829
|
+
rated_s=get_nullable(pb, 'ratedS'),
|
|
1830
|
+
rated_u=get_nullable(pb, 'ratedU'),
|
|
1831
|
+
inverter_standard=get_nullable(pb, 'inverterStandard'),
|
|
1832
|
+
sustain_op_overvolt_limit=get_nullable(pb, 'sustainOpOvervoltLimit'),
|
|
1833
|
+
stop_at_over_freq=get_nullable(pb, 'stopAtOverFreq'),
|
|
1834
|
+
stop_at_under_freq=get_nullable(pb, 'stopAtUnderFreq'),
|
|
1835
|
+
inv_volt_watt_resp_mode=get_nullable(pb, "invVoltWattRespMode"),
|
|
1836
|
+
inv_watt_resp_v1=get_nullable(pb, 'invWattRespV1'),
|
|
1837
|
+
inv_watt_resp_v2=get_nullable(pb, 'invWattRespV2'),
|
|
1838
|
+
inv_watt_resp_v3=get_nullable(pb, 'invWattRespV3'),
|
|
1839
|
+
inv_watt_resp_v4=get_nullable(pb, 'invWattRespV4'),
|
|
1840
|
+
inv_watt_resp_p_at_v1=get_nullable(pb, 'invWattRespPAtV1'),
|
|
1841
|
+
inv_watt_resp_p_at_v2=get_nullable(pb, 'invWattRespPAtV2'),
|
|
1842
|
+
inv_watt_resp_p_at_v3=get_nullable(pb, 'invWattRespPAtV3'),
|
|
1843
|
+
inv_watt_resp_p_at_v4=get_nullable(pb, 'invWattRespPAtV4'),
|
|
1844
|
+
inv_volt_var_resp_mode=get_nullable(pb, "invVoltVarRespMode"),
|
|
1845
|
+
inv_var_resp_v1=get_nullable(pb, 'invVarRespV1'),
|
|
1846
|
+
inv_var_resp_v2=get_nullable(pb, 'invVarRespV2'),
|
|
1847
|
+
inv_var_resp_v3=get_nullable(pb, 'invVarRespV3'),
|
|
1848
|
+
inv_var_resp_v4=get_nullable(pb, 'invVarRespV4'),
|
|
1849
|
+
inv_var_resp_q_at_v1=get_nullable(pb, 'invVarRespQAtV1'),
|
|
1850
|
+
inv_var_resp_q_at_v2=get_nullable(pb, 'invVarRespQAtV2'),
|
|
1851
|
+
inv_var_resp_q_at_v3=get_nullable(pb, 'invVarRespQAtV3'),
|
|
1852
|
+
inv_var_resp_q_at_v4=get_nullable(pb, 'invVarRespQAtV4'),
|
|
1853
|
+
inv_reactive_power_mode=get_nullable(pb, "invReactivePowerMode"),
|
|
1854
|
+
inv_fix_reactive_power=get_nullable(pb, 'invFixReactivePower'),
|
|
1855
|
+
)
|
|
1856
|
+
|
|
1857
|
+
for mrid in pb.powerElectronicsUnitMRIDs:
|
|
1858
|
+
network_service.resolve_or_defer_reference(resolver.power_electronics_unit(cim), mrid)
|
|
1859
|
+
for mrid in pb.powerElectronicsConnectionPhaseMRIDs:
|
|
1860
|
+
network_service.resolve_or_defer_reference(resolver.power_electronics_connection_phase(cim), mrid)
|
|
1861
|
+
|
|
1862
|
+
regulating_cond_eq_to_cim(pb.rce, cim, network_service)
|
|
1863
|
+
return cim
|
|
1864
|
+
|
|
1865
|
+
|
|
1866
|
+
@bind_to_cim
|
|
1867
|
+
@add_to_network_or_none
|
|
1868
|
+
def power_electronics_connection_phase_to_cim(
|
|
1869
|
+
pb: PBPowerElectronicsConnectionPhase,
|
|
1870
|
+
network_service: NetworkService
|
|
1871
|
+
) -> Optional[PowerElectronicsConnectionPhase]:
|
|
1872
|
+
# noinspection PyUnresolvedReferences
|
|
1873
|
+
cim = PowerElectronicsConnectionPhase(
|
|
1874
|
+
mrid=pb.mrid(),
|
|
1875
|
+
p=get_nullable(pb, "p"),
|
|
1876
|
+
q=get_nullable(pb, "q"),
|
|
1877
|
+
phase=single_phase_kind_by_id(pb.phase)
|
|
1878
|
+
)
|
|
1879
|
+
|
|
1880
|
+
network_service.resolve_or_defer_reference(resolver.phase_power_electronics_connection(cim), pb.powerElectronicsConnectionMRID)
|
|
1881
|
+
|
|
1882
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
1883
|
+
return cim
|
|
1884
|
+
|
|
1885
|
+
|
|
1886
|
+
@bind_to_cim
|
|
1887
|
+
@add_to_network_or_none
|
|
1888
|
+
def power_transformer_to_cim(pb: PBPowerTransformer, network_service: NetworkService) -> Optional[PowerTransformer]:
|
|
1889
|
+
# noinspection PyUnresolvedReferences
|
|
1890
|
+
cim = PowerTransformer(
|
|
1891
|
+
mrid=pb.mrid(),
|
|
1892
|
+
vector_group=VectorGroup(pb.vectorGroup),
|
|
1893
|
+
transformer_utilisation=get_nullable(pb, "transformerUtilisation"),
|
|
1894
|
+
construction_kind=TransformerConstructionKind(pb.constructionKind),
|
|
1895
|
+
function=TransformerFunctionKind(pb.function)
|
|
1896
|
+
)
|
|
1897
|
+
|
|
1898
|
+
for mrid in pb.powerTransformerEndMRIDs:
|
|
1899
|
+
network_service.resolve_or_defer_reference(resolver.ends(cim), mrid)
|
|
1900
|
+
# noinspection PyUnresolvedReferences
|
|
1901
|
+
network_service.resolve_or_defer_reference(resolver.power_transformer_info(cim), pb.asset_info_mrid())
|
|
1902
|
+
|
|
1903
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
1904
|
+
return cim
|
|
1905
|
+
|
|
1906
|
+
|
|
1907
|
+
@bind_to_cim
|
|
1908
|
+
@add_to_network_or_none
|
|
1909
|
+
def power_transformer_end_to_cim(pb: PBPowerTransformerEnd, network_service: NetworkService) -> Optional[PowerTransformerEnd]:
|
|
1910
|
+
# noinspection PyUnresolvedReferences
|
|
1911
|
+
cim = PowerTransformerEnd(
|
|
1912
|
+
mrid=pb.mrid(),
|
|
1913
|
+
rated_u=get_nullable(pb, 'ratedU'),
|
|
1914
|
+
r=get_nullable(pb, 'r'),
|
|
1915
|
+
r0=get_nullable(pb, 'r0'),
|
|
1916
|
+
x=get_nullable(pb, 'x'),
|
|
1917
|
+
x0=get_nullable(pb, 'x0'),
|
|
1918
|
+
b=get_nullable(pb, 'b'),
|
|
1919
|
+
b0=get_nullable(pb, 'b0'),
|
|
1920
|
+
g=get_nullable(pb, 'g'),
|
|
1921
|
+
g0=get_nullable(pb, 'g0'),
|
|
1922
|
+
connection_kind=WindingConnection(pb.connectionKind),
|
|
1923
|
+
phase_angle_clock=get_nullable(pb, 'phaseAngleClock'),
|
|
1924
|
+
)
|
|
1925
|
+
|
|
1926
|
+
for rating in pb.ratings:
|
|
1927
|
+
cim.add_transformer_end_rated_s(transformer_end_rated_s_to_cim(rating))
|
|
1928
|
+
|
|
1929
|
+
# Set end number before associating with power transformer to prevent incorrectly sorted cim.power_transformer.ends
|
|
1930
|
+
transformer_end_to_cim(pb.te, cim, network_service)
|
|
1931
|
+
|
|
1932
|
+
network_service.resolve_or_defer_reference(resolver.power_transformer(cim), pb.powerTransformerMRID)
|
|
1933
|
+
return cim
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
def protected_switch_to_cim(pb: PBProtectedSwitch, cim: ProtectedSwitch, network_service: NetworkService):
|
|
1937
|
+
cim.breaking_capacity = get_nullable(pb, 'breakingCapacity')
|
|
1938
|
+
|
|
1939
|
+
for mrid in pb.relayFunctionMRIDs:
|
|
1940
|
+
network_service.resolve_or_defer_reference(resolver.ps_relay_function(cim), mrid)
|
|
1941
|
+
|
|
1942
|
+
switch_to_cim(pb.sw, cim, network_service)
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
@bind_to_cim
|
|
1946
|
+
@add_to_network_or_none
|
|
1947
|
+
def ratio_tap_changer_to_cim(pb: PBRatioTapChanger, network_service: NetworkService) -> Optional[RatioTapChanger]:
|
|
1948
|
+
# noinspection PyUnresolvedReferences
|
|
1949
|
+
cim = RatioTapChanger(
|
|
1950
|
+
mrid=pb.mrid(),
|
|
1951
|
+
step_voltage_increment=get_nullable(pb, "stepVoltageIncrement")
|
|
1952
|
+
)
|
|
1953
|
+
|
|
1954
|
+
network_service.resolve_or_defer_reference(resolver.transformer_end(cim), pb.transformerEndMRID)
|
|
1955
|
+
|
|
1956
|
+
tap_changer_to_cim(pb.tc, cim, network_service)
|
|
1957
|
+
return cim
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
@bind_to_cim
|
|
1961
|
+
@add_to_network_or_none
|
|
1962
|
+
def reactive_capability_curve_to_cim(pb: PBReactiveCapabilityCurve, network_service: NetworkService) -> Optional[ReactiveCapabilityCurve]:
|
|
1963
|
+
# noinspection PyUnresolvedReferences
|
|
1964
|
+
cim = ReactiveCapabilityCurve(mrid=pb.mrid())
|
|
1965
|
+
|
|
1966
|
+
curve_to_cim(pb.c, cim, network_service)
|
|
1967
|
+
return cim
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
@bind_to_cim
|
|
1971
|
+
@add_to_network_or_none
|
|
1972
|
+
def recloser_to_cim(pb: PBRecloser, network_service: NetworkService) -> Optional[Recloser]:
|
|
1973
|
+
# noinspection PyUnresolvedReferences
|
|
1974
|
+
cim = Recloser(mrid=pb.mrid())
|
|
1975
|
+
|
|
1976
|
+
protected_switch_to_cim(pb.sw, cim, network_service)
|
|
1977
|
+
return cim
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
def regulating_cond_eq_to_cim(pb: PBRegulatingCondEq, cim: RegulatingCondEq, network_service: NetworkService):
|
|
1981
|
+
cim.control_enabled = get_nullable(pb, 'controlEnabled')
|
|
1982
|
+
network_service.resolve_or_defer_reference(resolver.rce_regulating_control(cim), pb.regulatingControlMRID)
|
|
1983
|
+
|
|
1984
|
+
energy_connection_to_cim(pb.ec, cim, network_service)
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
def regulating_control_to_cim(pb: PBRegulatingControl, cim: RegulatingControl, network_service: NetworkService):
|
|
1988
|
+
cim.discrete = None if pb.HasField("discreteNull") else pb.discreteSet
|
|
1989
|
+
cim.mode = RegulatingControlModeKind(pb.mode)
|
|
1990
|
+
cim.monitored_phase = phase_code_by_id(pb.monitoredPhase)
|
|
1991
|
+
cim.target_deadband = get_nullable(pb, 'targetDeadband')
|
|
1992
|
+
cim.target_value = get_nullable(pb, 'targetValue')
|
|
1993
|
+
cim.enabled = get_nullable(pb, 'enabled')
|
|
1994
|
+
cim.max_allowed_target_value = get_nullable(pb, 'maxAllowedTargetValue')
|
|
1995
|
+
cim.min_allowed_target_value = get_nullable(pb, 'minAllowedTargetValue')
|
|
1996
|
+
cim.rated_current = get_nullable(pb, 'ratedCurrent')
|
|
1997
|
+
network_service.resolve_or_defer_reference(resolver.rc_terminal(cim), pb.terminalMRID)
|
|
1998
|
+
for mrid in pb.regulatingCondEqMRIDs:
|
|
1999
|
+
network_service.resolve_or_defer_reference(resolver.rc_regulating_cond_eq(cim), mrid)
|
|
2000
|
+
cim.ct_primary = get_nullable(pb, 'ctPrimary')
|
|
2001
|
+
cim.min_target_deadband = get_nullable(pb, 'minTargetDeadband')
|
|
2002
|
+
|
|
2003
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
def rotating_machine_to_cim(pb: PBRotatingMachine, cim: RotatingMachine, network_service: NetworkService):
|
|
2007
|
+
cim.rated_power_factor = get_nullable(pb, 'ratedPowerFactor')
|
|
2008
|
+
cim.rated_s = get_nullable(pb, 'ratedS')
|
|
2009
|
+
cim.rated_u = get_nullable(pb, 'ratedU')
|
|
2010
|
+
cim.p = get_nullable(pb, 'p')
|
|
2011
|
+
cim.q = get_nullable(pb, 'q')
|
|
2012
|
+
|
|
2013
|
+
regulating_cond_eq_to_cim(pb.rce, cim, network_service)
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
@bind_to_cim
|
|
2017
|
+
@add_to_network_or_none
|
|
2018
|
+
def series_compensator_to_cim(pb: PBSeriesCompensator, network_service: NetworkService) -> Optional[SeriesCompensator]:
|
|
2019
|
+
# noinspection PyUnresolvedReferences
|
|
2020
|
+
cim = SeriesCompensator(
|
|
2021
|
+
mrid=pb.mrid(),
|
|
2022
|
+
r=get_nullable(pb, 'r'),
|
|
2023
|
+
r0=get_nullable(pb, 'r0'),
|
|
2024
|
+
x=get_nullable(pb, 'x'),
|
|
2025
|
+
x0=get_nullable(pb, 'x0'),
|
|
2026
|
+
varistor_rated_current=get_nullable(pb, 'varistorRatedCurrent'),
|
|
2027
|
+
varistor_voltage_threshold=get_nullable(pb, 'varistorVoltageThreshold'),
|
|
2028
|
+
)
|
|
2029
|
+
|
|
2030
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
2031
|
+
return cim
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
def shunt_compensator_to_cim(pb: PBShuntCompensator, cim: ShuntCompensator, network_service: NetworkService):
|
|
2035
|
+
# noinspection PyUnresolvedReferences
|
|
2036
|
+
network_service.resolve_or_defer_reference(resolver.shunt_compensator_info(cim), pb.asset_info_mrid())
|
|
2037
|
+
cim.sections = get_nullable(pb, 'sections')
|
|
2038
|
+
cim.grounded = get_nullable(pb, 'grounded')
|
|
2039
|
+
cim.nom_u = get_nullable(pb, 'nomU')
|
|
2040
|
+
cim.phase_connection = PhaseShuntConnectionKind(pb.phaseConnection)
|
|
2041
|
+
|
|
2042
|
+
regulating_cond_eq_to_cim(pb.rce, cim, network_service)
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
@bind_to_cim
|
|
2046
|
+
@add_to_network_or_none
|
|
2047
|
+
def static_var_compensator_to_cim(pb: PBStaticVarCompensator, network_service: NetworkService):
|
|
2048
|
+
"""
|
|
2049
|
+
Convert the protobuf :class:`PBStaticVarCompensator` into its CIM counterpart.
|
|
2050
|
+
:param pb: The protobuf :class:`PBStaticVarCompensator` to convert.
|
|
2051
|
+
:param network_service: The :class:`NetworkService` the converted CIM object will be added to.
|
|
2052
|
+
:return: The converted `pb` as a CIM :class:`StaticVarCompensator`
|
|
2053
|
+
"""
|
|
2054
|
+
# noinspection PyUnresolvedReferences
|
|
2055
|
+
cim = StaticVarCompensator(
|
|
2056
|
+
mrid=pb.mrid(),
|
|
2057
|
+
capacitive_rating=get_nullable(pb, 'capacitiveRating'),
|
|
2058
|
+
inductive_rating=get_nullable(pb, 'inductiveRating'),
|
|
2059
|
+
q=get_nullable(pb, 'q'),
|
|
2060
|
+
svc_control_mode=SVCControlMode(pb.svcControlMode),
|
|
2061
|
+
voltage_set_point=get_nullable(pb, 'voltageSetPoint'),
|
|
2062
|
+
)
|
|
2063
|
+
|
|
2064
|
+
regulating_cond_eq_to_cim(pb.rce, cim, network_service)
|
|
2065
|
+
return cim
|
|
2066
|
+
|
|
2067
|
+
|
|
2068
|
+
def switch_to_cim(pb: PBSwitch, cim: Switch, network_service: NetworkService):
|
|
2069
|
+
# noinspection PyUnresolvedReferences
|
|
2070
|
+
network_service.resolve_or_defer_reference(resolver.switch_info(cim), pb.asset_info_mrid())
|
|
2071
|
+
cim.rated_current = get_nullable(pb, 'ratedCurrent')
|
|
2072
|
+
cim.set_normally_open(pb.normalOpen)
|
|
2073
|
+
cim.set_open(pb.open)
|
|
2074
|
+
|
|
2075
|
+
conducting_equipment_to_cim(pb.ce, cim, network_service)
|
|
2076
|
+
|
|
2077
|
+
|
|
2078
|
+
@bind_to_cim
|
|
2079
|
+
@add_to_network_or_none
|
|
2080
|
+
def synchronous_machine_to_cim(pb: PBSynchronousMachine, network_service: NetworkService) -> Optional[SynchronousMachine]:
|
|
2081
|
+
# noinspection PyUnresolvedReferences
|
|
2082
|
+
cim = SynchronousMachine(
|
|
2083
|
+
mrid=pb.mrid(),
|
|
2084
|
+
base_q=get_nullable(pb, 'baseQ'),
|
|
2085
|
+
condenser_p=get_nullable(pb, 'condenserP'),
|
|
2086
|
+
earthing=get_nullable(pb, 'earthing'),
|
|
2087
|
+
earthing_star_point_r=get_nullable(pb, 'earthingStarPointR'),
|
|
2088
|
+
earthing_star_point_x=get_nullable(pb, 'earthingStarPointX'),
|
|
2089
|
+
ikk=get_nullable(pb, 'ikk'),
|
|
2090
|
+
max_q=get_nullable(pb, 'maxQ'),
|
|
2091
|
+
max_u=get_nullable(pb, 'maxU'),
|
|
2092
|
+
min_q=get_nullable(pb, 'minQ'),
|
|
2093
|
+
min_u=get_nullable(pb, 'minU'),
|
|
2094
|
+
mu=get_nullable(pb, 'mu'),
|
|
2095
|
+
r=get_nullable(pb, 'r'),
|
|
2096
|
+
r0=get_nullable(pb, 'r0'),
|
|
2097
|
+
r2=get_nullable(pb, 'r2'),
|
|
2098
|
+
sat_direct_subtrans_x=get_nullable(pb, 'satDirectSubtransX'),
|
|
2099
|
+
sat_direct_sync_x=get_nullable(pb, 'satDirectSyncX'),
|
|
2100
|
+
sat_direct_trans_x=get_nullable(pb, 'satDirectTransX'),
|
|
2101
|
+
x0=get_nullable(pb, 'x0'),
|
|
2102
|
+
x2=get_nullable(pb, 'x2'),
|
|
2103
|
+
type=SynchronousMachineKind(pb.type),
|
|
2104
|
+
operating_mode=SynchronousMachineKind(pb.operatingMode)
|
|
2105
|
+
)
|
|
2106
|
+
|
|
2107
|
+
for mrid in pb.reactiveCapabilityCurveMRIDs:
|
|
2108
|
+
network_service.resolve_or_defer_reference(resolver.reactive_capability_curve(cim), mrid)
|
|
2109
|
+
|
|
2110
|
+
rotating_machine_to_cim(pb.rm, cim, network_service)
|
|
2111
|
+
return cim
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
def tap_changer_to_cim(pb: PBTapChanger, cim: TapChanger, network_service: NetworkService):
|
|
2115
|
+
cim.high_step = get_nullable(pb, 'highStep')
|
|
2116
|
+
cim.step = get_nullable(pb, 'step')
|
|
2117
|
+
cim.neutral_step = get_nullable(pb, 'neutralStep')
|
|
2118
|
+
cim.normal_step = get_nullable(pb, 'normalStep')
|
|
2119
|
+
cim.low_step = get_nullable(pb, 'lowStep')
|
|
2120
|
+
cim.neutral_u = get_nullable(pb, 'neutralU')
|
|
2121
|
+
cim.control_enabled = get_nullable(pb, 'controlEnabled')
|
|
2122
|
+
network_service.resolve_or_defer_reference(resolver.tc_tap_changer_control(cim), pb.tapChangerControlMRID)
|
|
2123
|
+
|
|
2124
|
+
power_system_resource_to_cim(pb.psr, cim, network_service)
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
@bind_to_cim
|
|
2128
|
+
@add_to_network_or_none
|
|
2129
|
+
def tap_changer_control_to_cim(pb: PBTapChangerControl, network_service: NetworkService) -> Optional[TapChangerControl]:
|
|
2130
|
+
# noinspection PyUnresolvedReferences
|
|
2131
|
+
cim = TapChangerControl(
|
|
2132
|
+
mrid=pb.mrid(),
|
|
2133
|
+
limit_voltage=get_nullable(pb, 'limitVoltage'),
|
|
2134
|
+
line_drop_compensation=get_nullable(pb, "lineDropCompensation"),
|
|
2135
|
+
line_drop_r=get_nullable(pb, 'lineDropR'),
|
|
2136
|
+
line_drop_x=get_nullable(pb, 'lineDropX'),
|
|
2137
|
+
reverse_line_drop_r=get_nullable(pb, 'reverseLineDropR'),
|
|
2138
|
+
reverse_line_drop_x=get_nullable(pb, 'reverseLineDropX'),
|
|
2139
|
+
forward_ldc_blocking=get_nullable(pb, "forwardLDCBlocking"),
|
|
2140
|
+
time_delay=get_nullable(pb, 'timeDelay'),
|
|
2141
|
+
co_generation_enabled=get_nullable(pb, "coGenerationEnabled"),
|
|
2142
|
+
)
|
|
2143
|
+
|
|
2144
|
+
regulating_control_to_cim(pb.rc, cim, network_service)
|
|
2145
|
+
return cim
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
def transformer_end_to_cim(pb: PBTransformerEnd, cim: TransformerEnd, network_service: NetworkService):
|
|
2149
|
+
cim.end_number = pb.endNumber
|
|
2150
|
+
cim.grounded = get_nullable(pb, 'grounded')
|
|
2151
|
+
cim.r_ground = get_nullable(pb, 'rGround')
|
|
2152
|
+
cim.x_ground = get_nullable(pb, 'xGround')
|
|
2153
|
+
|
|
2154
|
+
network_service.resolve_or_defer_reference(resolver.te_terminal(cim), pb.terminalMRID)
|
|
2155
|
+
network_service.resolve_or_defer_reference(resolver.te_base_voltage(cim), pb.baseVoltageMRID)
|
|
2156
|
+
network_service.resolve_or_defer_reference(resolver.ratio_tap_changer(cim), pb.ratioTapChangerMRID)
|
|
2157
|
+
network_service.resolve_or_defer_reference(resolver.transformer_end_transformer_star_impedance(cim), pb.starImpedanceMRID)
|
|
2158
|
+
|
|
2159
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
2160
|
+
|
|
2161
|
+
|
|
2162
|
+
def transformer_end_rated_s_to_cim(pb: PBTransformerEndRatedS) -> Optional[TransformerEndRatedS]:
|
|
2163
|
+
return TransformerEndRatedS(cooling_type=TransformerCoolingType(pb.coolingType), rated_s=pb.ratedS)
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
@bind_to_cim
|
|
2167
|
+
@add_to_network_or_none
|
|
2168
|
+
def transformer_star_impedance_to_cim(pb: PBTransformerStarImpedance, network_service: NetworkService) -> Optional[TransformerStarImpedance]:
|
|
2169
|
+
# noinspection PyUnresolvedReferences
|
|
2170
|
+
cim = TransformerStarImpedance(
|
|
2171
|
+
mrid=pb.mrid(),
|
|
2172
|
+
r=get_nullable(pb, 'r'),
|
|
2173
|
+
r0=get_nullable(pb, 'r0'),
|
|
2174
|
+
x=get_nullable(pb, 'x'),
|
|
2175
|
+
x0=get_nullable(pb, 'x0'),
|
|
2176
|
+
)
|
|
2177
|
+
|
|
2178
|
+
network_service.resolve_or_defer_reference(resolver.star_impedance_transformer_end_info(cim), pb.transformerEndInfoMRID)
|
|
2179
|
+
|
|
2180
|
+
identified_object_to_cim(pb.io, cim, network_service)
|
|
2181
|
+
return cim
|
|
2182
|
+
|
|
2183
|
+
|
|
2184
|
+
###############################
|
|
2185
|
+
# IEC61970 InfIEC61970 Feeder #
|
|
2186
|
+
###############################
|
|
2187
|
+
|
|
2188
|
+
@bind_to_cim
|
|
2189
|
+
@add_to_network_or_none
|
|
2190
|
+
def circuit_to_cim(pb: PBCircuit, network_service: NetworkService) -> Optional[Circuit]:
|
|
2191
|
+
# noinspection PyUnresolvedReferences
|
|
2192
|
+
cim = Circuit(mrid=pb.mrid())
|
|
2193
|
+
|
|
2194
|
+
network_service.resolve_or_defer_reference(resolver.loop(cim), pb.loopMRID)
|
|
2195
|
+
for mrid in pb.endTerminalMRIDs:
|
|
2196
|
+
network_service.resolve_or_defer_reference(resolver.end_terminal(cim), mrid)
|
|
2197
|
+
for mrid in pb.endSubstationMRIDs:
|
|
2198
|
+
network_service.resolve_or_defer_reference(resolver.end_substation(cim), mrid)
|
|
2199
|
+
|
|
2200
|
+
line_to_cim(pb.l, cim, network_service)
|
|
2201
|
+
return cim
|