Skip to content

Commit b6e7038

Browse files
authored
Preset modes patch (#35)
* patch error and bugs on some presets for climate * translation and icon * update tests to change async_update_entity by import
1 parent fb369b6 commit b6e7038

File tree

17 files changed

+142
-114
lines changed

17 files changed

+142
-114
lines changed

custom_components/smartbox/climate.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ def preset_mode(self) -> str: # noqa: PLR0911
159159
if self._node.node_type == SmartboxNodeType.HTR_MOD:
160160
_check_status_key("mode", self._node.node_type, self._status)
161161
mode = self._status["mode"]
162+
if mode == "auto":
163+
return PRESET_SCHEDULE
164+
if mode == "presence":
165+
return PRESET_ACTIVITY
166+
if mode == "self_learn":
167+
return PRESET_SELF_LEARN
162168
if mode == "manual":
163169
_check_status_key("selected_temp", self._node.node_type, self._status)
164170
selected_temp = self._status["selected_temp"]
@@ -173,12 +179,6 @@ def preset_mode(self) -> str: # noqa: PLR0911
173179
f"{self._node.node_type} and {mode} - please report to {GITHUB_ISSUES_URL}."
174180
)
175181
raise ValueError(msg)
176-
if mode == "auto":
177-
return PRESET_SCHEDULE
178-
if mode == "presence":
179-
return PRESET_ACTIVITY
180-
if mode == "self_learn":
181-
return PRESET_SELF_LEARN
182182
msg = f"Unknown smartbox node mode {mode}"
183183
raise ValueError(msg)
184184
return PRESET_HOME
@@ -196,8 +196,8 @@ def preset_modes(self) -> list[str]:
196196
PRESET_COMFORT,
197197
PRESET_ECO,
198198
PRESET_FROST,
199-
PRESET_SCHEDULE,
200199
PRESET_SELF_LEARN,
200+
PRESET_SCHEDULE,
201201
]
202202
)
203203
else:
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{
2+
"entity": {
3+
"climate": {
4+
"thermostat": {
5+
"state_attributes": {
6+
"preset_mode": {
7+
"state": {
8+
"frost": "mdi:snowflake",
9+
"schedule": "mdi:calendar-clock-outline",
10+
"self_learn": "mdi:brain"
11+
}
12+
}
13+
}
14+
}
15+
}
16+
}
17+
}

custom_components/smartbox/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,5 @@
1010
"issue_tracker": "https://github.com/ajtudela/hass-smartbox/issues",
1111
"quality_scale": "custom",
1212
"requirements": ["smartbox>=2.2.0,<2.3.0"],
13-
"version": "2.1.4"
13+
"version": "2.1.5"
1414
}

custom_components/smartbox/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,8 @@ async def get_samples(self, start_time: int, end_time: int) -> SamplesDict:
442442
@property
443443
def total_energy(self) -> float | None:
444444
"""Get the energy used."""
445+
if not self._samples:
446+
return None
445447
return self._samples[-1]["counter"]
446448

447449
@property

custom_components/smartbox/sensor.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ def native_value(self) -> float:
203203
self._status["power"]
204204
if (
205205
self._node.node_type == SmartboxNodeType.PMO
206-
or self._node.is_heating(self._status)
206+
or ("power" in self._status and self._node.is_heating(self._status))
207207
)
208208
else 0
209209
)

custom_components/smartbox/translations/en.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@
5454
}
5555
},
5656
"entity": {
57+
"climate": {
58+
"thermostat": {
59+
"state_attributes": {
60+
"preset_mode": {
61+
"state": {
62+
"frost": "Frost",
63+
"schedule": "Schedule",
64+
"self_learn": "Self-learning"
65+
}
66+
}
67+
}
68+
}
69+
},
5770
"sensor": {
5871
"charge_level": {
5972
"name": "Charge Level"

custom_components/smartbox/translations/es.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,19 @@
5757
}
5858
},
5959
"entity": {
60+
"climate": {
61+
"thermostat": {
62+
"state_attributes": {
63+
"preset_mode": {
64+
"state": {
65+
"frost": "Anticongelante",
66+
"schedule": "Planificación",
67+
"self_learn": "Autoaprendizaje"
68+
}
69+
}
70+
}
71+
}
72+
},
6073
"sensor": {
6174
"charge_level": {
6275
"name": "Nivel de carga"

custom_components/smartbox/translations/fr.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@
5454
}
5555
},
5656
"entity": {
57+
"climate": {
58+
"thermostat": {
59+
"state_attributes": {
60+
"preset_mode": {
61+
"state": {
62+
"frost": "Anti-gel",
63+
"schedule": "Planning",
64+
"self_learn": "Auto apprentissage"
65+
}
66+
}
67+
}
68+
}
69+
},
5770
"sensor": {
5871
"charge_level": {
5972
"name": "Niveau de charge"

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "hass-smartbox"
3-
version = "2.1.4"
3+
version = "2.1.5"
44
description = "Home Assistant integration for Smartbox."
55
readme = "README.md"
66
requires-python = ">=3.13"

0 commit comments

Comments
 (0)