From 5ae4b0542f46221432dda4c0cd5c3e5271f521ba Mon Sep 17 00:00:00 2001 From: Jude Pereira Date: Tue, 2 Mar 2021 19:40:24 +0100 Subject: [PATCH 1/2] Bump up max accessories to 45 for the ESP 32. Tested and verified that 40+ accessories are stable with the ESP32 (each accessory having 3 services). --- homeintegration.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/homeintegration.c b/homeintegration.c index e339352..91e266e 100644 --- a/homeintegration.c +++ b/homeintegration.c @@ -127,9 +127,13 @@ homekit_server_config_t config = { .password = "111-11-111" }; */ - +#ifdef ESP8266 #define MAX_HAP_SERVICES 7 #define MAX_HAP_ACCESSORIES 7 +#else // ESP32. +#define MAX_HAP_SERVICES 45 +#define MAX_HAP_ACCESSORIES 45 +#endif homekit_accessory_t *hap_accessories[MAX_HAP_ACCESSORIES + 1] = { 0 }; homekit_service_t* hap_services[MAX_HAP_SERVICES + 1] = { 0 }; homekit_server_config_t hap_config = { From 915ba263cde68269a9313ae87a284b17768b59fd Mon Sep 17 00:00:00 2001 From: Jude Pereira Date: Tue, 2 Mar 2021 20:52:18 +0100 Subject: [PATCH 2/2] Expose methods to create new temperature and humidity services. --- homeintegration.c | 35 +++++++++++++++++++++-------------- homeintegration.h | 5 +++-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/homeintegration.c b/homeintegration.c index 91e266e..769db26 100644 --- a/homeintegration.c +++ b/homeintegration.c @@ -543,14 +543,17 @@ homekit_service_t* hap_add_relaydim_service_as_accessory(int acctype,const char // INFO("added light bulb as accessory , next accessory %d",hap_mainaccesories_current); return lbservice; } -homekit_service_t* hap_add_temperature_service(const char* szname){ - homekit_service_t*service=NEW_HOMEKIT_SERVICE(TEMPERATURE_SENSOR, .characteristics=(homekit_characteristic_t*[]) { - NEW_HOMEKIT_CHARACTERISTIC(NAME, szname), - NEW_HOMEKIT_CHARACTERISTIC(CURRENT_TEMPERATURE, 0), - NULL - }); - return hap_add_service(service); +homekit_service_t *hap_new_temperature_service(const char *szname) { + return NEW_HOMEKIT_SERVICE( + TEMPERATURE_SENSOR, + .characteristics=(homekit_characteristic_t*[]) { NEW_HOMEKIT_CHARACTERISTIC(NAME, szname), + NEW_HOMEKIT_CHARACTERISTIC(CURRENT_TEMPERATURE, 0), NULL + }); +} + +homekit_service_t* hap_add_temperature_service(const char* szname){ + return hap_add_service(hap_new_temperature_service(szname)); } homekit_service_t* hap_add_thermostat_service(const char* szname, hap_callback cb, void* context) { @@ -608,15 +611,19 @@ homekit_service_t* hap_new_thermostat_service(const char* szname, hap_callback c }); } -homekit_service_t* hap_add_humidity_service(const char* szname){ - homekit_service_t*service=NEW_HOMEKIT_SERVICE(HUMIDITY_SENSOR, .characteristics=(homekit_characteristic_t*[]) { - NEW_HOMEKIT_CHARACTERISTIC(NAME, szname), - NEW_HOMEKIT_CHARACTERISTIC(CURRENT_RELATIVE_HUMIDITY, 0), - NULL - }); - return hap_add_service(service); +homekit_service_t *hap_new_humidity_service(const char *szname) { + return NEW_HOMEKIT_SERVICE( + HUMIDITY_SENSOR, + .characteristics=(homekit_characteristic_t*[]) { NEW_HOMEKIT_CHARACTERISTIC(NAME, szname), + NEW_HOMEKIT_CHARACTERISTIC(CURRENT_RELATIVE_HUMIDITY, 0), NULL + }); } + +homekit_service_t *hap_add_humidity_service(const char *szname) { + return hap_add_service(hap_new_humidity_service(szname)); +} + homekit_service_t* hap_add_temp_hum_as_accessory(int acctype,const char* szname,homekit_service_t** pp_temp,homekit_service_t** pp_hum){ homekit_service_t* baseservice=hap_new_homekit_accessory_service(szname,"0"); diff --git a/homeintegration.h b/homeintegration.h index 298a57f..0fdce99 100644 --- a/homeintegration.h +++ b/homeintegration.h @@ -82,13 +82,14 @@ type name() { \ homekit_service_t* hap_add_rgbstrip_service_as_accessory_ex(int acctype, const char* szname, hap_callback cb, void* context); homekit_service_t* hap_new_rgbstrip_service_ex(const char* szname, hap_callback cb, void* context); //Thermo - + + homekit_service_t* hap_new_temperature_service(const char *szname); homekit_service_t* hap_add_temperature_service(const char* szname); homekit_service_t* hap_add_thermostat_service(const char* szname, hap_callback cb, void* context); homekit_service_t* hap_add_thermostat_service_as_accessory(int acctype, const char* szname, hap_callback cb, void* context); homekit_service_t* hap_new_thermostat_service(const char* szname, hap_callback cb, void* context); - + homekit_service_t* hap_new_humidity_service(const char *szname); homekit_service_t* hap_add_humidity_service(const char* szname); homekit_service_t* hap_add_temp_hum_as_accessory(int acctype, const char* szname, homekit_service_t** pp_temp, homekit_service_t** pp_hum); homekit_service_t* hap_add_hum_as_accessory(int acctype, const char* szname);