from enum import Enum, unique


@unique
class FieldName(Enum):
    AC_INPUT_CURRENT = "ac_input_current"
    AC_INPUT_FREQUENCY = "ac_input_frequency"
    AC_INPUT_POWER = "ac_input_power"
    AC_INPUT_VOLTAGE = "ac_input_voltage"
    AC_OUTPUT_FREQUENCY = "ac_output_frequency"
    AC_OUTPUT_MODE = "ac_output_mode"
    AC_OUTPUT_ON = "ac_output_on"
    AC_OUTPUT_CURRENT = "ac_output_current"
    AC_OUTPUT_POWER = "ac_output_power"
    AC_OUTPUT_VOLTAGE = "ac_output_voltage"
    AC_P1_CURRENT = "ac_p1_current"
    AC_P1_POWER = "ac_p1_power"
    AC_P1_VOLTAGE = "ac_p1_voltage"
    AC_P2_CURRENT = "ac_p2_current"
    AC_P2_POWER = "ac_p2_power"
    AC_P2_VOLTAGE = "ac_p2_voltage"
    AC_P3_CURRENT = "ac_p3_current"
    AC_P3_POWER = "ac_p3_power"
    AC_P3_VOLTAGE = "ac_p3_voltage"
    BATTERY_SOC = "total_battery_percent"
    BATTERY_SOC_RANGE_END = "soc_range_end"
    BATTERY_SOC_RANGE_START = "soc_range_start"
    CTRL_AC = "ctrl_ac"
    CTRL_CHARGING_MODE = "ctrl_charging_mode"
    CTRL_DC = "ctrl_dc"
    CTRL_DISPLAY_TIMEOUT = "ctrl_display_timeout"
    CTRL_ECO = "ctrl_eco"
    CTRL_ECO_AC = "ctrl_eco_ac"
    CTRL_ECO_DC = "ctrl_eco_dc"
    CTRL_ECO_MIN_POWER_AC = "ctrl_eco_min_power_ac"
    CTRL_ECO_MIN_POWER_DC = "ctrl_eco_min_power_dc"
    CTRL_ECO_TIME_MODE = "ctrl_eco_time_mode"
    CTRL_ECO_TIME_MODE_AC = "ctrl_eco_time_mode_ac"
    CTRL_ECO_TIME_MODE_DC = "ctrl_eco_time_mode_dc"
    CTRL_GRID_STABILIZING = "ctrl_grid_stabilizing"
    CTRL_LED_MODE = "ctrl_led_mode"
    CTRL_POWER_LIFTING = "ctrl_power_lifting"
    CTRL_POWER_OFF = "ctrl_power_off"
    DC_INPUT_CURRENT = "dc_input_current"
    DC_INPUT_POWER = "dc_input_power"
    DC_INPUT_VOLTAGE = "dc_input_voltage"
    DC_OUTPUT_ON = "dc_output_on"
    DC_OUTPUT_POWER = "dc_output_power"
    DEVICE_TYPE = "device_type"
    DEVICE_SN = "device_sn"
    GRID_FREQUENCY = "grid_frequency"
    GRID_P1_CURRENT = "grid_p1_current"
    GRID_P1_POWER = "grid_p1_power"
    GRID_P1_VOLTAGE = "grid_p1_voltage"
    GRID_P2_CURRENT = "grid_p2_current"
    GRID_P2_POWER = "grid_p2_power"
    GRID_P2_VOLTAGE = "grid_p2_voltage"
    GRID_P3_CURRENT = "grid_p3_current"
    GRID_P3_POWER = "grid_p3_power"
    GRID_P3_VOLTAGE = "grid_p3_voltage"
    INTERNAL_AC_FREQUENCY = "internal_ac_frequency"
    INTERNAL_AC_VOLTAGE = "internal_ac_voltage"
    INTERNAL_DC_INPUT_CURRENT = "internal_dc_input_current"
    INTERNAL_DC_INPUT_POWER = "internal_dc_input_power"
    INTERNAL_DC_INPUT_VOLTAGE = "internal_dc_input_voltage"
    POWER_GENERATION = "power_generation"
    POWER_LIFTING_ON = "power_lifting_on"
    PV_S1_CURRENT = "pv_s1_current"
    PV_S1_POWER = "pv_s1_power"
    PV_S1_VOLTAGE = "pv_s1_voltage"
    PV_S2_CURRENT = "pv_s2_current"
    PV_S2_POWER = "pv_s2_power"
    PV_S2_VOLTAGE = "pv_s2_voltage"
    SM_P1_CURRENT = "sm_p1_current"  # Smart meter
    SM_P1_POWER = "sm_p1_power"
    SM_P1_VOLTAGE = "sm_p1_voltage"
    SM_P2_CURRENT = "sm_p2_current"
    SM_P2_POWER = "sm_p2_power"
    SM_P2_VOLTAGE = "sm_p2_voltage"
    SM_P3_CURRENT = "sm_p3_current"
    SM_P3_POWER = "sm_p3_power"
    SM_P3_VOLTAGE = "sm_p3_voltage"
    TIME_REMAINING = "time_remaining"
    VER_ARM = "version_arm"
    VER_DSP = "version_dsp"
