246 lines
11 KiB
Python
246 lines
11 KiB
Python
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
|
|
}
|