Add HASP_OBJECT_NOTATION

This commit is contained in:
fvanroie 2021-02-04 00:39:47 +01:00
parent bbfe673e8b
commit 1a29225f3e
4 changed files with 113 additions and 109 deletions

View File

@ -16,7 +16,8 @@
#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)
@ -97,6 +98,8 @@
#endif
#endif
#define HASP_OBJECT_NOTATION "p%ub%u"
/* Includes */
#include <Arduino.h>

View File

@ -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<uint8_t>();
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);

View File

@ -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);
}

View File

@ -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);