Fix discovery on MQTT reconnect

Fix discovery on MQTT reconnect (#12140)
This commit is contained in:
Theo Arends 2021-05-22 16:25:02 +02:00
parent 56c15e2e70
commit cacc8f1eb0
2 changed files with 11 additions and 3 deletions

View File

@ -220,13 +220,13 @@ void TasDiscovery(void) {
}
void TasRediscover(void) {
TasmotaGlobal.discovery_counter = 1; // Delayed discovery or clear retained messages
TasmotaGlobal.discovery_counter = 1; // Delayed discovery or clear retained messages
}
void TasDiscoverInit(void) {
if (ResetReason() != REASON_DEEP_SLEEP_AWAKE) {
Settings.flag.hass_discovery = 0; // SetOption19 - Enable Tasmota discovery and Disable legacy Hass discovery
TasmotaGlobal.discovery_counter = 10; // Delayed discovery
TasmotaGlobal.discovery_counter = 10; // Delayed discovery
}
}
@ -281,6 +281,11 @@ bool Xdrv12(uint8_t function) {
case FUNC_COMMAND:
result = DecodeCommand(kTasDiscoverCommands, TasDiscoverCommand, kTasDiscoverSynonyms);
break;
case FUNC_MQTT_SUBSCRIBE:
if (0 == Mqtt.initial_connection_state) {
TasRediscover();
}
break;
case FUNC_MQTT_INIT:
TasDiscoverInit();
break;

View File

@ -1179,6 +1179,7 @@ bool Xdrv12(uint8_t function)
case FUNC_ANY_KEY:
HAssAnyKey();
break;
/*
case FUNC_MQTT_INIT:
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
TasmotaGlobal.discovery_counter = 10; // Delayed discovery
@ -1186,9 +1187,11 @@ bool Xdrv12(uint8_t function)
// NewHAssDiscovery();
// }
break;
*/
case FUNC_MQTT_SUBSCRIBE:
HassLwtSubscribe(hasslwt);
hass_mode = 0; // Discovery only if Settings.flag.hass_discovery is set
TasmotaGlobal.discovery_counter = (0 == Mqtt.initial_connection_state) ? 1 : 10; // Delayed discovery
break;
case FUNC_MQTT_DATA:
result = HAssMqttLWT();