From 3a1c3e9bbf6105e43d16653139a321a860de5207 Mon Sep 17 00:00:00 2001 From: Tester23 <85486843+openshwprojects@users.noreply.github.com> Date: Sun, 5 Jan 2025 14:39:19 +0100 Subject: [PATCH] BatteryLevelPercent for HA --- src/httpserver/hass.c | 6 ++++++ src/httpserver/hass.h | 4 +++- src/httpserver/http_fns.c | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/httpserver/hass.c b/src/httpserver/hass.c index 91634beab..31741130f 100644 --- a/src/httpserver/hass.c +++ b/src/httpserver/hass.c @@ -608,6 +608,12 @@ HassDeviceInfo* hass_init_sensor_device_info(ENTITY_TYPE type, int channel, int cJSON_AddStringToObject(info->root, "unit_of_meas", "%"); cJSON_AddStringToObject(info->root, "stat_t", "~/battery/get"); break; + case BATTERY_CHANNEL_SENSOR: + cJSON_AddStringToObject(info->root, "dev_cla", "battery"); + cJSON_AddStringToObject(info->root, "unit_of_meas", "%"); + sprintf(g_hassBuffer, "~/%d/get", channel); + cJSON_AddStringToObject(info->root, "stat_t", g_hassBuffer); + break; case BATTERY_VOLTAGE_SENSOR: cJSON_AddStringToObject(info->root, "dev_cla", "voltage"); cJSON_AddStringToObject(info->root, "unit_of_meas", "mV"); diff --git a/src/httpserver/hass.h b/src/httpserver/hass.h index 5391a7271..8e418a036 100644 --- a/src/httpserver/hass.h +++ b/src/httpserver/hass.h @@ -37,7 +37,7 @@ typedef enum { /// @brief Humidity sensor HUMIDITY_SENSOR, - /// @brief Battery level sensor in perc + /// @brief Battery level sensor in perc, under battery topic BATTERY_SENSOR, /// @brief Battery votage sensor in mV BATTERY_VOLTAGE_SENSOR, @@ -89,6 +89,8 @@ typedef enum { WATER_QUALITY_ORP, // TDS WATER_QUALITY_TDS, + /// @brief Battery level sensor in perc, under channel topic + BATTERY_CHANNEL_SENSOR, } ENTITY_TYPE; diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c index e143487b8..70ca82930 100644 --- a/src/httpserver/http_fns.c +++ b/src/httpserver/http_fns.c @@ -1967,6 +1967,11 @@ void doHomeAssistantDiscovery(const char* topic, http_request_t* request) { { dev_info = hass_init_sensor_device_info(READONLYLOWMIDHIGH_SENSOR, i, -1, -1, 1); } + break; + case ChType_BatteryLevelPercent: + { + dev_info = hass_init_sensor_device_info(BATTERY_CHANNEL_SENSOR, i, -1, -1, 1); + } break; case ChType_SmokePercent: {