diff --git a/modb_orno3.c b/modb_orno3.c index 5e6bba0..47f105a 100644 --- a/modb_orno3.c +++ b/modb_orno3.c @@ -535,6 +535,7 @@ int main(int argc, char *argv[]) int voltage_buffer_index = 0; int voltage_buffer_items = 0; time_t high_frequency_mode_end_time = 0; + int high_frequency_mode_active = 0; /* Flag to track if we notified about high freq mode */ time_t rawtime; struct tm *timeinfo; @@ -674,8 +675,9 @@ int main(int argc, char *argv[]) fabs(current_voltage.U3 - avg_L3) > avg_L3 * VOLTAGE_FLUCTUATION_THRESHOLD) { printf("ORNO: Voltage fluctuation detected! Switching to high frequency polling for %d seconds.\n", HIGH_FREQ_MODE_DURATION); mqtt_send("/energy/orno/fluct", "on"); - influx_send_post("orno,device=orno,highfluct=start highfluct=true"); + influx_send_post("orno,device=orno,highfluct=start highfluct=1"); high_frequency_mode_end_time = time(NULL) + HIGH_FREQ_MODE_DURATION; + high_frequency_mode_active = 1; } @@ -1050,6 +1052,13 @@ int main(int argc, char *argv[]) if (time(NULL) < high_frequency_mode_end_time) { usleep(10000); // 10ms } else { + // Check if high frequency mode just ended - send notification + if (high_frequency_mode_active) { + printf("ORNO: High frequency mode ended after %d seconds.\n", HIGH_FREQ_MODE_DURATION); + mqtt_send("/energy/orno/fluct", "off"); + influx_send_post("orno,device=orno,highfluct=end highfluct=0"); + high_frequency_mode_active = 0; + } sleep(5); // 5s } }