diff --git a/src/channel.c b/src/channel.c index 52f202a..9d1d7fe 100644 --- a/src/channel.c +++ b/src/channel.c @@ -327,8 +327,10 @@ void channel_override_set(int idx) { match = timespec_match_now(s_channels[idx].timespec); if (match != s_channels[idx].relay_state) { LOG(LL_INFO, ("User state disagrees with timespec, setting override")); - s_channels[idx].channel_override = true; - mqtt_publish_stat("override", "{idx: %d, relay_state: %d, override: %B}", idx, s_channels[idx].relay_state, s_channels[idx].channel_override); + if (!s_channels[idx].channel_override) { + s_channels[idx].channel_override = true; + mqtt_publish_stat("override", "{idx: %d, relay_state: %d, override: %B}", idx, s_channels[idx].relay_state, s_channels[idx].channel_override); + } return; } if (s_channels[idx].channel_override && (match == s_channels[idx].relay_state)) { @@ -345,8 +347,10 @@ void channel_override_clear(int idx) { return; } - s_channels[idx].channel_override = false; - mqtt_publish_stat("override", "{idx: %d, relay_state: %d, override: %B}", idx, s_channels[idx].relay_state, s_channels[idx].channel_override); + if (s_channels[idx].channel_override) { + mqtt_publish_stat("override", "{idx: %d, relay_state: %d, override: %B}", idx, s_channels[idx].relay_state, s_channels[idx].channel_override); + s_channels[idx].channel_override = false; + } return; }