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,524 @@
|
|
|
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__ = ["PowerElectronicsConnection"]
|
|
9
|
+
|
|
10
|
+
from typing import Optional, List, Generator, TYPE_CHECKING
|
|
11
|
+
|
|
12
|
+
from zepben.ewb.model.cim.iec61970.base.wires.regulating_cond_eq import RegulatingCondEq
|
|
13
|
+
from zepben.ewb.util import ngen, nlen, get_by_mrid, safe_remove, require
|
|
14
|
+
|
|
15
|
+
if TYPE_CHECKING:
|
|
16
|
+
from zepben.ewb.model.cim.iec61970.base.generation.production.power_electronics_unit import PowerElectronicsUnit
|
|
17
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection_phase import PowerElectronicsConnectionPhase
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PowerElectronicsConnection(RegulatingCondEq):
|
|
21
|
+
"""
|
|
22
|
+
A connection to the AC network for energy production or consumption that uses power electronics rather than rotating machines.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
max_i_fault: Optional[int] = None
|
|
26
|
+
"""Maximum fault current this device will contribute, in per-unit of rated current, before the converter protection will trip or bypass."""
|
|
27
|
+
|
|
28
|
+
p: Optional[float] = None
|
|
29
|
+
"""Active power injection. Load sign convention is used, i.e. positive sign means flow out from a node. Starting value for a steady state solution."""
|
|
30
|
+
|
|
31
|
+
q: Optional[float] = None
|
|
32
|
+
"""Reactive power injection. Load sign convention is used, i.e. positive sign means flow out from a node. Starting value for a steady state solution."""
|
|
33
|
+
|
|
34
|
+
max_q: Optional[float] = None
|
|
35
|
+
"""Maximum reactive power limit. This is the maximum (nameplate) limit for the unit."""
|
|
36
|
+
|
|
37
|
+
min_q: Optional[float] = None
|
|
38
|
+
"""Minimum reactive power limit for the unit. This is the minimum (nameplate) limit for the unit."""
|
|
39
|
+
|
|
40
|
+
rated_s: Optional[int] = None
|
|
41
|
+
"""Nameplate apparent power rating for the unit. The attribute shall have a positive value."""
|
|
42
|
+
|
|
43
|
+
rated_u: Optional[int] = None
|
|
44
|
+
"""Rated voltage (nameplate data, Ur in IEC 60909-0). It is primarily used for short circuit data exchange according to IEC 60909.
|
|
45
|
+
The attribute shall be a positive value."""
|
|
46
|
+
|
|
47
|
+
inverter_standard: Optional[str] = None
|
|
48
|
+
"""The standard this inverter follows, such as AS4777.2:2020"""
|
|
49
|
+
|
|
50
|
+
sustain_op_overvolt_limit: Optional[int] = None
|
|
51
|
+
"""Indicates the sustained operation overvoltage limit in volts, when the average voltage for a 10-minute period exceeds the V¬nom-max."""
|
|
52
|
+
|
|
53
|
+
stop_at_over_freq: Optional[float] = None
|
|
54
|
+
"""Over frequency (stop) in Hz. Permitted range is between 51 and 52 (inclusive)"""
|
|
55
|
+
|
|
56
|
+
stop_at_under_freq: Optional[float] = None
|
|
57
|
+
"""Under frequency (stop) in Hz Permitted range is between 47 and 49 (inclusive)"""
|
|
58
|
+
|
|
59
|
+
inv_volt_watt_resp_mode: Optional[bool] = None
|
|
60
|
+
"""
|
|
61
|
+
Volt-Watt response mode allows an inverter to reduce is real power output depending on the measured voltage.
|
|
62
|
+
This mode is further described in AS4777.2:2015, section 6.3.2.2. True implies the mode is enabled.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
_inv_watt_resp_v1: Optional[int] = None
|
|
66
|
+
"""Set point 1 in volts for inverter Volt-Watt response mode. Permitted range is between 200 and 300 (inclusive)."""
|
|
67
|
+
|
|
68
|
+
_inv_watt_resp_v2: Optional[int] = None
|
|
69
|
+
"""Set point 2 in volts for inverter Volt-Watt response mode. Permitted range is between 216 and 230 (inclusive)."""
|
|
70
|
+
|
|
71
|
+
_inv_watt_resp_v3: Optional[int] = None
|
|
72
|
+
"""Set point 3 in volts for inverter Volt-Watt response mode. Permitted range is between 235 and 255 (inclusive)."""
|
|
73
|
+
|
|
74
|
+
_inv_watt_resp_v4: Optional[int] = None
|
|
75
|
+
"""Set point 4 in volts for inverter Volt-Watt response mode. Permitted range is between 244 and 265 (inclusive)."""
|
|
76
|
+
|
|
77
|
+
_inv_watt_resp_p_at_v1: Optional[float] = None
|
|
78
|
+
"""Power output set point 1 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive)."""
|
|
79
|
+
|
|
80
|
+
_inv_watt_resp_p_at_v2: Optional[float] = None
|
|
81
|
+
"""Power output set point 2 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive)."""
|
|
82
|
+
|
|
83
|
+
_inv_watt_resp_p_at_v3: Optional[float] = None
|
|
84
|
+
"""Power output set point 3 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive)."""
|
|
85
|
+
|
|
86
|
+
_inv_watt_resp_p_at_v4: Optional[float] = None
|
|
87
|
+
"""Power output set point 4 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 0.2 (inclusive)."""
|
|
88
|
+
|
|
89
|
+
inv_volt_var_resp_mode: Optional[bool] = None
|
|
90
|
+
"""
|
|
91
|
+
Volt-VAr response mode allows an inverter to consume (sink) or produce (source) reactive power depending on the measured voltage.
|
|
92
|
+
This mode is further described in AS4777.2:2015, section 6.3.2.3. True implies the mode is enabled.
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
_inv_var_resp_v1: Optional[int] = None
|
|
96
|
+
"""Set point 1 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive)."""
|
|
97
|
+
|
|
98
|
+
_inv_var_resp_v2: Optional[int] = None
|
|
99
|
+
"""Set point 2 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive)."""
|
|
100
|
+
|
|
101
|
+
_inv_var_resp_v3: Optional[int] = None
|
|
102
|
+
"""Set point 3 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive)."""
|
|
103
|
+
|
|
104
|
+
_inv_var_resp_v4: Optional[int] = None
|
|
105
|
+
"""Set point 4 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive)."""
|
|
106
|
+
|
|
107
|
+
_inv_var_resp_q_at_v1: Optional[float] = None
|
|
108
|
+
"""Power output set point 1 as a percentage of rated output for inverter Volt-VAr response mode. Permitted range is between 0 and 0.6 (inclusive)."""
|
|
109
|
+
|
|
110
|
+
_inv_var_resp_q_at_v2: Optional[float] = None
|
|
111
|
+
"""
|
|
112
|
+
Power output set point 2 as a percentage of rated output for inverter Volt-VAr response mode.
|
|
113
|
+
Permitted range is between -1 and 1 (inclusive) with a negative number referring to a sink.
|
|
114
|
+
"""
|
|
115
|
+
|
|
116
|
+
_inv_var_resp_q_at_v3: Optional[float] = None
|
|
117
|
+
"""
|
|
118
|
+
Power output set point 3 as a percentage of rated output for inverter Volt-VAr response mode.
|
|
119
|
+
Permitted range is between -1 and 1 (inclusive) with a negative number referring to a sink.
|
|
120
|
+
"""
|
|
121
|
+
|
|
122
|
+
_inv_var_resp_q_at_v4: Optional[float] = None
|
|
123
|
+
"""
|
|
124
|
+
Power output set point 4 as a percentage of rated output for inverter Volt-VAr response mode.
|
|
125
|
+
Permitted range is between -0.6 and 0 (inclusive) with a negative number referring to a sink.
|
|
126
|
+
"""
|
|
127
|
+
|
|
128
|
+
inv_reactive_power_mode: Optional[bool] = None
|
|
129
|
+
"""If true, enables Static Reactive Power mode on the inverter. Note: It must be false if invVoltVarRespMode or InvVoltWattRespMode is true."""
|
|
130
|
+
|
|
131
|
+
inv_fix_reactive_power: Optional[float] = None
|
|
132
|
+
"""
|
|
133
|
+
Static Reactive Power, specified in a percentage output of the system.
|
|
134
|
+
Permitted range is between -1.0 and 1.0 (inclusive), with a negative sign referring to “sink”.
|
|
135
|
+
"""
|
|
136
|
+
|
|
137
|
+
_power_electronics_units: Optional[List[PowerElectronicsUnit]] = None
|
|
138
|
+
"""An AC network connection may have several power electronics units connecting through it."""
|
|
139
|
+
|
|
140
|
+
_power_electronics_connection_phases: Optional[List[PowerElectronicsConnectionPhase]] = None
|
|
141
|
+
"""The individual units models for the power electronics connection."""
|
|
142
|
+
|
|
143
|
+
def __init__(self, power_electronics_units: List[PowerElectronicsUnit] = None,
|
|
144
|
+
power_electronics_connection_phases: List[PowerElectronicsConnectionPhase] = None,
|
|
145
|
+
inv_watt_resp_v1=None,
|
|
146
|
+
inv_watt_resp_v2=None,
|
|
147
|
+
inv_watt_resp_v3=None,
|
|
148
|
+
inv_watt_resp_v4=None,
|
|
149
|
+
inv_watt_resp_p_at_v1=None,
|
|
150
|
+
inv_watt_resp_p_at_v2=None,
|
|
151
|
+
inv_watt_resp_p_at_v3=None,
|
|
152
|
+
inv_watt_resp_p_at_v4=None,
|
|
153
|
+
inv_var_resp_v1=None,
|
|
154
|
+
inv_var_resp_v2=None,
|
|
155
|
+
inv_var_resp_v3=None,
|
|
156
|
+
inv_var_resp_v4=None,
|
|
157
|
+
inv_var_resp_q_at_v1=None,
|
|
158
|
+
inv_var_resp_q_at_v2=None,
|
|
159
|
+
inv_var_resp_q_at_v3=None,
|
|
160
|
+
inv_var_resp_q_at_v4=None,
|
|
161
|
+
**kwargs):
|
|
162
|
+
super(PowerElectronicsConnection, self).__init__(**kwargs)
|
|
163
|
+
if power_electronics_units:
|
|
164
|
+
for unit in power_electronics_units:
|
|
165
|
+
self.add_unit(unit)
|
|
166
|
+
|
|
167
|
+
if power_electronics_connection_phases:
|
|
168
|
+
for phase in power_electronics_connection_phases:
|
|
169
|
+
self.add_phase(phase)
|
|
170
|
+
|
|
171
|
+
if inv_watt_resp_v1 is not None:
|
|
172
|
+
self.inv_watt_resp_v1 = inv_watt_resp_v1
|
|
173
|
+
|
|
174
|
+
if inv_watt_resp_v2 is not None:
|
|
175
|
+
self.inv_watt_resp_v2 = inv_watt_resp_v2
|
|
176
|
+
|
|
177
|
+
if inv_watt_resp_v3 is not None:
|
|
178
|
+
self.inv_watt_resp_v3 = inv_watt_resp_v3
|
|
179
|
+
|
|
180
|
+
if inv_watt_resp_v4 is not None:
|
|
181
|
+
self.inv_watt_resp_v4 = inv_watt_resp_v4
|
|
182
|
+
|
|
183
|
+
if inv_watt_resp_p_at_v1 is not None:
|
|
184
|
+
self.inv_watt_resp_p_at_v1 = inv_watt_resp_p_at_v1
|
|
185
|
+
|
|
186
|
+
if inv_watt_resp_p_at_v2 is not None:
|
|
187
|
+
self.inv_watt_resp_p_at_v2 = inv_watt_resp_p_at_v2
|
|
188
|
+
|
|
189
|
+
if inv_watt_resp_p_at_v3 is not None:
|
|
190
|
+
self.inv_watt_resp_p_at_v3 = inv_watt_resp_p_at_v3
|
|
191
|
+
|
|
192
|
+
if inv_watt_resp_p_at_v4 is not None:
|
|
193
|
+
self.inv_watt_resp_p_at_v4 = inv_watt_resp_p_at_v4
|
|
194
|
+
|
|
195
|
+
if inv_var_resp_v1 is not None:
|
|
196
|
+
self.inv_var_resp_v1 = inv_var_resp_v1
|
|
197
|
+
|
|
198
|
+
if inv_var_resp_v2 is not None:
|
|
199
|
+
self.inv_var_resp_v2 = inv_var_resp_v2
|
|
200
|
+
|
|
201
|
+
if inv_var_resp_v3 is not None:
|
|
202
|
+
self.inv_var_resp_v3 = inv_var_resp_v3
|
|
203
|
+
|
|
204
|
+
if inv_var_resp_v4 is not None:
|
|
205
|
+
self.inv_var_resp_v4 = inv_var_resp_v4
|
|
206
|
+
|
|
207
|
+
if inv_var_resp_q_at_v1 is not None:
|
|
208
|
+
self.inv_var_resp_q_at_v1 = inv_var_resp_q_at_v1
|
|
209
|
+
|
|
210
|
+
if inv_var_resp_q_at_v2 is not None:
|
|
211
|
+
self.inv_var_resp_q_at_v2 = inv_var_resp_q_at_v2
|
|
212
|
+
|
|
213
|
+
if inv_var_resp_q_at_v3 is not None:
|
|
214
|
+
self.inv_var_resp_q_at_v3 = inv_var_resp_q_at_v3
|
|
215
|
+
|
|
216
|
+
if inv_var_resp_q_at_v4 is not None:
|
|
217
|
+
self.inv_var_resp_q_at_v4 = inv_var_resp_q_at_v4
|
|
218
|
+
|
|
219
|
+
@property
|
|
220
|
+
def inv_watt_resp_v1(self):
|
|
221
|
+
"""
|
|
222
|
+
Set point 1 in volts for inverter Volt-Watt response mode. Permitted range is between 200 and 300 (inclusive).
|
|
223
|
+
"""
|
|
224
|
+
return self._inv_watt_resp_v1
|
|
225
|
+
|
|
226
|
+
@inv_watt_resp_v1.setter
|
|
227
|
+
def inv_watt_resp_v1(self, value):
|
|
228
|
+
require(value is None or 200 <= value <= 300, lambda: f"inv_watt_resp_v1 [{value}] must be between 200 and 300.")
|
|
229
|
+
self._inv_watt_resp_v1 = value
|
|
230
|
+
|
|
231
|
+
@property
|
|
232
|
+
def inv_watt_resp_v2(self):
|
|
233
|
+
"""
|
|
234
|
+
Set point 2 in volts for inverter Volt-Watt response mode. Permitted range is between 216 and 230 (inclusive).
|
|
235
|
+
"""
|
|
236
|
+
return self._inv_watt_resp_v2
|
|
237
|
+
|
|
238
|
+
@inv_watt_resp_v2.setter
|
|
239
|
+
def inv_watt_resp_v2(self, value):
|
|
240
|
+
require(value is None or 216 <= value <= 230, lambda: f"inv_watt_resp_v2 [{value}] must be between 216 and 230.")
|
|
241
|
+
self._inv_watt_resp_v2 = value
|
|
242
|
+
|
|
243
|
+
@property
|
|
244
|
+
def inv_watt_resp_v3(self):
|
|
245
|
+
"""
|
|
246
|
+
Set point 3 in volts for inverter Volt-Watt response mode. Permitted range is between 235 and 255 (inclusive).
|
|
247
|
+
"""
|
|
248
|
+
return self._inv_watt_resp_v3
|
|
249
|
+
|
|
250
|
+
@inv_watt_resp_v3.setter
|
|
251
|
+
def inv_watt_resp_v3(self, value):
|
|
252
|
+
require(value is None or 235 <= value <= 255, lambda: f"inv_watt_resp_v3 [{value}] must be between 235 and 255.")
|
|
253
|
+
self._inv_watt_resp_v3 = value
|
|
254
|
+
|
|
255
|
+
@property
|
|
256
|
+
def inv_watt_resp_v4(self):
|
|
257
|
+
"""
|
|
258
|
+
Set point 4 in volts for inverter Volt-Watt response mode. Permitted range is between 244 and 265 (inclusive).
|
|
259
|
+
"""
|
|
260
|
+
return self._inv_watt_resp_v4
|
|
261
|
+
|
|
262
|
+
@inv_watt_resp_v4.setter
|
|
263
|
+
def inv_watt_resp_v4(self, value):
|
|
264
|
+
require(value is None or 244 <= value <= 265, lambda: f"inv_watt_resp_v4 [{value}] must be between 244 and 265.")
|
|
265
|
+
self._inv_watt_resp_v4 = value
|
|
266
|
+
|
|
267
|
+
@property
|
|
268
|
+
def inv_watt_resp_p_at_v1(self):
|
|
269
|
+
"""
|
|
270
|
+
Power output set point 1 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive).
|
|
271
|
+
"""
|
|
272
|
+
return self._inv_watt_resp_p_at_v1
|
|
273
|
+
|
|
274
|
+
@inv_watt_resp_p_at_v1.setter
|
|
275
|
+
def inv_watt_resp_p_at_v1(self, value):
|
|
276
|
+
require(value is None or 0.0 <= value <= 1.0, lambda: f"inv_watt_resp_p_at_v1 [{value}] must be between 0.0 and 1.0.")
|
|
277
|
+
self._inv_watt_resp_p_at_v1 = value
|
|
278
|
+
|
|
279
|
+
@property
|
|
280
|
+
def inv_watt_resp_p_at_v2(self):
|
|
281
|
+
"""
|
|
282
|
+
Power output set point 2 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive).
|
|
283
|
+
"""
|
|
284
|
+
return self._inv_watt_resp_p_at_v2
|
|
285
|
+
|
|
286
|
+
@inv_watt_resp_p_at_v2.setter
|
|
287
|
+
def inv_watt_resp_p_at_v2(self, value):
|
|
288
|
+
require(value is None or 0.0 <= value <= 1.0, lambda: f"inv_watt_resp_p_at_v2 [{value}] must be between 0.0 and 1.0.")
|
|
289
|
+
self._inv_watt_resp_p_at_v2 = value
|
|
290
|
+
|
|
291
|
+
@property
|
|
292
|
+
def inv_watt_resp_p_at_v3(self):
|
|
293
|
+
"""
|
|
294
|
+
Power output set point 3 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 1 (inclusive).
|
|
295
|
+
"""
|
|
296
|
+
return self._inv_watt_resp_p_at_v3
|
|
297
|
+
|
|
298
|
+
@inv_watt_resp_p_at_v3.setter
|
|
299
|
+
def inv_watt_resp_p_at_v3(self, value):
|
|
300
|
+
require(value is None or 0.0 <= value <= 1.0, lambda: f"inv_watt_resp_p_at_v3 [{value}] must be between 0.0 and 1.0.")
|
|
301
|
+
self._inv_watt_resp_p_at_v3 = value
|
|
302
|
+
|
|
303
|
+
@property
|
|
304
|
+
def inv_watt_resp_p_at_v4(self):
|
|
305
|
+
"""
|
|
306
|
+
Power output set point 4 as a percentage of rated output for inverter Volt-Watt response mode. Permitted range is between 0 and 0.2 (inclusive).
|
|
307
|
+
"""
|
|
308
|
+
return self._inv_watt_resp_p_at_v4
|
|
309
|
+
|
|
310
|
+
@inv_watt_resp_p_at_v4.setter
|
|
311
|
+
def inv_watt_resp_p_at_v4(self, value):
|
|
312
|
+
require(value is None or 0.0 <= value <= 0.2, lambda: f"inv_watt_resp_p_at_v4 [{value}] must be between 0.0 and 0.2.")
|
|
313
|
+
self._inv_watt_resp_p_at_v4 = value
|
|
314
|
+
|
|
315
|
+
@property
|
|
316
|
+
def inv_var_resp_v1(self):
|
|
317
|
+
"""
|
|
318
|
+
Set point 1 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive).
|
|
319
|
+
"""
|
|
320
|
+
return self._inv_var_resp_v1
|
|
321
|
+
|
|
322
|
+
@inv_var_resp_v1.setter
|
|
323
|
+
def inv_var_resp_v1(self, value):
|
|
324
|
+
require(value is None or 200 <= value <= 300, lambda: f"inv_var_resp_v1 [{value}] must be between 200 and 300.")
|
|
325
|
+
self._inv_var_resp_v1 = value
|
|
326
|
+
|
|
327
|
+
@property
|
|
328
|
+
def inv_var_resp_v2(self):
|
|
329
|
+
"""
|
|
330
|
+
Set point 2 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive).
|
|
331
|
+
"""
|
|
332
|
+
return self._inv_var_resp_v2
|
|
333
|
+
|
|
334
|
+
@inv_var_resp_v2.setter
|
|
335
|
+
def inv_var_resp_v2(self, value):
|
|
336
|
+
require(value is None or 200 <= value <= 300, lambda: f"inv_var_resp_v2 [{value}] must be between 200 and 300.")
|
|
337
|
+
self._inv_var_resp_v2 = value
|
|
338
|
+
|
|
339
|
+
@property
|
|
340
|
+
def inv_var_resp_v3(self):
|
|
341
|
+
"""
|
|
342
|
+
Set point 3 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive).
|
|
343
|
+
"""
|
|
344
|
+
return self._inv_var_resp_v3
|
|
345
|
+
|
|
346
|
+
@inv_var_resp_v3.setter
|
|
347
|
+
def inv_var_resp_v3(self, value):
|
|
348
|
+
require(value is None or 200 <= value <= 300, lambda: f"inv_var_resp_v3 [{value}] must be between 200 and 300.")
|
|
349
|
+
self._inv_var_resp_v3 = value
|
|
350
|
+
|
|
351
|
+
@property
|
|
352
|
+
def inv_var_resp_v4(self):
|
|
353
|
+
"""
|
|
354
|
+
Set point 4 in volts for inverter Volt-VAr response mode. Permitted range is between 200 and 300 (inclusive).
|
|
355
|
+
"""
|
|
356
|
+
return self._inv_var_resp_v4
|
|
357
|
+
|
|
358
|
+
@inv_var_resp_v4.setter
|
|
359
|
+
def inv_var_resp_v4(self, value):
|
|
360
|
+
require(value is None or 200 <= value <= 300, lambda: f"inv_var_resp_v4 [{value}] must be between 200 and 300.")
|
|
361
|
+
self._inv_var_resp_v4 = value
|
|
362
|
+
|
|
363
|
+
@property
|
|
364
|
+
def inv_var_resp_q_at_v1(self):
|
|
365
|
+
"""
|
|
366
|
+
Power output set point 1 as a percentage of rated output for inverter Volt-VAr response mode. Permitted range is between 0 and 0.6 (inclusive).
|
|
367
|
+
"""
|
|
368
|
+
return self._inv_var_resp_q_at_v1
|
|
369
|
+
|
|
370
|
+
@inv_var_resp_q_at_v1.setter
|
|
371
|
+
def inv_var_resp_q_at_v1(self, value):
|
|
372
|
+
require(value is None or 0.0 <= value <= 0.6, lambda: f"inv_var_resp_q_at_v1 [{value}] must be between 0.0 and 0.6.")
|
|
373
|
+
self._inv_var_resp_q_at_v1 = value
|
|
374
|
+
|
|
375
|
+
@property
|
|
376
|
+
def inv_var_resp_q_at_v2(self):
|
|
377
|
+
"""
|
|
378
|
+
Power output set point 2 as a percentage of rated output for inverter Volt-VAr response mode. \
|
|
379
|
+
Permitted range is between -1 and 1 (inclusive) with a negative number referring to a sink.
|
|
380
|
+
"""
|
|
381
|
+
return self._inv_var_resp_q_at_v2
|
|
382
|
+
|
|
383
|
+
@inv_var_resp_q_at_v2.setter
|
|
384
|
+
def inv_var_resp_q_at_v2(self, value):
|
|
385
|
+
require(value is None or -1.0 <= value <= 1.0, lambda: f"inv_var_resp_q_at_v2 [{value}] must be between -1.0 and 1.0.")
|
|
386
|
+
self._inv_var_resp_q_at_v2 = value
|
|
387
|
+
|
|
388
|
+
@property
|
|
389
|
+
def inv_var_resp_q_at_v3(self):
|
|
390
|
+
"""
|
|
391
|
+
Power output set point 3 as a percentage of rated output for inverter Volt-VAr response mode. \
|
|
392
|
+
Permitted range is between -1 and 1 (inclusive) with a negative number referring to a sink.
|
|
393
|
+
"""
|
|
394
|
+
return self._inv_var_resp_q_at_v3
|
|
395
|
+
|
|
396
|
+
@inv_var_resp_q_at_v3.setter
|
|
397
|
+
def inv_var_resp_q_at_v3(self, value):
|
|
398
|
+
require(value is None or -1.0 <= value <= 1.0, lambda: f"inv_var_resp_q_at_v3 [{value}] must be between -1.0 and 1.0.")
|
|
399
|
+
self._inv_var_resp_q_at_v3 = value
|
|
400
|
+
|
|
401
|
+
@property
|
|
402
|
+
def inv_var_resp_q_at_v4(self):
|
|
403
|
+
"""
|
|
404
|
+
Power output set point 4 as a percentage of rated output for inverter Volt-VAr response mode. \
|
|
405
|
+
Permitted range is between -0.6 and 0 (inclusive) with a negative number referring to a sink.
|
|
406
|
+
"""
|
|
407
|
+
return self._inv_var_resp_q_at_v4
|
|
408
|
+
|
|
409
|
+
@inv_var_resp_q_at_v4.setter
|
|
410
|
+
def inv_var_resp_q_at_v4(self, value):
|
|
411
|
+
require(value is None or -0.6 <= value <= 0.0, lambda: f"inv_var_resp_q_at_v4 [{value}] must be between -0.6 and 0.0.")
|
|
412
|
+
self._inv_var_resp_q_at_v4 = value
|
|
413
|
+
|
|
414
|
+
@property
|
|
415
|
+
def units(self) -> Generator[PowerElectronicsUnit, None, None]:
|
|
416
|
+
"""
|
|
417
|
+
The `PowerElectronicsUnit`s for this `PowerElectronicsConnection`.
|
|
418
|
+
"""
|
|
419
|
+
return ngen(self._power_electronics_units)
|
|
420
|
+
|
|
421
|
+
@property
|
|
422
|
+
def phases(self) -> Generator[PowerElectronicsConnectionPhase, None, None]:
|
|
423
|
+
"""
|
|
424
|
+
The `PowerElectronicsConnectionPhase`s for this `PowerElectronicsConnection`.
|
|
425
|
+
"""
|
|
426
|
+
return ngen(self._power_electronics_connection_phases)
|
|
427
|
+
|
|
428
|
+
def num_units(self):
|
|
429
|
+
"""Return the number of `PowerElectronicsUnit`s associated with this `PowerElectronicsConnection`"""
|
|
430
|
+
return nlen(self._power_electronics_units)
|
|
431
|
+
|
|
432
|
+
def get_unit(self, mrid: str) -> PowerElectronicsUnit:
|
|
433
|
+
"""
|
|
434
|
+
Get the `PowerElectronicsUnit` for this
|
|
435
|
+
`PowerElectronicsConnection` identified by `mrid`
|
|
436
|
+
|
|
437
|
+
`mrid` the mRID of the required `PowerElectronicsUnit`
|
|
438
|
+
Returns The `PowerElectronicsUnit` with the specified `mrid`
|
|
439
|
+
if it exists
|
|
440
|
+
|
|
441
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
442
|
+
"""
|
|
443
|
+
return get_by_mrid(self._power_electronics_units, mrid)
|
|
444
|
+
|
|
445
|
+
def add_unit(self, unit: PowerElectronicsUnit) -> PowerElectronicsConnection:
|
|
446
|
+
"""
|
|
447
|
+
Associate an `PowerElectronicsUnit` with this
|
|
448
|
+
`PowerElectronicsConnection`
|
|
449
|
+
|
|
450
|
+
`unit` the `PowerElectronicsUnit` to associate with this `PowerElectronicsConnection`.
|
|
451
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
452
|
+
Raises `ValueError` if another `PowerElectronicsUnit` with the same `mrid` already exists for this `PowerElectronicsConnection`.
|
|
453
|
+
"""
|
|
454
|
+
if self._validate_reference(unit, self.get_unit, "A PowerElectronicsUnit"):
|
|
455
|
+
return self
|
|
456
|
+
self._power_electronics_units = list() if self._power_electronics_units is None else self._power_electronics_units
|
|
457
|
+
self._power_electronics_units.append(unit)
|
|
458
|
+
return self
|
|
459
|
+
|
|
460
|
+
def remove_unit(self, unit: PowerElectronicsUnit) -> PowerElectronicsConnection:
|
|
461
|
+
"""
|
|
462
|
+
Disassociate `unit` from this `PowerElectronicsConnection`
|
|
463
|
+
|
|
464
|
+
`unit` the `PowerElectronicsUnit` to disassociate from this `PowerElectronicsConnection`.
|
|
465
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
466
|
+
Raises `ValueError` if `unit` was not associated with this `PowerElectronicsConnection`.
|
|
467
|
+
"""
|
|
468
|
+
self._power_electronics_units = safe_remove(self._power_electronics_units, unit)
|
|
469
|
+
return self
|
|
470
|
+
|
|
471
|
+
def clear_units(self) -> PowerElectronicsConnection:
|
|
472
|
+
"""
|
|
473
|
+
Clear all units.
|
|
474
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
475
|
+
"""
|
|
476
|
+
self._power_electronics_units = None
|
|
477
|
+
return self
|
|
478
|
+
|
|
479
|
+
def num_phases(self):
|
|
480
|
+
"""Return the number of `PowerElectronicsConnectionPhase`s associated with this `PowerElectronicsConnection`"""
|
|
481
|
+
return nlen(self._power_electronics_connection_phases)
|
|
482
|
+
|
|
483
|
+
def get_phase(self, mrid: str) -> PowerElectronicsConnectionPhase:
|
|
484
|
+
"""
|
|
485
|
+
Get the `PowerElectronicsConnectionPhase` for this `PowerElectronicsConnection` identified by `mrid`
|
|
486
|
+
|
|
487
|
+
`mrid` the mRID of the required `PowerElectronicsConnectionPhase`
|
|
488
|
+
Returns The `PowerElectronicsConnectionPhase` with the specified `mrid` if it exists
|
|
489
|
+
Raises `KeyError` if `mrid` wasn't present.
|
|
490
|
+
"""
|
|
491
|
+
return get_by_mrid(self._power_electronics_connection_phases, mrid)
|
|
492
|
+
|
|
493
|
+
def add_phase(self, phase: PowerElectronicsConnectionPhase) -> PowerElectronicsConnection:
|
|
494
|
+
"""
|
|
495
|
+
Associate a `PowerElectronicsConnectionPhase` with this `PowerElectronicsConnection`
|
|
496
|
+
|
|
497
|
+
`phase` the `PowerElectronicsConnectionPhase` to associate with this `PowerElectronicsConnection`.
|
|
498
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
499
|
+
Raises `ValueError` if another `PowerElectronicsConnectionPhase` with the same `mrid` already exists for this `PowerElectronicsConnection`.
|
|
500
|
+
"""
|
|
501
|
+
if self._validate_reference(phase, self.get_phase, "A PowerElectronicsConnectionPhase"):
|
|
502
|
+
return self
|
|
503
|
+
self._power_electronics_connection_phases = list() if self._power_electronics_connection_phases is None else self._power_electronics_connection_phases
|
|
504
|
+
self._power_electronics_connection_phases.append(phase)
|
|
505
|
+
return self
|
|
506
|
+
|
|
507
|
+
def remove_phase(self, phase: PowerElectronicsConnectionPhase) -> PowerElectronicsConnection:
|
|
508
|
+
"""
|
|
509
|
+
Disassociate `phase` from this `PowerElectronicsConnection`
|
|
510
|
+
|
|
511
|
+
`phase` the `PowerElectronicsConnectionPhase` to disassociate from this `PowerElectronicsConnection`.
|
|
512
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
513
|
+
Raises `ValueError` if `phase` was not associated with this `PowerElectronicsConnection`.
|
|
514
|
+
"""
|
|
515
|
+
self._power_electronics_connection_phases = safe_remove(self._power_electronics_connection_phases, phase)
|
|
516
|
+
return self
|
|
517
|
+
|
|
518
|
+
def clear_phases(self) -> PowerElectronicsConnection:
|
|
519
|
+
"""
|
|
520
|
+
Clear all phases.
|
|
521
|
+
Returns A reference to this `PowerElectronicsConnection` to allow fluent use.
|
|
522
|
+
"""
|
|
523
|
+
self._power_electronics_connection_phases = None
|
|
524
|
+
return self
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Copyright 2025 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
|
+
__all__ = ["PowerElectronicsConnectionPhase"]
|
|
7
|
+
|
|
8
|
+
from typing import Optional, TYPE_CHECKING
|
|
9
|
+
|
|
10
|
+
from zepben.ewb.model.cim.iec61970.base.core.power_system_resource import PowerSystemResource
|
|
11
|
+
from zepben.ewb.model.cim.iec61970.base.wires.single_phase_kind import SinglePhaseKind
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from zepben.ewb.model.cim.iec61970.base.wires.power_electronics_connection import PowerElectronicsConnection
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PowerElectronicsConnectionPhase(PowerSystemResource):
|
|
18
|
+
"""A single phase of a power electronics connection."""
|
|
19
|
+
|
|
20
|
+
power_electronics_connection: Optional['PowerElectronicsConnection'] = None
|
|
21
|
+
"""The power electronics connection to which the phase belongs."""
|
|
22
|
+
|
|
23
|
+
p: Optional[float] = None
|
|
24
|
+
"""Active power injection. Load sign convention is used, i.e. positive sign means flow into the equipment from the network."""
|
|
25
|
+
|
|
26
|
+
phase: SinglePhaseKind = SinglePhaseKind.X
|
|
27
|
+
"""
|
|
28
|
+
Phase of this energy producer component. If the energy producer is wye connected, the connection is from the indicated phase to the central
|
|
29
|
+
ground or neutral point. If the energy producer is delta connected, the phase indicates an energy producer connected from the indicated phase to the next
|
|
30
|
+
logical non-neutral phase.
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
q: Optional[float] = None
|
|
34
|
+
"""Reactive power injection. Load sign convention is used, i.e. positive sign means flow into the equipment from the network."""
|