33 ESP_LOGVV(TAG,
"parse_device(): unknown MAC address.");
37 ESP_LOGVV(TAG,
"parse_device(): address is not public");
41 ESP_LOGVV(TAG,
"parse_device(): service_data is expected to be empty");
45 if (mnf_datas.size() != 1) {
46 ESP_LOGVV(TAG,
"parse_device(): manufacturer_datas is expected to have a single element");
49 auto mnf_data = mnf_datas[0];
50 if (mnf_data.uuid.get_uuid().len != ESP_UUID_LEN_16) {
51 ESP_LOGVV(TAG,
"parse_device(): manufacturer data element is expected to have uuid of length 16");
54 if (mnf_data.data.size() != 7) {
55 ESP_LOGVV(TAG,
"parse_device(): manufacturer data element length is expected to be of length 7");
58 if ((mnf_data.data[6] != 8) && (mnf_data.data[6] != 6)) {
59 ESP_LOGVV(TAG,
"parse_device(): unexpected data");
72 auto external_temperature = NAN;
75 auto measured_temperature = ((int16_t) mnf_data.uuid.get_uuid().uuid.uuid16) / 100.0f;
78 if (mnf_data.data[2] == 0) {
80 }
else if (mnf_data.data[2] == 1) {
81 external_temperature = measured_temperature;
83 ESP_LOGVV(TAG,
"parse_device(): unknown sensor type");
87 auto battery_level = mnf_data.data[5];
88 auto humidity = ((mnf_data.data[1] << 8) + mnf_data.data[0]) / 100.0f;