Skip to content

Commit 983a2f5

Browse files
zweckjfrenck
authored andcommitted
Bump pylamarzocco to 1.4.9 (#140916)
1 parent aab349e commit 983a2f5

File tree

12 files changed

+182
-69
lines changed

12 files changed

+182
-69
lines changed

homeassistant/components/lamarzocco/__init__.py

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,42 @@ async def async_setup_entry(hass: HomeAssistant, entry: LaMarzoccoConfigEntry) -
6161
client=client,
6262
)
6363

64+
# initialize the firmware update coordinator early to check the firmware version
65+
firmware_device = LaMarzoccoMachine(
66+
model=entry.data[CONF_MODEL],
67+
serial_number=entry.unique_id,
68+
name=entry.data[CONF_NAME],
69+
cloud_client=cloud_client,
70+
)
71+
72+
firmware_coordinator = LaMarzoccoFirmwareUpdateCoordinator(
73+
hass, entry, firmware_device
74+
)
75+
await firmware_coordinator.async_config_entry_first_refresh()
76+
gateway_version = version.parse(
77+
firmware_device.firmware[FirmwareType.GATEWAY].current_version
78+
)
79+
80+
if gateway_version >= version.parse("v5.0.9"):
81+
# remove host from config entry, it is not supported anymore
82+
data = {k: v for k, v in entry.data.items() if k != CONF_HOST}
83+
hass.config_entries.async_update_entry(
84+
entry,
85+
data=data,
86+
)
87+
88+
elif gateway_version < version.parse("v3.4-rc5"):
89+
# incompatible gateway firmware, create an issue
90+
ir.async_create_issue(
91+
hass,
92+
DOMAIN,
93+
"unsupported_gateway_firmware",
94+
is_fixable=False,
95+
severity=ir.IssueSeverity.ERROR,
96+
translation_key="unsupported_gateway_firmware",
97+
translation_placeholders={"gateway_version": str(gateway_version)},
98+
)
99+
64100
# initialize local API
65101
local_client: LaMarzoccoLocalClient | None = None
66102
if (host := entry.data.get(CONF_HOST)) is not None:
@@ -117,30 +153,16 @@ def bluetooth_configured() -> bool:
117153

118154
coordinators = LaMarzoccoRuntimeData(
119155
LaMarzoccoConfigUpdateCoordinator(hass, entry, device, local_client),
120-
LaMarzoccoFirmwareUpdateCoordinator(hass, entry, device),
156+
firmware_coordinator,
121157
LaMarzoccoStatisticsUpdateCoordinator(hass, entry, device),
122158
)
123159

124160
# API does not like concurrent requests, so no asyncio.gather here
125161
await coordinators.config_coordinator.async_config_entry_first_refresh()
126-
await coordinators.firmware_coordinator.async_config_entry_first_refresh()
127162
await coordinators.statistics_coordinator.async_config_entry_first_refresh()
128163

129164
entry.runtime_data = coordinators
130165

131-
gateway_version = device.firmware[FirmwareType.GATEWAY].current_version
132-
if version.parse(gateway_version) < version.parse("v3.4-rc5"):
133-
# incompatible gateway firmware, create an issue
134-
ir.async_create_issue(
135-
hass,
136-
DOMAIN,
137-
"unsupported_gateway_firmware",
138-
is_fixable=False,
139-
severity=ir.IssueSeverity.ERROR,
140-
translation_key="unsupported_gateway_firmware",
141-
translation_placeholders={"gateway_version": gateway_version},
142-
)
143-
144166
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
145167

146168
async def update_listener(

homeassistant/components/lamarzocco/manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,5 @@
3737
"iot_class": "cloud_polling",
3838
"loggers": ["pylamarzocco"],
3939
"quality_scale": "platinum",
40-
"requirements": ["pylamarzocco==1.4.7"]
40+
"requirements": ["pylamarzocco==1.4.9"]
4141
}

homeassistant/components/lamarzocco/number.py

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,12 @@ class LaMarzoccoKeyNumberEntityDescription(
144144
set_value_fn=lambda machine, value, key: machine.set_prebrew_time(
145145
prebrew_off_time=value, key=key
146146
),
147-
native_value_fn=lambda config, key: config.prebrew_configuration[key].off_time,
147+
native_value_fn=lambda config, key: config.prebrew_configuration[key][
148+
0
149+
].off_time,
148150
available_fn=lambda device: len(device.config.prebrew_configuration) > 0
149-
and device.config.prebrew_mode == PrebrewMode.PREBREW,
151+
and device.config.prebrew_mode
152+
in (PrebrewMode.PREBREW, PrebrewMode.PREBREW_ENABLED),
150153
supported_fn=lambda coordinator: coordinator.device.model
151154
!= MachineModel.GS3_MP,
152155
),
@@ -162,9 +165,12 @@ class LaMarzoccoKeyNumberEntityDescription(
162165
set_value_fn=lambda machine, value, key: machine.set_prebrew_time(
163166
prebrew_on_time=value, key=key
164167
),
165-
native_value_fn=lambda config, key: config.prebrew_configuration[key].off_time,
168+
native_value_fn=lambda config, key: config.prebrew_configuration[key][
169+
0
170+
].off_time,
166171
available_fn=lambda device: len(device.config.prebrew_configuration) > 0
167-
and device.config.prebrew_mode == PrebrewMode.PREBREW,
172+
and device.config.prebrew_mode
173+
in (PrebrewMode.PREBREW, PrebrewMode.PREBREW_ENABLED),
168174
supported_fn=lambda coordinator: coordinator.device.model
169175
!= MachineModel.GS3_MP,
170176
),
@@ -180,8 +186,8 @@ class LaMarzoccoKeyNumberEntityDescription(
180186
set_value_fn=lambda machine, value, key: machine.set_preinfusion_time(
181187
preinfusion_time=value, key=key
182188
),
183-
native_value_fn=lambda config, key: config.prebrew_configuration[
184-
key
189+
native_value_fn=lambda config, key: config.prebrew_configuration[key][
190+
1
185191
].preinfusion_time,
186192
available_fn=lambda device: len(device.config.prebrew_configuration) > 0
187193
and device.config.prebrew_mode == PrebrewMode.PREINFUSION,

homeassistant/components/lamarzocco/select.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
PREBREW_MODE_HA_TO_LM = {
3939
"disabled": PrebrewMode.DISABLED,
4040
"prebrew": PrebrewMode.PREBREW,
41+
"prebrew_enabled": PrebrewMode.PREBREW_ENABLED,
4142
"preinfusion": PrebrewMode.PREINFUSION,
4243
}
4344

homeassistant/components/lamarzocco/strings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
"state": {
149149
"disabled": "Disabled",
150150
"prebrew": "Prebrew",
151+
"prebrew_enabled": "Prebrew",
151152
"preinfusion": "Preinfusion"
152153
}
153154
},

requirements_all.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

requirements_test_all.txt

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/components/lamarzocco/fixtures/config.json

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,28 +101,60 @@
101101
"mode": "TypeB",
102102
"Group1": [
103103
{
104+
"mode": "TypeA",
104105
"groupNumber": "Group1",
105106
"doseType": "DoseA",
106107
"preWetTime": 0.5,
107108
"preWetHoldTime": 1
108109
},
109110
{
111+
"mode": "TypeB",
112+
"groupNumber": "Group1",
113+
"doseType": "DoseA",
114+
"preWetTime": 0,
115+
"preWetHoldTime": 4
116+
},
117+
{
118+
"mode": "TypeA",
110119
"groupNumber": "Group1",
111120
"doseType": "DoseB",
112121
"preWetTime": 0.5,
113122
"preWetHoldTime": 1
114123
},
115124
{
125+
"mode": "TypeB",
126+
"groupNumber": "Group1",
127+
"doseType": "DoseB",
128+
"preWetTime": 0,
129+
"preWetHoldTime": 4
130+
},
131+
{
132+
"mode": "TypeA",
116133
"groupNumber": "Group1",
117134
"doseType": "DoseC",
118-
"preWetTime": 3.2999999523162842,
119-
"preWetHoldTime": 3.2999999523162842
135+
"preWetTime": 3.3,
136+
"preWetHoldTime": 3.3
120137
},
121138
{
139+
"mode": "TypeB",
140+
"groupNumber": "Group1",
141+
"doseType": "DoseC",
142+
"preWetTime": 0,
143+
"preWetHoldTime": 4
144+
},
145+
{
146+
"mode": "TypeA",
122147
"groupNumber": "Group1",
123148
"doseType": "DoseD",
124149
"preWetTime": 2,
125150
"preWetHoldTime": 2
151+
},
152+
{
153+
"mode": "TypeB",
154+
"groupNumber": "Group1",
155+
"doseType": "DoseD",
156+
"preWetTime": 0,
157+
"preWetHoldTime": 4
126158
}
127159
]
128160
},

tests/components/lamarzocco/fixtures/config_mini.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,18 @@
8282
"mode": "TypeB",
8383
"Group1": [
8484
{
85+
"mode": "TypeA",
8586
"groupNumber": "Group1",
86-
"doseType": "DoseA",
87+
"doseType": "Continuous",
8788
"preWetTime": 2,
8889
"preWetHoldTime": 3
90+
},
91+
{
92+
"mode": "TypeB",
93+
"groupNumber": "Group1",
94+
"doseType": "Continuous",
95+
"preWetTime": 0,
96+
"preWetHoldTime": 3
8997
}
9098
]
9199
},

tests/components/lamarzocco/snapshots/test_diagnostics.ambr

Lines changed: 40 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -27,22 +27,46 @@
2727
}),
2828
'plumbed_in': True,
2929
'prebrew_configuration': dict({
30-
'1': dict({
31-
'off_time': 1,
32-
'on_time': 0.5,
33-
}),
34-
'2': dict({
35-
'off_time': 1,
36-
'on_time': 0.5,
37-
}),
38-
'3': dict({
39-
'off_time': 3.299999952316284,
40-
'on_time': 3.299999952316284,
41-
}),
42-
'4': dict({
43-
'off_time': 2,
44-
'on_time': 2,
45-
}),
30+
'1': list([
31+
dict({
32+
'off_time': 1,
33+
'on_time': 0.5,
34+
}),
35+
dict({
36+
'off_time': 4,
37+
'on_time': 0,
38+
}),
39+
]),
40+
'2': list([
41+
dict({
42+
'off_time': 1,
43+
'on_time': 0.5,
44+
}),
45+
dict({
46+
'off_time': 4,
47+
'on_time': 0,
48+
}),
49+
]),
50+
'3': list([
51+
dict({
52+
'off_time': 3.3,
53+
'on_time': 3.3,
54+
}),
55+
dict({
56+
'off_time': 4,
57+
'on_time': 0,
58+
}),
59+
]),
60+
'4': list([
61+
dict({
62+
'off_time': 2,
63+
'on_time': 2,
64+
}),
65+
dict({
66+
'off_time': 4,
67+
'on_time': 0,
68+
}),
69+
]),
4670
}),
4771
'prebrew_mode': 'TypeB',
4872
'scale': None,

0 commit comments

Comments
 (0)