From 48004f43e28717195500fd01fd99648b3c7e8133 Mon Sep 17 00:00:00 2001 From: Yinyin Liu Date: Wed, 7 Aug 2024 15:46:50 +0200 Subject: [PATCH] solve repetitive alarms issue --- .../dbus-fzsonick-48tl/dbus-fzsonick-48tl.py | 30 +++++++++---------- .../dbus-fzsonick-48tl/dbus-fzsonick-48tl.py | 30 +++++++++---------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/firmware/Cerbo_Release/CerboReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py b/firmware/Cerbo_Release/CerboReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py index c73902691..21157764f 100755 --- a/firmware/Cerbo_Release/CerboReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py +++ b/firmware/Cerbo_Release/CerboReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py @@ -704,26 +704,24 @@ def update_state_from_dictionaries(current_warnings, current_alarms, node_number changed_alarms = current_alarms is_first_update = False else: - changed_alarms={} - changed_warnings={} - # calculate the diff in warnings and alarms - prev_alarm_value_list=list(previous_alarms.values()) - alarm_keys=list(previous_alarms.keys()) + changed_alarms = {} + changed_warnings = {} - for i, alarm in enumerate(current_alarms.values()): - if alarm!=prev_alarm_value_list[i]: - changed_alarms[alarm_keys[i]]=True + for key in current_alarms: + current_value = current_alarms[key] + prev_value = previous_alarms.get(key, False) # Use False if the key doesn't exist + if current_value != prev_value: + changed_alarms[key] = True else: - changed_alarms[alarm_keys[i]]=False + changed_alarms[key] = False - prev_warning_value_list=list(previous_warnings.values()) - warning_keys=list(previous_warnings.keys()) - - for i, warning in enumerate(current_warnings.values()): - if warning!=prev_warning_value_list[i]: - changed_warnings[warning_keys[i]]=True + for key in current_warnings: + current_value = current_warnings[key] + prev_value = previous_warnings.get(key, False) + if current_value != prev_value: + changed_warnings[key] = True else: - changed_warnings[warning_keys[i]]=False + changed_warnings[key] = False status_message = { "InstallationId": INSTALLATION_ID, diff --git a/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py b/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py index d6d2cff65..ea3fcc4d5 100755 --- a/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py +++ b/firmware/Venus_Release/VenusReleaseFiles/dbus-fzsonick-48tl/dbus-fzsonick-48tl.py @@ -151,7 +151,7 @@ prev_status = 0 def update_state_from_dictionaries(current_warnings, current_alarms, node_numbers): global previous_warnings, previous_alarms, INSTALLATION_ID, PRODUCT_ID, is_first_update, channel, prev_status - + if is_first_update: changed_warnings = current_warnings changed_alarms = current_alarms @@ -159,25 +159,23 @@ def update_state_from_dictionaries(current_warnings, current_alarms, node_number else: changed_alarms = {} changed_warnings = {} - # calculate the diff in warnings and alarms - prev_alarm_value_list = list(previous_alarms.values()) - alarm_keys = list(previous_alarms.keys()) - for i, alarm in enumerate(current_alarms.values()): - if alarm != prev_alarm_value_list[i]: - changed_alarms[alarm_keys[i]] = True + for key in current_alarms: + current_value = current_alarms[key] + prev_value = previous_alarms.get(key, False) # Use False if the key doesn't exist + if current_value != prev_value: + changed_alarms[key] = True else: - changed_alarms[alarm_keys[i]] = False + changed_alarms[key] = False - prev_warning_value_list=list(previous_warnings.values()) - warning_keys=list(previous_warnings.keys()) - - for i, warning in enumerate(current_warnings.values()): - if warning!=prev_warning_value_list[i]: - changed_warnings[warning_keys[i]]=True + for key in current_warnings: + current_value = current_warnings[key] + prev_value = previous_warnings.get(key, False) + if current_value != prev_value: + changed_warnings[key] = True else: - changed_warnings[warning_keys[i]]=False - + changed_warnings[key] = False + status_message = { "InstallationId": INSTALLATION_ID, "Product": PRODUCT_ID,