예제 #1
0
def basevoltage_to_cim(
        pb: PBBaseVoltage,
        network_service: NetworkService) -> Optional[BaseVoltage]:
    cim = BaseVoltage(mrid=pb.mrid())
    cim.nominal_voltage = pb.nominalVoltage
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #2
0
def asset_to_cim(pb: PBAsset, cim: Asset, network_service: NetworkService):
    network_service.resolve_or_defer_reference(resolver.at_location(cim),
                                               pb.locationMRID)
    for mrid in pb.organisationRoleMRIDs:
        network_service.resolve_or_defer_reference(
            resolver.organisation_roles(cim), mrid)
    identifiedobject_to_cim(pb.io, cim, network_service)
예제 #3
0
def measurement_to_cim(pb: PBMeasurement, cim: Measurement,
                       service: NetworkService):
    cim.power_system_resource_mrid = pb.powerSystemResourceMRID
    cim.terminal_mrid = pb.terminalMRID
    cim.phases = phasecode_by_id(pb.phases)
    cim.unitSymbol = unit_symbol_from_id(pb.unitSymbol)
    service.resolve_or_defer_reference(resolver.remote_source(cim),
                                       pb.remoteSourceMRID)
    identifiedobject_to_cim(pb.io, cim, service)
예제 #4
0
def geographicalregion_to_cim(
        pb: PBGeographicalRegion,
        network_service: NetworkService) -> Optional[GeographicalRegion]:
    cim = GeographicalRegion(mrid=pb.mrid())
    for mrid in pb.subGeographicalRegionMRIDs:
        network_service.resolve_or_defer_reference(
            resolver.sub_geographical_regions(cim), mrid)
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #5
0
def connectivitynode_to_cim(
        pb: PBConnectivityNode,
        network_service: NetworkService) -> Optional[ConnectivityNode]:
    cim = ConnectivityNode(mrid=pb.mrid())
    for mrid in pb.terminalMRIDs:
        network_service.resolve_or_defer_reference(resolver.cn_terminals(cim),
                                                   mrid)
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #6
0
def location_to_cim(pb: PBLocation,
                    network_service: NetworkService) -> Optional[Location]:
    cim = Location(mrid=pb.mrid(),
                   main_address=streetaddress_to_cim(pb.mainAddress)
                   if pb.HasField('mainAddress') else None)
    for point in pb.positionPoints:
        cim.add_point(positionpoint_to_cim(point))
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #7
0
def loop_to_cim(pb: PBLoop, network_service: NetworkService) -> Optional[Loop]:
    cim = Loop(mrid=pb.mrid())
    for mrid in pb.circuitMRIDs:
        network_service.resolve_or_defer_reference(resolver.loop_circuits(cim),
                                                   mrid)
    for mrid in pb.substationMRIDs:
        network_service.resolve_or_defer_reference(
            resolver.loop_substations(cim), mrid)
    for mrid in pb.normalEnergizingSubstationMRIDs:
        network_service.resolve_or_defer_reference(
            resolver.loop_energizing_substations(cim), mrid)
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #8
0
def transformerend_to_cim(pb: PBTransformerEnd, cim: TransformerEnd,
                          network_service: NetworkService):
    network_service.resolve_or_defer_reference(resolver.te_terminal(cim),
                                               pb.terminalMRID)
    network_service.resolve_or_defer_reference(resolver.te_base_voltage(cim),
                                               pb.baseVoltageMRID)
    network_service.resolve_or_defer_reference(resolver.ratio_tap_changer(cim),
                                               pb.ratioTapChangerMRID)
    cim.end_number = pb.endNumber
    cim.grounded = pb.grounded
    cim.r_ground = pb.rGround
    cim.x_ground = pb.xGround
    identifiedobject_to_cim(pb.io, cim, network_service)
예제 #9
0
def usagepoint_to_cim(pb: PBUsagePoint,
                      network_service: NetworkService) -> Optional[UsagePoint]:
    cim = UsagePoint(mrid=pb.mrid())
    network_service.resolve_or_defer_reference(
        resolver.usage_point_location(cim), pb.usagePointLocationMRID)
    for mrid in pb.equipmentMRIDs:
        network_service.resolve_or_defer_reference(resolver.up_equipment(cim),
                                                   mrid)
    for mrid in pb.endDeviceMRIDs:
        network_service.resolve_or_defer_reference(resolver.end_devices(cim),
                                                   mrid)
    identifiedobject_to_cim(pb.io, cim, network_service)
    return cim if network_service.add(cim) else None
예제 #10
0
def perlengthlineparameter_to_cim(pb: PBPerLengthLineParameter,
                                  cim: PerLengthLineParameter,
                                  network_service: NetworkService):
    identifiedobject_to_cim(pb.io, cim, network_service)
예제 #11
0
def remotepoint_to_cim(pb: PBRemotePoint, cim: RemotePoint,
                       service: NetworkService):
    identifiedobject_to_cim(pb.io, cim, service)
예제 #12
0
def iopoint_to_cim(pb: PBIoPoint, cim: IoPoint, service: NetworkService):
    identifiedobject_to_cim(pb.io, cim, service)
예제 #13
0
def powersystemresource_to_cim(pb: PBPowerSystemResource,
                               cim: PowerSystemResource,
                               network_service: NetworkService):
    network_service.resolve_or_defer_reference(resolver.psr_location(cim),
                                               pb.locationMRID)
    identifiedobject_to_cim(pb.io, cim, network_service)
예제 #14
0
def acdcterminal_to_cim(pb: PBAcDcTerminal, cim: AcDcTerminal,
                        network_service: NetworkService):
    identifiedobject_to_cim(pb.io, cim, network_service)
예제 #15
0
def assetinfo_to_cim(pb: PBAssetInfo, cim: AssetInfo,
                     network_service: NetworkService):
    identifiedobject_to_cim(pb.io, cim, network_service)