From 1a29225f3e73c03d8047feebf705a9106abc0e8a Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Thu, 4 Feb 2021 00:39:47 +0100 Subject: [PATCH] Add HASP_OBJECT_NOTATION --- include/hasp_conf.h | 183 ++++++++++++++++++++------------------- src/hasp/hasp_object.cpp | 11 +-- src/svc/hasp_mqtt.cpp | 2 +- src/svc/hasp_mqtt_ha.cpp | 26 +++--- 4 files changed, 113 insertions(+), 109 deletions(-) diff --git a/include/hasp_conf.h b/include/hasp_conf.h index 156f86f9..2ac6c842 100644 --- a/include/hasp_conf.h +++ b/include/hasp_conf.h @@ -4,85 +4,86 @@ #define HASP_USE_APP 1 #ifndef HASP_USE_DEBUG -#define HASP_USE_DEBUG 1 + #define HASP_USE_DEBUG 1 #endif /* Network Services */ #ifndef HASP_USE_ETHERNET -#define HASP_USE_ETHERNET 0 + #define HASP_USE_ETHERNET 0 #endif #ifndef HASP_USE_WIFI -#define HASP_USE_WIFI (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_WIFI > 0) + #define HASP_USE_WIFI (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_WIFI > 0) #endif -#define HASP_HAS_NETWORK (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0) +#define HASP_HAS_NETWORK \ + (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0 || HASP_USE_ETHERNET > 0 || HASP_USE_WIFI > 0) #ifndef HASP_USE_OTA -#define HASP_USE_OTA (HASP_HAS_NETWORK) + #define HASP_USE_OTA (HASP_HAS_NETWORK) #endif #ifndef HASP_USE_MQTT -#define HASP_USE_MQTT (HASP_HAS_NETWORK) + #define HASP_USE_MQTT (HASP_HAS_NETWORK) #endif #ifndef HASP_USE_HTTP -#define HASP_USE_HTTP (HASP_HAS_NETWORK) + #define HASP_USE_HTTP (HASP_HAS_NETWORK) #endif #ifndef HASP_USE_MDNS -#define HASP_USE_MDNS (HASP_HAS_NETWORK) + #define HASP_USE_MDNS (HASP_HAS_NETWORK) #endif #ifndef HASP_USE_SYSLOG -#define HASP_USE_SYSLOG (HASP_HAS_NETWORK) + #define HASP_USE_SYSLOG (HASP_HAS_NETWORK) #endif #ifndef HASP_USE_TELNET -#define HASP_USE_TELNET 0 + #define HASP_USE_TELNET 0 #endif /* Filesystem */ #define HASP_HAS_FILESYSTEM (ARDUINO_ARCH_ESP32 > 0 || ARDUINO_ARCH_ESP8266 > 0) #ifndef HASP_USE_SPIFFS -#ifndef HASP_USE_LITTLEFS -#define HASP_USE_SPIFFS (HASP_HAS_FILESYSTEM) -#else -#define HASP_USE_SPIFFS (HASP_USE_LITTLEFS <= 0) -#endif + #ifndef HASP_USE_LITTLEFS + #define HASP_USE_SPIFFS (HASP_HAS_FILESYSTEM) + #else + #define HASP_USE_SPIFFS (HASP_USE_LITTLEFS <= 0) + #endif #endif #ifndef HASP_USE_LITTLEFS -#define HASP_USE_LITTLEFS (HASP_USE_SPIFFS <= 0) + #define HASP_USE_LITTLEFS (HASP_USE_SPIFFS <= 0) #endif #ifndef HASP_USE_EEPROM -#define HASP_USE_EEPROM 1 + #define HASP_USE_EEPROM 1 #endif #ifndef HASP_USE_SDCARD -#define HASP_USE_SDCARD 0 + #define HASP_USE_SDCARD 0 #endif #ifndef HASP_USE_GPIO -#define HASP_USE_GPIO 1 + #define HASP_USE_GPIO 1 #endif #ifndef HASP_USE_QRCODE -#define HASP_USE_QRCODE 1 + #define HASP_USE_QRCODE 1 #endif #ifndef HASP_USE_PNGDECODE -#define HASP_USE_PNGDECODE 0 + #define HASP_USE_PNGDECODE 0 #endif #ifndef HASP_NUM_GPIO_CONFIG -#define HASP_NUM_GPIO_CONFIG 8 + #define HASP_NUM_GPIO_CONFIG 8 #endif #ifndef HASP_NUM_INPUTS -#define HASP_NUM_INPUTS 4 // Number of ACE Buttons + #define HASP_NUM_INPUTS 4 // Number of ACE Buttons #endif // #ifndef HASP_NUM_OUTPUTS @@ -90,126 +91,128 @@ // #endif #ifndef HASP_NUM_PAGES -#if defined(ARDUINO_ARCH_ESP8266) -#define HASP_NUM_PAGES 4 -#else -#define HASP_NUM_PAGES 12 -#endif + #if defined(ARDUINO_ARCH_ESP8266) + #define HASP_NUM_PAGES 4 + #else + #define HASP_NUM_PAGES 12 + #endif #endif +#define HASP_OBJECT_NOTATION "p%ub%u" + /* Includes */ #include #if HASP_USE_SPIFFS > 0 -// #if defined(ARDUINO_ARCH_ESP32) -// #include "SPIFFS.h" -// #endif -// #include // Include the SPIFFS library -#include "hasp_filesystem.h" + // #if defined(ARDUINO_ARCH_ESP32) + // #include "SPIFFS.h" + // #endif + // #include // Include the SPIFFS library + #include "hasp_filesystem.h" #endif #if HASP_USE_LITTLEFS > 0 -// #if defined(ARDUINO_ARCH_ESP32) -// #include "LITTLEFS.h" -// #elif defined(ARDUINO_ARCH_ESP8266) -// #include // Include the FS library -// #include -// #endif -#include "hasp_filesystem.h" + // #if defined(ARDUINO_ARCH_ESP32) + // #include "LITTLEFS.h" + // #elif defined(ARDUINO_ARCH_ESP8266) + // #include // Include the FS library + // #include + // #endif + #include "hasp_filesystem.h" #endif #if HASP_USE_SPIFFS > 0 || HASP_USE_LITTLEFS > 0 -#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266) -#include "lv_zifont.h" -#endif + #if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266) + #include "lv_zifont.h" + #endif #endif #if HASP_USE_EEPROM > 0 -#include "hasp_eeprom.h" + #include "hasp_eeprom.h" #endif #if HASP_USE_WIFI > 0 -#include "net/hasp_wifi.h" + #include "net/hasp_wifi.h" -#if defined(STM32F4xx) -#include "WiFiSpi.h" + #if defined(STM32F4xx) + #include "WiFiSpi.h" static WiFiSpiClass WiFi; -#endif + #endif #endif // HASP_USE_WIFI #if HASP_USE_ETHERNET > 0 -#if defined(ARDUINO_ARCH_ESP32) -#include + #if defined(ARDUINO_ARCH_ESP32) + #include -#define ETH_ADDR 0 -#define ETH_POWER_PIN -1 -#define ETH_MDC_PIN 23 -#define ETH_MDIO_PIN 18 -#define NRST 5 -#define ETH_TYPE ETH_PHY_LAN8720 -#define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT + #define ETH_ADDR 0 + #define ETH_POWER_PIN -1 + #define ETH_MDC_PIN 23 + #define ETH_MDIO_PIN 18 + #define NRST 5 + #define ETH_TYPE ETH_PHY_LAN8720 + #define ETH_CLKMODE ETH_CLOCK_GPIO17_OUT -#include "net/hasp_ethernet_esp32.h" -#warning Using ESP32 Ethernet LAN8720 + #include "net/hasp_ethernet_esp32.h" + #warning Using ESP32 Ethernet LAN8720 -#else -#if USE_BUILTIN_ETHERNET > 0 -#include -#include -#warning Use built-in STM32 Ethernet -#elif USE_UIP_ETHERNET -#include -#include -#warning Use ENC28J60 Ethernet shield -#else -#include "Ethernet.h" -#warning Use W5x00 Ethernet shield -#endif -#include "net/hasp_ethernet_stm32.h" -#endif + #else + #if USE_BUILTIN_ETHERNET > 0 + #include + #include + #warning Use built-in STM32 Ethernet + #elif USE_UIP_ETHERNET + #include + #include + #warning Use ENC28J60 Ethernet shield + #else + #include "Ethernet.h" + #warning Use W5x00 Ethernet shield + #endif + #include "net/hasp_ethernet_stm32.h" + #endif #endif #if HASP_USE_MQTT > 0 -#include "svc/hasp_mqtt.h" + #include "svc/hasp_mqtt.h" #endif #if HASP_USE_GPIO > 0 -#include "hasp_gpio.h" + #include "hasp_gpio.h" #endif #if HASP_USE_HTTP > 0 -#include "svc/hasp_http.h" + #include "svc/hasp_http.h" #endif #if HASP_USE_TELNET > 0 -#include "svc/hasp_telnet.h" + #include "svc/hasp_telnet.h" #endif #if HASP_USE_MDNS > 0 -#include "svc/hasp_mdns.h" + #include "svc/hasp_mdns.h" #endif #if HASP_USE_OTA > 0 -#include "svc/hasp_ota.h" -#ifndef HASP_OTA_PORT -#if defined(ARDUINO_ARCH_ESP32) -#define HASP_OTA_PORT 3232 -#elif defined(ARDUINO_ARCH_ESP8266) -#define HASP_OTA_PORT 8266 -#endif -#endif + #include "svc/hasp_ota.h" + #ifndef HASP_OTA_PORT + #if defined(ARDUINO_ARCH_ESP32) + #define HASP_OTA_PORT 3232 + #elif defined(ARDUINO_ARCH_ESP8266) + #define HASP_OTA_PORT 8266 + #endif + #endif #endif #if HASP_USE_TASMOTA_SLAVE > 0 -#include "svc/hasp_slave.h" + #include "svc/hasp_slave.h" #endif #ifndef FPSTR -#define FPSTR(pstr_pointer) (reinterpret_cast(pstr_pointer)) + #define FPSTR(pstr_pointer) (reinterpret_cast(pstr_pointer)) #endif #ifndef PGM_P -#define PGM_P const char * + #define PGM_P const char * #endif #endif // HASP_CONF_H \ No newline at end of file diff --git a/src/hasp/hasp_object.cpp b/src/hasp/hasp_object.cpp index 6e4f709d..609e15d7 100644 --- a/src/hasp/hasp_object.cpp +++ b/src/hasp/hasp_object.cpp @@ -181,7 +181,7 @@ void hasp_object_tree(lv_obj_t * parent, uint8_t pageid, uint16_t level) lv_obj_type_t list; lv_obj_get_type(parent, &list); const char * objtype = list.type[0]; - Log.verbose(TAG_HASP, F("[%d] p%ub%u %s"), level, pageid, parent->user_data.id, objtype); + Log.verbose(TAG_HASP, F("[%d] " HASP_OBJECT_NOTATION " %s"), level, pageid, parent->user_data.id, objtype); lv_obj_t * child; child = lv_obj_get_child(parent, NULL); @@ -586,7 +586,7 @@ void hasp_process_attribute(uint8_t pageid, uint8_t objid, const char * attr, co if(lv_obj_t * obj = hasp_find_obj_from_parent_id(get_page_obj(pageid), objid)) { hasp_process_obj_attribute(obj, attr, payload, strlen(payload) > 0); } else { - Log.warning(TAG_HASP, F("Unknown object p%ub%u"), pageid, objid); + Log.warning(TAG_HASP, F("Unknown object " HASP_OBJECT_NOTATION ""), pageid, objid); } } @@ -614,9 +614,10 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id) uint8_t parentid = config[F("parentid")].as(); parent_obj = hasp_find_obj_from_parent_id(parent_obj, parentid); if(!parent_obj) { - return Log.warning(TAG_HASP, F("Parent ID p%ub%u not found, skipping..."), pageid, parentid); + return Log.warning(TAG_HASP, F("Parent ID " HASP_OBJECT_NOTATION " not found, skipping..."), pageid, + parentid); } else { - Log.verbose(TAG_HASP, F("Parent ID p%ub%u found"), pageid, parentid); + Log.verbose(TAG_HASP, F("Parent ID " HASP_OBJECT_NOTATION " found"), pageid, parentid); } } @@ -970,7 +971,7 @@ void hasp_new_object(const JsonObject & config, uint8_t & saved_page_id) /** verbose reporting **/ lv_obj_type_t list; lv_obj_get_type(obj, &list); - Log.verbose(TAG_HASP, F(" * p%ub%u = %s"), pageid, temp, list.type[0]); + Log.verbose(TAG_HASP, F(" * " HASP_OBJECT_NOTATION " = %s"), pageid, temp, list.type[0]); /* test double-check */ lv_obj_t * test = hasp_find_obj_from_parent_id(get_page_obj(pageid), (uint8_t)temp); diff --git a/src/svc/hasp_mqtt.cpp b/src/svc/hasp_mqtt.cpp index ea797d67..4af39877 100644 --- a/src/svc/hasp_mqtt.cpp +++ b/src/svc/hasp_mqtt.cpp @@ -133,7 +133,7 @@ void mqtt_send_lwt(bool online) void mqtt_send_object_state(uint8_t pageid, uint8_t btnid, char * payload) { char tmp_topic[strlen(mqttNodeTopic) + 16]; - snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/p%ub%u"), mqttNodeTopic, pageid, btnid); + snprintf_P(tmp_topic, sizeof(tmp_topic), PSTR("%sstate/" HASP_OBJECT_NOTATION), mqttNodeTopic, pageid, btnid); bool res = mqttPublish(tmp_topic, payload); } diff --git a/src/svc/hasp_mqtt_ha.cpp b/src/svc/hasp_mqtt_ha.cpp index c7bad7ea..6be224b7 100644 --- a/src/svc/hasp_mqtt_ha.cpp +++ b/src/svc/hasp_mqtt_ha.cpp @@ -57,9 +57,9 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id) DynamicJsonDocument doc(512); mqtt_ha_add_device(doc); - snprintf_P(buffer, sizeof(buffer), PSTR("p%db%d"), page, id); + snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id); doc[F("stype")] = buffer; // subtype = "p0b0" - snprintf_P(buffer, sizeof(buffer), PSTR("~state/p%db%d"), page, id); + snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id); doc[F("t")] = buffer; // topic doc[F("atype")] = "trigger"; // automation_type @@ -67,29 +67,29 @@ void mqtt_ha_register_button(uint8_t page, uint8_t id) dispatch_get_event_name(HASP_EVENT_DOWN, buffer, sizeof(buffer)); doc[F("pl")] = buffer; doc[F("type")] = "button_short_press"; - snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName, - page, id, "short_press"); + snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), + discovery_prefix, mqttNodeName, page, id, "short_press"); mqtt_ha_send_json(buffer, doc); dispatch_get_event_name(HASP_EVENT_SHORT, buffer, sizeof(buffer)); doc[F("pl")] = buffer; doc[F("type")] = "button_short_release"; - snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName, - page, id, "short_release"); + snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), + discovery_prefix, mqttNodeName, page, id, "short_release"); mqtt_ha_send_json(buffer, doc); dispatch_get_event_name(HASP_EVENT_LONG, buffer, sizeof(buffer)); doc[F("pl")] = buffer; doc[F("type")] = "button_long_press"; - snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName, - page, id, "long_press"); + snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), + discovery_prefix, mqttNodeName, page, id, "long_press"); mqtt_ha_send_json(buffer, doc); dispatch_get_event_name(HASP_EVENT_UP, buffer, sizeof(buffer)); doc[F("pl")] = buffer; doc[F("type")] = "button_long_release"; - snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName, - page, id, "long_release"); + snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), + discovery_prefix, mqttNodeName, page, id, "long_release"); mqtt_ha_send_json(buffer, doc); } @@ -99,16 +99,16 @@ void mqtt_ha_register_switch(uint8_t page, uint8_t id) DynamicJsonDocument doc(512); mqtt_ha_add_device(doc); - snprintf_P(buffer, sizeof(buffer), PSTR("p%db%d"), page, id); + snprintf_P(buffer, sizeof(buffer), PSTR(HASP_OBJECT_NOTATION), page, id); doc[F("stype")] = buffer; // subtype = "p0b0" - snprintf_P(buffer, sizeof(buffer), PSTR("~state/p%db%d"), page, id); + snprintf_P(buffer, sizeof(buffer), PSTR("~state/" HASP_OBJECT_NOTATION), page, id); doc[F("t")] = buffer; // topic doc[F("atype")] = "binary_sensor"; // automation_type doc[F("pl")] = "SHORT"; // payload doc[F("type")] = "button_short_release"; - snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/p%db%d_%s/config"), discovery_prefix, mqttNodeName, + snprintf_P(buffer, sizeof(buffer), PSTR("%s/device_automation/%s/" HASP_OBJECT_NOTATION "_%s/config"), discovery_prefix, mqttNodeName, page, id, "short"); mqtt_ha_send_json(buffer, doc);