@@ -604,6 +604,8 @@ async def publish_meter(self, device, meter):
604604 self .dashboard_item (entity_name + "_grid_export_total" , state = meter [key ][subkey ].get ("export" , 0 ), attributes = attribute_table .get ("grid_export_total" , {}), app = "gecloud" )
605605
606606 async def enable_default_options (self , device , registers ):
607+ """Enable default options for the device."""
608+ changed = False
607609 for key in registers :
608610 reg_name = registers [key ].get ("name" , "" )
609611 value = registers [key ].get ("value" , None )
@@ -616,10 +618,9 @@ async def enable_default_options(self, device, registers):
616618 if result and ("value" in result ):
617619 registers [key ]["value" ] = result ["value" ]
618620 await self .publish_registers (device , self .settings [device ], select_key = key )
619- return True
621+ changed = True
620622 else :
621623 self .log ("GECloud: Warn: Failed to set {} for {}" .format (ha_name , device ))
622- return False
623624 if ("inverter_max_output_active_power_percent" in ha_name ) or ("ac_charge_upper_percent_limit" in ha_name ) or ("_upper_soc_percent_limit" in ha_name ):
624625 if "enable_" in ha_name :
625626 continue
@@ -630,32 +631,29 @@ async def enable_default_options(self, device, registers):
630631 if result and ("value" in result ):
631632 registers [key ]["value" ] = result ["value" ]
632633 await self .publish_registers (device , self .settings [device ], select_key = key )
633- return True
634+ changed = True
634635 else :
635636 self .log ("GECloud: Warn: Failed to set {} for {}" .format (ha_name , device ))
636- return False
637637 if "charge_up_to_percent" in ha_name :
638638 if not value or value < 100 :
639639 self .log ("GECloud: Setting {} to 100% for {}, previous value was {}" .format (ha_name , device , value ))
640640 result = await self .async_write_inverter_setting (device , key , 100 )
641641 if result and ("value" in result ):
642642 registers [key ]["value" ] = result ["value" ]
643643 await self .publish_registers (device , self .settings [device ], select_key = key )
644- return True
644+ changed = True
645645 else :
646646 self .log ("GECloud: Warn: Failed to set {} for {}" .format (ha_name , device ))
647- return False
648647 if "discharge_down_to_percent" in ha_name :
649648 if not value or value > 4 :
650649 self .log ("GECloud: Setting {} to 4% for {}, previous value was {}" .format (ha_name , device , value ))
651650 result = await self .async_write_inverter_setting (device , key , 4 )
652651 if result and ("value" in result ):
653652 registers [key ]["value" ] = result ["value" ]
654653 await self .publish_registers (device , self .settings [device ], select_key = key )
655- return True
654+ changed = True
656655 else :
657656 self .log ("GECloud: Warn: Failed to set {} for {}" .format (ha_name , device ))
658- return False
659657 # Reset AC charge start and end times to 00:00 to disable
660658 for charge_id in range (2 , 11 ):
661659 if (
@@ -670,25 +668,24 @@ async def enable_default_options(self, device, registers):
670668 if result and ("value" in result ):
671669 registers [key ]["value" ] = result ["value" ]
672670 await self .publish_registers (device , self .settings [device ], select_key = key )
673- return True
671+ changed = True
674672 else :
675673 self .log ("GECloud: Warn: Failed to set {} for {}" .format (ha_name , device ))
676- return False
677674 if "real_time_control" in ha_name :
678675 if value :
679676 self .log ("GECloud: Real-time control already enabled for {}" .format (device ))
680- return True
677+ changed = True
678+ continue
681679 else :
682680 self .log ("GECloud: Enabling real-time control for {} as current value is {}" .format (device , value ))
683681 result = await self .async_write_inverter_setting (device , key , True )
684682 if result and ("value" in result ):
685683 registers [key ]["value" ] = result ["value" ]
686684 await self .publish_registers (device , self .settings [device ], select_key = key )
687- return True
685+ changed = True
688686 else :
689687 self .log ("GECloud: Warn: Failed to enable real-time control for {}" .format (device ))
690- return False
691- return False
688+ return changed
692689
693690 async def publish_registers (self , device , registers , select_key = None ):
694691 """
0 commit comments