DataNodeFrequencyTest1/zigbee_message_pack.py

246 lines
11 KiB
Python
Raw Normal View History

2025-04-09 09:49:42 +08:00
import binascii
def byte_to_int(sdata):
return int.from_bytes(sdata, byteorder='little', signed=True)
def temp_cal(sdata):
if sdata > 2048:
temp = -(256 - sdata * 0.0625)
else:
temp = sdata * 0.0625
return temp
def evel_cal(sdata):
s1 = sdata >> 14
s2 = sdata & (0xffff >> 2)
if s1 == 0:
vl = s2 * 0.0001
elif s1 == 1:
vl = s2 * 0.01
elif s1 == 2:
vl = s2
elif s1 == 3:
vl = s2 / 100
else:
vl = 16383
return vl
#设备信息解析
def dev_info_analysis(sdata):
DEV_INFO["初始化标志"] = sdata[0]
DEV_INFO["加速度传感器状态"] = sdata[0]&(1<<6)
DEV_INFO["Zigbee模块状态"] = sdata[0] & (1 << 5)
DEV_INFO["设备温度传感器状态"] = sdata[0] & (1 << 4)
DEV_INFO["环境温度传感器状态"] = sdata[0] & (1 << 3)
DEV_INFO["设备运行状态"] = sdata[0] & (1 << 2)
DEV_INFO["MAC地址"] = binascii.hexlify(sdata[1:9])
DEV_INFO["硬件版本"] = sdata[9]/10
DEV_INFO["软件版本"] = sdata[10]/10
DEV_INFO["生产批号"] = sdata[11:15]
DEV_INFO["生产序列号"] = sdata[15:19]
DEV_INFO["首次上电日期"] = sdata[19:23]
DEV_INFO["唤醒次数"] = int.from_bytes(sdata[23:27], byteorder='big', signed=True)
DEV_INFO["特征值发送次数"] = int.from_bytes(sdata[27:31], byteorder='big', signed=True)
DEV_INFO["原始波形发送次数"] = int.from_bytes(sdata[31:35], byteorder='big', signed=True)
DEV_INFO["电池电压"] = int.from_bytes(sdata[35:37], byteorder='big', signed=True)
DEV_INFO["产品型号"] = sdata[37]
DEV_INFO["无线信号强度"] = sdata[38]
def dev_conf_analysis(sdata):
DEV_CONF["配置标志"] = hex(sdata[0])
DEV_CONF["唤醒周期"] = int.from_bytes(sdata[1:3], byteorder='big', signed=True)
DEV_CONF["原始波形发送周期"] = sdata[3]
DEV_CONF["Zigbee PID"] = binascii.hexlify(sdata[4:6])
DEV_CONF["Zigbee 信道"] = sdata[6]
DEV_CONF["Zigbee 本地地址"] = binascii.hexlify(sdata[7:9])
DEV_CONF["Zigbee 目标地址"] = binascii.hexlify(sdata[9:11])
DEV_CONF["Zigbee 发射功率"] = sdata[11]
DEV_CONF["Zigbee 重试次数"] = sdata[12]
DEV_CONF["Zigbee 重试间隔"] = sdata[13]
DEV_CONF["ACC采样率"] = sdata[14]&(0b11)
DEV_CONF["ACC量程"] = sdata[14]&(0b11<<2)
DEV_CONF["ACC采样率时间"] = sdata[15]
DEV_CONF["频带能量参数1 START"] = int.from_bytes(sdata[16:18], byteorder='big', signed=True)
DEV_CONF["频带能量参数1 END"] = int.from_bytes(sdata[18:20], byteorder='big', signed=True)
DEV_CONF["频带能量参数2 START"] = int.from_bytes(sdata[20:22], byteorder='big', signed=True)
DEV_CONF["频带能量参数2 END"] = int.from_bytes(sdata[22:24], byteorder='big', signed=True)
DEV_CONF["频带能量参数3 START"] = int.from_bytes(sdata[24:26], byteorder='big', signed=True)
DEV_CONF["频带能量参数3 END"] = int.from_bytes(sdata[26:28], byteorder='big', signed=True)
DEV_CONF["频带能量参数4 START"] = int.from_bytes(sdata[28:30], byteorder='big', signed=True)
DEV_CONF["频带能量参数4 END"] = int.from_bytes(sdata[30:32], byteorder='big', signed=True)
DEV_CONF["频带能量参数5 START"] = int.from_bytes(sdata[32:34], byteorder='big', signed=True)
DEV_CONF["频带能量参数5 END"] = int.from_bytes(sdata[34:36], byteorder='big', signed=True)
DEV_CONF["冲击带通频率START"] = int.from_bytes(sdata[36:38], byteorder='big', signed=True)
DEV_CONF["冲击带通频率END"] = int.from_bytes(sdata[38:40], byteorder='big', signed=True)
DEV_CONF["故障频率1"] = int.from_bytes(sdata[40:42], byteorder='big', signed=True)
DEV_CONF["故障频率2"] = int.from_bytes(sdata[42:44], byteorder='big', signed=True)
DEV_CONF["故障频率3"] = int.from_bytes(sdata[44:46], byteorder='big', signed=True)
DEV_CONF["故障频率4"] = int.from_bytes(sdata[46:48], byteorder='big', signed=True)
DEV_CONF["配置时间"] = int.from_bytes(sdata[48:52], byteorder='big', signed=True)
DEV_CONF["速度积分滤波频率"] = sdata[52]
#特征值解析
def evel_info_analysis(sdata):
EVEL_INFO["设备温度"] = temp_cal(byte_to_int(sdata[0:2]))
EVEL_INFO["环境温度"] = temp_cal(byte_to_int(sdata[2:4]))
EVEL_INFO["倾角"] = byte_to_int(sdata[4:6])
EVEL_INFO["电池电压"] = byte_to_int(sdata[6:8])
EVEL_INFO["X轴峰值"] = evel_cal(byte_to_int(sdata[8:10]))
EVEL_INFO["X轴有效值"] = evel_cal(byte_to_int(sdata[10:12]))
EVEL_INFO["X轴速度峰值"] = evel_cal(byte_to_int(sdata[12:14]))
EVEL_INFO["X轴速度有效值"] = evel_cal(byte_to_int(sdata[14:16]))
EVEL_INFO["X轴频带能量1"] = evel_cal(byte_to_int(sdata[16:18]))
EVEL_INFO["X轴频带能量2"] = evel_cal(byte_to_int(sdata[18:20]))
EVEL_INFO["X轴频带能量3"] = evel_cal(byte_to_int(sdata[20:22]))
EVEL_INFO["X轴频带能量4"] = evel_cal(byte_to_int(sdata[22:24]))
EVEL_INFO["X轴频带能量5"] = evel_cal(byte_to_int(sdata[24:26]))
EVEL_INFO["X轴冲击能量"] = evel_cal(byte_to_int(sdata[26:28]))
EVEL_INFO["X轴故障频率1"] = evel_cal(byte_to_int(sdata[28:30]))
EVEL_INFO["X轴故障频率2"] = evel_cal(byte_to_int(sdata[30:32]))
EVEL_INFO["X轴故障频率3"] = evel_cal(byte_to_int(sdata[32:34]))
EVEL_INFO["X轴故障频率4"] = evel_cal(byte_to_int(sdata[34:36]))
EVEL_INFO["Y轴峰值"] = evel_cal(byte_to_int(sdata[36:38]))
EVEL_INFO["Y轴有效值"] = evel_cal(byte_to_int(sdata[38:40]))
EVEL_INFO["Y轴速度峰值"] = evel_cal(byte_to_int(sdata[40:42]))
EVEL_INFO["Y轴速度有效值"] = evel_cal(byte_to_int(sdata[42:44]))
EVEL_INFO["Y轴频带能量1"] = evel_cal(byte_to_int(sdata[44:46]))
EVEL_INFO["Y轴频带能量2"] = evel_cal(byte_to_int(sdata[46:48]))
EVEL_INFO["Y轴频带能量3"] = evel_cal(byte_to_int(sdata[48:50]))
EVEL_INFO["Y轴频带能量4"] = evel_cal(byte_to_int(sdata[50:52]))
EVEL_INFO["Y轴频带能量5"] = evel_cal(byte_to_int(sdata[52:54]))
EVEL_INFO["Y轴冲击能量"] = evel_cal(byte_to_int(sdata[54:56]))
EVEL_INFO["Y轴故障频率1"] = evel_cal(byte_to_int(sdata[56:58]))
EVEL_INFO["Y轴故障频率2"] = evel_cal(byte_to_int(sdata[58:60]))
EVEL_INFO["Y轴故障频率3"] = evel_cal(byte_to_int(sdata[60:62]))
EVEL_INFO["Y轴故障频率4"] = evel_cal(byte_to_int(sdata[62:64]))
EVEL_INFO["Z轴峰值"] = evel_cal(byte_to_int(sdata[64:66]))
EVEL_INFO["Z轴有效值"] = evel_cal(byte_to_int(sdata[66:68]))
EVEL_INFO["Z轴速度峰值"] = evel_cal(byte_to_int(sdata[68:70]))
EVEL_INFO["Z轴速度有效值"] = evel_cal(byte_to_int(sdata[70:72]))
EVEL_INFO["Z轴频带能量1"] = evel_cal(byte_to_int(sdata[72:74]))
EVEL_INFO["Z轴频带能量2"] = evel_cal(byte_to_int(sdata[74:76]))
EVEL_INFO["Z轴频带能量3"] = evel_cal(byte_to_int(sdata[76:78]))
EVEL_INFO["Z轴频带能量4"] = evel_cal(byte_to_int(sdata[78:80]))
EVEL_INFO["Z轴频带能量5"] = evel_cal(byte_to_int(sdata[80:82]))
EVEL_INFO["Z轴冲击能量"] = evel_cal(byte_to_int(sdata[82:84]))
EVEL_INFO["Z轴故障频率1"] = evel_cal(byte_to_int(sdata[84:86]))
EVEL_INFO["Z轴故障频率2"] = evel_cal(byte_to_int(sdata[86:88]))
EVEL_INFO["Z轴故障频率3"] = evel_cal(byte_to_int(sdata[88:90]))
EVEL_INFO["Z轴故障频率4"] = evel_cal(byte_to_int(sdata[90:92]))
DEV_INFO = { "初始化标志": None,
"加速度传感器状态": None,
"Zigbee模块状态": None,
"设备温度传感器状态": None,
"环境温度传感器状态": None,
"设备运行状态": None,
"MAC地址": None,
"硬件版本": None,
"软件版本": None,
"生产批号": None,
"生产序列号": None,
"首次上电日期": None,
"唤醒次数": None,
"特征值发送次数": None,
"原始波形发送次数": None,
"电池电压": None,
"产品型号": None,
"无线信号强度": None,
}
DEV_CONF = { "配置标志": None,
"唤醒周期": None,
"原始波形发送周期": None,
"Zigbee PID": None,
"Zigbee 信道": None,
"Zigbee 本地地址": None,
"Zigbee 目标地址": None,
"Zigbee 发射功率": None,
"Zigbee 重试次数": None,
"Zigbee 重试间隔": None,
"ACC采样率": None,
"ACC量程": None,
"ACC采样率时间": None,
"频带能量参数1 START": None,
"频带能量参数1 END": None,
"频带能量参数2 START": None,
"频带能量参数2 END": None,
"频带能量参数3 START": None,
"频带能量参数3 END": None,
"频带能量参数4 START": None,
"频带能量参数4 END": None,
"频带能量参数5 START": None,
"频带能量参数5 END": None,
"冲击带通频率START": None,
"冲击带通频率END": None,
"故障频率1": None,
"故障频率2": None,
"故障频率3": None,
"故障频率4": None,
"配置时间" : None,
"速度积分滤波频率": None,
"原始数据": None
}
EVEL_INFO = {
"采集时间": None,
"设备温度": None,
"环境温度": None,
"倾角": None,
"电池电压": None,
"X轴峰值": None,
"X轴有效值": None,
"X轴速度峰值": None,
"X轴速度有效值": None,
"X轴频带能量1": None,
"X轴频带能量2": None,
"X轴频带能量3": None,
"X轴频带能量4": None,
"X轴频带能量5": None,
"X轴冲击能量": None,
"X轴故障频率1": None,
"X轴故障频率2": None,
"X轴故障频率3": None,
"X轴故障频率4": None,
"Y轴峰值": None,
"Y轴有效值": None,
"Y轴速度峰值": None,
"Y轴速度有效值": None,
"Y轴频带能量1": None,
"Y轴频带能量2": None,
"Y轴频带能量3": None,
"Y轴频带能量4": None,
"Y轴频带能量5": None,
"Y轴冲击能量": None,
"Y轴故障频率1": None,
"Y轴故障频率2": None,
"Y轴故障频率3": None,
"Y轴故障频率4": None,
"Z轴峰值": None,
"Z轴有效值": None,
"Z轴速度峰值": None,
"Z轴速度有效值": None,
"Z轴频带能量1": None,
"Z轴频带能量2": None,
"Z轴频带能量3": None,
"Z轴频带能量4": None,
"Z轴频带能量5": None,
"Z轴冲击能量": None,
"Z轴故障频率1": None,
"Z轴故障频率2": None,
"Z轴故障频率3": None,
"Z轴故障频率4": None,
"原始数据" : None
}