datadis_python.models.contract module
Modelos de datos para contratos.
Este módulo define los modelos de datos para contratos y información relacionada.
- class datadis_python.models.contract.DateOwner(*, startDate, endDate)[fuente]
Bases:
BaseModelModelo Pydantic para períodos de propiedad de un punto de suministro.
Representa un período temporal durante el cual el usuario autenticado ha sido propietario o titular de un punto de suministro (CUPS). Esta información es especialmente relevante para consultas históricas y para entender los períodos de responsabilidad sobre un contrato eléctrico.
- Casos de uso comunes:
Cambios de propiedad: Transferencias de titularidad entre personas
Alquileres: Períodos como inquilino vs. propietario
Herencias: Cambios de titularidad por herencia
Compraventa: Traspaso en ventas de inmuebles
Ejemplo
Período de propiedad típico:
from datadis_python.models.contract import DateOwner # Período como propietario ownership = DateOwner( startDate="2020/01/15", endDate="2024/06/30" ) print(f"Propietario desde: {ownership.start_date}") print(f"Hasta: {ownership.end_date}")
Múltiples períodos (en contexto de ContractData):
# Usuario fue propietario en dos períodos diferentes periods = [ DateOwner(startDate="2018/03/01", endDate="2019/12/31"), DateOwner(startDate="2022/06/01", endDate="2024/08/15") ] for i, period in enumerate(periods, 1): print(f"Período {i}: {period.start_date} - {period.end_date}")
- Parámetros:
start_date (str) – Fecha de inicio del período de propiedad en formato YYYY/MM/DD. Fecha desde la cual el usuario es considerado propietario o titular del punto de suministro eléctrico
end_date (str) – Fecha de finalización del período de propiedad en formato YYYY/MM/DD. Fecha hasta la cual el usuario mantuvo la titularidad del suministro
startDate (str)
endDate (str)
- Muestra:
ValidationError – Si las fechas no tienen formato válido o faltan campos obligatorios
Nota
Las fechas deben seguir el formato estándar de Datadis: YYYY/MM/DD (año/mes/día)
Ver también
ContractData- Modelo que incluye lista de períodos de propiedadSimpleDatadisClientV2.get_contract_detail()- Obtener información contractual completa
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class datadis_python.models.contract.ContractData(*, cups, distributor, marketer=None, tension, accessFare, province, municipality, postalCode, contractedPowerkW, timeDiscrimination=None, modePowerControl, startDate, endDate=None, codeFare, selfConsumptionTypeCode=None, selfConsumptionTypeDesc=None, section=None, subsection=None, partitionCoefficient=None, cau=None, installedCapacityKW=None, dateOwner=None, lastMarketerDate=None, maxPowerInstall=None)[fuente]
Bases:
BaseModelModelo Pydantic completo para datos contractuales de suministros eléctricos.
Representa la información contractual completa de un punto de suministro (CUPS), incluyendo datos técnicos, comerciales, tarifarios y de autoconsumo. Este modelo contiene toda la información relevante sobre el contrato eléctrico asociado a una instalación, desde datos básicos hasta configuraciones avanzadas de autoconsumo.
- Información contractual incluida:
Datos básicos: CUPS, distribuidor, comercializadora, ubicación
Información técnica: Tensión, potencias contratadas, control de potencia
Datos tarifarios: Tarifa de acceso, discriminación horaria, códigos CNMC
Autoconsumo: Tipo, configuración, coeficientes, CAU
Histórico: Períodos de propiedad, cambios de comercializadora
- Tipos de instalaciones soportadas:
Consumo tradicional: Sin generación propia
Autoconsumo individual: Instalación fotovoltaica privada
Autoconsumo colectivo: Instalaciones compartidas entre varios usuarios
Autoconsumo con excedentes: Venta de energía sobrante a la red
Autoconsumo sin excedentes: Generación solo para consumo propio
- Códigos de tarifa de acceso (CNMC):
2.0TD: Baja tensión ≤ 15 kW (doméstico típico)
3.0TD: Baja tensión > 15 kW ≤ 100 kW (comercios, pequeña industria)
6.1TD: Alta tensión 1-36 kV (gran industria)
6.2TD: Alta tensión 36-72.5 kV
6.3TD: Alta tensión 72.5-145 kV
6.4TD: Alta tensión ≥ 145 kV
Ejemplo
Contrato doméstico básico sin autoconsumo:
from datadis_python.models.contract import ContractData # Vivienda típica con tarifa 2.0TD contract_home = ContractData( cups="ES001234567890123456AB", distributor="E-distribución", marketer="Iberdrola", tension="BT", accessFare="2.0TD (Peaje de acceso 2.0TD)", province="Madrid", municipality="Madrid", postalCode="28001", contractedPowerkW=[5.75], # 5.75 kW contratados timeDiscrimination="DHA", # Discriminación horaria modePowerControl="ICP", # Interruptor Control Potencia startDate="2023/01/15", codeFare="2.0TD" ) print(f"Potencia contratada: {contract_home.contracted_power_kw[0]} kW") print(f"Tarifa: {contract_home.code_fare}")
Instalación con autoconsumo fotovoltaico:
from datadis_python.models.contract import ContractData, DateOwner # Casa con paneles solares y autoconsumo contract_solar = ContractData( cups="ES001234567890123456AB", distributor="UFD", marketer="Naturgy", tension="BT", accessFare="2.0TD con autoconsumo", province="Valencia", municipality="Valencia", postalCode="46001", contractedPowerkW=[4.60], modePowerControl="ICP", startDate="2022/03/01", codeFare="2.0TD", # Configuración de autoconsumo selfConsumptionTypeCode="41", selfConsumptionTypeDesc="Autoconsumo con excedentes acogido a compensación", installedCapacityKW=5.0, # 5 kW de paneles solares cau="ES00123456789", # Código de Autoconsumo Único dateOwner=[ DateOwner(startDate="2022/03/01", endDate="2024/12/31") ] ) print(f"Tipo autoconsumo: {contract_solar.self_consumption_type_desc}") print(f"Potencia instalada: {contract_solar.installed_capacity_kw} kW")
Autoconsumo colectivo con coeficiente de reparto:
# Instalación compartida en comunidad de vecinos contract_collective = ContractData( cups="ES001234567890123456AB", distributor="E-distribución", tension="BT", accessFare="2.0TD autoconsumo colectivo", province="Barcelona", municipality="Barcelona", postalCode="08001", contractedPowerkW=[3.45], codeFare="2.0TD", selfConsumptionTypeCode="43", selfConsumptionTypeDesc="Autoconsumo colectivo con excedentes", partitionCoefficient=0.15, # 15% del total generado cau="ES00987654321", installedCapacityKW=20.0, # Instalación total compartida startDate="2023/06/01" ) print(f"Coeficiente de reparto: {contract_collective.partition_coefficient}")
- Parámetros:
cups (str) – Código CUPS del punto de suministro. Identificador único nacional de 20-22 caracteres que identifica inequívocamente el punto de conexión
distributor (str) – Nombre de la empresa distribuidora responsable de la red en la zona geográfica del suministro
marketer (Optional[str]) – Empresa comercializadora que factura la energía. Solo visible si el usuario autenticado es propietario del CUPS
tension (str) – Nivel de tensión del suministro. Valores típicos: «BT» (Baja Tensión), «AT» (Alta Tensión), «MT» (Media Tensión)
access_fare (str) – Descripción completa de la tarifa de acceso aplicable. Incluye el código y descripción extendida
province (str) – Provincia donde se ubica físicamente el punto de suministro
municipality (str) – Municipio de ubicación del suministro eléctrico
postal_code (str) – Código postal de la dirección del punto de suministro
contracted_power_kw (List[float]) – Lista de potencias contratadas en kW por período tarifario. Para tarifas simples: un valor. Para discriminación horaria: múltiples valores
time_discrimination (Optional[str]) – Tipo de discriminación horaria aplicada. Valores típicos: «DHA» (Discriminación Horaria), «DHS» (Supervalle), None (tarifa simple)
mode_power_control (str) – Sistema de control de la potencia contratada. «ICP» (Interruptor Control Potencia) o «Maxímetro»
start_date (str) – Fecha de inicio de vigencia del contrato en formato YYYY/MM/DD
end_date (Optional[str]) – Fecha de finalización del contrato. None para contratos activos
code_fare (str) – Código oficial de la tarifa de acceso según clasificación CNMC. Define la estructura tarifaria aplicable
self_consumption_type_code (Optional[str]) – Código numérico del tipo de autoconsumo según RD 244/2019. Códigos 4X para diferentes modalidades de autoconsumo
self_consumption_type_desc (Optional[str]) – Descripción detallada del tipo de autoconsumo configurado. Especifica modalidad, excedentes y acogimiento a compensación
section (Optional[str]) – Clasificación de sección para autoconsumo según normativa vigente
subsection (Optional[str]) – Subclasificación específica dentro de la sección de autoconsumo
partition_coefficient (Optional[float]) – Coeficiente de reparto para autoconsumo colectivo. Porcentaje de la energía generada asignado a este CUPS (0.0-1.0)
cau (Optional[str]) – Código de Autoconsumo Único. Identificador oficial de la instalación de autoconsumo asignado por la administración competente
installed_capacity_kw (Optional[float]) – Potencia pico instalada de generación renovable en kW. Suma de toda la capacidad de generación asociada al autoconsumo
date_owner (Optional[List[DateOwner]]) – Lista de períodos durante los cuales el usuario autenticado ha sido propietario del punto de suministro
last_marketer_date (Optional[str]) – Fecha del último cambio de empresa comercializadora en formato YYYY/MM/DD
max_power_install (Optional[str]) – Potencia máxima de la instalación eléctrica en formato texto. Puede incluir información adicional sobre limitaciones técnicas
accessFare (str)
postalCode (str)
timeDiscrimination (str | None)
modePowerControl (str)
startDate (str)
endDate (str | None)
codeFare (str)
selfConsumptionTypeCode (str | None)
selfConsumptionTypeDesc (str | None)
partitionCoefficient (float | None)
installedCapacityKW (float | None)
lastMarketerDate (str | None)
maxPowerInstall (str | None)
- Muestra:
ValidationError – Si algún campo obligatorio está ausente o tiene formato incorrecto
Nota
Para autoconsumo colectivo, el
partition_coefficientdebe sumar 1.0 entre todos los participantes de la instalación compartida.Ver también
DateOwner- Modelo para períodos de propiedadContractResponse- Respuesta estructurada de la API V2SimpleDatadisClientV2.get_contract_detail()- Obtener datos contractualesRD 244/2019 para códigos de autoconsumo oficiales
Added in version 2.0: Soporte completo para autoconsumo y datos contractuales extendidos
- model_config: ClassVar[ConfigDict] = {'populate_by_name': True, 'validate_by_alias': True, 'validate_by_name': True}
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class datadis_python.models.contract.DistributorError(distributor_code, distributor_name, error_code, error_description)[fuente]
Bases:
objectError de distribuidor según API de Datadis.
- Parámetros:
- class datadis_python.models.contract.ContractResponse(contracts, distributor_errors)[fuente]
Bases:
objectRespuesta completa del endpoint get_contract_detail V2 - Raw data.
- Parámetros:
- class datadis_python.models.contract.ConsumptionResponse(consumption_data, distributor_errors)[fuente]
Bases:
objectRespuesta completa del endpoint get_consumption V2 - Raw data.
- Parámetros:
- class datadis_python.models.contract.SuppliesResponse(supplies, distributor_errors)[fuente]
Bases:
objectRespuesta completa del endpoint get_supplies V2 - Raw data.
- Parámetros:
- class datadis_python.models.contract.MaxPowerResponse(max_power_data, distributor_errors)[fuente]
Bases:
objectRespuesta completa del endpoint get_max_power V2 - Raw data.
- Parámetros: