Skip to content

Commit 704d4c8

Browse files
Diegorro98MartinHjelmareNoRi2909
authored
Add air conditioner and microwave features to Home Connect (home-assistant#151184)
Co-authored-by: Martin Hjelmare <[email protected]> Co-authored-by: Norbert Rittel <[email protected]>
1 parent 5b6a4b0 commit 704d4c8

File tree

6 files changed

+215
-0
lines changed

6 files changed

+215
-0
lines changed

homeassistant/components/home_connect/const.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
API_DEFAULT_RETRY_AFTER = 60
1414

1515
APPLIANCES_WITH_PROGRAMS = (
16+
"AirConditioner",
1617
"CleaningRobot",
1718
"CoffeeMaker",
1819
"Dishwasher",
1920
"Dryer",
2021
"Hood",
22+
"Microwave",
2123
"Oven",
2224
"WarmingDrawer",
2325
"Washer",
@@ -83,6 +85,14 @@
8385
value: key for key, value in TRANSLATION_KEYS_PROGRAMS_MAP.items()
8486
}
8587

88+
FAN_SPEED_MODE_OPTIONS = {
89+
bsh_key_to_translation_key(option): option
90+
for option in (
91+
"HeatingVentilationAirConditioning.AirConditioner.EnumType.FanSpeedMode.Automatic",
92+
"HeatingVentilationAirConditioning.AirConditioner.EnumType.FanSpeedMode.Manual",
93+
)
94+
}
95+
8696
AVAILABLE_MAPS_ENUM = {
8797
bsh_key_to_translation_key(option): option
8898
for option in (
@@ -315,6 +325,10 @@
315325
options,
316326
)
317327
for option_key, options in (
328+
(
329+
OptionKey.HEATING_VENTILATION_AIR_CONDITIONING_AIR_CONDITIONER_FAN_SPEED_MODE,
330+
FAN_SPEED_MODE_OPTIONS,
331+
),
318332
(
319333
OptionKey.CONSUMER_PRODUCTS_CLEANING_ROBOT_REFERENCE_MAP_ID,
320334
AVAILABLE_MAPS_ENUM,

homeassistant/components/home_connect/services.yaml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ set_program_and_options:
8282
- dishcare_dishwasher_program_maximum_cleaning
8383
- dishcare_dishwasher_program_mixed_load
8484
- dishcare_dishwasher_program_learning_dishwasher
85+
- heating_ventilation_air_conditioning_air_conditioner_program_active_clean
86+
- heating_ventilation_air_conditioning_air_conditioner_program_auto
87+
- heating_ventilation_air_conditioning_air_conditioner_program_cool
88+
- heating_ventilation_air_conditioning_air_conditioner_program_dry
89+
- heating_ventilation_air_conditioning_air_conditioner_program_fan
90+
- heating_ventilation_air_conditioning_air_conditioner_program_heat
8591
- laundry_care_dryer_program_cotton
8692
- laundry_care_dryer_program_synthetic
8793
- laundry_care_dryer_program_mix
@@ -136,6 +142,7 @@ set_program_and_options:
136142
- cooking_oven_program_microwave_90_watt
137143
- cooking_oven_program_microwave_180_watt
138144
- cooking_oven_program_microwave_360_watt
145+
- cooking_oven_program_microwave_450_watt
139146
- cooking_oven_program_microwave_600_watt
140147
- cooking_oven_program_microwave_900_watt
141148
- cooking_oven_program_microwave_1000_watt
@@ -177,6 +184,28 @@ set_program_and_options:
177184
- laundry_care_washer_dryer_program_easy_care
178185
- laundry_care_washer_dryer_program_wash_and_dry_60
179186
- laundry_care_washer_dryer_program_wash_and_dry_90
187+
air_conditioner_options:
188+
collapsed: true
189+
fields:
190+
heating_ventilation_air_conditioning_air_conditioner_option_fan_speed_percentage:
191+
example: 50
192+
required: false
193+
selector:
194+
number:
195+
min: 1
196+
max: 100
197+
step: 1
198+
mode: box
199+
unit_of_measurement: "%"
200+
heating_ventilation_air_conditioning_air_conditioner_option_fan_speed_mode:
201+
required: false
202+
selector:
203+
select:
204+
mode: dropdown
205+
translation_key: fan_speed_mode
206+
options:
207+
- heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_automatic
208+
- heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_manual
180209
cleaning_robot_options:
181210
collapsed: true
182211
fields:

homeassistant/components/home_connect/strings.json

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@
252252
"cooking_oven_program_microwave_1000_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_1000_watt%]",
253253
"cooking_oven_program_microwave_180_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_180_watt%]",
254254
"cooking_oven_program_microwave_360_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_360_watt%]",
255+
"cooking_oven_program_microwave_450_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_450_watt%]",
255256
"cooking_oven_program_microwave_600_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_600_watt%]",
256257
"cooking_oven_program_microwave_900_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_900_watt%]",
257258
"cooking_oven_program_microwave_90_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_90_watt%]",
@@ -281,6 +282,12 @@
281282
"dishcare_dishwasher_program_quick_65": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_quick_65%]",
282283
"dishcare_dishwasher_program_steam_fresh": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_steam_fresh%]",
283284
"dishcare_dishwasher_program_super_60": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_super_60%]",
285+
"heating_ventilation_air_conditioning_air_conditioner_program_active_clean": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_active_clean%]",
286+
"heating_ventilation_air_conditioning_air_conditioner_program_auto": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_auto%]",
287+
"heating_ventilation_air_conditioning_air_conditioner_program_cool": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_cool%]",
288+
"heating_ventilation_air_conditioning_air_conditioner_program_dry": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_dry%]",
289+
"heating_ventilation_air_conditioning_air_conditioner_program_fan": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_fan%]",
290+
"heating_ventilation_air_conditioning_air_conditioner_program_heat": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_heat%]",
284291
"laundry_care_dryer_program_anti_shrink": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_anti_shrink%]",
285292
"laundry_care_dryer_program_blankets": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_blankets%]",
286293
"laundry_care_dryer_program_business_shirts": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_business_shirts%]",
@@ -443,6 +450,13 @@
443450
"laundry_care_dryer_enum_type_drying_target_iron_dry": "[%key:component::home_connect::selector::drying_target::options::laundry_care_dryer_enum_type_drying_target_iron_dry%]"
444451
}
445452
},
453+
"fan_speed_mode": {
454+
"name": "[%key:component::home_connect::services::set_program_and_options::fields::heating_ventilation_air_conditioning_air_conditioner_option_fan_speed_mode::name%]",
455+
"state": {
456+
"heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_automatic": "[%key:component::home_connect::selector::fan_speed_mode::options::heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_automatic%]",
457+
"heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_manual": "[%key:component::home_connect::selector::fan_speed_mode::options::heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_manual%]"
458+
}
459+
},
446460
"flow_rate": {
447461
"name": "[%key:component::home_connect::services::set_program_and_options::fields::consumer_products_coffee_maker_option_flow_rate::name%]",
448462
"state": {
@@ -575,6 +589,7 @@
575589
"cooking_oven_program_microwave_1000_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_1000_watt%]",
576590
"cooking_oven_program_microwave_180_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_180_watt%]",
577591
"cooking_oven_program_microwave_360_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_360_watt%]",
592+
"cooking_oven_program_microwave_450_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_450_watt%]",
578593
"cooking_oven_program_microwave_600_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_600_watt%]",
579594
"cooking_oven_program_microwave_900_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_900_watt%]",
580595
"cooking_oven_program_microwave_90_watt": "[%key:component::home_connect::selector::programs::options::cooking_oven_program_microwave_90_watt%]",
@@ -604,6 +619,12 @@
604619
"dishcare_dishwasher_program_quick_65": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_quick_65%]",
605620
"dishcare_dishwasher_program_steam_fresh": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_steam_fresh%]",
606621
"dishcare_dishwasher_program_super_60": "[%key:component::home_connect::selector::programs::options::dishcare_dishwasher_program_super_60%]",
622+
"heating_ventilation_air_conditioning_air_conditioner_program_active_clean": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_active_clean%]",
623+
"heating_ventilation_air_conditioning_air_conditioner_program_auto": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_auto%]",
624+
"heating_ventilation_air_conditioning_air_conditioner_program_cool": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_cool%]",
625+
"heating_ventilation_air_conditioning_air_conditioner_program_dry": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_dry%]",
626+
"heating_ventilation_air_conditioning_air_conditioner_program_fan": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_fan%]",
627+
"heating_ventilation_air_conditioning_air_conditioner_program_heat": "[%key:component::home_connect::selector::programs::options::heating_ventilation_air_conditioning_air_conditioner_program_heat%]",
607628
"laundry_care_dryer_program_anti_shrink": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_anti_shrink%]",
608629
"laundry_care_dryer_program_blankets": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_blankets%]",
609630
"laundry_care_dryer_program_business_shirts": "[%key:component::home_connect::selector::programs::options::laundry_care_dryer_program_business_shirts%]",
@@ -1418,6 +1439,12 @@
14181439
"laundry_care_dryer_enum_type_drying_target_iron_dry": "Iron dry"
14191440
}
14201441
},
1442+
"fan_speed_mode": {
1443+
"options": {
1444+
"heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_automatic": "Auto",
1445+
"heating_ventilation_air_conditioning_air_conditioner_enum_type_fan_speed_mode_manual": "Manual"
1446+
}
1447+
},
14211448
"flow_rate": {
14221449
"options": {
14231450
"consumer_products_coffee_maker_enum_type_flow_rate_intense": "Intense",
@@ -1526,6 +1553,7 @@
15261553
"cooking_oven_program_microwave_1000_watt": "1000 Watt",
15271554
"cooking_oven_program_microwave_180_watt": "180 Watt",
15281555
"cooking_oven_program_microwave_360_watt": "360 Watt",
1556+
"cooking_oven_program_microwave_450_watt": "450 Watt",
15291557
"cooking_oven_program_microwave_600_watt": "600 Watt",
15301558
"cooking_oven_program_microwave_900_watt": "900 Watt",
15311559
"cooking_oven_program_microwave_90_watt": "90 Watt",
@@ -1555,6 +1583,12 @@
15551583
"dishcare_dishwasher_program_quick_65": "Quick 65ºC",
15561584
"dishcare_dishwasher_program_steam_fresh": "Steam fresh",
15571585
"dishcare_dishwasher_program_super_60": "Super 60ºC",
1586+
"heating_ventilation_air_conditioning_air_conditioner_program_active_clean": "Active clean",
1587+
"heating_ventilation_air_conditioning_air_conditioner_program_auto": "Auto",
1588+
"heating_ventilation_air_conditioning_air_conditioner_program_cool": "Cool",
1589+
"heating_ventilation_air_conditioning_air_conditioner_program_dry": "Dry",
1590+
"heating_ventilation_air_conditioning_air_conditioner_program_fan": "Fan",
1591+
"heating_ventilation_air_conditioning_air_conditioner_program_heat": "Heat",
15581592
"laundry_care_dryer_program_anti_shrink": "Anti shrink",
15591593
"laundry_care_dryer_program_blankets": "Blankets",
15601594
"laundry_care_dryer_program_business_shirts": "Business shirts",
@@ -1823,6 +1857,14 @@
18231857
"description": "Defines if the program sequence is optimized with special drying cycle ensures improved drying for glasses, plates and plasticware.",
18241858
"name": "Zeolite dry"
18251859
},
1860+
"heating_ventilation_air_conditioning_air_conditioner_option_fan_speed_mode": {
1861+
"description": "Setting to adjust the fan speed mode to Manual or Auto.",
1862+
"name": "Fan speed mode"
1863+
},
1864+
"heating_ventilation_air_conditioning_air_conditioner_option_fan_speed_percentage": {
1865+
"description": "Setting to adjust the venting level of the air conditioner as a percentage.",
1866+
"name": "Fan speed percentage"
1867+
},
18261868
"laundry_care_dryer_option_drying_target": {
18271869
"description": "Describes the drying target for a dryer program.",
18281870
"name": "Drying target"
@@ -1854,6 +1896,10 @@
18541896
},
18551897
"name": "Set program and options",
18561898
"sections": {
1899+
"air_conditioner_options": {
1900+
"description": "Specific settings for air conditioners.",
1901+
"name": "Air conditioner options"
1902+
},
18571903
"cleaning_robot_options": {
18581904
"description": "Options for cleaning robots.",
18591905
"name": "Cleaning robot options"

tests/components/home_connect/fixtures/appliances.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,24 @@
108108
"enumber": "HCS000000/06",
109109
"haId": "123456789012345678"
110110
},
111+
{
112+
"name": "AirConditioner",
113+
"brand": "BOSCH",
114+
"vib": "HCS000006",
115+
"connected": true,
116+
"type": "AirConditioner",
117+
"enumber": "HCS000000/07",
118+
"haId": "8765432109876543210"
119+
},
120+
{
121+
"name": "Microwave",
122+
"brand": "BOSCH",
123+
"vib": "HCS000006",
124+
"connected": true,
125+
"type": "Microwave",
126+
"enumber": "HCS000000/08",
127+
"haId": "541513213246313789"
128+
},
111129
{
112130
"name": "DNE",
113131
"brand": "BOSCH",

tests/components/home_connect/fixtures/programs.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,5 +205,47 @@
205205
}
206206
]
207207
}
208+
},
209+
"AirConditioner": {
210+
"data": {
211+
"programs": [
212+
{
213+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.ActiveClean",
214+
"constraints": {
215+
"execution": "startonly"
216+
}
217+
},
218+
{
219+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.Auto",
220+
"constraints": {
221+
"execution": "startonly"
222+
}
223+
},
224+
{
225+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.Cool",
226+
"constraints": {
227+
"execution": "startonly"
228+
}
229+
},
230+
{
231+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.Dry",
232+
"constraints": {
233+
"execution": "startonly"
234+
}
235+
},
236+
{
237+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.Fan",
238+
"constraints": {
239+
"execution": "startonly"
240+
}
241+
},
242+
{
243+
"key": "HeatingVentilationAirConditioning.AirConditioner.Program.Heat",
244+
"constraints": {
245+
"execution": "startonly"
246+
}
247+
}
248+
]
249+
}
208250
}
209251
}

tests/components/home_connect/snapshots/test_diagnostics.ambr

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,72 @@
3131
'type': 'CookProcessor',
3232
'vib': 'HCS000006',
3333
}),
34+
'541513213246313789': dict({
35+
'brand': 'BOSCH',
36+
'connected': True,
37+
'e_number': 'HCS000000/08',
38+
'ha_id': '541513213246313789',
39+
'name': 'Microwave',
40+
'programs': list([
41+
]),
42+
'settings': dict({
43+
}),
44+
'status': dict({
45+
'BSH.Common.Status.DoorState': dict({
46+
'value': 'BSH.Common.EnumType.DoorState.Closed',
47+
}),
48+
'BSH.Common.Status.OperationState': dict({
49+
'value': 'BSH.Common.EnumType.OperationState.Ready',
50+
}),
51+
'BSH.Common.Status.RemoteControlActive': dict({
52+
'value': True,
53+
}),
54+
'BSH.Common.Status.RemoteControlStartAllowed': dict({
55+
'value': True,
56+
}),
57+
'Refrigeration.Common.Status.Door.Refrigerator': dict({
58+
'value': 'BSH.Common.EnumType.DoorState.Open',
59+
}),
60+
}),
61+
'type': 'Microwave',
62+
'vib': 'HCS000006',
63+
}),
64+
'8765432109876543210': dict({
65+
'brand': 'BOSCH',
66+
'connected': True,
67+
'e_number': 'HCS000000/07',
68+
'ha_id': '8765432109876543210',
69+
'name': 'AirConditioner',
70+
'programs': list([
71+
'HeatingVentilationAirConditioning.AirConditioner.Program.ActiveClean',
72+
'HeatingVentilationAirConditioning.AirConditioner.Program.Auto',
73+
'HeatingVentilationAirConditioning.AirConditioner.Program.Cool',
74+
'HeatingVentilationAirConditioning.AirConditioner.Program.Dry',
75+
'HeatingVentilationAirConditioning.AirConditioner.Program.Fan',
76+
'HeatingVentilationAirConditioning.AirConditioner.Program.Heat',
77+
]),
78+
'settings': dict({
79+
}),
80+
'status': dict({
81+
'BSH.Common.Status.DoorState': dict({
82+
'value': 'BSH.Common.EnumType.DoorState.Closed',
83+
}),
84+
'BSH.Common.Status.OperationState': dict({
85+
'value': 'BSH.Common.EnumType.OperationState.Ready',
86+
}),
87+
'BSH.Common.Status.RemoteControlActive': dict({
88+
'value': True,
89+
}),
90+
'BSH.Common.Status.RemoteControlStartAllowed': dict({
91+
'value': True,
92+
}),
93+
'Refrigeration.Common.Status.Door.Refrigerator': dict({
94+
'value': 'BSH.Common.EnumType.DoorState.Open',
95+
}),
96+
}),
97+
'type': 'AirConditioner',
98+
'vib': 'HCS000006',
99+
}),
34100
'BOSCH-000000000-000000000000': dict({
35101
'brand': 'BOSCH',
36102
'connected': True,

0 commit comments

Comments
 (0)