Po upływie HIGH_FREQ_MODE_DURATION sekund od wykrycia fluktuacji napięcia:
- Wysyłany jest komunikat MQTT na topic /energy/orno/fluct z wartością "off" - Wysyłany jest zapis do InfluxDB z tagiem highfluct=end i wartością highfluct=0 - Flaga jest resetowana, aby powiadomienie wysłało się tylko raz
This commit is contained in:
11
modb_orno3.c
11
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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user