From 9bd906f6ef1bc851139b26bd45b6dd7f2353160e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D1=83=D0=B1=D0=BE=D0=B2=D0=B8=D0=BA=20=D0=9C=D0=B0?= =?UTF-8?q?=D0=BA=D1=81=D0=B8=D0=BC?= Date: Thu, 7 Nov 2024 11:11:06 +0200 Subject: [PATCH 1/4] Fix sensor.h dependency issue When you try to compile the project it is not including `sensor.h` file requested in `ble_client_hid.cpp`: ``` In file included from src/esphome/components/ble_client_hid/ble_client_hid.cpp:1: src/esphome/components/ble_client_hid/ble_client_hid.h:4:10: fatal error: esphome/components/sensor/sensor.h: No such file or directory #include "esphome/components/sensor/sensor.h" ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. *** [.pioenvs\backpack-light\src\esphome\components\ble_client_hid\ble_client_hid.o] Error 1 ``` Use [AUTO_LOAD](https://esphome.io/guides/contributing.html#extras) to specify witch components sources should be included in output directory. --- components/ble_client_hid/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/components/ble_client_hid/__init__.py b/components/ble_client_hid/__init__.py index 7a0da2b9..6605ab1f 100644 --- a/components/ble_client_hid/__init__.py +++ b/components/ble_client_hid/__init__.py @@ -7,6 +7,7 @@ DEPENDENCIES = ['ble_client'] +AUTO_LOAD = ["sensor", "text_sensor"] CODE_OWNERS=["@fsievers22"] MULTI_CONF=3 @@ -52,4 +53,4 @@ async def register_battery_sensor(var, config): async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) - await ble_client.register_ble_node(var, config) \ No newline at end of file + await ble_client.register_ble_node(var, config) From 9145b42a0de6793f3309e9f761bf33456f8cd2f7 Mon Sep 17 00:00:00 2001 From: Maksym Dubovyk Date: Mon, 11 Nov 2024 13:01:02 +0200 Subject: [PATCH 2/4] optional api integration --- components/ble_client_hid/ble_client_hid.cpp | 2 ++ components/ble_client_hid/ble_client_hid.h | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/components/ble_client_hid/ble_client_hid.cpp b/components/ble_client_hid/ble_client_hid.cpp index a3c2ee15..4f6ba231 100644 --- a/components/ble_client_hid/ble_client_hid.cpp +++ b/components/ble_client_hid/ble_client_hid.cpp @@ -197,7 +197,9 @@ void BLEClientHID::send_input_report_event(esp_ble_gattc_cb_param_t *p_data){ } else { usage = std::to_string(value.usage.page) + "_" + std::to_string(value.usage.usage); } + #ifdef USE_API this->fire_homeassistant_event("esphome.hid_events", {{"usage", usage}, {"value", std::to_string(value.value)}}); + #endif if(this->last_event_usage_text_sensor != nullptr){ this->last_event_usage_text_sensor->publish_state(usage); } diff --git a/components/ble_client_hid/ble_client_hid.h b/components/ble_client_hid/ble_client_hid.h index 21e08f44..653527a0 100644 --- a/components/ble_client_hid/ble_client_hid.h +++ b/components/ble_client_hid/ble_client_hid.h @@ -2,7 +2,9 @@ #include "esphome/components/ble_client/ble_client.h" #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" #include "esphome/components/sensor/sensor.h" +#ifdef USE_API #include "esphome/components/api/custom_api_device.h" +#endif #include "hid_parser.h" #ifdef USE_ESP32 @@ -53,7 +55,11 @@ class GATTReadData { uint16_t handle_; }; +#ifdef USE_API class BLEClientHID : public Component, public api::CustomAPIDevice, public ble_client::BLEClientNode { +#else +class BLEClientHID : public Component, public ble_client::BLEClientNode { +#endif public: void loop() override; void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, From 8a4e7ebb9c26b2f8c165e3587c68ff26ec7fa1c2 Mon Sep 17 00:00:00 2001 From: Maksym Dubovyk Date: Mon, 11 Nov 2024 13:01:02 +0200 Subject: [PATCH 3/4] optional api integration --- components/ble_client_hid/ble_client_hid.cpp | 2 ++ components/ble_client_hid/ble_client_hid.h | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/components/ble_client_hid/ble_client_hid.cpp b/components/ble_client_hid/ble_client_hid.cpp index a3c2ee15..4f6ba231 100644 --- a/components/ble_client_hid/ble_client_hid.cpp +++ b/components/ble_client_hid/ble_client_hid.cpp @@ -197,7 +197,9 @@ void BLEClientHID::send_input_report_event(esp_ble_gattc_cb_param_t *p_data){ } else { usage = std::to_string(value.usage.page) + "_" + std::to_string(value.usage.usage); } + #ifdef USE_API this->fire_homeassistant_event("esphome.hid_events", {{"usage", usage}, {"value", std::to_string(value.value)}}); + #endif if(this->last_event_usage_text_sensor != nullptr){ this->last_event_usage_text_sensor->publish_state(usage); } diff --git a/components/ble_client_hid/ble_client_hid.h b/components/ble_client_hid/ble_client_hid.h index 21e08f44..f7641424 100644 --- a/components/ble_client_hid/ble_client_hid.h +++ b/components/ble_client_hid/ble_client_hid.h @@ -1,8 +1,12 @@ +#include #include "esphome/core/component.h" #include "esphome/components/ble_client/ble_client.h" #include "esphome/components/esp32_ble_tracker/esp32_ble_tracker.h" #include "esphome/components/sensor/sensor.h" +#include "esphome/components/text_sensor/text_sensor.h" +#ifdef USE_API #include "esphome/components/api/custom_api_device.h" +#endif #include "hid_parser.h" #ifdef USE_ESP32 @@ -53,7 +57,11 @@ class GATTReadData { uint16_t handle_; }; +#ifdef USE_API class BLEClientHID : public Component, public api::CustomAPIDevice, public ble_client::BLEClientNode { +#else +class BLEClientHID : public Component, public ble_client::BLEClientNode { +#endif public: void loop() override; void gattc_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_t gattc_if, From 4dc5479821b9580e0b88431a81f1e16486e14233 Mon Sep 17 00:00:00 2001 From: Maksym Dubovyk Date: Mon, 11 Nov 2024 14:03:49 +0200 Subject: [PATCH 4/4] optional api integration --- components/ble_client_hid/ble_client_hid.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/ble_client_hid/ble_client_hid.cpp b/components/ble_client_hid/ble_client_hid.cpp index 4f6ba231..e1898b8f 100644 --- a/components/ble_client_hid/ble_client_hid.cpp +++ b/components/ble_client_hid/ble_client_hid.cpp @@ -199,6 +199,7 @@ void BLEClientHID::send_input_report_event(esp_ble_gattc_cb_param_t *p_data){ } #ifdef USE_API this->fire_homeassistant_event("esphome.hid_events", {{"usage", usage}, {"value", std::to_string(value.value)}}); + ESP_LOGD(TAG, "Send HID event to HomeAssistant: usage: %s, value: %d", usage.c_str(), value.value); #endif if(this->last_event_usage_text_sensor != nullptr){ this->last_event_usage_text_sensor->publish_state(usage); @@ -206,7 +207,6 @@ void BLEClientHID::send_input_report_event(esp_ble_gattc_cb_param_t *p_data){ if(this->last_event_value_sensor != nullptr){ this->last_event_value_sensor->publish_state(value.value); } - ESP_LOGD(TAG, "Send HID event to HomeAssistant: usage: %s, value: %d", usage.c_str(), value.value); } delete[] data;