Pump as ToggleEntity but how to implement reading it's real state?

I am developing pump control component for HA.
Pump can be controlled manually (outside HA) too.

I based pump Entity on ToggleEntity where I can turn it on or off via implementing turn_on()/turn_off(), but how should I read pump state?
I can set should_poll() to True, and implement reading pump state via is_on():
@property
def is_on(self) -> bool:
“”“Return true if device is on.”""
status = self._ecoal_contr.get_cached_status(max_cache_period=1)
self._state = getattr(status, self._state_attr)
return self._state
and it works, but IMHO having side effects in property is ugly.

Is any better callback to perform reading real pump state? async_update() ? update() ?

P.S. code blocks formatting seems not work for me?

According to http://dev-docs.home-assistant.io/en/master/api/entity.html and tested practice update() is right place to reading pump state.

Yes, in update is the correct place. The is_on method should used the cached value in self._state. See this documentation for creating a platform, which is what you’re (probably) doing. Or maybe you’re creating a component.