|
1 | 1 | """Stromer module for Home Assistant Core.""" |
2 | 2 |
|
3 | | -__version__ = "0.0.3a0" |
| 3 | +__version__ = "0.0.4" |
4 | 4 |
|
5 | 5 | import json |
6 | 6 | import logging |
@@ -55,25 +55,32 @@ async def stromer_connect(self): |
55 | 55 | return self.status |
56 | 56 |
|
57 | 57 | async def stromer_update(self): |
58 | | - try: |
59 | | - self.bike = await self.stromer_call_api(endpoint="bike/") |
60 | | - LOGGER.debug("Stromer bike: {}".format(self.bike)) |
61 | | - |
62 | | - self.bike_id = self.bike["bikeid"] |
63 | | - self.bike_name = self.bike["nickname"] |
64 | | - self.bike_model = self.bike["biketype"] |
65 | | - |
66 | | - endpoint = f"bike/{self.bike_id}/state/" |
67 | | - data = {"cached": "false"} |
68 | | - # LOGGER.debug("Stromer endpoint: {}".format(endpoint)) |
69 | | - self.status = await self.stromer_call_api(endpoint=endpoint, data=data) |
70 | | - LOGGER.debug("Stromer status: {}".format(self.status)) |
71 | | - |
72 | | - endpoint = f"bike/{self.bike_id}/position/" |
73 | | - self.position = await self.stromer_call_api(endpoint=endpoint, data=data) |
74 | | - LOGGER.debug("Stromer position: {}".format(self.position)) |
75 | | - except Exception as e: |
76 | | - LOGGER.error("Stromer error: api call failed: {}".format(e)) |
| 58 | + attempts = 0 |
| 59 | + while attempts < 5: |
| 60 | + attempts += 1 |
| 61 | + try: |
| 62 | + LOGGER.debug("Stromer attempt: {}/5".format(attempts)) |
| 63 | + self.bike = await self.stromer_call_api(endpoint="bike/") |
| 64 | + LOGGER.debug("Stromer bike: {}".format(self.bike)) |
| 65 | + |
| 66 | + self.bike_id = self.bike["bikeid"] |
| 67 | + self.bike_name = self.bike["nickname"] |
| 68 | + self.bike_model = self.bike["biketype"] |
| 69 | + |
| 70 | + endpoint = f"bike/{self.bike_id}/state/" |
| 71 | + data = {"cached": "false"} |
| 72 | + # LOGGER.debug("Stromer endpoint: {}".format(endpoint)) |
| 73 | + self.status = await self.stromer_call_api(endpoint=endpoint, data=data) |
| 74 | + LOGGER.debug("Stromer status: {}".format(self.status)) |
| 75 | + |
| 76 | + endpoint = f"bike/{self.bike_id}/position/" |
| 77 | + self.position = await self.stromer_call_api(endpoint=endpoint, data=data) |
| 78 | + LOGGER.debug("Stromer position: {}".format(self.position)) |
| 79 | + break |
| 80 | + |
| 81 | + except Exception as e: |
| 82 | + LOGGER.error("Stromer error: api call failed: {}".format(e)) |
| 83 | + LOGGER.debug("Stromer retry: {}/5".format(attempts)) |
77 | 84 |
|
78 | 85 | async def stromer_get_code(self): |
79 | 86 | base_url = "https://api3.stromer-portal.ch" |
|
0 commit comments