From 0f14c14e7fab45f60721f7af7470c934ee134750 Mon Sep 17 00:00:00 2001 From: barbudor Date: Tue, 3 May 2022 22:16:24 +0200 Subject: [PATCH] so140 for persistent mqtt session --- tasmota/settings.h | 2 +- tasmota/settings.ino | 1 + tasmota/xdrv_02_9_mqtt.ino | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tasmota/settings.h b/tasmota/settings.h index 8a302ad55..35c6b71d5 100644 --- a/tasmota/settings.h +++ b/tasmota/settings.h @@ -169,7 +169,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t tuya_exclude_from_mqtt : 1; // bit 23 (v11.0.0.5) - SetOption137 - (Tuya) When Set, avoid the (MQTT-) publish of defined Tuya CMDs (see xdrv_16_tuyamcu.ino) if SetOption66 is active uint32_t gui_table_align : 1; // bit 24 (v11.0.0.7) - SetOption138 - (GUI) Align (energy) table values left (0) or right (1) uint32_t mm_vs_inch : 1; // bit 25 (v11.1.0.1) - SetOption139 - (Pressure) Switch between mmHg (0) or inHg (1) when SO24 1 - uint32_t spare26 : 1; // bit 26 + uint32_t mqtt_persistent : 1; // bit 26 (v11.1.0.1) - SetOption140 - 0=MQTT clean session (default), 1=MQTT persistent session uint32_t spare27 : 1; // bit 27 uint32_t spare28 : 1; // bit 28 uint32_t spare29 : 1; // bit 29 diff --git a/tasmota/settings.ino b/tasmota/settings.ino index 54b68a35a..b0fefb41b 100644 --- a/tasmota/settings.ino +++ b/tasmota/settings.ino @@ -983,6 +983,7 @@ void SettingsDefaultSet2(void) { flag5.mqtt_info_retain |= MQTT_INFO_RETAIN; flag5.mqtt_state_retain |= MQTT_STATE_RETAIN; flag5.mqtt_switches |= MQTT_SWITCHES; + flag5.mqtt_persistent |= ~MQTT_CLEAN_SESSION; // flag.mqtt_serial |= 0; flag.device_index_enable |= MQTT_POWER_FORMAT; flag3.time_append_timezone |= MQTT_APPEND_TIMEZONE; diff --git a/tasmota/xdrv_02_9_mqtt.ino b/tasmota/xdrv_02_9_mqtt.ino index 05432e965..9f4e38387 100644 --- a/tasmota/xdrv_02_9_mqtt.ino +++ b/tasmota/xdrv_02_9_mqtt.ino @@ -1098,9 +1098,9 @@ void MqttReconnect(void) { } String azureMqtt_userString = String(SettingsText(SET_MQTT_HOST)) + "/" + String(SettingsText(SET_MQTT_CLIENT)); + "/?api-version=2018-06-30"; - if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), azureMqtt_password.c_str(), stopic, 1, lwt_retain, ResponseData(), MQTT_CLEAN_SESSION)) { + if (MqttClient.connect(TasmotaGlobal.mqtt_client, azureMqtt_userString.c_str(), azureMqtt_password.c_str(), stopic, 1, lwt_retain, ResponseData(), Settings->flag5.mqtt_persistent ? 0:1)) { #else - if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, ResponseData(), MQTT_CLEAN_SESSION)) { + if (MqttClient.connect(TasmotaGlobal.mqtt_client, mqtt_user, mqtt_pwd, stopic, 1, lwt_retain, ResponseData(), Settings->flag5.mqtt_persistent ? 0:1)) { #endif // USE_MQTT_AZURE_IOT #ifdef USE_MQTT_TLS if (Mqtt.mqtt_tls) {