Skip to content

Commit ab1b233

Browse files
committed
fix: recognize Bemfa legacy API new success codes (5723007/5733007/5743007)
Bemfa's legacy API now returns new success codes: - 5723007 = 'added successfullye' (note: typo in Bemfa's response) - 5733007 = 'delete successfullye' - 5743007 = 'update successfullye' Previously, these were treated as failures, causing a false fallback to the new API which then failed because the operation had already succeeded. This led to duplicate creation attempts and misleading error logs like 'code=40004 Uid or topic err'. Now both codes and status strings are recognized as success. Version bump to 2.3.0
1 parent 0a3e8ef commit ab1b233

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

custom_components/bemfa/http.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,28 @@
4040
# Bemfa API success codes:
4141
# - New API (pro.bemfa.com / apis.bemfa.com): code=0
4242
# - Old API (api.bemfa.com): code=111, status="get ok"/"add ok"/"update ok"/"del ok"
43-
_API_SUCCESS_CODES = {0, 111}
44-
_API_SUCCESS_STATUSES = {"get ok", "add ok", "update ok", "del ok"}
43+
# - Legacy API also returns newer success codes:
44+
# 5723007 = "added successfullye" (note: typo in Bemfa's response)
45+
# 5733007 = "delete successfullye"
46+
# 5743007 = "update successfullye" (rename)
47+
_API_SUCCESS_CODES = {0, 111, 5723007, 5733007, 5743007}
48+
_API_SUCCESS_STATUSES = {
49+
"get ok", "add ok", "update ok", "del ok",
50+
"added successfullye", "delete successfullye", "update successfullye",
51+
}
4552

4653

4754
def _is_api_success(res_dict: dict) -> bool:
48-
"""Check if Bemfa API response indicates success."""
55+
"""Check if Bemfa API response indicates success.
56+
57+
Bemfa's legacy API uses inconsistent success indicators:
58+
- Old responses: code=111, status="add ok"/"del ok"
59+
- Newer responses: code=5723007/5733007/5743007,
60+
status="added successfullye"/"delete successfullye"/"update successfullye"
61+
- New JSON API: code=0
62+
63+
We check both code and status to catch all known success patterns.
64+
"""
4965
code = res_dict.get("code")
5066
status = res_dict.get("status", "")
5167
return code in _API_SUCCESS_CODES or status in _API_SUCCESS_STATUSES

custom_components/bemfa/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@
1414
"paho-mqtt==2.1.0"
1515
],
1616
"ssdp": [],
17-
"version": "2.2.1",
17+
"version": "2.3.0",
1818
"zeroconf": []
1919
}

0 commit comments

Comments
 (0)