@@ -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