async def METHOD_NAME(self):
    while True:
        if self._hours > 0:
            now = datetime.datetime.now()
            first_reset = datetime.datetime(
                now.year,
                now.month,
                now.day,
                self._reset_time.hour,
                self._reset_time.minute,
            )
            # calculate next reset time
            if (now - first_reset).total_seconds() > 0:
                next_reset = now + datetime.timedelta(
                    seconds=(self._hours * 3600)
                    - ((now - first_reset).seconds % (self._hours * 3600))
                )
            else:
                next_reset = now + datetime.timedelta(
                    seconds=1 + ((first_reset - now).seconds % (self._hours * 3600))
                )
            await fhem.readingsSingleUpdateIfChanged(
                self.hash,
                "nextreset",
                f"{next_reset.hour:02}:{next_reset.minute:02}",
                1,
            )
            await asyncio.sleep((next_reset - now).seconds)
        # do reset now
        await self.ble_reset_once()
        now = datetime.datetime.now()
        await fhem.readingsSingleUpdate(
            self.hash, "lastreset", f"{now.hour:02}:{now.minute:02}", 1
        )
        if self._hours == 0:
            return