From 9c5b693dd5bb2872c31a775ee7c65ddb11e01c51 Mon Sep 17 00:00:00 2001 From: akoivist <35623281+akoivist@users.noreply.github.com> Date: Wed, 2 Sep 2020 01:17:15 +0300 Subject: [PATCH] Fix for Ruuvi voltage parsing of RAWv2 format (#1267) Power_info should be 2 bytes, so changed uint8 to uint16. With uint8 voltage is always reported to be near 1.6V. --- esphome/components/ruuvi_ble/ruuvi_ble.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/esphome/components/ruuvi_ble/ruuvi_ble.cpp b/esphome/components/ruuvi_ble/ruuvi_ble.cpp index 7e13140e55..897e4a2504 100644 --- a/esphome/components/ruuvi_ble/ruuvi_ble.cpp +++ b/esphome/components/ruuvi_ble/ruuvi_ble.cpp @@ -50,7 +50,7 @@ bool parse_ruuvi_data_byte(const esp32_ble_tracker::adv_data_t &adv_data, RuuviP const float acceleration_y = (int16_t(data[8] << 8) + int16_t(data[9])) / 1000.0f; const float acceleration_z = (int16_t(data[10] << 8) + int16_t(data[11])) / 1000.0f; - const uint8_t power_info = (data[12] << 8) | data[13]; + const uint16_t power_info = (uint16_t(data[12] << 8) | data[13]); const float battery_voltage = ((power_info >> 5) + 1600.0f) / 1000.0f; const float tx_power = ((power_info & 0x1F) * 2.0f) - 40.0f;