From b768608c4625c98249e3a131e3fb35d80c9aadde Mon Sep 17 00:00:00 2001 From: Luilutin Date: Fri, 25 Oct 2024 10:07:01 +0300 Subject: [PATCH] - new charge&discharge management v2 --- custom_components/solis_modbus/number.py | 108 +++++++ custom_components/solis_modbus/sensor.py | 389 +++++++++++++++++++++++ custom_components/solis_modbus/switch.py | 17 + custom_components/solis_modbus/time.py | 40 +++ 4 files changed, 554 insertions(+) diff --git a/custom_components/solis_modbus/number.py b/custom_components/solis_modbus/number.py index cda99f5..7349a64 100644 --- a/custom_components/solis_modbus/number.py +++ b/custom_components/solis_modbus/number.py @@ -71,6 +71,114 @@ async def async_setup_entry(hass, config_entry: ConfigEntry, async_add_devices): "default": 10, "multiplier": 1, "min_val": 0, "max_val": 100, "step": 1, "unit_of_measurement": PERCENTAGE, "enabled": True}, + + + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 1)", "register": 43709, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 2)", "register": 43716, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 3)", "register": 43723, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 4)", "register": 43730, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 5)", "register": 43737, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge Current (Slot 6)", "register": 43744, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 1)", "register": 43708, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 2)", "register": 43715, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 3)", "register": 43722, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 4)", "register": 43729, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 5)", "register": 43736, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Charge SOC (Slot 6)", "register": 43743, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 1)", "register": 43751, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 2)", "register": 43758, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 3)", "register": 43765, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 4)", "register": 43772, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 5)", "register": 43779, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + {"type": "SNE", "name": "Solis Timed Discharge Current (Slot 6)", "register": 43786, + "default": 50.0, "multiplier": 10, + "min_val": 0, "max_val": 135, "step": 0.1, "device_class": SensorDeviceClass.CURRENT, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "enabled": True}, + + + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 1)", "register": 43750, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 2)", "register": 43757, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 3)", "register": 43764, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 4)", "register": 43771, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 5)", "register": 43778, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, + {"type": "SNE", "name": "Solis Timed Discharge SOC (Slot 6)", "register": 43785, + "default": 10, "multiplier": 1, + "min_val": 0, "max_val": 100, "step": 1, + "unit_of_measurement": PERCENTAGE, "enabled": True}, ] for entity_definition in numbers: diff --git a/custom_components/solis_modbus/sensor.py b/custom_components/solis_modbus/sensor.py index f111e3c..50981a4 100644 --- a/custom_components/solis_modbus/sensor.py +++ b/custom_components/solis_modbus/sensor.py @@ -620,6 +620,395 @@ async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry, asyn "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, ] }, + { + "register_start": 43707, + "scan_interval": 10, + "entities": [ + + {"type": "SS", "name": "Solis Timed Charge&Discharge Control Switching Value", + "unique": "solis_modbus_inverter_storage_control_switching_value", "register": ['43707'], + "multiplier": 0, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 1)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot1", + "register": ['43708'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 1)", + "unique": "solis_modbus_inverter_charging_charge_current_slot1", + "register": ['43709'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43710']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 1)", + "unique": "solis_modbus_inverter_charging_start_hour_slot1", + "register": ['43711'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 1)", + "unique": "solis_modbus_inverter_charging_start_minute_slot1", + "register": ['43712'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 1)", + "unique": "solis_modbus_inverter_charging_end_hour_slot1", + "register": ['43713'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 1)", + "unique": "solis_modbus_inverter_charging_end_minute_slot1", + "register": ['43714'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43714']}, + + + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 2)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot2", + "register": ['43715'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 2)", + "unique": "solis_modbus_inverter_charging_charge_current_slot2", + "register": ['43716'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43717']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 2)", + "unique": "solis_modbus_inverter_charging_start_hour_slot2", + "register": ['43718'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 2)", + "unique": "solis_modbus_inverter_charging_start_minute_slot2", + "register": ['43719'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 2)", + "unique": "solis_modbus_inverter_charging_end_hour_slot2", + "register": ['43720'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 2)", + "unique": "solis_modbus_inverter_charging_end_minute_slot2", + "register": ['43721'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 3)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot3", + "register": ['43722'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 3)", + "unique": "solis_modbus_inverter_charging_charge_current_slot3", + "register": ['43723'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43724']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 3)", + "unique": "solis_modbus_inverter_charging_start_hour_slot3", + "register": ['43725'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 3)", + "unique": "solis_modbus_inverter_charging_start_minute_slot3", + "register": ['43726'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 3)", + "unique": "solis_modbus_inverter_charging_end_hour_slot3", + "register": ['43727'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 3)", + "unique": "solis_modbus_inverter_charging_end_minute_slot3", + "register": ['43728'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + ] + }, + { + "register_start": 43729, + "scan_interval": 10, + "entities": [ + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 4)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot4", + "register": ['43729'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 4)", + "unique": "solis_modbus_inverter_charging_charge_current_slot4", + "register": ['43730'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43731']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 4)", + "unique": "solis_modbus_inverter_charging_start_hour_slot4", + "register": ['43732'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 4)", + "unique": "solis_modbus_inverter_charging_start_minute_slot4", + "register": ['43733'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 4)", + "unique": "solis_modbus_inverter_charging_end_hour_slot4", + "register": ['43734'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 4)", + "unique": "solis_modbus_inverter_charging_end_minute_slot4", + "register": ['43735'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 5)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot5", + "register": ['43736'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 5)", + "unique": "solis_modbus_inverter_charging_charge_current_slot5", + "register": ['43737'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43738']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 5)", + "unique": "solis_modbus_inverter_charging_start_hour_slot5", + "register": ['43739'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 5)", + "unique": "solis_modbus_inverter_charging_start_minute_slot5", + "register": ['43740'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 5)", + "unique": "solis_modbus_inverter_charging_end_hour_slot2", + "register": ['43741'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 5)", + "unique": "solis_modbus_inverter_charging_end_minute_slot5", + "register": ['43742'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + {"type": "SS", "name": "Solis Timed Charge SOC (Slot 6)", + "unique": "solis_modbus_inverter_charging_charge_soc_slot6", + "register": ['43743'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Current (Slot 6)", + "unique": "solis_modbus_inverter_charging_charge_current_slot6", + "register": ['43744'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43745']}, + + {"type": "SS", "name": "Solis Timed Charge Start Hour (Slot 6)", + "unique": "solis_modbus_inverter_charging_start_hour_slot6", + "register": ['43746'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge Start Minute (Slot 6)", + "unique": "solis_modbus_inverter_charging_start_minute_slot6", + "register": ['43747'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Hour (Slot 6)", + "unique": "solis_modbus_inverter_charging_end_hour_slot6", + "register": ['43748'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Charge End Minute (Slot 6)", + "unique": "solis_modbus_inverter_charging_end_minute_slot6", + "register": ['43749'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + ] + }, + { + "register_start": 43750, + "scan_interval": 10, + "entities": [ + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 1)", + "unique": "solis_modbus_inverter_discharge_soc_slot1", + "register": ['43750'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 1)", + "unique": "solis_modbus_inverter_discharge_current_slot1", + "register": ['43751'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43752']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 1)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot1", + "register": ['43753'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 1)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot1", + "register": ['43754'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 1)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot1", + "register": ['43755'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 1)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot1", + "register": ['43756'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 2)", + "unique": "solis_modbus_inverter_discharge_soc_slot2", + "register": ['43757'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 2)", + "unique": "solis_modbus_inverter_discharge_current_slot2", + "register": ['43758'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43759']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 2)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot2", + "register": ['43760'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 2)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot2", + "register": ['43761'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 2)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot2", + "register": ['43762'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 2)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot2", + "register": ['43763'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + ] + }, + { + "register_start": 43764, + "scan_interval": 10, + "entities": [ + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 3)", + "unique": "solis_modbus_inverter_discharge_soc_slot3", + "register": ['43764'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 3)", + "unique": "solis_modbus_inverter_discharge_current_slot3", + "register": ['43765'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43766']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 3)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot3", + "register": ['43767'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 3)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot3", + "register": ['43768'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 3)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot3", + "register": ['43769'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 3)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot3", + "register": ['43770'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 4)", + "unique": "solis_modbus_inverter_discharge_soc_slot4", + "register": ['43771'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 4)", + "unique": "solis_modbus_inverter_discharge_current_slot4", + "register": ['43772'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43773']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 4)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot4", + "register": ['43774'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 4)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot4", + "register": ['43775'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 4)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot4", + "register": ['43776'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 4)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot4", + "register": ['43777'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 5)", + "unique": "solis_modbus_inverter_discharge_soc_slot5", + "register": ['43778'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 5)", + "unique": "solis_modbus_inverter_discharge_current_slot5", + "register": ['43779'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43780']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 5)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot5", + "register": ['43781'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 5)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot5", + "register": ['43782'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 5)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot5", + "register": ['43783'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 5)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot5", + "register": ['43784'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + + + + {"type": "SS", "name": "Solis Timed Discharge SOC (Slot 6)", + "unique": "solis_modbus_inverter_discharge_soc_slot2", + "register": ['43785'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0, + "unit_of_measurement": PERCENTAGE, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Current (Slot 6)", + "unique": "solis_modbus_inverter_discharge_current_slot6", + "register": ['43786'], "device_class": SensorDeviceClass.CURRENT, "multiplier": 0.1, + "unit_of_measurement": UnitOfElectricCurrent.AMPERE, "state_class": SensorStateClass.MEASUREMENT}, + + {"type": "reserve", "register": ['43787']}, + + {"type": "SS", "name": "Solis Timed Discharge Start Hour (Slot 6)", + "unique": "solis_modbus_inverter_discharge_start_hour_slot6", + "register": ['43788'], "multiplier": 0, "unit_of_measurement": UnitOfTime.HOURS, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge Start Minute (Slot 6)", + "unique": "solis_modbus_inverter_discharge_start_minute_slot6", + "register": ['43789'], "multiplier": 0, "unit_of_measurement": UnitOfTime.MINUTES, + "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Hour (Slot 6)", + "unique": "solis_modbus_inverter_discharge_end_hour_slot62", + "register": ['43790'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.HOURS, "state_class": SensorStateClass.MEASUREMENT}, + {"type": "SS", "name": "Solis Timed Discharge End Minute (Slot 6)", + "unique": "solis_modbus_inverter_discharge_end_minute_slot6", + "register": ['43791'], "multiplier": 0, + "unit_of_measurement": UnitOfTime.MINUTES, "state_class": SensorStateClass.MEASUREMENT}, + ] + }, ] sensors_derived = [ {"type": "SDS", "name": "Solis Status String", diff --git a/custom_components/solis_modbus/switch.py b/custom_components/solis_modbus/switch.py index be873ea..fa0eba0 100644 --- a/custom_components/solis_modbus/switch.py +++ b/custom_components/solis_modbus/switch.py @@ -29,6 +29,23 @@ async def async_setup_entry(hass, config_entry: ConfigEntry, async_add_devices): {"type": "SBS", "bit_position": 5, "name": "Solis Allow Grid To Charge The Battery"}, {"type": "SBS", "bit_position": 6, "name": "Solis Feed In Priority Mode"}, ] + }, + { + "read_register": 43707, 'write_register': 43707, + "entities": [ + {"type": "SBS", "bit_position": 0, "name": "Charge Time Slot 1 Switch"}, + {"type": "SBS", "bit_position": 1, "name": "Charge Time Slot 2 Switch"}, + {"type": "SBS", "bit_position": 2, "name": "Charge Time Slot 3 Switch"}, + {"type": "SBS", "bit_position": 3, "name": "Charge Time Slot 4 Switch"}, + {"type": "SBS", "bit_position": 4, "name": "Charge Time Slot 5 Switch"}, + {"type": "SBS", "bit_position": 5, "name": "Charge Time Slot 6 Switch"}, + {"type": "SBS", "bit_position": 6, "name": "Disharge Time Slot 1 Switch"}, + {"type": "SBS", "bit_position": 7, "name": "Disharge Time Slot 2 Switch"}, + {"type": "SBS", "bit_position": 8, "name": "Disharge Time Slot 3 Switch"}, + {"type": "SBS", "bit_position": 9, "name": "Disharge Time Slot 4 Switch"}, + {"type": "SBS", "bit_position": 10, "name": "Disharge Time Slot 5 Switch"}, + {"type": "SBS", "bit_position": 11, "name": "Disharge Time Slot 6 Switch"}, + ] } ] diff --git a/custom_components/solis_modbus/time.py b/custom_components/solis_modbus/time.py index e2b7e7a..073ad20 100644 --- a/custom_components/solis_modbus/time.py +++ b/custom_components/solis_modbus/time.py @@ -41,6 +41,8 @@ async def async_setup_entry(hass, config_entry: ConfigEntry, async_add_devices): timeEntities: List[SolisTimeEntity] = [] timeent = [ + + {"type": "STE", "name": "Solis Time-Charging Charge Start (Slot 1)", "register": 43143, "enabled": True}, {"type": "STE", "name": "Solis Time-Charging Charge End (Slot 1)", "register": 43145, "enabled": True}, {"type": "STE", "name": "Solis Time-Charging Discharge Start (Slot 1)", "register": 43147, "enabled": True}, @@ -55,6 +57,44 @@ async def async_setup_entry(hass, config_entry: ConfigEntry, async_add_devices): {"type": "STE", "name": "Solis Time-Charging Charge End (Slot 3)", "register": 43165, "enabled": True}, {"type": "STE", "name": "Solis Time-Charging Discharge Start (Slot 3)", "register": 43167, "enabled": True}, {"type": "STE", "name": "Solis Time-Charging Discharge End (Slot 3)", "register": 43169, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 1)", "register": 43711, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 1)", "register": 43713, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 2)", "register": 43718, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 2)", "register": 43720, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 3)", "register": 43725, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 3)", "register": 43727, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 4)", "register": 43732, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 4)", "register": 43734, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 5)", "register": 43739, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 5)", "register": 43741, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Charge Start (Slot 6)", "register": 43746, "enabled": True}, + {"type": "STE", "name": "Solis Timed Charge End (Slot 6)", "register": 43748, "enabled": True}, + + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 1)", "register": 43753, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 1)", "register": 43755, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 2)", "register": 43760, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 2)", "register": 43762, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 3)", "register": 43767, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 3)", "register": 43769, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 4)", "register": 43774, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 4)", "register": 43776, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 5)", "register": 43781, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 5)", "register": 43783, "enabled": True}, + + {"type": "STE", "name": "Solis Timed Discharge Start (Slot 6)", "register": 43788, "enabled": True}, + {"type": "STE", "name": "Solis Timed Discharge End (Slot 6)", "register": 43791, "enabled": True}, + ] for entity_definition in timeent: