32 ESP_LOGVV(TAG,
"parse_device(): unknown MAC address.");
36 ESP_LOGVV(TAG,
"parse_device(): address is not public");
40 ESP_LOGVV(TAG,
"parse_device(): service_data is expected to be empty");
44 if (mnf_datas.size() != 1) {
45 ESP_LOGVV(TAG,
"parse_device(): manufacturer_datas is expected to have a single element");
48 const auto &mnf_data = mnf_datas[0];
49 if (mnf_data.uuid.get_uuid().len != ESP_UUID_LEN_16) {
50 ESP_LOGVV(TAG,
"parse_device(): manufacturer data element is expected to have uuid of length 16");
53 if (mnf_data.data.size() != 7) {
54 ESP_LOGVV(TAG,
"parse_device(): manufacturer data element length is expected to be of length 7");
57 if ((mnf_data.data[6] != 8) && (mnf_data.data[6] != 6)) {
58 ESP_LOGVV(TAG,
"parse_device(): unexpected data");
71 auto external_temperature = NAN;
74 auto measured_temperature = ((int16_t) mnf_data.uuid.get_uuid().uuid.uuid16) / 100.0f;
77 if (mnf_data.data[2] == 0) {
79 }
else if (mnf_data.data[2] == 1) {
80 external_temperature = measured_temperature;
82 ESP_LOGVV(TAG,
"parse_device(): unknown sensor type");
86 auto battery_level = mnf_data.data[5];
87 auto humidity = ((mnf_data.data[1] << 8) + mnf_data.data[0]) / 100.0f;