# coding: utf-8

from __future__ import annotations
from datetime import date, datetime  # noqa: F401

import re  # noqa: F401
from typing import Any, Dict, List, Optional  # noqa: F401

from pydantic import AnyUrl, BaseModel, EmailStr, Field, validator  # noqa: F401
from ecp3_api.models.plug_statistics import PlugStatistics


class Plug(BaseModel):
    """NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).

    Do not edit the class manually.

    Plug - a model defined in OpenAPI

        ac_act_phases: The ac_act_phases of this Plug.
        ac_act_power: The ac_act_power of this Plug.
        ac_current_input1: The ac_current_input1 of this Plug.
        ac_current_input2: The ac_current_input2 of this Plug.
        ac_current_input3: The ac_current_input3 of this Plug.
        ac_voltage_input1: The ac_voltage_input1 of this Plug.
        ac_voltage_input2: The ac_voltage_input2 of this Plug.
        ac_voltage_input3: The ac_voltage_input3 of this Plug.
        available_current: The available_current of this Plug.
        available_dc_voltage: The available_dc_voltage of this Plug.
        available_discharge_current: The available_discharge_current of this Plug.
        b_available_per_setting: The b_available_per_setting of this Plug.
        b_disable_after_charging_end: The b_disable_after_charging_end of this Plug.
        b_is_auto_charge_capable: The b_is_auto_charge_capable of this Plug.
        b_is_locked: The b_is_locked of this Plug.
        b_is_lock_master: The b_is_lock_master of this Plug.
        b_is_plug_and_charge_capable: The b_is_plug_and_charge_capable of this Plug.
        b_transaction_finished: The b_transaction_finished of this Plug.
        bulk_charge_capacity: The bulk_charge_capacity of this Plug.
        charge_end_cause: The charge_end_cause of this Plug.
        charge_session_type: The charge_session_type of this Plug.
        charging_time: The charging_time of this Plug.
        chrg_controller_state: The chrg_controller_state of this Plug.
        connector_id: The connector_id of this Plug.
        contract_certificate_chain: The contract_certificate_chain of this Plug.
        contract_id: The contract_id of this Plug.
        cp_duty_cycle: The cp_duty_cycle of this Plug.
        cp_neg: The cp_neg of this Plug.
        cp_pos: The cp_pos of this Plug.
        cp_state: The cp_state of this Plug.
        display_name: The display_name of this Plug.
        eco_charge_active: The eco_charge_active of this Plug.
        emp_connector_id: The emp_connector_id of this Plug.
        energy: The energy of this Plug.
        error_code: The error_code of this Plug.
        evcc_id: The evcc_id of this Plug.
        evcc_protocol: The evcc_protocol of this Plug.
        ev_state: The ev_state of this Plug.
        ev_type: The ev_type of this Plug.
        export_energy: The export_energy of this Plug.
        generic_controller_state: The generic_controller_state of this Plug.
        hv_measure_gfd: The hv_measure_gfd of this Plug.
        icon: The icon of this Plug.
        init_progress: The init_progress of this Plug.
        last_error_code: The last_error_code of this Plug.
        maximum_charging_time: The maximum_charging_time of this Plug.
        maximum_dc_voltage_ev: The maximum_dc_voltage_ev of this Plug.
        maximum_discharge_current_ev: The maximum_discharge_current_ev of this Plug.
        max_power: The max_power of this Plug.
        measured_current: The measured_current of this Plug.
        measured_dc_voltage_extern: The measured_dc_voltage_extern of this Plug.
        measured_dc_voltage_intern: The measured_dc_voltage_intern of this Plug.
        measured_power: The measured_power of this Plug.
        min_current: The min_current of this Plug.
        min_dc_voltage: The min_dc_voltage of this Plug.
        minimal_battery_capacity: The minimal_battery_capacity of this Plug.
        module_ac_voltages: The module_ac_voltages of this Plug.
        module_dc_currents: The module_dc_currents of this Plug.
        module_dc_voltages: The module_dc_voltages of this Plug.
        module_errors: The module_errors of this Plug.
        module_temps: The module_temps of this Plug.
        negotiated_communication_protocol: The negotiated_communication_protocol of this Plug.
        peak_current_ripple: The peak_current_ripple of this Plug.
        plug_name: The plug_name of this Plug.
        pt1000: The pt1000 of this Plug.
        remaining_battery_capacity: The remaining_battery_capacity of this Plug.
        remaining_charging_time: The remaining_charging_time of this Plug.
        request_current: The request_current of this Plug.
        request_dc_voltage: The request_dc_voltage of this Plug.
        serial: The serial of this Plug.
        smart_charge: The smart_charge of this Plug.
        statistics: The statistics of this Plug.
        total_battery_capacity: The total_battery_capacity of this Plug.
        type: The type of this Plug.
    """
    class Config:
        orm_mode = True

    ac_act_phases: int = Field(alias="ACActPhases")
    ac_act_power: List[float] = Field(alias="ACActPower")
    ac_current_input1: float = Field(alias="ACCurrentInput1")
    ac_current_input2: float = Field(alias="ACCurrentInput2")
    ac_current_input3: float = Field(alias="ACCurrentInput3")
    ac_voltage_input1: float = Field(alias="ACVoltageInput1")
    ac_voltage_input2: float = Field(alias="ACVoltageInput2")
    ac_voltage_input3: float = Field(alias="ACVoltageInput3")
    available_current: float = Field(alias="AvailableCurrent")
    available_dc_voltage: int = Field(alias="AvailableDCVoltage")
    available_discharge_current: int = Field(alias="AvailableDischargeCurrent")
    b_available_per_setting: bool = Field(alias="bAvailablePerSetting")
    b_disable_after_charging_end: bool = Field(alias="bDisableAfterChargingEnd")
    b_is_auto_charge_capable: bool = Field(alias="bIsAutoChargeCapable")
    b_is_locked: bool = Field(alias="bIsLocked")
    b_is_lock_master: bool = Field(alias="bIsLockMaster")
    b_is_plug_and_charge_capable: bool = Field(alias="bIsPlugAndChargeCapable")
    b_transaction_finished: bool = Field(alias="bTransactionFinished")
    bulk_charge_capacity: int = Field(alias="BulkChargeCapacity")
    charge_end_cause: str = Field(alias="ChargeEndCause")
    charge_session_type: str = Field(alias="ChargeSessionType")
    charging_time: int = Field(alias="ChargingTime")
    chrg_controller_state: str = Field(alias="ChrgControllerState")
    connector_id: int = Field(alias="connectorId")
    contract_certificate_chain: List[str] = Field(alias="contractCertificateChain")
    contract_id: str = Field(alias="contractId")
    cp_duty_cycle: int = Field(alias="CPDutyCycle")
    cp_neg: float = Field(alias="CPNeg")
    cp_pos: float = Field(alias="CPPos")
    cp_state: str = Field(alias="CPState")
    display_name: str = Field(alias="displayName")
    eco_charge_active: bool = Field(alias="EcoChargeActive")
    emp_connector_id: str = Field(alias="empConnectorId")
    energy: int = Field(alias="Energy")
    error_code: int = Field(alias="ErrorCode")
    evcc_id: str = Field(alias="evccId")
    evcc_protocol: str = Field(alias="evccProtocol")
    ev_state: str = Field(alias="EVState")
    ev_type: str = Field(alias="evType")
    export_energy: float = Field(alias="ExportEnergy")
    generic_controller_state: str = Field(alias="genericControllerState")
    hv_measure_gfd: int = Field(alias="HVMeasureGFD")
    icon: str = Field(alias="icon")
    init_progress: int = Field(alias="InitProgress")
    last_error_code: int = Field(alias="LastErrorCode")
    maximum_charging_time: float = Field(alias="MaximumChargingTime")
    maximum_dc_voltage_ev: int = Field(alias="MaximumDCVoltageEV")
    maximum_discharge_current_ev: int = Field(alias="MaximumDischargeCurrentEV")
    max_power: int = Field(alias="MaxPower")
    measured_current: float = Field(alias="MeasuredCurrent")
    measured_dc_voltage_extern: int = Field(alias="MeasuredDCVoltageExtern")
    measured_dc_voltage_intern: int = Field(alias="MeasuredDCVoltageIntern")
    measured_power: float = Field(alias="MeasuredPower")
    min_current: float = Field(alias="MinCurrent")
    min_dc_voltage: int = Field(alias="MinDCVoltage")
    minimal_battery_capacity: int = Field(alias="MinimalBatteryCapacity")
    module_ac_voltages: object = Field(alias="ModuleACVoltages")
    module_dc_currents: object = Field(alias="ModuleDCCurrents")
    module_dc_voltages: object = Field(alias="ModuleDCVoltages")
    module_errors: object = Field(alias="ModuleErrors")
    module_temps: object = Field(alias="ModuleTemps")
    negotiated_communication_protocol: str = Field(alias="negotiatedCommunicationProtocol")
    peak_current_ripple: int = Field(alias="PeakCurrentRipple")
    plug_name: str = Field(alias="plugName")
    pt1000: float = Field(alias="PT1000")
    remaining_battery_capacity: int = Field(alias="RemainingBatteryCapacity")
    remaining_charging_time: int = Field(alias="RemainingChargingTime")
    request_current: int = Field(alias="RequestCurrent")
    request_dc_voltage: int = Field(alias="RequestDCVoltage")
    serial: List[str] = Field(alias="Serial")
    smart_charge: str = Field(alias="SmartCharge")
    statistics: PlugStatistics = Field(alias="statistics")
    total_battery_capacity: int = Field(alias="TotalBatteryCapacity")
    type: str = Field(alias="type")

Plug.update_forward_refs()
