LISHUZUOXUN_yangjiang/BaseStation/fake_hrbo_data.py

118 lines
4.5 KiB
Python
Raw Normal View History

2024-09-23 14:54:15 +08:00
import threading
import time
import traceback
import requests
from LSZXBackend.general import *
from LSZXNetWork.network import Network
from DeviceDefine.consensus import UNKNOWN, SLAVER
import UWB
import UWB.positioning_standalone
import UWB.positioning_standalone_v2
import UWB.positioning_cluster
MAX_HR = "max_hr"
MIN_BO = "min_bo"
HR = "hr"
BO = "bo"
class BaseStation:
def __init__(
self, master_mode=True,
positioning=True, multi_positioning_mode=True, device_type=UNKNOWN
):
# self.positioning = None
self.connection = Network(master_mode=master_mode, device_type=device_type)
self.multi_positioning_mode = multi_positioning_mode
# self.positioning = UWB.positioning_standalone_v2.Positioning()
# self.positioning.start()
# self.positioning.resume()
self.send_information_signal = threading.Event()
threading.Thread(target=self.send_fake_information).start()
self.HrBo_info = {}
self.connection.connect2wifi("LiShuZuoXun-DISPLAY")
# 获取hrbo信息 ··
def get_information(self):
while True:
try:
# HrBo_info = self.positioning.get_data()
# HrBo_info = {'tag_id': '320110F39011', 'hr': 225, 'bo': 76, 'record_time': time.time()} # 新2
HrBo_info = {'tag_id': '320110f392b7', 'hr': 188, 'bo': 82, 'record_time': time.time()} # 新34
# 长时间未更新,判定为离场
temp = self.HrBo_info.copy()
for k, v in temp.items():
this_time = time.time()
if this_time - v['record_time'] > 60:
del self.HrBo_info[k]
if HrBo_info:
p_id = HrBo_info["tag_id"]
if p_id not in self.HrBo_info:
self.HrBo_info[p_id] = {}
if HrBo_info[HR] and HrBo_info[BO]:
if 180 > HrBo_info[HR] > 140:
hr_c = 'Y'
elif HrBo_info[HR] > 180:
hr_c = 'R'
else:
hr_c = 'G'
if 80 <= HrBo_info[BO] < 88:
bo_c = 'Y'
elif HrBo_info[BO] < 80:
bo_c = 'R'
else:
bo_c = 'G'
self.HrBo_info[p_id]['hr'] = {'hr': HrBo_info[HR], 'color': hr_c}
self.HrBo_info[p_id]['bo'] = {'bo': "{:.2%}".format(HrBo_info[BO] / 100), 'color': bo_c}
if HrBo_info[HR] >= 180 or HrBo_info[BO] <= 85:
self.HrBo_info[p_id]['normal'] = False
else:
self.HrBo_info[p_id]['normal'] = True
else:
self.HrBo_info[p_id]['hr'] = '-'
self.HrBo_info[p_id]['bo'] = '-'
self.HrBo_info[p_id]['normal'] = True
self.HrBo_info[p_id]['record_time'] = HrBo_info['record_time']
# self.send_information_signal.set()
time.sleep(0.5)
except Exception as e:
print(traceback.format_exc())
# 发送hrbo信息给管理端
def send_fake_information(self):
while True:
try:
time.sleep(0.5)
# self.send_information_signal.wait()
# self.send_information_signal.clear()
manager_ip_list = self.connection.get_manager()
ip = self.connection.get_self_ip()
_ip = ip.split('.')[2]
print(self.HrBo_info)
if manager_ip_list and _ip == '138':
broadcast_pkg = {
"data": self.HrBo_info, 'ip': ip
}
for manage_ip in manager_ip_list:
try:
print(manage_ip)
requests.post(url=f"http://{manage_ip}:{MANAGER}/totals_HrBoInfo_server",
json=broadcast_pkg, timeout=1)
except:
print(1111111111111)
continue
except Exception as e:
print(traceback.format_exc())
if __name__ == '__main__':
basestation = BaseStation()
threading.Thread(target=basestation.get_information).start()