105 lines
6.5 KiB
Python
105 lines
6.5 KiB
Python
from . import BaseDevice
|
|
from .. import EcoflowMQTTClient
|
|
from ..entities import (
|
|
BaseSensorEntity, BaseNumberEntity, BaseSelectEntity, BaseSwitchEntity
|
|
)
|
|
from ..sensor import (
|
|
AmpSensorEntity, CentivoltSensorEntity, DeciampSensorEntity,
|
|
DecicelsiusSensorEntity, DecihertzSensorEntity, DeciwattsSensorEntity,
|
|
DecivoltSensorEntity, InWattsSolarSensorEntity, LevelSensorEntity,
|
|
MiscSensorEntity, RemainSensorEntity, StatusSensorEntity,
|
|
)
|
|
# from ..number import MinBatteryLevelEntity, MaxBatteryLevelEntity
|
|
# from ..select import DictSelectEntity
|
|
|
|
class PowerStream(BaseDevice):
|
|
def sensors(self, client: EcoflowMQTTClient) -> list[BaseSensorEntity]:
|
|
return [
|
|
InWattsSolarSensorEntity(client, "pv1_input_watts", "Solar 1 Watts"),
|
|
DecivoltSensorEntity(client, "pv1_input_volt", "Solar 1 Input Potential"),
|
|
CentivoltSensorEntity(client, "pv1_op_volt", "Solar 1 Op Potential"),
|
|
DeciampSensorEntity(client, "pv1_input_cur", "Solar 1 Currrent"),
|
|
DecicelsiusSensorEntity(client, "pv1_temp", "Solar 1 Temperature"),
|
|
MiscSensorEntity(client, "pv1_relay_status", "Solar 1 Relay Status"),
|
|
MiscSensorEntity(client, "pv1_error_code", "Solar 1 Error Code", False),
|
|
MiscSensorEntity(client, "pv1_warning_code", "Solar 1 Warning Code", False),
|
|
MiscSensorEntity(client, "pv1_status", "Solar 1 Status", False),
|
|
|
|
InWattsSolarSensorEntity(client, "pv2_input_watts", "Solar 2 Watts"),
|
|
DecivoltSensorEntity(client, "pv2_input_volt", "Solar 2 Input Potential"),
|
|
CentivoltSensorEntity(client, "pv2_op_volt", "Solar 2 Op Potential"),
|
|
DeciampSensorEntity(client, "pv2_input_cur", "Solar 2 Current"),
|
|
DecicelsiusSensorEntity(client, "pv2_temp", "Solar 2 Temperature"),
|
|
MiscSensorEntity(client, "pv2_relay_status", "Solar 2 Relay Status"),
|
|
MiscSensorEntity(client, "pv2_error_code", "Solar 2 Error Code", False),
|
|
MiscSensorEntity(client, "pv2_warning_code", "Solar 2 Warning Code", False),
|
|
MiscSensorEntity(client, "pv2_status", "Solar 2 Status", False),
|
|
|
|
MiscSensorEntity(client, "bp_type", "Battery Type", False),
|
|
LevelSensorEntity(client, "bat_soc", "Battery Charge"),
|
|
DeciwattsSensorEntity(client, "bat_input_watts", "Battery Input Watts"),
|
|
DecivoltSensorEntity(client, "bat_input_volt", "Battery Input Potential"),
|
|
DecivoltSensorEntity(client, "bat_op_volt", "Battery Op Potential"),
|
|
AmpSensorEntity(client, "bat_input_cur", "Battery Input Current"),
|
|
DecicelsiusSensorEntity(client, "bat_temp", "Battery Temperature"),
|
|
RemainSensorEntity(client, "battery_charge_remain", "Charge Time"),
|
|
RemainSensorEntity(client, "battery_discharge_remain", "Discharge Time"),
|
|
MiscSensorEntity(client, "bat_error_code", "Battery Error Code", False),
|
|
MiscSensorEntity(client, "bat_warning_code", "Battery Warning Code", False),
|
|
MiscSensorEntity(client, "bat_status", "Battery Status", False),
|
|
|
|
DecivoltSensorEntity(client, "llc_input_volt", "LLC Input Potential", False),
|
|
DecivoltSensorEntity(client, "llc_op_volt", "LLC Op Potential", False),
|
|
MiscSensorEntity(client, "llc_error_code", "LLC Error Code", False),
|
|
MiscSensorEntity(client, "llc_warning_code", "LLC Warning Code", False),
|
|
MiscSensorEntity(client, "llc_status", "LLC Status", False),
|
|
|
|
MiscSensorEntity(client, "inv_on_off", "Inverter On/Off Status"),
|
|
DeciwattsSensorEntity(client, "inv_output_watts", "Inverter Output Watts"),
|
|
DecivoltSensorEntity(client, "inv_input_volt", "Inverter Output Potential", False),
|
|
DecivoltSensorEntity(client, "inv_op_volt", "Inverter Op Potential"),
|
|
AmpSensorEntity(client, "inv_output_cur", "Inverter Output Current"),
|
|
AmpSensorEntity(client, "inv_dc_cur", "Inverter DC Current"),
|
|
DecihertzSensorEntity(client, "inv_freq", "Inverter Frequency"),
|
|
DecicelsiusSensorEntity(client, "inv_temp", "Inverter Temperature"),
|
|
MiscSensorEntity(client, "inv_relay_status", "Inverter Relay Status"),
|
|
MiscSensorEntity(client, "inv_error_code", "Inverter Error Code", False),
|
|
MiscSensorEntity(client, "inv_warning_code", "Inverter Warning Code", False),
|
|
MiscSensorEntity(client, "inv_status", "Inverter Status", False),
|
|
|
|
DeciwattsSensorEntity(client, "permanent_watts", "Other Loads"),
|
|
DeciwattsSensorEntity(client, "dynamic_watts", "Smart Plug Loads"),
|
|
DeciwattsSensorEntity(client, "rated_power", "Rated Power"),
|
|
|
|
MiscSensorEntity(client, "lower_limit", "Lower Battery Limit", False),
|
|
MiscSensorEntity(client, "upper_limit", "Upper Battery Limit", False),
|
|
MiscSensorEntity(client, "wireless_error_code", "Wireless Error Code", False),
|
|
MiscSensorEntity(client, "wireless_warning_code", "Wireless Warning Code", False),
|
|
MiscSensorEntity(client, "inv_brightness", "LED Brightness", False),
|
|
MiscSensorEntity(client, "heartbeat_frequency", "Heartbeat Frequency", False),
|
|
|
|
StatusSensorEntity(client)
|
|
]
|
|
|
|
|
|
def numbers(self, client: EcoflowMQTTClient) -> list[BaseNumberEntity]:
|
|
return [
|
|
# These will likely be some form of serialised data rather than JSON will look into it later
|
|
# MinBatteryLevelEntity(client, "lowerLimit", "Min Disharge Level", 50, 100,
|
|
# lambda value: {"moduleType": 0, "operateType": "TCP",
|
|
# "params": {"id": 00, "lowerLimit": value}}),
|
|
# MaxBatteryLevelEntity(client, "upperLimit", "Max Charge Level", 0, 30,
|
|
# lambda value: {"moduleType": 0, "operateType": "TCP",
|
|
# "params": {"id": 00, "upperLimit": value}}),
|
|
]
|
|
|
|
def switches(self, client: EcoflowMQTTClient) -> list[BaseSwitchEntity]:
|
|
return []
|
|
|
|
def selects(self, client: EcoflowMQTTClient) -> list[BaseSelectEntity]:
|
|
return [
|
|
# DictSelectEntity(client, "supplyPriority", "Power supply mode", {"Prioritize power supply", "Prioritize power storage"},
|
|
# lambda value: {"moduleType": 00, "operateType": "supplyPriority",
|
|
# "params": {"supplyPriority": value}}),
|
|
]
|