From 40d7e9ecdea36f9232d3094c6745a1d195d0d374 Mon Sep 17 00:00:00 2001 From: Sergey Revyakin Date: Fri, 6 Mar 2026 12:02:49 +0700 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81?= =?UTF-8?q?=20=D1=82=D0=B5=D0=BB=D0=B5=D0=BC=D0=B5=D1=82=D1=80=D0=B8=D0=B5?= =?UTF-8?q?=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/embedded_3300.py | 43 +++++++- src/embedded_433.py | 252 +++++++++++++++++++++++++------------------ src/embedded_4500.py | 43 +++++++- src/embedded_5200.py | 245 +++++++++++++++++++++++------------------ src/embedded_5800.py | 245 +++++++++++++++++++++++------------------ src/embedded_750.py | 251 ++++++++++++++++++++++++------------------ src/embedded_868.py | 245 +++++++++++++++++++++++------------------ 7 files changed, 809 insertions(+), 515 deletions(-) diff --git a/src/embedded_3300.py b/src/embedded_3300.py index bc79a34..c85ac91 100644 --- a/src/embedded_3300.py +++ b/src/embedded_3300.py @@ -1,8 +1,10 @@ import os import datetime +import math +import time from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length from core.multichannelswitcher import MultiChannel, get_centre_freq @@ -46,6 +48,12 @@ the_pc_name = os.getenv('the_pc_name') remote_pc_name = os.getenv('remote_pc_name') smb_domain = os.getenv('smb_domain') freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) elems_to_save = elems_to_save.split(',') file_types_to_save = file_types_to_save.split(',') @@ -86,6 +94,39 @@ def work(lvl): else: circle_buffer.update(sigs_array) + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + if send_to_module_flag: send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) diff --git a/src/embedded_433.py b/src/embedded_433.py index 475b2d3..09105e3 100644 --- a/src/embedded_433.py +++ b/src/embedded_433.py @@ -1,11 +1,16 @@ -import os -import datetime -from common.runtime import load_root_env, validate_env, as_bool, as_str +import os +import datetime +import math +import time +from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data -from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length -from core.multichannelswitcher import MultiChannel, get_centre_freq - +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data +from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length +from core.multichannelswitcher import MultiChannel, get_centre_freq +import logging + +logging.basicConfig(level=logging.INFO) + load_root_env(__file__) freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1] validate_env(__file__, { @@ -23,98 +28,141 @@ validate_env(__file__, { f"f_bases_{freq_suffix}": as_str, f"f_roofs_{freq_suffix}": as_str, }) - -debug_flag = as_bool(os.getenv('debug_flag', '0')) -send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) -save_data_flag = as_bool(os.getenv('save_data_flag', '0')) -module_name = os.getenv('module_name') -elems_to_save = os.getenv('elems_to_save') -file_types_to_save = os.getenv('file_types_to_save') -localhost = os.getenv('lochost') -localport = os.getenv('locport') -f_step = [*map(float, os.getenv('f_step_433').split())] -f_bases = [*map(float, os.getenv('f_bases_433').split())] -f_roofs = [*map(float, os.getenv('f_roofs_433').split())] -path_to_save_medians = os.getenv('path_to_save_medians') -path_to_save_alarms = os.getenv('path_to_save_alarms') -smb_host = os.getenv('smb_host') -smb_port = os.getenv('smb_port') -smb_user = os.getenv('smb_user') -smb_pass = os.getenv('smb_pass') -shared_folder = os.getenv('shared_folder') -the_pc_name = os.getenv('the_pc_name') -remote_pc_name = os.getenv('remote_pc_name') -smb_domain = os.getenv('smb_domain') -freq_endpoint = os.getenv('freq_endpoint') - -elems_to_save = elems_to_save.split(',') -file_types_to_save = file_types_to_save.split(',') - -tmp_signal = Signal() -tmp_sigs_array = SignalsArray() -multi_channel = MultiChannel(f_step, f_bases, f_roofs) -f = multi_channel.init_f() -multi_channel.fill_DB() - -if debug_flag: - conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) - conn.connect(smb_host, 139) - filelist = conn.listPath(shared_folder, '/') - print(filelist) - - -def work(lvl): - - f = multi_channel.get_cur_channel() - freq = get_centre_freq(f) - signal_length = get_signal_length(freq) - median = tmp_signal.fill_signal(lvl, signal_length) - - if median: - try: - num_chs, circle_buffer = multi_channel.check_f(f) - cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) - - if sigs_array: - print('Значения на {0}: {1}'.format(freq, sigs_array)) - print('Пороги: ', circle_buffer.get_medians()) - alarm = circle_buffer.check_alarm(sigs_array) - - if alarm: - print('----ALARM---- ', freq) - multi_channel.db_alarms_zeros(circle_buffer) - else: - circle_buffer.update(sigs_array) - - if send_to_module_flag: - send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) - - if save_data_flag: - if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: - save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), - list(range(num_chs))) - if circle_buffer.check_init(): - save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, - circle_buffer.get_medians()) - - if debug_flag: - single_alarm = circle_buffer.check_single_alarm(median, cur_channel) - print(cur_channel, single_alarm) - if single_alarm: - data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) - print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') - try: - remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) - except Exception as e: - print(f"Ошибка: {e}") - else: - print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') - - f = multi_channel.change_channel() - except Exception as e: - print(str(e)) - print(".", end='') - - tmp_signal.clear() - - return f + +debug_flag = as_bool(os.getenv('debug_flag', '0')) +send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) +save_data_flag = as_bool(os.getenv('save_data_flag', '0')) +module_name = os.getenv('module_name') +elems_to_save = os.getenv('elems_to_save') +file_types_to_save = os.getenv('file_types_to_save') +localhost = os.getenv('lochost') +localport = os.getenv('locport') +f_step = [*map(float, os.getenv('f_step_433').split())] +f_bases = [*map(float, os.getenv('f_bases_433').split())] +f_roofs = [*map(float, os.getenv('f_roofs_433').split())] +path_to_save_medians = os.getenv('path_to_save_medians') +path_to_save_alarms = os.getenv('path_to_save_alarms') +smb_host = os.getenv('smb_host') +smb_port = os.getenv('smb_port') +smb_user = os.getenv('smb_user') +smb_pass = os.getenv('smb_pass') +shared_folder = os.getenv('shared_folder') +the_pc_name = os.getenv('the_pc_name') +remote_pc_name = os.getenv('remote_pc_name') +smb_domain = os.getenv('smb_domain') +freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) + +elems_to_save = elems_to_save.split(',') +file_types_to_save = file_types_to_save.split(',') + +tmp_signal = Signal() +tmp_sigs_array = SignalsArray() +multi_channel = MultiChannel(f_step, f_bases, f_roofs) +f = multi_channel.init_f() +multi_channel.fill_DB() + +if debug_flag: + conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) + conn.connect(smb_host, 139) + filelist = conn.listPath(shared_folder, '/') + print(filelist) + + +def work(lvl): + + f = multi_channel.get_cur_channel() + freq = get_centre_freq(f) + signal_length = get_signal_length(freq) + median = tmp_signal.fill_signal(lvl, signal_length) + + if median: + try: + num_chs, circle_buffer = multi_channel.check_f(f) + cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) + + if sigs_array: + print('Значения на {0}: {1}'.format(freq, sigs_array)) + print('Пороги: ', circle_buffer.get_medians()) + alarm = circle_buffer.check_alarm(sigs_array) + + if alarm: + print('----ALARM---- ', freq) + multi_channel.db_alarms_zeros(circle_buffer) + else: + circle_buffer.update(sigs_array) + + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + } + + send_telemetry( + data=data + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + logging.info(data) + + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + + if send_to_module_flag: + send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) + + if save_data_flag: + if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: + save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), + list(range(num_chs))) + if circle_buffer.check_init(): + save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, + circle_buffer.get_medians()) + + if debug_flag: + single_alarm = circle_buffer.check_single_alarm(median, cur_channel) + print(cur_channel, single_alarm) + if single_alarm: + data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) + print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') + try: + remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) + except Exception as e: + print(f"Ошибка: {e}") + else: + print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') + + f = multi_channel.change_channel() + except Exception as e: + print(str(e)) + print(".", end='') + + tmp_signal.clear() + + return f diff --git a/src/embedded_4500.py b/src/embedded_4500.py index d188d69..9d94432 100644 --- a/src/embedded_4500.py +++ b/src/embedded_4500.py @@ -1,8 +1,10 @@ import os import datetime +import math +import time from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length from core.multichannelswitcher import MultiChannel, get_centre_freq @@ -46,6 +48,12 @@ the_pc_name = os.getenv('the_pc_name') remote_pc_name = os.getenv('remote_pc_name') smb_domain = os.getenv('smb_domain') freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) elems_to_save = elems_to_save.split(',') file_types_to_save = file_types_to_save.split(',') @@ -86,6 +94,39 @@ def work(lvl): else: circle_buffer.update(sigs_array) + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + if send_to_module_flag: send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) diff --git a/src/embedded_5200.py b/src/embedded_5200.py index 26bb54f..97fb708 100644 --- a/src/embedded_5200.py +++ b/src/embedded_5200.py @@ -1,11 +1,13 @@ -import os -import datetime -from common.runtime import load_root_env, validate_env, as_bool, as_str +import os +import datetime +import math +import time +from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data -from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length -from core.multichannelswitcher import MultiChannel, get_centre_freq - +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data +from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length +from core.multichannelswitcher import MultiChannel, get_centre_freq + load_root_env(__file__) freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1] validate_env(__file__, { @@ -23,98 +25,137 @@ validate_env(__file__, { f"f_bases_{freq_suffix}": as_str, f"f_roofs_{freq_suffix}": as_str, }) - -debug_flag = as_bool(os.getenv('debug_flag', '0')) -send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) -save_data_flag = as_bool(os.getenv('save_data_flag', '0')) -module_name = os.getenv('module_name') -elems_to_save = os.getenv('elems_to_save') -file_types_to_save = os.getenv('file_types_to_save') -localhost = os.getenv('lochost') -localport = os.getenv('locport') -f_step = [*map(float, os.getenv('f_step_5200').split())] -f_bases = [*map(float, os.getenv('f_bases_5200').split())] -f_roofs = [*map(float, os.getenv('f_roofs_5200').split())] -path_to_save_medians = os.getenv('path_to_save_medians') -path_to_save_alarms = os.getenv('path_to_save_alarms') -smb_host = os.getenv('smb_host') -smb_port = os.getenv('smb_port') -smb_user = os.getenv('smb_user') -smb_pass = os.getenv('smb_pass') -shared_folder = os.getenv('shared_folder') -the_pc_name = os.getenv('the_pc_name') -remote_pc_name = os.getenv('remote_pc_name') -smb_domain = os.getenv('smb_domain') -freq_endpoint = os.getenv('freq_endpoint') - -elems_to_save = elems_to_save.split(',') -file_types_to_save = file_types_to_save.split(',') - -tmp_signal = Signal() -tmp_sigs_array = SignalsArray() -multi_channel = MultiChannel(f_step, f_bases, f_roofs) -f = multi_channel.init_f() -multi_channel.fill_DB() - -if debug_flag: - conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) - conn.connect(smb_host, 139) - filelist = conn.listPath(shared_folder, '/') - print(filelist) - - -def work(lvl): - - f = multi_channel.get_cur_channel() - freq = get_centre_freq(f) - signal_length = get_signal_length(freq) - median = tmp_signal.fill_signal(lvl, signal_length) - - if median: - try: - num_chs, circle_buffer = multi_channel.check_f(f) - cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) - - if sigs_array: - print('Значения на {0}: {1}'.format(freq, sigs_array)) - print('Пороги: ', circle_buffer.get_medians()) - alarm = circle_buffer.check_alarm(sigs_array) - - if alarm: - print('----ALARM---- ', freq) - multi_channel.db_alarms_zeros(circle_buffer) - else: - circle_buffer.update(sigs_array) - - if send_to_module_flag: - send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) - - if save_data_flag: - if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: - save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), - list(range(num_chs))) - if circle_buffer.check_init(): - save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, - circle_buffer.get_medians()) - - if debug_flag: - single_alarm = circle_buffer.check_single_alarm(median, cur_channel) - print(cur_channel, single_alarm) - if single_alarm: - data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) - print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') - try: - remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) - except Exception as e: - print(f"Ошибка: {e}") - else: - print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') - - f = multi_channel.change_channel() - except Exception as e: - print(str(e)) - print(".", end='') - - tmp_signal.clear() - - return f + +debug_flag = as_bool(os.getenv('debug_flag', '0')) +send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) +save_data_flag = as_bool(os.getenv('save_data_flag', '0')) +module_name = os.getenv('module_name') +elems_to_save = os.getenv('elems_to_save') +file_types_to_save = os.getenv('file_types_to_save') +localhost = os.getenv('lochost') +localport = os.getenv('locport') +f_step = [*map(float, os.getenv('f_step_5200').split())] +f_bases = [*map(float, os.getenv('f_bases_5200').split())] +f_roofs = [*map(float, os.getenv('f_roofs_5200').split())] +path_to_save_medians = os.getenv('path_to_save_medians') +path_to_save_alarms = os.getenv('path_to_save_alarms') +smb_host = os.getenv('smb_host') +smb_port = os.getenv('smb_port') +smb_user = os.getenv('smb_user') +smb_pass = os.getenv('smb_pass') +shared_folder = os.getenv('shared_folder') +the_pc_name = os.getenv('the_pc_name') +remote_pc_name = os.getenv('remote_pc_name') +smb_domain = os.getenv('smb_domain') +freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) + +elems_to_save = elems_to_save.split(',') +file_types_to_save = file_types_to_save.split(',') + +tmp_signal = Signal() +tmp_sigs_array = SignalsArray() +multi_channel = MultiChannel(f_step, f_bases, f_roofs) +f = multi_channel.init_f() +multi_channel.fill_DB() + +if debug_flag: + conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) + conn.connect(smb_host, 139) + filelist = conn.listPath(shared_folder, '/') + print(filelist) + + +def work(lvl): + + f = multi_channel.get_cur_channel() + freq = get_centre_freq(f) + signal_length = get_signal_length(freq) + median = tmp_signal.fill_signal(lvl, signal_length) + + if median: + try: + num_chs, circle_buffer = multi_channel.check_f(f) + cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) + + if sigs_array: + print('Значения на {0}: {1}'.format(freq, sigs_array)) + print('Пороги: ', circle_buffer.get_medians()) + alarm = circle_buffer.check_alarm(sigs_array) + + if alarm: + print('----ALARM---- ', freq) + multi_channel.db_alarms_zeros(circle_buffer) + else: + circle_buffer.update(sigs_array) + + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + + if send_to_module_flag: + send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) + + if save_data_flag: + if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: + save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), + list(range(num_chs))) + if circle_buffer.check_init(): + save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, + circle_buffer.get_medians()) + + if debug_flag: + single_alarm = circle_buffer.check_single_alarm(median, cur_channel) + print(cur_channel, single_alarm) + if single_alarm: + data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) + print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') + try: + remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) + except Exception as e: + print(f"Ошибка: {e}") + else: + print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') + + f = multi_channel.change_channel() + except Exception as e: + print(str(e)) + print(".", end='') + + tmp_signal.clear() + + return f diff --git a/src/embedded_5800.py b/src/embedded_5800.py index ed8f50f..1ce92c1 100644 --- a/src/embedded_5800.py +++ b/src/embedded_5800.py @@ -1,11 +1,13 @@ -import os -import datetime -from common.runtime import load_root_env, validate_env, as_bool, as_str +import os +import datetime +import math +import time +from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data -from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length -from core.multichannelswitcher import MultiChannel, get_centre_freq - +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data +from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length +from core.multichannelswitcher import MultiChannel, get_centre_freq + load_root_env(__file__) freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1] validate_env(__file__, { @@ -23,98 +25,137 @@ validate_env(__file__, { f"f_bases_{freq_suffix}": as_str, f"f_roofs_{freq_suffix}": as_str, }) - -debug_flag = as_bool(os.getenv('debug_flag', '0')) -send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) -save_data_flag = as_bool(os.getenv('save_data_flag', '0')) -module_name = os.getenv('module_name') -elems_to_save = os.getenv('elems_to_save') -file_types_to_save = os.getenv('file_types_to_save') -localhost = os.getenv('lochost') -localport = os.getenv('locport') -f_step = [*map(float, os.getenv('f_step_5800').split())] -f_bases = [*map(float, os.getenv('f_bases_5800').split())] -f_roofs = [*map(float, os.getenv('f_roofs_5800').split())] -path_to_save_medians = os.getenv('path_to_save_medians') -path_to_save_alarms = os.getenv('path_to_save_alarms') -smb_host = os.getenv('smb_host') -smb_port = os.getenv('smb_port') -smb_user = os.getenv('smb_user') -smb_pass = os.getenv('smb_pass') -shared_folder = os.getenv('shared_folder') -the_pc_name = os.getenv('the_pc_name') -remote_pc_name = os.getenv('remote_pc_name') -smb_domain = os.getenv('smb_domain') -freq_endpoint = os.getenv('freq_endpoint') - -elems_to_save = elems_to_save.split(',') -file_types_to_save = file_types_to_save.split(',') - -tmp_signal = Signal() -tmp_sigs_array = SignalsArray() -multi_channel = MultiChannel(f_step, f_bases, f_roofs) -f = multi_channel.init_f() -multi_channel.fill_DB() - -if debug_flag: - conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) - conn.connect(smb_host, 139) - filelist = conn.listPath(shared_folder, '/') - print(filelist) - - -def work(lvl): - - f = multi_channel.get_cur_channel() - freq = get_centre_freq(f) - signal_length = get_signal_length(freq) - median = tmp_signal.fill_signal(lvl, signal_length) - - if median: - try: - num_chs, circle_buffer = multi_channel.check_f(f) - cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) - - if sigs_array: - print('Значения на {0}: {1}'.format(freq, sigs_array)) - print('Пороги: ', circle_buffer.get_medians()) - alarm = circle_buffer.check_alarm(sigs_array) - - if alarm: - print('----ALARM---- ', freq) - multi_channel.db_alarms_zeros(circle_buffer) - else: - circle_buffer.update(sigs_array) - - if send_to_module_flag: - send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) - - if save_data_flag: - if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: - save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), - list(range(num_chs))) - if circle_buffer.check_init(): - save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, - circle_buffer.get_medians()) - - if debug_flag: - single_alarm = circle_buffer.check_single_alarm(median, cur_channel) - print(cur_channel, single_alarm) - if single_alarm: - data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) - print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') - try: - remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) - except Exception as e: - print(f"Ошибка: {e}") - else: - print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') - - f = multi_channel.change_channel() - except Exception as e: - print(str(e)) - print(".", end='') - - tmp_signal.clear() - - return f + +debug_flag = as_bool(os.getenv('debug_flag', '0')) +send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) +save_data_flag = as_bool(os.getenv('save_data_flag', '0')) +module_name = os.getenv('module_name') +elems_to_save = os.getenv('elems_to_save') +file_types_to_save = os.getenv('file_types_to_save') +localhost = os.getenv('lochost') +localport = os.getenv('locport') +f_step = [*map(float, os.getenv('f_step_5800').split())] +f_bases = [*map(float, os.getenv('f_bases_5800').split())] +f_roofs = [*map(float, os.getenv('f_roofs_5800').split())] +path_to_save_medians = os.getenv('path_to_save_medians') +path_to_save_alarms = os.getenv('path_to_save_alarms') +smb_host = os.getenv('smb_host') +smb_port = os.getenv('smb_port') +smb_user = os.getenv('smb_user') +smb_pass = os.getenv('smb_pass') +shared_folder = os.getenv('shared_folder') +the_pc_name = os.getenv('the_pc_name') +remote_pc_name = os.getenv('remote_pc_name') +smb_domain = os.getenv('smb_domain') +freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) + +elems_to_save = elems_to_save.split(',') +file_types_to_save = file_types_to_save.split(',') + +tmp_signal = Signal() +tmp_sigs_array = SignalsArray() +multi_channel = MultiChannel(f_step, f_bases, f_roofs) +f = multi_channel.init_f() +multi_channel.fill_DB() + +if debug_flag: + conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) + conn.connect(smb_host, 139) + filelist = conn.listPath(shared_folder, '/') + print(filelist) + + +def work(lvl): + + f = multi_channel.get_cur_channel() + freq = get_centre_freq(f) + signal_length = get_signal_length(freq) + median = tmp_signal.fill_signal(lvl, signal_length) + + if median: + try: + num_chs, circle_buffer = multi_channel.check_f(f) + cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) + + if sigs_array: + print('Значения на {0}: {1}'.format(freq, sigs_array)) + print('Пороги: ', circle_buffer.get_medians()) + alarm = circle_buffer.check_alarm(sigs_array) + + if alarm: + print('----ALARM---- ', freq) + multi_channel.db_alarms_zeros(circle_buffer) + else: + circle_buffer.update(sigs_array) + + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + + if send_to_module_flag: + send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) + + if save_data_flag: + if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: + save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), + list(range(num_chs))) + if circle_buffer.check_init(): + save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, + circle_buffer.get_medians()) + + if debug_flag: + single_alarm = circle_buffer.check_single_alarm(median, cur_channel) + print(cur_channel, single_alarm) + if single_alarm: + data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) + print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') + try: + remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) + except Exception as e: + print(f"Ошибка: {e}") + else: + print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') + + f = multi_channel.change_channel() + except Exception as e: + print(str(e)) + print(".", end='') + + tmp_signal.clear() + + return f diff --git a/src/embedded_750.py b/src/embedded_750.py index efed49b..5aa6bc9 100644 --- a/src/embedded_750.py +++ b/src/embedded_750.py @@ -1,11 +1,13 @@ -import os -import datetime -from common.runtime import load_root_env, validate_env, as_bool, as_str +import os +import datetime +import math +import time +from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data -from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length -from core.multichannelswitcher import MultiChannel, get_centre_freq - +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data +from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length +from core.multichannelswitcher import MultiChannel, get_centre_freq + load_root_env(__file__) freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1] validate_env(__file__, { @@ -23,101 +25,140 @@ validate_env(__file__, { f"f_bases_{freq_suffix}": as_str, f"f_roofs_{freq_suffix}": as_str, }) - -debug_flag = as_bool(os.getenv('debug_flag', '0')) -send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) -save_data_flag = as_bool(os.getenv('save_data_flag', '0')) -module_name = os.getenv('module_name') -elems_to_save = os.getenv('elems_to_save') -file_types_to_save = os.getenv('file_types_to_save') -localhost = os.getenv('lochost') -localport = os.getenv('locport') -f_step = [*map(float, os.getenv('f_step_750').split())] -f_bases = [*map(float, os.getenv('f_bases_750').split())] -f_roofs = [*map(float, os.getenv('f_roofs_750').split())] -path_to_save_medians = os.getenv('path_to_save_medians') -path_to_save_alarms = os.getenv('path_to_save_alarms') -smb_host = os.getenv('smb_host') -smb_port = os.getenv('smb_port') -smb_user = os.getenv('smb_user') -smb_pass = os.getenv('smb_pass') -shared_folder = os.getenv('shared_folder') -the_pc_name = os.getenv('the_pc_name') -remote_pc_name = os.getenv('remote_pc_name') -smb_domain = os.getenv('smb_domain') -freq_endpoint = os.getenv('freq_endpoint') - -elems_to_save = elems_to_save.split(',') -file_types_to_save = file_types_to_save.split(',') - -tmp_signal = Signal() -tmp_sigs_array = SignalsArray() -multi_channel = MultiChannel(f_step, f_bases, f_roofs) -f = multi_channel.init_f() -multi_channel.fill_DB() - -if debug_flag: - conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) - conn.connect(smb_host, 139) - filelist = conn.listPath(shared_folder, '/') - print(filelist) - - -def work(lvl): - - f = multi_channel.get_cur_channel() - freq = get_centre_freq(f) - signal_length = get_signal_length(freq) - median = tmp_signal.fill_signal(lvl, signal_length) - - if median: - print(1) - try: - num_chs, circle_buffer = multi_channel.check_f(f) - print(num_chs, circle_buffer) - cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) - print(3) - - if sigs_array: - print('Значения на {0}: {1}'.format(freq, sigs_array)) - print('Пороги: ', circle_buffer.get_medians()) - alarm = circle_buffer.check_alarm(sigs_array) - - if alarm: - print('----ALARM---- ', freq) - multi_channel.db_alarms_zeros(circle_buffer) - else: - circle_buffer.update(sigs_array) - - if send_to_module_flag: - send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) - - if save_data_flag: - if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: - save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), - list(range(num_chs))) - if circle_buffer.check_init(): - save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, - circle_buffer.get_medians()) - - if debug_flag: - single_alarm = circle_buffer.check_single_alarm(median, cur_channel) - print(cur_channel, single_alarm) - if single_alarm: - data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) - print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') - try: - remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) - except Exception as e: - print(f"Ошибка: {e}") - else: - print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') - - f = multi_channel.change_channel() - except Exception as e: - print(str(e)) - print(".", end='') - - tmp_signal.clear() - - return f + +debug_flag = as_bool(os.getenv('debug_flag', '0')) +send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) +save_data_flag = as_bool(os.getenv('save_data_flag', '0')) +module_name = os.getenv('module_name') +elems_to_save = os.getenv('elems_to_save') +file_types_to_save = os.getenv('file_types_to_save') +localhost = os.getenv('lochost') +localport = os.getenv('locport') +f_step = [*map(float, os.getenv('f_step_750').split())] +f_bases = [*map(float, os.getenv('f_bases_750').split())] +f_roofs = [*map(float, os.getenv('f_roofs_750').split())] +path_to_save_medians = os.getenv('path_to_save_medians') +path_to_save_alarms = os.getenv('path_to_save_alarms') +smb_host = os.getenv('smb_host') +smb_port = os.getenv('smb_port') +smb_user = os.getenv('smb_user') +smb_pass = os.getenv('smb_pass') +shared_folder = os.getenv('shared_folder') +the_pc_name = os.getenv('the_pc_name') +remote_pc_name = os.getenv('remote_pc_name') +smb_domain = os.getenv('smb_domain') +freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) + +elems_to_save = elems_to_save.split(',') +file_types_to_save = file_types_to_save.split(',') + +tmp_signal = Signal() +tmp_sigs_array = SignalsArray() +multi_channel = MultiChannel(f_step, f_bases, f_roofs) +f = multi_channel.init_f() +multi_channel.fill_DB() + +if debug_flag: + conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) + conn.connect(smb_host, 139) + filelist = conn.listPath(shared_folder, '/') + print(filelist) + + +def work(lvl): + + f = multi_channel.get_cur_channel() + freq = get_centre_freq(f) + signal_length = get_signal_length(freq) + median = tmp_signal.fill_signal(lvl, signal_length) + + if median: + print(1) + try: + num_chs, circle_buffer = multi_channel.check_f(f) + print(num_chs, circle_buffer) + cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) + print(3) + + if sigs_array: + print('Значения на {0}: {1}'.format(freq, sigs_array)) + print('Пороги: ', circle_buffer.get_medians()) + alarm = circle_buffer.check_alarm(sigs_array) + + if alarm: + print('----ALARM---- ', freq) + multi_channel.db_alarms_zeros(circle_buffer) + else: + circle_buffer.update(sigs_array) + + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + + if send_to_module_flag: + send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) + + if save_data_flag: + if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: + save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), + list(range(num_chs))) + if circle_buffer.check_init(): + save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, + circle_buffer.get_medians()) + + if debug_flag: + single_alarm = circle_buffer.check_single_alarm(median, cur_channel) + print(cur_channel, single_alarm) + if single_alarm: + data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) + print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') + try: + remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) + except Exception as e: + print(f"Ошибка: {e}") + else: + print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') + + f = multi_channel.change_channel() + except Exception as e: + print(str(e)) + print(".", end='') + + tmp_signal.clear() + + return f diff --git a/src/embedded_868.py b/src/embedded_868.py index 55d620b..7942576 100644 --- a/src/embedded_868.py +++ b/src/embedded_868.py @@ -1,11 +1,13 @@ -import os -import datetime -from common.runtime import load_root_env, validate_env, as_bool, as_str +import os +import datetime +import math +import time +from common.runtime import load_root_env, validate_env, as_bool, as_str from smb.SMBConnection import SMBConnection -from utils.datas_processing import pack_elems, agregator, send_data, save_data, remote_save_data -from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length -from core.multichannelswitcher import MultiChannel, get_centre_freq - +from utils.datas_processing import pack_elems, agregator, send_data, send_telemetry, save_data, remote_save_data +from core.sig_n_medi_collect import Signal, SignalsArray, get_signal_length +from core.multichannelswitcher import MultiChannel, get_centre_freq + load_root_env(__file__) freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1] validate_env(__file__, { @@ -23,98 +25,137 @@ validate_env(__file__, { f"f_bases_{freq_suffix}": as_str, f"f_roofs_{freq_suffix}": as_str, }) - -debug_flag = as_bool(os.getenv('debug_flag', '0')) -send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) -save_data_flag = as_bool(os.getenv('save_data_flag', '0')) -module_name = os.getenv('module_name') -elems_to_save = os.getenv('elems_to_save') -file_types_to_save = os.getenv('file_types_to_save') -localhost = os.getenv('lochost') -localport = os.getenv('locport') -f_step = [*map(float, os.getenv('f_step_868').split())] -f_bases = [*map(float, os.getenv('f_bases_868').split())] -f_roofs = [*map(float, os.getenv('f_roofs_868').split())] -path_to_save_medians = os.getenv('path_to_save_medians') -path_to_save_alarms = os.getenv('path_to_save_alarms') -smb_host = os.getenv('smb_host') -smb_port = os.getenv('smb_port') -smb_user = os.getenv('smb_user') -smb_pass = os.getenv('smb_pass') -shared_folder = os.getenv('shared_folder') -the_pc_name = os.getenv('the_pc_name') -remote_pc_name = os.getenv('remote_pc_name') -smb_domain = os.getenv('smb_domain') -freq_endpoint = os.getenv('freq_endpoint') - -elems_to_save = elems_to_save.split(',') -file_types_to_save = file_types_to_save.split(',') - -tmp_signal = Signal() -tmp_sigs_array = SignalsArray() -multi_channel = MultiChannel(f_step, f_bases, f_roofs) -f = multi_channel.init_f() -multi_channel.fill_DB() - -if debug_flag: - conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) - conn.connect(smb_host, 139) - filelist = conn.listPath(shared_folder, '/') - print(filelist) - - -def work(lvl): - - f = multi_channel.get_cur_channel() - freq = get_centre_freq(f) - signal_length = get_signal_length(freq) - median = tmp_signal.fill_signal(lvl, signal_length) - - if median: - try: - num_chs, circle_buffer = multi_channel.check_f(f) - cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) - - if sigs_array: - print('Значения на {0}: {1}'.format(freq, sigs_array)) - print('Пороги: ', circle_buffer.get_medians()) - alarm = circle_buffer.check_alarm(sigs_array) - - if alarm: - print('----ALARM---- ', freq) - multi_channel.db_alarms_zeros(circle_buffer) - else: - circle_buffer.update(sigs_array) - - if send_to_module_flag: - send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) - - if save_data_flag: - if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: - save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), - list(range(num_chs))) - if circle_buffer.check_init(): - save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, - circle_buffer.get_medians()) - - if debug_flag: - single_alarm = circle_buffer.check_single_alarm(median, cur_channel) - print(cur_channel, single_alarm) - if single_alarm: - data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) - print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') - try: - remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) - except Exception as e: - print(f"Ошибка: {e}") - else: - print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') - - f = multi_channel.change_channel() - except Exception as e: - print(str(e)) - print(".", end='') - - tmp_signal.clear() - - return f + +debug_flag = as_bool(os.getenv('debug_flag', '0')) +send_to_module_flag = as_bool(os.getenv('send_to_module_flag', '0')) +save_data_flag = as_bool(os.getenv('save_data_flag', '0')) +module_name = os.getenv('module_name') +elems_to_save = os.getenv('elems_to_save') +file_types_to_save = os.getenv('file_types_to_save') +localhost = os.getenv('lochost') +localport = os.getenv('locport') +f_step = [*map(float, os.getenv('f_step_868').split())] +f_bases = [*map(float, os.getenv('f_bases_868').split())] +f_roofs = [*map(float, os.getenv('f_roofs_868').split())] +path_to_save_medians = os.getenv('path_to_save_medians') +path_to_save_alarms = os.getenv('path_to_save_alarms') +smb_host = os.getenv('smb_host') +smb_port = os.getenv('smb_port') +smb_user = os.getenv('smb_user') +smb_pass = os.getenv('smb_pass') +shared_folder = os.getenv('shared_folder') +the_pc_name = os.getenv('the_pc_name') +remote_pc_name = os.getenv('remote_pc_name') +smb_domain = os.getenv('smb_domain') +freq_endpoint = os.getenv('freq_endpoint') +telemetry_enabled = as_bool(os.getenv('telemetry_enabled', '1')) +telemetry_host = os.getenv('telemetry_host', '127.0.0.1') +telemetry_port = os.getenv('telemetry_port', '5020') +telemetry_endpoint = os.getenv('telemetry_endpoint', 'telemetry') +telemetry_timeout_sec = float(os.getenv('telemetry_timeout_sec', '0.30')) +telemetry_delta_percent = float(os.getenv('dbfs_delta_percent', '15')) + +elems_to_save = elems_to_save.split(',') +file_types_to_save = file_types_to_save.split(',') + +tmp_signal = Signal() +tmp_sigs_array = SignalsArray() +multi_channel = MultiChannel(f_step, f_bases, f_roofs) +f = multi_channel.init_f() +multi_channel.fill_DB() + +if debug_flag: + conn = SMBConnection(smb_user, smb_pass, the_pc_name, remote_pc_name, use_ntlm_v2=True) + conn.connect(smb_host, 139) + filelist = conn.listPath(shared_folder, '/') + print(filelist) + + +def work(lvl): + + f = multi_channel.get_cur_channel() + freq = get_centre_freq(f) + signal_length = get_signal_length(freq) + median = tmp_signal.fill_signal(lvl, signal_length) + + if median: + try: + num_chs, circle_buffer = multi_channel.check_f(f) + cur_channel, sigs_array = tmp_sigs_array.fill_sig_arr(median, num_chs) + + if sigs_array: + print('Значения на {0}: {1}'.format(freq, sigs_array)) + print('Пороги: ', circle_buffer.get_medians()) + alarm = circle_buffer.check_alarm(sigs_array) + + if alarm: + print('----ALARM---- ', freq) + multi_channel.db_alarms_zeros(circle_buffer) + else: + circle_buffer.update(sigs_array) + + + if telemetry_enabled: + try: + max_idx = max(range(len(sigs_array)), key=lambda idx: sigs_array[idx]) + dbfs_current = float(sigs_array[max_idx]) + + dbfs_threshold = None + if circle_buffer.check_init(): + medians = circle_buffer.get_medians() + baseline = float(medians[max_idx]) + dbfs_threshold = baseline + 10.0 * math.log10( + 1.0 + telemetry_delta_percent / 100.0 + ) + + send_telemetry( + data={ + "freq": str(freq), + "ts": time.time(), + "dbfs_current": dbfs_current, + "dbfs_threshold": dbfs_threshold, + "alarm": bool(alarm), + "channel_idx": int(max_idx), + "channels_total": int(len(sigs_array)), + }, + host=telemetry_host, + port=telemetry_port, + endpoint=telemetry_endpoint, + timeout_sec=telemetry_timeout_sec, + ) + except Exception as exc: + if debug_flag: + print(f"telemetry send failed: {exc}") + + if send_to_module_flag: + send_data(agregator(freq, alarm), localhost, localport, freq_endpoint) + + if save_data_flag: + if not circle_buffer.check_init() and circle_buffer.current_column - 1 == 0: + save_data(path_to_save_medians, freq, 'DateTime', 'ALARM', 'max signal', list(range(num_chs)), + list(range(num_chs))) + if circle_buffer.check_init(): + save_data(path_to_save_medians, freq, datetime.datetime.now(), alarm, max(sigs_array), sigs_array, + circle_buffer.get_medians()) + + if debug_flag: + single_alarm = circle_buffer.check_single_alarm(median, cur_channel) + print(cur_channel, single_alarm) + if single_alarm: + data = pack_elems(elems_to_save, file_types_to_save, tmp_signal.get_signal()) + print('SAVE CURRENT SIGNAL SROCHNO TI MENYA SLISHISH?!?!?!?') + try: + remote_save_data(conn, data, module_name, freq, shared_folder, path_to_save_alarms) + except Exception as e: + print(f"Ошибка: {e}") + else: + print('VSE OKI DOKI SIGNAL SOKHRANYAT NE NUZHNO!!!') + + f = multi_channel.change_channel() + except Exception as e: + print(str(e)) + print(".", end='') + + tmp_signal.clear() + + return f