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;
}
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);

View File

@ -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

View File

@ -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();
}
/**

View File

@ -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();
}

View File

@ -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();
}
/**

View File

@ -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
\*********************************************************************************************/