|
|
|
|
@ -1,10 +1,15 @@
|
|
|
|
|
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
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
logging.basicConfig(level=logging.INFO)
|
|
|
|
|
|
|
|
|
|
load_root_env(__file__)
|
|
|
|
|
freq_suffix = os.path.splitext(os.path.basename(__file__))[0].split("_")[-1]
|
|
|
|
|
@ -46,6 +51,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 +97,43 @@ 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
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
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)
|
|
|
|
|
|
|
|
|
|
|