diff --git a/tasmota/support_tasmota.ino b/tasmota/support_tasmota.ino index 49bd70d28..b57925e62 100644 --- a/tasmota/support_tasmota.ino +++ b/tasmota/support_tasmota.ino @@ -858,14 +858,21 @@ bool MqttShowSensor(void) return json_data_available; } -void MqttPublishSensor(void) -{ +void MqttPublishSensor(void) { ResponseClear(); if (MqttShowSensor()) { MqttPublishTeleSensor(); } } +void MqttPublishTeleperiodSensor(void) { + ResponseClear(); + if (MqttShowSensor()) { + MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); // CMND_SENSORRETAIN + XdrvRulesProcess(1); + } +} + /*********************************************************************************************\ * State loops \*********************************************************************************************/ @@ -939,12 +946,7 @@ void PerformEverySecond(void) TasmotaGlobal.tele_period = 0; MqttPublishTeleState(); - - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); // CMND_SENSORRETAIN - XdrvRulesProcess(1); // Allow rule based HA messages - } + MqttPublishTeleperiodSensor(); XsnsCall(FUNC_AFTER_TELEPERIOD); XdrvCall(FUNC_AFTER_TELEPERIOD); diff --git a/tasmota/xsns_60_GPS.ino b/tasmota/xsns_60_GPS.ino index 99abd6ce3..79a4e02eb 100644 --- a/tasmota/xsns_60_GPS.ino +++ b/tasmota/xsns_60_GPS.ino @@ -338,15 +338,6 @@ void UBXsendCFGLine(uint8_t _line) DEBUG_SENSOR_LOG(PSTR("UBX: send line %u of UBLOX_INIT"), _line); } -void UBXTriggerTele(void) -{ - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - XdrvRulesProcess(1); // Allow rule based HA messages - } -} - /********************************************************************************************/ void UBXDetect(void) @@ -378,7 +369,7 @@ void UBXDetect(void) UBX.state.log_interval = 10; // 1 second UBX.mode.send_UI_only = true; // send UI data ... - UBXTriggerTele(); // ... once at after start + MqttPublishTeleperiodSensor(); // ... once at after start } uint32_t UBXprocessGPS() @@ -625,7 +616,7 @@ void UBXSelectMode(uint16_t mode) break; } UBX.mode.send_UI_only = true; - UBXTriggerTele(); + MqttPublishTeleperiodSensor(); } /********************************************************************************************/ @@ -648,7 +639,7 @@ bool UBXHandlePOSLLH() UBX.state.last_vAcc = UBX.Message.navPosllh.vAcc; UBX.state.last_hAcc = UBX.Message.navPosllh.hAcc; if (UBX.mode.send_when_new) { - UBXTriggerTele(); + MqttPublishTeleperiodSensor(); } if (UBX.mode.runningNTP){ // after receiving pos-data at least once -> go to pure NTP-mode UBXsendCFGLine(7); //NAV-POSLLH off diff --git a/tasmota/xsns_61_MI_NRF24.ino b/tasmota/xsns_61_MI_NRF24.ino index 5c5ca94f8..9ec551acd 100644 --- a/tasmota/xsns_61_MI_NRF24.ino +++ b/tasmota/xsns_61_MI_NRF24.ino @@ -1162,12 +1162,8 @@ void MINRFconfirmSensors(void){ * */ void MINRFtriggerTele(void){ - MINRF.mode.triggeredTele= true; - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - XdrvRulesProcess(1); // Allow rule based HA messages - } + MINRF.mode.triggeredTele = true; + MqttPublishTeleperiodSensor(); } /** diff --git a/tasmota/xsns_62_MI_HM10.ino b/tasmota/xsns_62_MI_HM10.ino index ea477d6de..680beaa7e 100644 --- a/tasmota/xsns_62_MI_HM10.ino +++ b/tasmota/xsns_62_MI_HM10.ino @@ -1564,12 +1564,8 @@ void HM10EverySecond(bool restart){ * */ void HM10triggerTele(void){ - HM10.mode.triggeredTele = 1; - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - XdrvRulesProcess(1); // Allow rule based HA messages - } + HM10.mode.triggeredTele = 1; + MqttPublishTeleperiodSensor(); } diff --git a/tasmota/xsns_62_esp32_mi.ino b/tasmota/xsns_62_esp32_mi.ino index 361fe34ed..2d0f9ef79 100644 --- a/tasmota/xsns_62_esp32_mi.ino +++ b/tasmota/xsns_62_esp32_mi.ino @@ -745,12 +745,8 @@ uint32_t MIBLEgetSensorSlot(uint8_t (&_MAC)[6], uint16_t _type, uint8_t counter) * */ void MI32triggerTele(void){ - MI32.mode.triggeredTele = 1; - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - XdrvRulesProcess(1); // Allow rule based HA messages - } + MI32.mode.triggeredTele = 1; + MqttPublishTeleperiodSensor(); } /** diff --git a/tasmota/xsns_68_windmeter.ino b/tasmota/xsns_68_windmeter.ino index 19a8fe0eb..3c98d912b 100644 --- a/tasmota/xsns_68_windmeter.ino +++ b/tasmota/xsns_68_windmeter.ino @@ -157,7 +157,7 @@ void WindMeterEverySecond(void) #endif // USE_WINDMETER_NOSTATISTICS if (WindMeterShouldTriggerTele()) { - WindMeterTriggerTele(); + MqttPublishTeleperiodSensor(); } } @@ -272,15 +272,6 @@ void WindMeterShow(bool json) } } -void WindMeterTriggerTele(void) -{ - ResponseClear(); - if (MqttShowSensor()) { - MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); - XdrvRulesProcess(1); // Allow rule based HA messages - } -} - /*********************************************************************************************\ * Commands \*********************************************************************************************/