diff --git a/src/httpserver/http_fns.c b/src/httpserver/http_fns.c
index cad02feca..dcc82f89b 100644
--- a/src/httpserver/http_fns.c
+++ b/src/httpserver/http_fns.c
@@ -1257,11 +1257,24 @@ int http_fn_ha_discovery(http_request_t* request) {
char topic[32];
int relayCount = 0;
int pwmCount = 0;
+ bool measuringPower = false;
http_setup(request, httpMimeTypeText);
+
+ if (MQTT_IsReady() == false) {
+ poststr(request, "MQTT not running.");
+ poststr(request, NULL);
+ return 0;
+ }
+
+#ifndef OBK_DISABLE_ALL_DRIVERS
+ measuringPower = DRV_IsMeasuringPower();
+#endif
+
get_Relay_PWM_Count(&relayCount, &pwmCount);
- if ((relayCount == 0) && (pwmCount == 0)) {
+ if ((relayCount == 0) && (pwmCount == 0) && !measuringPower) {
+ poststr(request, "No relay, PWM or power driver running.");
poststr(request, NULL);
return 0;
}
@@ -1308,8 +1321,8 @@ int http_fn_ha_discovery(http_request_t* request) {
}
#ifndef OBK_DISABLE_ALL_DRIVERS
- if (DRV_IsMeasuringPower()) {
- for (i = 0;i < OBK_NUM_SENSOR_COUNT;i++)
+ if (measuringPower == true) {
+ for (i = 0;i < OBK_NUM_MEASUREMENTS;i++)
{
HassDeviceInfo* dev_info = hass_init_light_device_info(ENTITY_SENSOR, i);
MQTT_QueuePublish(topic, dev_info->channel, hass_build_discovery_json(dev_info), OBK_PUBLISH_FLAG_RETAIN);
@@ -1318,6 +1331,7 @@ int http_fn_ha_discovery(http_request_t* request) {
}
#endif
+ poststr(request, "MQTT discovery queued.");
poststr(request, NULL);
return 0;
}
diff --git a/src/httpserver/new_http.c b/src/httpserver/new_http.c
index c0e499632..1fafb9ae9 100644
--- a/src/httpserver/new_http.c
+++ b/src/httpserver/new_http.c
@@ -615,5 +615,5 @@ const char pageScript[] = "";
+const char ha_discovery_script[] = "";
//region_end ha_discovery_script
\ No newline at end of file
diff --git a/src/httpserver/script_ha_discovery.js b/src/httpserver/script_ha_discovery.js
index 0af307bfc..7a45e0bc7 100644
--- a/src/httpserver/script_ha_discovery.js
+++ b/src/httpserver/script_ha_discovery.js
@@ -9,7 +9,7 @@ function send_ha_disc() {
);
xhr.onload = function () {
if (xhr.status === 200) {
- alert("MQTT discovery queued");
+ alert(xhr.responseText);
} else if (xhr.status === 404) {
alert("Error invoking ha_discovery");
}