From e37d38e399894843fa2b030f850246c5cec783ce Mon Sep 17 00:00:00 2001 From: fvanroie Date: Sun, 25 Feb 2024 20:36:08 +0100 Subject: [PATCH] Add MDNS discovery --- src/hasp/hasp_dispatch.cpp | 17 +++++++++++------ src/hasp/hasp_dispatch.h | 1 + src/sys/svc/hasp_mdns.cpp | 28 ++++++++++++++++++++++------ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp index d9555c8a..512c49e0 100644 --- a/src/hasp/hasp_dispatch.cpp +++ b/src/hasp/hasp_dispatch.cpp @@ -1295,13 +1295,8 @@ void dispatch_queue_discovery(const char*, const char*, uint8_t source) dispatchSecondsToNextDiscovery = seconds; } -// Periodically publish a JSON string facilitating plate discovery -void dispatch_send_discovery(const char*, const char*, uint8_t source) +void dispatch_get_discovery_data(JsonDocument& doc) { -#if HASP_USE_MQTT > 0 - - StaticJsonDocument<1024> doc; - char data[1024]; char buffer[64]; doc[F("node")] = haspDevice.get_hostname(); @@ -1326,7 +1321,17 @@ void dispatch_send_discovery(const char*, const char*, uint8_t source) #if HASP_USE_GPIO > 0 gpio_discovery(input, relay, led, dimmer); #endif +} +// Periodically publish a JSON string facilitating plate discovery +void dispatch_send_discovery(const char*, const char*, uint8_t source) +{ +#if HASP_USE_MQTT > 0 + StaticJsonDocument<1024> doc; + char data[1024]; + char buffer[64]; + + dispatch_get_discovery_data(doc); size_t len = serializeJson(doc, data); switch(mqtt_send_discovery(data, len)) { diff --git a/src/hasp/hasp_dispatch.h b/src/hasp/hasp_dispatch.h index 13967871..48cefdc8 100644 --- a/src/hasp/hasp_dispatch.h +++ b/src/hasp/hasp_dispatch.h @@ -100,6 +100,7 @@ void dispatch_state_val(const char* topic, hasp_event_t eventid, int32_t val); void dispatch_state_antiburn(hasp_event_t eventid); /* ===== Getter and Setter Functions ===== */ +void dispatch_get_discovery_data(JsonDocument& doc); /* ===== Read/Write Configuration ===== */ diff --git a/src/sys/svc/hasp_mdns.cpp b/src/sys/svc/hasp_mdns.cpp index 0252fb9c..4ef4582b 100644 --- a/src/sys/svc/hasp_mdns.cpp +++ b/src/sys/svc/hasp_mdns.cpp @@ -51,20 +51,36 @@ void mdnsStart() };*/ if(MDNS.begin(haspDevice.get_hostname())) { - char value[32]; + char value[1024]; // 32 char service[12]; char key[12]; char proto[4]; sprintf_P(proto, PSTR("tcp")); - strcpy_P(service, PSTR("http")); + // strcpy_P(service, PSTR("http")); + // MDNS.addService(service, proto, 80); + + // strcpy_P(key, PSTR("app_version")); + // MDNS.addServiceTxt(service, proto, key, haspDevice.get_version()); + + // strcpy_P(key, PSTR("app_name")); + // strcpy_P(value, PSTR(D_MANUFACTURER)); + // MDNS.addServiceTxt(service, proto, key, value); + + strcpy_P(service, PSTR("openhasp")); MDNS.addService(service, proto, 80); - strcpy_P(key, PSTR("app_version")); + strcpy_P(key, PSTR("version")); MDNS.addServiceTxt(service, proto, key, haspDevice.get_version()); - strcpy_P(key, PSTR("app_name")); - strcpy_P(value, PSTR(D_MANUFACTURER)); + // strcpy_P(key, PSTR("app_name")); + // strcpy_P(value, PSTR(D_MANUFACTURER)); + MDNS.addServiceTxt(service, proto, key, value); + + strcpy_P(key, PSTR("discovery")); + StaticJsonDocument<1024> doc; + dispatch_get_discovery_data(doc); + size_t len = serializeJson(doc, value); MDNS.addServiceTxt(service, proto, key, value); // if(debugTelnetEnabled) { @@ -85,7 +101,7 @@ bool mdns_remove_service(char* service, char* proto) #endif #if ESP8266 - return MDNS.removeService(haspDevice.get_hostname(),"_arduino", "_tcp"); + return MDNS.removeService(haspDevice.get_hostname(), "_arduino", "_tcp"); #endif }