Skip to content

Commit 2bbf4eb

Browse files
authored
Make BTHome sensor entities translatable (home-assistant#156060)
1 parent 818b7bb commit 2bbf4eb

File tree

3 files changed

+85
-38
lines changed

3 files changed

+85
-38
lines changed

homeassistant/components/bthome/sensor.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
key=f"{BTHomeSensorDeviceClass.ACCELERATION}_{Units.ACCELERATION_METERS_PER_SQUARE_SECOND}",
6060
native_unit_of_measurement=Units.ACCELERATION_METERS_PER_SQUARE_SECOND,
6161
state_class=SensorStateClass.MEASUREMENT,
62+
translation_key="acceleration",
6263
),
6364
# Battery (percent)
6465
(BTHomeSensorDeviceClass.BATTERY, Units.PERCENTAGE): SensorEntityDescription(
@@ -72,6 +73,7 @@
7273
(BTHomeExtendedSensorDeviceClass.CHANNEL, None): SensorEntityDescription(
7374
key=str(BTHomeExtendedSensorDeviceClass.CHANNEL),
7475
state_class=SensorStateClass.MEASUREMENT,
76+
translation_key="channel",
7577
),
7678
# Conductivity (μS/cm)
7779
(
@@ -87,6 +89,7 @@
8789
(BTHomeSensorDeviceClass.COUNT, None): SensorEntityDescription(
8890
key=str(BTHomeSensorDeviceClass.COUNT),
8991
state_class=SensorStateClass.MEASUREMENT,
92+
translation_key="count",
9093
),
9194
# CO2 (parts per million)
9295
(
@@ -114,12 +117,14 @@
114117
device_class=SensorDeviceClass.TEMPERATURE,
115118
native_unit_of_measurement=UnitOfTemperature.CELSIUS,
116119
state_class=SensorStateClass.MEASUREMENT,
120+
translation_key="dew_point",
117121
),
118122
# Directions (°)
119123
(BTHomeExtendedSensorDeviceClass.DIRECTION, Units.DEGREE): SensorEntityDescription(
120124
key=f"{BTHomeExtendedSensorDeviceClass.DIRECTION}_{Units.DEGREE}",
121125
native_unit_of_measurement=DEGREE,
122126
state_class=SensorStateClass.MEASUREMENT,
127+
translation_key="direction",
123128
),
124129
# Distance (mm)
125130
(
@@ -173,6 +178,7 @@
173178
key=f"{BTHomeSensorDeviceClass.GYROSCOPE}_{Units.GYROSCOPE_DEGREES_PER_SECOND}",
174179
native_unit_of_measurement=Units.GYROSCOPE_DEGREES_PER_SECOND,
175180
state_class=SensorStateClass.MEASUREMENT,
181+
translation_key="gyroscope",
176182
),
177183
# Humidity in (percent)
178184
(BTHomeSensorDeviceClass.HUMIDITY, Units.PERCENTAGE): SensorEntityDescription(
@@ -215,6 +221,7 @@
215221
state_class=SensorStateClass.MEASUREMENT,
216222
entity_category=EntityCategory.DIAGNOSTIC,
217223
entity_registry_enabled_default=False,
224+
translation_key="packet_id",
218225
),
219226
# PM10 (μg/m3)
220227
(
@@ -263,12 +270,14 @@
263270
# Raw (-)
264271
(BTHomeExtendedSensorDeviceClass.RAW, None): SensorEntityDescription(
265272
key=str(BTHomeExtendedSensorDeviceClass.RAW),
273+
translation_key="raw",
266274
),
267275
# Rotation (°)
268276
(BTHomeSensorDeviceClass.ROTATION, Units.DEGREE): SensorEntityDescription(
269277
key=f"{BTHomeSensorDeviceClass.ROTATION}_{Units.DEGREE}",
270278
native_unit_of_measurement=DEGREE,
271279
state_class=SensorStateClass.MEASUREMENT,
280+
translation_key="rotation",
272281
),
273282
# Rotational speed (rpm)
274283
(
@@ -278,6 +287,7 @@
278287
key=f"{BTHomeExtendedSensorDeviceClass.ROTATIONAL_SPEED}_{Units.REVOLUTIONS_PER_MINUTE}",
279288
native_unit_of_measurement=REVOLUTIONS_PER_MINUTE,
280289
state_class=SensorStateClass.MEASUREMENT,
290+
translation_key="rotational_speed",
281291
),
282292
# Signal Strength (RSSI) (dB)
283293
(
@@ -311,6 +321,7 @@
311321
# Text (-)
312322
(BTHomeExtendedSensorDeviceClass.TEXT, None): SensorEntityDescription(
313323
key=str(BTHomeExtendedSensorDeviceClass.TEXT),
324+
translation_key="text",
314325
),
315326
# Timestamp (datetime object)
316327
(
@@ -327,6 +338,7 @@
327338
): SensorEntityDescription(
328339
key=str(BTHomeSensorDeviceClass.UV_INDEX),
329340
state_class=SensorStateClass.MEASUREMENT,
341+
translation_key="uv_index",
330342
),
331343
# Volatile organic Compounds (VOC) (μg/m3)
332344
(
@@ -423,10 +435,7 @@ def sensor_update_to_bluetooth_data_update(
423435
)
424436
for device_key, sensor_values in sensor_update.entity_values.items()
425437
},
426-
entity_names={
427-
device_key_to_bluetooth_entity_key(device_key): sensor_values.name
428-
for device_key, sensor_values in sensor_update.entity_values.items()
429-
},
438+
entity_names={},
430439
)
431440

432441

homeassistant/components/bthome/strings.json

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,44 @@
7878
}
7979
}
8080
}
81+
},
82+
"sensor": {
83+
"acceleration": {
84+
"name": "Acceleration"
85+
},
86+
"channel": {
87+
"name": "Channel"
88+
},
89+
"count": {
90+
"name": "Count"
91+
},
92+
"dew_point": {
93+
"name": "Dew point"
94+
},
95+
"direction": {
96+
"name": "Direction"
97+
},
98+
"gyroscope": {
99+
"name": "Gyroscope"
100+
},
101+
"packet_id": {
102+
"name": "Packet ID"
103+
},
104+
"raw": {
105+
"name": "Raw"
106+
},
107+
"rotation": {
108+
"name": "Rotation"
109+
},
110+
"rotational_speed": {
111+
"name": "Rotational speed"
112+
},
113+
"text": {
114+
"name": "Text"
115+
},
116+
"uv_index": {
117+
"name": "UV Index"
118+
}
81119
}
82120
}
83121
}

tests/components/bthome/test_sensor.py

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,8 @@
133133
None,
134134
[
135135
{
136-
"sensor_entity": "sensor.test_device_18b2_mass",
137-
"friendly_name": "Test Device 18B2 Mass",
136+
"sensor_entity": "sensor.test_device_18b2_weight",
137+
"friendly_name": "Test Device 18B2 Weight",
138138
"unit_of_measurement": "kg",
139139
"state_class": "measurement",
140140
"expected_state": "80.3",
@@ -150,8 +150,8 @@
150150
None,
151151
[
152152
{
153-
"sensor_entity": "sensor.test_device_18b2_mass",
154-
"friendly_name": "Test Device 18B2 Mass",
153+
"sensor_entity": "sensor.test_device_18b2_weight",
154+
"friendly_name": "Test Device 18B2 Weight",
155155
"unit_of_measurement": "lb",
156156
"state_class": "measurement",
157157
"expected_state": "74.86",
@@ -168,7 +168,7 @@
168168
[
169169
{
170170
"sensor_entity": "sensor.test_device_18b2_dew_point",
171-
"friendly_name": "Test Device 18B2 Dew Point",
171+
"friendly_name": "Test Device 18B2 Dew point",
172172
"unit_of_measurement": "°C",
173173
"state_class": "measurement",
174174
"expected_state": "17.38",
@@ -252,14 +252,14 @@
252252
[
253253
{
254254
"sensor_entity": "sensor.test_device_18b2_pm10",
255-
"friendly_name": "Test Device 18B2 Pm10",
255+
"friendly_name": "Test Device 18B2 PM10",
256256
"unit_of_measurement": "μg/m³",
257257
"state_class": "measurement",
258258
"expected_state": "7170",
259259
},
260260
{
261-
"sensor_entity": "sensor.test_device_18b2_pm25",
262-
"friendly_name": "Test Device 18B2 Pm25",
261+
"sensor_entity": "sensor.test_device_18b2_pm2_5",
262+
"friendly_name": "Test Device 18B2 PM2.5",
263263
"unit_of_measurement": "μg/m³",
264264
"state_class": "measurement",
265265
"expected_state": "3090",
@@ -276,7 +276,7 @@
276276
[
277277
{
278278
"sensor_entity": "sensor.test_device_18b2_carbon_dioxide",
279-
"friendly_name": "Test Device 18B2 Carbon Dioxide",
279+
"friendly_name": "Test Device 18B2 Carbon dioxide",
280280
"unit_of_measurement": "ppm",
281281
"state_class": "measurement",
282282
"expected_state": "1250",
@@ -295,7 +295,7 @@
295295
"sensor_entity": (
296296
"sensor.test_device_18b2_volatile_organic_compounds"
297297
),
298-
"friendly_name": "Test Device 18B2 Volatile Organic Compounds",
298+
"friendly_name": "Test Device 18B2 Volatile organic compounds",
299299
"unit_of_measurement": "μg/m³",
300300
"state_class": "measurement",
301301
"expected_state": "307",
@@ -487,8 +487,8 @@ async def test_v1_sensors(
487487
None,
488488
[
489489
{
490-
"sensor_entity": "sensor.test_device_18b2_mass",
491-
"friendly_name": "Test Device 18B2 Mass",
490+
"sensor_entity": "sensor.test_device_18b2_weight",
491+
"friendly_name": "Test Device 18B2 Weight",
492492
"unit_of_measurement": "kg",
493493
"state_class": "measurement",
494494
"expected_state": "80.3",
@@ -504,8 +504,8 @@ async def test_v1_sensors(
504504
None,
505505
[
506506
{
507-
"sensor_entity": "sensor.test_device_18b2_mass",
508-
"friendly_name": "Test Device 18B2 Mass",
507+
"sensor_entity": "sensor.test_device_18b2_weight",
508+
"friendly_name": "Test Device 18B2 Weight",
509509
"unit_of_measurement": "lb",
510510
"state_class": "measurement",
511511
"expected_state": "74.86",
@@ -522,7 +522,7 @@ async def test_v1_sensors(
522522
[
523523
{
524524
"sensor_entity": "sensor.test_device_18b2_dew_point",
525-
"friendly_name": "Test Device 18B2 Dew Point",
525+
"friendly_name": "Test Device 18B2 Dew point",
526526
"unit_of_measurement": "°C",
527527
"state_class": "measurement",
528528
"expected_state": "17.38",
@@ -606,14 +606,14 @@ async def test_v1_sensors(
606606
[
607607
{
608608
"sensor_entity": "sensor.test_device_18b2_pm10",
609-
"friendly_name": "Test Device 18B2 Pm10",
609+
"friendly_name": "Test Device 18B2 PM10",
610610
"unit_of_measurement": "μg/m³",
611611
"state_class": "measurement",
612612
"expected_state": "7170",
613613
},
614614
{
615-
"sensor_entity": "sensor.test_device_18b2_pm25",
616-
"friendly_name": "Test Device 18B2 Pm25",
615+
"sensor_entity": "sensor.test_device_18b2_pm2_5",
616+
"friendly_name": "Test Device 18B2 PM2.5",
617617
"unit_of_measurement": "μg/m³",
618618
"state_class": "measurement",
619619
"expected_state": "3090",
@@ -630,7 +630,7 @@ async def test_v1_sensors(
630630
[
631631
{
632632
"sensor_entity": "sensor.test_device_18b2_carbon_dioxide",
633-
"friendly_name": "Test Device 18B2 Carbon Dioxide",
633+
"friendly_name": "Test Device 18B2 Carbon dioxide",
634634
"unit_of_measurement": "ppm",
635635
"state_class": "measurement",
636636
"expected_state": "1250",
@@ -649,7 +649,7 @@ async def test_v1_sensors(
649649
"sensor_entity": (
650650
"sensor.test_device_18b2_volatile_organic_compounds"
651651
),
652-
"friendly_name": "Test Device 18B2 Volatile Organic Compounds",
652+
"friendly_name": "Test Device 18B2 Volatile organic compounds",
653653
"unit_of_measurement": "μg/m³",
654654
"state_class": "measurement",
655655
"expected_state": "307",
@@ -802,7 +802,7 @@ async def test_v1_sensors(
802802
[
803803
{
804804
"sensor_entity": "sensor.test_device_18b2_uv_index",
805-
"friendly_name": "Test Device 18B2 Uv Index",
805+
"friendly_name": "Test Device 18B2 UV Index",
806806
"state_class": "measurement",
807807
"expected_state": "5.0",
808808
},
@@ -852,7 +852,7 @@ async def test_v1_sensors(
852852
[
853853
{
854854
"sensor_entity": "sensor.test_device_18b2_volume_flow_rate",
855-
"friendly_name": "Test Device 18B2 Volume Flow Rate",
855+
"friendly_name": "Test Device 18B2 Volume flow rate",
856856
"unit_of_measurement": "m³/h",
857857
"state_class": "measurement",
858858
"expected_state": "34.78",
@@ -982,8 +982,8 @@ async def test_v1_sensors(
982982
None,
983983
[
984984
{
985-
"sensor_entity": "sensor.test_device_18b2_volume_storage",
986-
"friendly_name": "Test Device 18B2 Volume Storage",
985+
"sensor_entity": "sensor.test_device_18b2_stored_volume",
986+
"friendly_name": "Test Device 18B2 Stored volume",
987987
"unit_of_measurement": "L",
988988
"state_class": "measurement",
989989
"expected_state": "19551.879",
@@ -999,15 +999,15 @@ async def test_v1_sensors(
999999
None,
10001000
[
10011001
{
1002-
"sensor_entity": "sensor.test_device_18b2_temperature_1",
1003-
"friendly_name": "Test Device 18B2 Temperature 1",
1002+
"sensor_entity": "sensor.test_device_18b2_temperature",
1003+
"friendly_name": "Test Device 18B2 Temperature",
10041004
"unit_of_measurement": "°C",
10051005
"state_class": "measurement",
10061006
"expected_state": "25.06",
10071007
},
10081008
{
10091009
"sensor_entity": "sensor.test_device_18b2_temperature_2",
1010-
"friendly_name": "Test Device 18B2 Temperature 2",
1010+
"friendly_name": "Test Device 18B2 Temperature",
10111011
"unit_of_measurement": "°C",
10121012
"state_class": "measurement",
10131013
"expected_state": "25.11",
@@ -1023,36 +1023,36 @@ async def test_v1_sensors(
10231023
None,
10241024
[
10251025
{
1026-
"sensor_entity": "sensor.test_device_18b2_temperature_1",
1027-
"friendly_name": "Test Device 18B2 Temperature 1",
1026+
"sensor_entity": "sensor.test_device_18b2_temperature",
1027+
"friendly_name": "Test Device 18B2 Temperature",
10281028
"unit_of_measurement": "°C",
10291029
"state_class": "measurement",
10301030
"expected_state": "25.06",
10311031
},
10321032
{
10331033
"sensor_entity": "sensor.test_device_18b2_temperature_2",
1034-
"friendly_name": "Test Device 18B2 Temperature 2",
1034+
"friendly_name": "Test Device 18B2 Temperature",
10351035
"unit_of_measurement": "°C",
10361036
"state_class": "measurement",
10371037
"expected_state": "25.11",
10381038
},
10391039
{
10401040
"sensor_entity": "sensor.test_device_18b2_temperature_3",
1041-
"friendly_name": "Test Device 18B2 Temperature 3",
1041+
"friendly_name": "Test Device 18B2 Temperature",
10421042
"unit_of_measurement": "°C",
10431043
"state_class": "measurement",
10441044
"expected_state": "22.55",
10451045
},
10461046
{
1047-
"sensor_entity": "sensor.test_device_18b2_humidity_1",
1048-
"friendly_name": "Test Device 18B2 Humidity 1",
1047+
"sensor_entity": "sensor.test_device_18b2_humidity",
1048+
"friendly_name": "Test Device 18B2 Humidity",
10491049
"unit_of_measurement": "%",
10501050
"state_class": "measurement",
10511051
"expected_state": "63.27",
10521052
},
10531053
{
10541054
"sensor_entity": "sensor.test_device_18b2_humidity_2",
1055-
"friendly_name": "Test Device 18B2 Humidity 2",
1055+
"friendly_name": "Test Device 18B2 Humidity",
10561056
"unit_of_measurement": "%",
10571057
"state_class": "measurement",
10581058
"expected_state": "60.71",

0 commit comments

Comments
 (0)