From 884a466ca96c1a3570e0687741f5b7ea9b374212 Mon Sep 17 00:00:00 2001 From: fvanroie <15969459+fvanroie@users.noreply.github.com> Date: Fri, 5 Nov 2021 23:59:56 +0100 Subject: [PATCH] Add uri to discovery message --- src/hasp/hasp_dispatch.cpp | 12 ++++++++++-- src/sys/net/hasp_network.cpp | 24 ++++++++++++++++++++++++ src/sys/net/hasp_network.h | 1 + 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/src/hasp/hasp_dispatch.cpp b/src/hasp/hasp_dispatch.cpp index 05840c2e..ea0092ca 100644 --- a/src/hasp/hasp_dispatch.cpp +++ b/src/hasp/hasp_dispatch.cpp @@ -107,7 +107,7 @@ void dispatch_state_brightness(const char* topic, hasp_event_t eventid, int32_t dispatch_state_subtopic(topic, payload); } -void dispatch_state_antiburn( hasp_event_t eventid) +void dispatch_state_antiburn(hasp_event_t eventid) { char topic[9]; char payload[64]; @@ -1059,6 +1059,8 @@ 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]; doc[F("node")] = haspDevice.get_hostname(); doc[F("mdl")] = haspDevice.get_model(); @@ -1067,6 +1069,13 @@ void dispatch_send_discovery(const char*, const char*, uint8_t source) doc[F("pages")] = haspPages.count(); doc[F("sw")] = haspDevice.get_version(); +#if HASP_USE_HTTP > 0 + network_get_ipaddress(buffer, sizeof(buffer)); + doc[F("uri")] = String(F("http://")) + String(buffer); +#elif defined(WINDOWS) || defined(POSIX) + doc[F("uri")] = "http://google.pt"; +#endif + JsonObject input = doc.createNestedObject(F("input")); JsonArray relay = doc.createNestedArray(F("power")); JsonArray led = doc.createNestedArray(F("light")); @@ -1076,7 +1085,6 @@ void dispatch_send_discovery(const char*, const char*, uint8_t source) gpio_discovery(input, relay, led, dimmer); #endif - char data[1024]; size_t len = serializeJson(doc, data); switch(mqtt_send_discovery(data, len)) { diff --git a/src/sys/net/hasp_network.cpp b/src/sys/net/hasp_network.cpp index bb4703d2..701d0c9b 100644 --- a/src/sys/net/hasp_network.cpp +++ b/src/sys/net/hasp_network.cpp @@ -140,6 +140,30 @@ void network_get_statusupdate(char* buffer, size_t len) #endif } +void network_get_ipaddress(char* buffer, size_t len) +{ +#if HASP_USE_ETHERNET > 0 + IPAddress ip = Ethernet.localIP(); + snprintf_P(buffer, len, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); + return; +#endif + +#if HASP_USE_WIFI > 0 + +#if defined(STM32F4xx) + IPAddress ip; + ip = WiFi.localIP(); + snprintf_P(buffer, len, PSTR("%d.%d.%d.%d"), ip[0], ip[1], ip[2], ip[3]); +#else + strncpy(buffer, WiFi.localIP().toString().c_str(), len); +#endif + + return; +#endif // HASP_USE_WIFI + + snprintf(buffer, len, ""); +} + void network_get_info(JsonDocument& doc) { #if HASP_USE_ETHERNET > 0 diff --git a/src/sys/net/hasp_network.h b/src/sys/net/hasp_network.h index 15305d80..a3897296 100644 --- a/src/sys/net/hasp_network.h +++ b/src/sys/net/hasp_network.h @@ -16,6 +16,7 @@ void networkStop(void); /* ===== Getter and Setter Functions ===== */ void network_get_statusupdate(char* buffer, size_t len); +void network_get_ipaddress(char* buffer, size_t len); void network_get_info(JsonDocument& doc); /* ===== Read/Write Configuration ===== */