Refactor teleperiod rules

This commit is contained in:
Theo Arends 2021-04-05 11:10:53 +02:00
parent 146c316d4d
commit ad50fc5522
6 changed files with 20 additions and 48 deletions

View File

@ -858,14 +858,21 @@ bool MqttShowSensor(void)
return json_data_available; return json_data_available;
} }
void MqttPublishSensor(void) void MqttPublishSensor(void) {
{
ResponseClear(); ResponseClear();
if (MqttShowSensor()) { if (MqttShowSensor()) {
MqttPublishTeleSensor(); 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 * State loops
\*********************************************************************************************/ \*********************************************************************************************/
@ -939,12 +946,7 @@ void PerformEverySecond(void)
TasmotaGlobal.tele_period = 0; TasmotaGlobal.tele_period = 0;
MqttPublishTeleState(); MqttPublishTeleState();
MqttPublishTeleperiodSensor();
ResponseClear();
if (MqttShowSensor()) {
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain); // CMND_SENSORRETAIN
XdrvRulesProcess(1); // Allow rule based HA messages
}
XsnsCall(FUNC_AFTER_TELEPERIOD); XsnsCall(FUNC_AFTER_TELEPERIOD);
XdrvCall(FUNC_AFTER_TELEPERIOD); XdrvCall(FUNC_AFTER_TELEPERIOD);

View File

@ -338,15 +338,6 @@ void UBXsendCFGLine(uint8_t _line)
DEBUG_SENSOR_LOG(PSTR("UBX: send line %u of UBLOX_INIT"), _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) void UBXDetect(void)
@ -378,7 +369,7 @@ void UBXDetect(void)
UBX.state.log_interval = 10; // 1 second UBX.state.log_interval = 10; // 1 second
UBX.mode.send_UI_only = true; // send UI data ... UBX.mode.send_UI_only = true; // send UI data ...
UBXTriggerTele(); // ... once at after start MqttPublishTeleperiodSensor(); // ... once at after start
} }
uint32_t UBXprocessGPS() uint32_t UBXprocessGPS()
@ -625,7 +616,7 @@ void UBXSelectMode(uint16_t mode)
break; break;
} }
UBX.mode.send_UI_only = true; 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_vAcc = UBX.Message.navPosllh.vAcc;
UBX.state.last_hAcc = UBX.Message.navPosllh.hAcc; UBX.state.last_hAcc = UBX.Message.navPosllh.hAcc;
if (UBX.mode.send_when_new) { if (UBX.mode.send_when_new) {
UBXTriggerTele(); MqttPublishTeleperiodSensor();
} }
if (UBX.mode.runningNTP){ // after receiving pos-data at least once -> go to pure NTP-mode if (UBX.mode.runningNTP){ // after receiving pos-data at least once -> go to pure NTP-mode
UBXsendCFGLine(7); //NAV-POSLLH off UBXsendCFGLine(7); //NAV-POSLLH off

View File

@ -1163,11 +1163,7 @@ void MINRFconfirmSensors(void){
*/ */
void MINRFtriggerTele(void){ void MINRFtriggerTele(void){
MINRF.mode.triggeredTele = true; MINRF.mode.triggeredTele = true;
ResponseClear(); MqttPublishTeleperiodSensor();
if (MqttShowSensor()) {
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
XdrvRulesProcess(1); // Allow rule based HA messages
}
} }
/** /**

View File

@ -1565,11 +1565,7 @@ void HM10EverySecond(bool restart){
*/ */
void HM10triggerTele(void){ void HM10triggerTele(void){
HM10.mode.triggeredTele = 1; HM10.mode.triggeredTele = 1;
ResponseClear(); MqttPublishTeleperiodSensor();
if (MqttShowSensor()) {
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
XdrvRulesProcess(1); // Allow rule based HA messages
}
} }

View File

@ -746,11 +746,7 @@ uint32_t MIBLEgetSensorSlot(uint8_t (&_MAC)[6], uint16_t _type, uint8_t counter)
*/ */
void MI32triggerTele(void){ void MI32triggerTele(void){
MI32.mode.triggeredTele = 1; MI32.mode.triggeredTele = 1;
ResponseClear(); MqttPublishTeleperiodSensor();
if (MqttShowSensor()) {
MqttPublishPrefixTopic_P(TELE, PSTR(D_RSLT_SENSOR), Settings.flag.mqtt_sensor_retain);
XdrvRulesProcess(1); // Allow rule based HA messages
}
} }
/** /**

View File

@ -157,7 +157,7 @@ void WindMeterEverySecond(void)
#endif // USE_WINDMETER_NOSTATISTICS #endif // USE_WINDMETER_NOSTATISTICS
if (WindMeterShouldTriggerTele()) { 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 * Commands
\*********************************************************************************************/ \*********************************************************************************************/