Skip to content

Commit b914fb7

Browse files
authored
Merge pull request #3 from CoMPaTech/stability
Add retry
2 parents f6bca58 + f6aa13a commit b914fb7

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

custom_components/stromer/stromer.py

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""Stromer module for Home Assistant Core."""
22

3-
__version__ = "0.0.3a0"
3+
__version__ = "0.0.4"
44

55
import json
66
import logging
@@ -55,25 +55,32 @@ async def stromer_connect(self):
5555
return self.status
5656

5757
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))
7784

7885
async def stromer_get_code(self):
7986
base_url = "https://api3.stromer-portal.ch"

0 commit comments

Comments
 (0)