Skip to content

Commit 0e4bd43

Browse files
fix(#176): track manual feed state locally for predictable switch behavior (#250)
Co-authored-by: Jamie Jones <29973406+jjjonesjr33@users.noreply.github.com>
1 parent 0c0385f commit 0e4bd43

1 file changed

Lines changed: 13 additions & 3 deletions

File tree

custom_components/petlibro/devices/feeders/polar_wet_food_feeder.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ async def refresh(self):
3434
"wetFeedingPlan": wet_feeding_plan or {},
3535
"getfeedingplantoday": get_feeding_plan_today or {}
3636
})
37+
if self.manual_feed_id is not None:
38+
self._manual_feed_active = True
3739
except PetLibroAPIError as err:
3840
_LOGGER.error(f"Error refreshing data for PolarWetFoodFeeder: {err}")
3941

@@ -122,6 +124,10 @@ def next_feeding_end_time(self) -> str:
122124
except ValueError:
123125
return "Invalid time"
124126

127+
def __init__(self, *args, **kwargs):
128+
super().__init__(*args, **kwargs)
129+
self._manual_feed_active = False
130+
125131
@property
126132
def manual_feed_id(self) -> int:
127133
"""Returns the manual feed ID."""
@@ -130,7 +136,7 @@ def manual_feed_id(self) -> int:
130136
@property
131137
def manual_feed_now(self) -> bool:
132138
"""Returns whether the feeder is set to feed now or not."""
133-
return self.manual_feed_id is not None
139+
return self._manual_feed_active
134140

135141
@property
136142
def online(self) -> bool:
@@ -192,9 +198,13 @@ async def set_manual_feed_now(self, start: bool, plate: int) -> None:
192198
await self.api.set_manual_feed_now(self.serial, plate)
193199
else:
194200
_LOGGER.debug(f"Triggering stop feed now for {self.serial}")
195-
await self.api.set_stop_feed_now(self.serial, self.manual_feed_id)
201+
if self.manual_feed_id is None:
202+
_LOGGER.warning("No manual feed ID available to stop for %s", self.serial)
203+
else:
204+
await self.api.set_stop_feed_now(self.serial, self.manual_feed_id)
196205

197-
await self.refresh() # Refresh the state after the action
206+
self._manual_feed_active = start
207+
await self.refresh()
198208
except aiohttp.ClientError as err:
199209
_LOGGER.error(f"Failed to trigger manual feed now for {self.serial} with plate no.{plate}: {err}")
200210
raise PetLibroAPIError(f"Error triggering manual feed now: {err}")

0 commit comments

Comments
 (0)