1818 DataUpdateCoordinator ,
1919 UpdateFailed ,
2020)
21- from homeassistant .helpers .event import async_track_state_change_event
2221
2322from .const import DOMAIN
2423from .ecu_api import APsystemsSocket , APsystemsInvalidData
25- from .gui_helpers import set_inverter_state , set_zero_export , reboot_ecu , inverter_max_power
24+ from .gui_helpers import set_inverter_state , set_zero_export , reboot_ecu , set_inverter_max_power
2625
2726_LOGGER = logging .getLogger (__name__ )
2827
29- PLATFORMS = ["sensor" , "binary_sensor" , "switch" ]
28+ PLATFORMS = ["sensor" , "binary_sensor" , "switch" , "number" ]
3029
3130class ECUREADER :
3231 """ECU Reader"""
@@ -40,6 +39,11 @@ def __init__(self, ipaddr, wifi_ssid, wifi_password, show_graphs):
4039 self .data_from_cache_count = 0
4140 self .cached_data = {}
4241
42+ # called from number.py
43+ async def set_inverter_max_power (self , inverter_uid , max_panel_power ):
44+ """Set the max power for an inverter."""
45+ return await set_inverter_max_power (self .ipaddr , inverter_uid , max_panel_power )
46+
4347 # called from switch.py
4448 async def set_inverter_state (self , inverter_id , state ):
4549 """Set the on/off state of an inverter. 1=on, 2=off"""
@@ -97,7 +101,7 @@ async def update_listener(hass, config):
97101
98102
99103async def async_setup_entry (hass , config ):
100- """Setup APsystems platform. """
104+ """ Setup APsystems platform """
101105 hass .data .setdefault (DOMAIN , {})
102106 interval = timedelta (seconds = config .data .get ("scan_interval" , 300 ))
103107 ecu = ECUREADER (
@@ -108,13 +112,14 @@ async def async_setup_entry(hass, config):
108112 )
109113
110114 async def do_ecu_update ():
111- """Pass current port_retries value dynamically."""
115+ """ Pass current port_retries value dynamically. """
112116 return await ecu .update (
113117 config .data .get ("port_retries" , 2 ),
114118 config .data .get ("cache_reboot" , 3 ),
115119 config .data .get ("show_graphs" , True )
116120 )
117121
122+
118123 coordinator = DataUpdateCoordinator (
119124 hass ,
120125 _LOGGER ,
@@ -138,7 +143,7 @@ async def do_ecu_update():
138143 # If not, the user should be notified and devices should not be created.
139144 if not ecu .ecu .ecu_id :
140145 _LOGGER .error (
141- "Unable to connect with ECU @ %s. Check IP-Address or wait "
146+ "Unable to connect with ECU @ %s. Check IP-Address or wait "
142147 "10 minutes because the ECU might be recovering from reboot." ,
143148 config .data ["ecu_host" ]
144149 )
@@ -171,25 +176,9 @@ async def do_ecu_update():
171176 # Forward platform setup requests.
172177 await hass .config_entries .async_forward_entry_setups (config , PLATFORMS )
173178 config .async_on_unload (config .add_update_listener (update_listener ))
174-
175- # Add listeners for state changes of the input_number entities
176- async def max_panel_power_listener (event ):
177- """Handle state changes of the input_number entity."""
178- new_state = event .data .get ("new_state" )
179- if new_state is None :
180- return
181- new_value = new_state .state
182- await inverter_max_power (ecu .ipaddr , event .data ["entity_id" ].split ('.' )[- 1 ], new_value )
183-
184- # Create listeners for each inverter UID
185- max_panel_power_entity_ids = [
186- f"max_panel_power.{ uid } " for uid in inverters .keys ()
187- ]
188- _LOGGER .debug ("Adding listeners for input_number entities: %s" ,max_panel_power_entity_ids )
189- for entity_id in max_panel_power_entity_ids :
190- async_track_state_change_event (hass , entity_id , max_panel_power_listener )
191179 return True
192180
181+
193182async def async_remove_config_entry_device (hass , _ , device_entry ) -> bool :
194183 """ Handle device removal """
195184 if device_entry :
0 commit comments