From 6989b1730e88732f3dbd97b0165f9c6cbe972416 Mon Sep 17 00:00:00 2001 From: cschwinne Date: Sun, 10 Nov 2019 22:13:07 +0100 Subject: [PATCH] Added mqtt status topic --- wled00/wled00.ino | 3 ++- wled00/wled07_notify.ino | 1 + wled00/wled17_mqtt.ino | 9 ++++++++- wled00/wled18_server.ino | 2 +- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/wled00/wled00.ino b/wled00/wled00.ino index 17dff3ca4..bc85f31e4 100644 --- a/wled00/wled00.ino +++ b/wled00/wled00.ino @@ -100,7 +100,7 @@ //version code in format yymmddb (b = daily build) -#define VERSION 1911101 +#define VERSION 1911102 char versionString[] = "0.8.6"; @@ -386,6 +386,7 @@ unsigned long realtimeTimeout = 0; long lastMqttReconnectAttempt = 0; long lastInterfaceUpdate = 0; byte interfaceUpdateCallMode = 0; +char mqttStatusTopic[40] = ""; //this must be global because of async handlers #if AUXPIN >= 0 //auxiliary debug pin diff --git a/wled00/wled07_notify.ino b/wled00/wled07_notify.ino index 315020909..d5dede5e8 100644 --- a/wled00/wled07_notify.ino +++ b/wled00/wled07_notify.ino @@ -176,6 +176,7 @@ void handleNotifications() { //ignore notification if received within a second after sending a notification ourselves if (millis() - notificationSentTime < 1000) return; + if (udpIn[1] > 199) return; //do not receive custom versions bool someSel = (receiveNotificationBrightness || receiveNotificationColor || receiveNotificationEffects); //apply colors from notification diff --git a/wled00/wled17_mqtt.ino b/wled00/wled17_mqtt.ino index 53d499d4a..4bc8c0c93 100644 --- a/wled00/wled17_mqtt.ino +++ b/wled00/wled17_mqtt.ino @@ -19,7 +19,6 @@ void onMqttConnect(bool sessionPresent) { //(re)subscribe to required topics char subuf[38]; - strcpy(subuf, mqttDeviceTopic); if (mqttDeviceTopic[0] != 0) { @@ -89,6 +88,10 @@ void publishMqtt() strcat(subuf, "/c"); mqtt->publish(subuf, 0, true, s); + strcpy(subuf, mqttDeviceTopic); + strcat(subuf, "/status"); + mqtt->publish(subuf, 0, true, "online"); + char apires[1024]; XML_response(nullptr, false, apires); strcpy(subuf, mqttDeviceTopic); @@ -243,6 +246,10 @@ bool initMqtt() } mqtt->setClientId(mqttClientID); if (mqttUser[0] && mqttPass[0]) mqtt->setCredentials(mqttUser, mqttPass); + + strcpy(mqttStatusTopic, mqttDeviceTopic); + strcat(mqttStatusTopic, "/status"); + mqtt->setWill(mqttStatusTopic, 0, true, "offline"); mqtt->connect(); return true; } diff --git a/wled00/wled18_server.ino b/wled00/wled18_server.ino index 6a937f321..8d75a651b 100644 --- a/wled00/wled18_server.ino +++ b/wled00/wled18_server.ino @@ -64,7 +64,7 @@ void initServer() server.on("/settings/wifi", HTTP_POST, [](AsyncWebServerRequest *request){ if (!(wifiLock && otaLock)) handleSettingsSet(request, 1); - serveMessage(request, 200,"WiFi settings saved.","Reconnecting now...",255); + serveMessage(request, 200,"WiFi settings saved.","Reconnecting now...",129); forceReconnect = true; });