Skip to content

Commit 1acd2b9

Browse files
bthome.py - include scaling in variable names (issue #4)
1 parent f5d6e03 commit 1acd2b9

File tree

1 file changed

+114
-114
lines changed

1 file changed

+114
-114
lines changed

src/bthome.py

Lines changed: 114 additions & 114 deletions
Original file line numberDiff line numberDiff line change
@@ -27,85 +27,85 @@ class BTHome:
2727
_local_name = ""
2828

2929
# See "Sensor Data" table at https://bthome.io/format/ Object ID column.
30-
BATTERY_UINT8 = const(0x01) # %
31-
TEMPERATURE_SINT16 = const(0x02) # °C
32-
HUMIDITY_UINT16 = const(0x03) # %
33-
PRESSURE_UINT24 = const(0x04) # hPa
34-
ILLUMINANCE_UINT24 = const(0x05) # lux
35-
MASS_KG_UINT16 = const(0x06) # kg
36-
MASS_LB_UINT16 = const(0x07) # lb
37-
DEWPOINT_SINT16 = const(0x08) # °C
38-
COUNT_UINT8 = const(0x09)
39-
ENERGY_UINT24 = const(0x0A) # kWh
40-
POWER_UINT24 = const(0x0B) # W
41-
VOLTAGE_UINT16 = const(0x0C) # V
42-
PM2_5_UINT16 = const(0x0D) # ug/m3
43-
PM10_UINT16 = const(0x0E) # ug/m3
44-
CO2_UINT16 = const(0x12) # ppm
45-
TVOC_UINT16 = const(0x13) # ug/m3
46-
MOISTURE_UINT16 = const(0x14) # %
47-
HUMIDITY_UINT8 = const(0x2E) # %
48-
MOISTURE_UINT8 = const(0x2F) # %
49-
COUNT_UINT16 = const(0x3D)
50-
COUNT_UINT32 = const(0x3E)
51-
ROTATION_SINT16 = const(0x3F) # °
52-
DISTANCE_MM_UINT16 = const(0x40) # mm
53-
DISTANCE_M_UINT16 = const(0x41) # m
54-
DURATION_UINT24 = const(0x42) # s
55-
CURRENT_UINT16 = const(0x43) # A
56-
SPEED_UINT16 = const(0x44) # m/s
57-
#TEMPERATURE_SINT16 = const(0x45) # °C
58-
UV_INDEX_UINT8 = const(0x46)
59-
VOLUME_L_UINT16 = const(0x47) # L
60-
VOLUME_ML_UINT16 = const(0x48) # mL
61-
VOLUME_FLOW_RATE = const(0x49) # m3/hr
62-
#VOLTAGE_UINT16 = const(0x4A) # V
63-
GAS_UINT24 = const(0x4B) # m3
64-
GAS_UINT32 = const(0x4C) # m3
65-
ENERGY_UINT32 = const(0x4D) # kWh
66-
VOLUME_UINT32 = const(0x4E) # L
67-
WATER_UINT32 = const(0x4F) # L
30+
BATTERY_UINT8_X1 = const(0x01) # %
31+
TEMPERATURE_SINT16_X100 = const(0x02) # °C
32+
HUMIDITY_UINT16_X100 = const(0x03) # %
33+
PRESSURE_UINT24_X100 = const(0x04) # hPa
34+
ILLUMINANCE_UINT24_X100 = const(0x05) # lux
35+
MASS_KG_UINT16_X100 = const(0x06) # kg
36+
MASS_LB_UINT16_X100 = const(0x07) # lb
37+
DEWPOINT_SINT16_X100 = const(0x08) # °C
38+
COUNT_UINT8_X1 = const(0x09)
39+
ENERGY_UINT24_X1000 = const(0x0A) # kWh
40+
POWER_UINT24_X100 = const(0x0B) # W
41+
VOLTAGE_UINT16_X1000 = const(0x0C) # V
42+
PM2_5_UINT16_X1 = const(0x0D) # ug/m3
43+
PM10_UINT16_X1 = const(0x0E) # ug/m3
44+
CO2_UINT16_X1 = const(0x12) # ppm
45+
TVOC_UINT16_X1 = const(0x13) # ug/m3
46+
MOISTURE_UINT16_X100 = const(0x14) # %
47+
HUMIDITY_UINT8_X1 = const(0x2E) # %
48+
MOISTURE_UINT8_X1 = const(0x2F) # %
49+
COUNT_UINT16_X1 = const(0x3D)
50+
COUNT_UINT32_X1 = const(0x3E)
51+
ROTATION_SINT16_X10 = const(0x3F) # °
52+
DISTANCE_MM_UINT16_X1 = const(0x40) # mm
53+
DISTANCE_M_UINT16_X10 = const(0x41) # m
54+
DURATION_UINT24_X1000 = const(0x42) # s
55+
CURRENT_UINT16_X1000 = const(0x43) # A
56+
SPEED_UINT16_X100 = const(0x44) # m/s
57+
TEMPERATURE_SINT16_X10 = const(0x45) # °C
58+
UV_INDEX_UINT8_X10 = const(0x46)
59+
VOLUME_L_UINT16_X10 = const(0x47) # L
60+
VOLUME_ML_UINT16_X1 = const(0x48) # mL
61+
VOLUME_FLOW_RATE_X1000 = const(0x49) # m3/hr
62+
VOLTAGE_UINT16_X10 = const(0x4A) # V
63+
GAS_UINT24_X1000 = const(0x4B) # m3
64+
GAS_UINT32_X1000 = const(0x4C) # m3
65+
ENERGY_UINT32_X1000 = const(0x4D) # kWh
66+
VOLUME_UINT32_X1000 = const(0x4E) # L
67+
WATER_UINT32_X1000 = const(0x4F) # L
6868

6969
# There is more than one way to represent most sensor properties. This
7070
# dictionary maps the object id to the property name.
7171
_object_id_properties = {
72-
BATTERY_UINT8: "battery",
73-
TEMPERATURE_SINT16: "temperature",
74-
HUMIDITY_UINT16: "humidity",
75-
PRESSURE_UINT24: "pressure",
76-
ILLUMINANCE_UINT24: "illuminance",
77-
MASS_KG_UINT16: "mass",
78-
MASS_LB_UINT16: "mass",
79-
DEWPOINT_SINT16: "dewpoint",
80-
COUNT_UINT8: "count",
81-
ENERGY_UINT24: "energy",
82-
POWER_UINT24: "power",
83-
VOLTAGE_UINT16: "voltage",
84-
PM2_5_UINT16: "pm2.5",
85-
PM10_UINT16: "pm10",
86-
CO2_UINT16: "co2",
87-
TVOC_UINT16: "tvoc",
88-
MOISTURE_UINT16: "moisture",
89-
HUMIDITY_UINT8: "humidity",
90-
MOISTURE_UINT8: "moisture",
91-
COUNT_UINT16: "count",
92-
COUNT_UINT32: "count",
93-
ROTATION_SINT16: "rotation",
94-
DISTANCE_MM_UINT16: "distance",
95-
DISTANCE_M_UINT16: "distance",
96-
DURATION_UINT24: "duration",
97-
CURRENT_UINT16: "current",
98-
#TEMPERATURE_SINT16: "temperature",
99-
UV_INDEX_UINT8: "uv_index",
100-
VOLUME_L_UINT16: "volume",
101-
VOLUME_ML_UINT16: "volume",
102-
VOLUME_FLOW_RATE: "volume_flow_rate",
103-
#VOLTAGE_UINT16: "voltage",
104-
GAS_UINT24: "gas",
105-
GAS_UINT32: "gas",
106-
ENERGY_UINT32: "energy",
107-
VOLUME_UINT32: "volume",
108-
WATER_UINT32: "water"
72+
BATTERY_UINT8_X1: "battery",
73+
TEMPERATURE_SINT16_X100: "temperature",
74+
HUMIDITY_UINT16_X100: "humidity",
75+
PRESSURE_UINT24_X100: "pressure",
76+
ILLUMINANCE_UINT24_X100: "illuminance",
77+
MASS_KG_UINT16_X100: "mass",
78+
MASS_LB_UINT16_X100: "mass",
79+
DEWPOINT_SINT16_X100: "dewpoint",
80+
COUNT_UINT8_X1: "count",
81+
ENERGY_UINT24_X1000: "energy",
82+
POWER_UINT24_X100: "power",
83+
VOLTAGE_UINT16_X1000: "voltage",
84+
PM2_5_UINT16_X1: "pm2.5",
85+
PM10_UINT16_X1: "pm10",
86+
CO2_UINT16_X1: "co2",
87+
TVOC_UINT16_X1: "tvoc",
88+
MOISTURE_UINT16_X100: "moisture",
89+
HUMIDITY_UINT8_X1: "humidity",
90+
MOISTURE_UINT8_X1: "moisture",
91+
COUNT_UINT16_X1: "count",
92+
COUNT_UINT32_X1: "count",
93+
ROTATION_SINT16_X10: "rotation",
94+
DISTANCE_MM_UINT16_X1: "distance",
95+
DISTANCE_M_UINT16_X10: "distance",
96+
DURATION_UINT24_X1000: "duration",
97+
CURRENT_UINT16_X1000: "current",
98+
TEMPERATURE_SINT16_X10: "temperature",
99+
UV_INDEX_UINT8_X10: "uv_index",
100+
VOLUME_L_UINT16_X10: "volume",
101+
VOLUME_ML_UINT16_X1: "volume",
102+
VOLUME_FLOW_RATE_X1000: "volume_flow_rate",
103+
VOLTAGE_UINT16_X10: "voltage",
104+
GAS_UINT24_X1000: "gas",
105+
GAS_UINT32_X1000: "gas",
106+
ENERGY_UINT32_X1000: "energy",
107+
VOLUME_UINT32_X1000: "volume",
108+
WATER_UINT32_X1000: "water"
109109
}
110110

111111
# Properties below are updated externally when sensor values are read.
@@ -219,44 +219,44 @@ def _pack_uint32_x1000(self, object_id, value):
219219
return pack("<BL", object_id, round(value * 1000))
220220

221221
_object_id_functions = {
222-
BATTERY_UINT8: _pack_uint8_x1,
223-
TEMPERATURE_SINT16: _pack_sint16_x100,
224-
HUMIDITY_UINT16: _pack_uint16_x100,
225-
PRESSURE_UINT24: _pack_uint24_x100,
226-
ILLUMINANCE_UINT24: _pack_uint24_x100,
227-
MASS_KG_UINT16: _pack_uint16_x100,
228-
MASS_LB_UINT16: _pack_uint16_x100,
229-
DEWPOINT_SINT16: _pack_sint16_x100,
230-
COUNT_UINT8: _pack_uint8_x1,
231-
ENERGY_UINT24: _pack_uint24_x1000,
232-
POWER_UINT24: _pack_uint24_x100,
233-
VOLTAGE_UINT16: _pack_uint16_x1000,
234-
PM2_5_UINT16: _pack_uint16_x1,
235-
PM10_UINT16: _pack_uint16_x1,
236-
CO2_UINT16: _pack_uint16_x1,
237-
TVOC_UINT16: _pack_uint16_x1,
238-
MOISTURE_UINT16: _pack_uint16_x100,
239-
HUMIDITY_UINT8: _pack_uint8_x1,
240-
MOISTURE_UINT8: _pack_uint8_x1,
241-
COUNT_UINT16: _pack_uint16_x1,
242-
COUNT_UINT32: _pack_uint32_x1,
243-
ROTATION_SINT16: _pack_sint16_x10,
244-
DISTANCE_MM_UINT16: _pack_uint16_x1,
245-
DISTANCE_M_UINT16: _pack_uint16_x10,
246-
DURATION_UINT24: _pack_uint24_x1000,
247-
CURRENT_UINT16: _pack_uint16_x1000,
248-
SPEED_UINT16: _pack_sint16_x100,
249-
#TEMPERATURE_SINT16: _pack_sint16_x10,
250-
UV_INDEX_UINT8: _pack_uint8_x10,
251-
VOLUME_L_UINT16: _pack_uint16_x10,
252-
VOLUME_ML_UINT16: _pack_uint16_x1,
253-
VOLUME_FLOW_RATE: _pack_uint16_x1000,
254-
#VOLTAGE_UINT16: _pack_uint16_x10,
255-
GAS_UINT24: _pack_uint24_x1000,
256-
GAS_UINT32: _pack_uint32_x1000,
257-
ENERGY_UINT32: _pack_uint32_x1000,
258-
VOLUME_UINT32: _pack_uint32_x1000,
259-
WATER_UINT32: _pack_uint32_x1000
222+
BATTERY_UINT8_X1: _pack_uint8_x1,
223+
TEMPERATURE_SINT16_X100: _pack_sint16_x100,
224+
HUMIDITY_UINT16_X100: _pack_uint16_x100,
225+
PRESSURE_UINT24_X100: _pack_uint24_x100,
226+
ILLUMINANCE_UINT24_X100: _pack_uint24_x100,
227+
MASS_KG_UINT16_X100: _pack_uint16_x100,
228+
MASS_LB_UINT16_X100: _pack_uint16_x100,
229+
DEWPOINT_SINT16_X100: _pack_sint16_x100,
230+
COUNT_UINT8_X1: _pack_uint8_x1,
231+
ENERGY_UINT24_X1000: _pack_uint24_x1000,
232+
POWER_UINT24_X100: _pack_uint24_x100,
233+
VOLTAGE_UINT16_X1000: _pack_uint16_x1000,
234+
PM2_5_UINT16_X1: _pack_uint16_x1,
235+
PM10_UINT16_X1: _pack_uint16_x1,
236+
CO2_UINT16_X1: _pack_uint16_x1,
237+
TVOC_UINT16_X1: _pack_uint16_x1,
238+
MOISTURE_UINT16_X100: _pack_uint16_x100,
239+
HUMIDITY_UINT8_X1: _pack_uint8_x1,
240+
MOISTURE_UINT8_X1: _pack_uint8_x1,
241+
COUNT_UINT16_X1: _pack_uint16_x1,
242+
COUNT_UINT32_X1: _pack_uint32_x1,
243+
ROTATION_SINT16_X10: _pack_sint16_x10,
244+
DISTANCE_MM_UINT16_X1: _pack_uint16_x1,
245+
DISTANCE_M_UINT16_X10: _pack_uint16_x10,
246+
DURATION_UINT24_X1000: _pack_uint24_x1000,
247+
CURRENT_UINT16_X1000: _pack_uint16_x1000,
248+
SPEED_UINT16_X100: _pack_sint16_x100,
249+
TEMPERATURE_SINT16_X10: _pack_sint16_x10,
250+
UV_INDEX_UINT8_X10: _pack_uint8_x10,
251+
VOLUME_L_UINT16_X10: _pack_uint16_x10,
252+
VOLUME_ML_UINT16_X1: _pack_uint16_x1,
253+
VOLUME_FLOW_RATE_X1000: _pack_uint16_x1000,
254+
VOLTAGE_UINT16_X10: _pack_uint16_x10,
255+
GAS_UINT24_X1000: _pack_uint24_x1000,
256+
GAS_UINT32_X1000: _pack_uint32_x1000,
257+
ENERGY_UINT32_X1000: _pack_uint32_x1000,
258+
VOLUME_UINT32_X1000: _pack_uint32_x1000,
259+
WATER_UINT32_X1000: _pack_uint32_x1000
260260
}
261261

262262
# Concatenate an arbitrary number of sensor readings using parameters
@@ -297,7 +297,7 @@ def demo():
297297
beacon.temperature = 25
298298
beacon.humidity = 50.55
299299
ble_advert = beacon.pack_advertisement(
300-
BTHome.TEMPERATURE_SINT16, BTHome.HUMIDITY_UINT16
300+
BTHome.TEMPERATURE_SINT16_X100, BTHome.HUMIDITY_UINT16_X100
301301
)
302302
return ble_advert
303303

0 commit comments

Comments
 (0)