Add uri to discovery message

This commit is contained in:
fvanroie 2021-11-05 23:59:56 +01:00
parent 28bf5b55e5
commit 884a466ca9
3 changed files with 35 additions and 2 deletions

View File

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

View File

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

View File

@ -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 ===== */