529 lines
25 KiB
Python
529 lines
25 KiB
Python
from ctypes import *
|
|
import numpy as np
|
|
import datetime
|
|
from zigbee_message_pack import *
|
|
|
|
SENSER_INF_PACK1 = 0x01
|
|
SENSER_INF_PACK2 = 0x07
|
|
EVEL_DATA_PACK1 = 0x02
|
|
EVEL_DATA_PACK2 = 0x06
|
|
WAVE_X_PACK = 0x03
|
|
WAVE_Y_PACK = 0x04
|
|
WAVE_Z_PACK = 0x05
|
|
SENSOR_FEATURE = 0x19
|
|
|
|
class EvelPack(LittleEndianStructure):
|
|
_fields_ = [
|
|
# 特征值
|
|
("temp_dev", c_uint16),
|
|
("temp_env", c_uint16),
|
|
("angle", c_uint16),
|
|
("bat_vol", c_uint16),
|
|
("acc_x_pk", c_uint16),
|
|
("acc_x_rms", c_uint16),
|
|
("speed_x_pk", c_uint16),
|
|
("speed_x_rms", c_uint16),
|
|
("fpower_x_1", c_uint16),
|
|
("fpower_x_2", c_uint16),
|
|
("fpower_x_3", c_uint16),
|
|
("fpower_x_4", c_uint16),
|
|
("fpower_x_5", c_uint16),
|
|
("envepower_x", c_uint16),
|
|
("errpower_x_1", c_uint16),
|
|
("errpower_x_2", c_uint16),
|
|
("errpower_x_3", c_uint16),
|
|
("errpower_x_4", c_uint16),
|
|
("acc_y_pk", c_uint16),
|
|
("acc_y_rms", c_uint16),
|
|
("speed_y_pk", c_uint16),
|
|
("speed_y_rms", c_uint16),
|
|
("fpower_y_1", c_uint16),
|
|
("fpower_y_2", c_uint16),
|
|
("fpower_y_3", c_uint16),
|
|
("fpower_y_4", c_uint16),
|
|
("fpower_y_5", c_uint16),
|
|
("envepower_y", c_uint16),
|
|
("errpower_y_1", c_uint16),
|
|
("errpower_y_2", c_uint16),
|
|
("errpower_y_3", c_uint16),
|
|
("errpower_y_4", c_uint16),
|
|
("acc_z_pk", c_uint16),
|
|
("acc_z_rms", c_uint16),
|
|
("speed_z_pk", c_uint16),
|
|
("speed_z_rms", c_uint16),
|
|
("fpower_z_1", c_uint16),
|
|
("fpower_z_2", c_uint16),
|
|
("fpower_z_3", c_uint16),
|
|
("fpower_z_4", c_uint16),
|
|
("fpower_z_5", c_uint16),
|
|
("envepower_z", c_uint16),
|
|
("errpower_z_1", c_uint16),
|
|
("errpower_z_2", c_uint16),
|
|
("errpower_z_3", c_uint16),
|
|
("errpower_z_4", c_uint16),
|
|
]
|
|
|
|
|
|
class WavePack(Structure):
|
|
_fields_ = [
|
|
("wvdata", c_uint16 * 46), # 原始波形
|
|
]
|
|
|
|
|
|
# 传感器设备信息
|
|
class DevInfo1(BigEndianStructure):
|
|
_pack_ = 1
|
|
_fields_ = [
|
|
# 设备状态标志
|
|
('uInitFlag', c_ubyte, 1),
|
|
('uAccSta', c_ubyte, 1),
|
|
('uZigbeeSta', c_ubyte, 1),
|
|
('uLowerTempSta', c_ubyte, 1),
|
|
('uUpperTempSta', c_ubyte, 1),
|
|
('uRunningFlag', c_ubyte, 1),
|
|
("reserve", c_ubyte, 2),
|
|
|
|
('zigbeeMac', c_uint64), # Zigbee MAC地址
|
|
('hwVersion', c_uint8), # 硬件版本
|
|
('sfVersion', c_uint8), # 软件版本
|
|
('pn', c_uint32), # 批号
|
|
('sn', c_uint32), # 序列号
|
|
('sTime', c_uint32), # 首次上电时间
|
|
('wakeupTimes', c_uint32), # 唤醒次数
|
|
('tzTimes', c_uint32), # 特征值发送次数
|
|
('wvTimes', c_uint32), # 原始波形发送次数
|
|
('batVol', c_uint16), # 电池电压
|
|
('productType', c_uint8), # 产品型号
|
|
('rss', c_uint8), # Zigbee信号强度
|
|
|
|
('active_flag', c_uint8), # 激活标志
|
|
('wakeup_period', c_uint8), # 唤醒周期
|
|
('wave_period', c_uint16), # 原始波形发送周期
|
|
('zig_panid', c_uint16), # zigbee panid
|
|
('zig_channel', c_uint8), # zigbee channel
|
|
('zig_local_addr', c_uint16), # zigbee本地地址
|
|
('zig_dst_addr', c_uint16), # zigbee目标地址
|
|
('zig_power_level', c_uint8), # zigbee发射功率
|
|
("zig_retry_num", c_uint8), # 重试次数
|
|
("zig_retry_time", c_uint8), # 重试间隔
|
|
|
|
("reserve", c_ubyte, 4),
|
|
("acc_acq_range", c_ubyte, 2), # 量程
|
|
("acc_acq_freq", c_ubyte, 2), # 采样率
|
|
|
|
("acc_acq_time", c_uint8), # 采样时长
|
|
("freq_power1_start", c_uint16), # 频带能量参数1
|
|
("freq_power1_stop", c_uint16), # 频带能量参数1
|
|
("freq_power2_start", c_uint16), # 频带能量参数2
|
|
("freq_power2_stop", c_uint16), # 频带能量参数2
|
|
("freq_power3_start", c_uint16), # 频带能量参数3
|
|
("freq_power3_stop", c_uint16), # 频带能量参数3
|
|
("freq_power4_start", c_uint16), # 频带能量参数4
|
|
("freq_power4_stop", c_uint16), # 频带能量参数4
|
|
("freq_power5_start", c_uint16), # 频带能量参数5
|
|
("freq_power5_stop", c_uint16), # 频带能量参数5
|
|
("envel_freq_start", c_uint16), # 包络带通频率
|
|
("envel_freq_stop", c_uint16), # 包络带通频率
|
|
("fail_freq1", c_uint16), # 故障频率1
|
|
("fail_freq2", c_uint16), # 故障频率2
|
|
("fail_freq3", c_uint16), # 故障频率3
|
|
("fail_freq4", c_uint16), # 故障频率4
|
|
("conf_date", c_int32), # 配置时间
|
|
("speed_freq_start", c_int8), # 速度积分起始频率
|
|
]
|
|
|
|
|
|
# 传感器信息2
|
|
class DevInfo2(Structure):
|
|
_fields_ = [
|
|
# 特征值
|
|
("node_name", c_int16 * 32), # 节点名称
|
|
("reserve", c_int8 * 28), # 保留
|
|
]
|
|
|
|
|
|
class ZigPack(Structure):
|
|
_fields_ = [
|
|
("msg_header", c_uint8 * 3), # 帧头
|
|
("msg_addr", c_uint8 * 2), # 源地址
|
|
("msg_type", c_uint8), # 数据类型
|
|
]
|
|
class ZigPack_Ask(Structure):
|
|
_fields_ = [
|
|
("msg_header", c_uint8 * 3), # 帧头
|
|
("msg_addr", c_uint8 * 2), # 源地址
|
|
("msg_type", c_uint8), # 数据类型
|
|
("msg_index", c_uint8), # 包序号
|
|
("crc", c_uint8), # 校验
|
|
]
|
|
class ZigPack_feature(Structure):
|
|
_fields_ = [
|
|
("msg_header", c_uint8 * 3), # 帧头
|
|
("msg_addr", c_uint8 * 2), # 源地址
|
|
("msg_type", c_uint8), # 数据类型
|
|
("msg_index", c_uint8), # 包序号
|
|
("data", c_int16), # 数据
|
|
("crc", c_uint8), # 校验
|
|
]
|
|
# 定义结构体
|
|
class ZigPackAsk(Structure):
|
|
_fields_ = [
|
|
("msg_header", c_uint8 * 3), # 帧头
|
|
("msg_addr", c_uint8 * 2), # 源地址
|
|
("msg_type", c_uint8), # 数据类型
|
|
("msg_index", c_uint8), # 包序号
|
|
("payload", c_uint8 * 2), # 数据字段
|
|
("payload2", c_uint8 * 2), # 数据字段
|
|
("crc", c_uint8), # 校验
|
|
]
|
|
class Zig_Reader(object):
|
|
def __init__(self, zig_dev):
|
|
self.evelpack = EvelPack()
|
|
self.wavepack = WavePack()
|
|
self.prev_index = 0
|
|
self.zig_reader = zig_dev # 串口设备
|
|
# self.zig_reader = serial.Serial('com5')
|
|
self.recv_data_buf = b''
|
|
self.zigpack = ZigPack()
|
|
self.senser_info1 = DevInfo1()
|
|
self.senser_info2 = DevInfo2()
|
|
self.senser_evel = EvelPack()
|
|
self.senser_wave = WavePack()
|
|
self.senser_ask = ZigPack_Ask()
|
|
self.senser_feature = ZigPack_feature()
|
|
|
|
self.init_zigbee_message()
|
|
|
|
def read(self):
|
|
sdata = self.zig_reader.read(self.zig_reader.inWaiting())
|
|
self.recv_data_buf = self.recv_data_buf + sdata
|
|
ret = self.data_analysis()
|
|
self.recv_data_buf = b''
|
|
return ret
|
|
def write(self,write_data):
|
|
print("write str " + write_data)
|
|
ret = self.zig_reader.write(write_data)
|
|
print("write ret " + ret)
|
|
return ret
|
|
def data_analysis(self):
|
|
if (len(self.recv_data_buf) >= 100): # 缓存中数据量大于等于数据包
|
|
print(self.recv_data_buf)
|
|
# if ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (self.crc_check(self.recv_data_buf[:100]))):
|
|
# memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
|
|
#
|
|
# if self.zigpack.msg_type == SENSER_INF_PACK1:
|
|
# memmove(addressof(self.senser_info1), self.zigpack.data, sizeof(self.senser_info1))
|
|
# elif self.zigpack.msg_type == SENSER_INF_PACK2:
|
|
# memmove(addressof(self.senser_info2), self.zigpack.data, sizeof(self.senser_info2))
|
|
# self.dev_info_analysis()
|
|
# self.dev_conf_analysis()
|
|
# elif (self.zigpack.msg_type == EVEL_DATA_PACK1) | (self.zigpack.msg_type == EVEL_DATA_PACK2):
|
|
# memmove(addressof(self.senser_evel), self.zigpack.data, sizeof(self.senser_evel))
|
|
# self.evel_data_analysis()
|
|
# elif self.zigpack.msg_type == WAVE_X_PACK:
|
|
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
|
# elif self.zigpack.msg_type == WAVE_Y_PACK:
|
|
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
|
# elif self.zigpack.msg_type == WAVE_Z_PACK:
|
|
# memmove(addressof(self.senser_wave), self.zigpack.data, sizeof(self.senser_wave))
|
|
#
|
|
# self.recv_data_buf = self.recv_data_buf[100:]
|
|
# return self.zigpack.msg_type
|
|
# else:
|
|
# self.recv_data_buf = self.recv_data_buf[1:]
|
|
# return False
|
|
elif ((self.recv_data_buf[:3] == b'\xaaU\xaa') | (len(self.recv_data_buf) >= 5) and (len(self.recv_data_buf) < 20)):
|
|
print(self.recv_data_buf)
|
|
memmove(addressof(self.zigpack), self.recv_data_buf, sizeof(self.zigpack))
|
|
if self.zigpack.msg_type == SENSER_INF_PACK1:
|
|
memmove(addressof(self.senser_ask), self.recv_data_buf, sizeof(self.senser_ask))
|
|
|
|
elif self.zigpack.msg_type == SENSOR_FEATURE:
|
|
# 按结构体解析
|
|
self.zigpack = ZigPackAsk.from_buffer_copy(self.recv_data_buf)
|
|
self.zig_reader.reset_input_buffer()
|
|
return self.zigpack.msg_type
|
|
else:
|
|
return False
|
|
|
|
def crc_check(self, sdata):
|
|
sdata = [d for d in sdata]
|
|
sum_vl = np.sum(sdata[:-1])
|
|
|
|
if (sum_vl & 0xff) == sdata[-1]:
|
|
return True
|
|
else:
|
|
msg = self.get_date_time() + '\n'
|
|
msg = msg + "CRC Cal Error\n"
|
|
msg = msg + str([hex(d) for d in sdata]) + '\n'
|
|
print(msg)
|
|
return False
|
|
|
|
def get_date_time(self):
|
|
now_time = datetime.datetime.now()
|
|
time_str = now_time.strftime('%Y-%m-%d %H:%M:%S')
|
|
return time_str
|
|
|
|
def close(self):
|
|
self.zig_reader.close()
|
|
|
|
def dev_info_analysis(self):
|
|
self.dev_info_msg["初始化标志"] = self.senser_info1.uInitFlag
|
|
self.dev_info_msg["加速度传感器状态"] = self.senser_info1.uAccSta
|
|
self.dev_info_msg["Zigbee模块状态"] = self.senser_info1.uZigbeeSta
|
|
self.dev_info_msg["设备温度传感器状态"] = self.senser_info1.uLowerTempSta
|
|
self.dev_info_msg["环境温度传感器状态"] = self.senser_info1.uUpperTempSta
|
|
self.dev_info_msg["设备运行状态"] = self.senser_info1.uRunningFlag
|
|
self.dev_info_msg["MAC地址"] = hex(self.senser_info1.zigbeeMac)[2:]
|
|
self.dev_info_msg["硬件版本"] = self.senser_info1.hwVersion/10
|
|
self.dev_info_msg["软件版本"] = self.senser_info1.sfVersion/10
|
|
self.dev_info_msg["生产批号"] = self.senser_info1.pn
|
|
self.dev_info_msg["生产序列号"] = self.senser_info1.sn
|
|
self.dev_info_msg["首次上电日期"] = self.senser_info1.sTime
|
|
self.dev_info_msg["唤醒次数"] = self.senser_info1.wakeupTimes
|
|
self.dev_info_msg["特征值发送次数"] = self.senser_info1.tzTimes
|
|
self.dev_info_msg["原始波形发送次数"] = self.senser_info1.wvTimes
|
|
self.dev_info_msg["电池电压"] = self.senser_info1.batVol
|
|
self.dev_info_msg["产品型号"] = self.senser_info1.productType
|
|
self.dev_info_msg["无线信号强度"] = self.senser_info1.rss
|
|
self.dev_info_msg["测点名称"] = bytes(self.senser_info2.node_name).decode('GB18030')
|
|
|
|
def dev_conf_analysis(self):
|
|
self.dev_conf_msg["配置标志"] = self.senser_info1.active_flag
|
|
self.dev_conf_msg["唤醒周期"] = self.senser_info1.wakeup_period
|
|
self.dev_conf_msg["原始波形发送周期"] = self.senser_info1.wave_period
|
|
self.dev_conf_msg["Zigbee PID"] = hex(self.senser_info1.zig_panid)[2:]
|
|
self.dev_conf_msg["Zigbee 信道"] = self.senser_info1.zig_channel
|
|
self.dev_conf_msg["Zigbee 本地地址"] = hex(self.senser_info1.zig_local_addr)[2:]
|
|
self.dev_conf_msg["Zigbee 目标地址"] = hex(self.senser_info1.zig_dst_addr)[2:]
|
|
self.dev_conf_msg["Zigbee 发射功率"] = self.senser_info1.zig_power_level
|
|
self.dev_conf_msg["Zigbee 重试次数"] = self.senser_info1.zig_retry_num
|
|
self.dev_conf_msg["Zigbee 重试间隔"] = self.senser_info1.zig_retry_time
|
|
self.dev_conf_msg["ACC采样率"] = self.acc_freq_cal(self.senser_info1.acc_acq_freq)
|
|
self.dev_conf_msg["ACC量程"] = self.acc_range_cal(self.senser_info1.acc_acq_range)
|
|
self.dev_conf_msg["ACC采样率时间"] = self.senser_info1.acc_acq_time
|
|
self.dev_conf_msg["频带能量参数1 START"] = self.senser_info1.freq_power1_start
|
|
self.dev_conf_msg["频带能量参数1 END"] = self.senser_info1.freq_power1_stop
|
|
self.dev_conf_msg["频带能量参数2 START"] = self.senser_info1.freq_power2_start
|
|
self.dev_conf_msg["频带能量参数2 END"] = self.senser_info1.freq_power2_stop
|
|
self.dev_conf_msg["频带能量参数3 START"] = self.senser_info1.freq_power3_start
|
|
self.dev_conf_msg["频带能量参数3 END"] = self.senser_info1.freq_power3_stop
|
|
self.dev_conf_msg["频带能量参数4 START"] = self.senser_info1.freq_power4_start
|
|
self.dev_conf_msg["频带能量参数4 END"] = self.senser_info1.freq_power4_stop
|
|
self.dev_conf_msg["频带能量参数5 START"] = self.senser_info1.freq_power5_start
|
|
self.dev_conf_msg["频带能量参数5 END"] = self.senser_info1.freq_power5_stop
|
|
self.dev_conf_msg["冲击带通频率START"] = self.senser_info1.envel_freq_start
|
|
self.dev_conf_msg["冲击带通频率END"] = self.senser_info1.envel_freq_stop
|
|
self.dev_conf_msg["故障频率1"] = self.senser_info1.fail_freq1
|
|
self.dev_conf_msg["故障频率2"] = self.senser_info1.fail_freq2
|
|
self.dev_conf_msg["故障频率3"] = self.senser_info1.fail_freq3
|
|
self.dev_conf_msg["故障频率4"] = self.senser_info1.fail_freq4
|
|
self.dev_conf_msg["配置时间"] = self.senser_info1.conf_date
|
|
self.dev_conf_msg["速度积分滤波频率"] = self.senser_info1.speed_freq_start
|
|
|
|
def evel_data_analysis(self):
|
|
# self.dev_evel_msg["传感器地址"] = hex((self.zigpack.msg_addr[0]<<8)+self.zigpack.msg_addr[1])[-4:]
|
|
self.dev_evel_msg["传感器地址"] = format(int(hex((self.zigpack.msg_addr[0] << 8) + self.zigpack.msg_addr[1]), 16), '04x')
|
|
self.dev_evel_msg["采集时间"] = self.get_date_time()
|
|
self.dev_evel_msg["设备温度"] = temp_cal(self.senser_evel.temp_dev)
|
|
self.dev_evel_msg["环境温度"] = temp_cal(self.senser_evel.temp_env)
|
|
self.dev_evel_msg["倾角"] = self.senser_evel.angle
|
|
self.dev_evel_msg["电池电压"] = self.senser_evel.bat_vol
|
|
self.dev_evel_msg["X轴峰值"] = self.evel_cal(self.senser_evel.acc_x_pk)
|
|
self.dev_evel_msg["X轴有效值"] = self.evel_cal(self.senser_evel.acc_x_rms)
|
|
self.dev_evel_msg["X轴速度峰值"] = self.evel_cal(self.senser_evel.speed_x_pk)
|
|
self.dev_evel_msg["X轴速度有效值"] = self.evel_cal(self.senser_evel.speed_x_rms)
|
|
self.dev_evel_msg["X轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_x_1)
|
|
self.dev_evel_msg["X轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_x_2)
|
|
self.dev_evel_msg["X轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_x_3)
|
|
self.dev_evel_msg["X轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_x_4)
|
|
self.dev_evel_msg["X轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_x_5)
|
|
self.dev_evel_msg["X轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_x)
|
|
self.dev_evel_msg["X轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_x_1)
|
|
self.dev_evel_msg["X轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_x_2)
|
|
self.dev_evel_msg["X轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_x_3)
|
|
self.dev_evel_msg["X轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_x_4)
|
|
self.dev_evel_msg["Y轴峰值"] = self.evel_cal(self.senser_evel.acc_y_pk)
|
|
self.dev_evel_msg["Y轴有效值"] = self.evel_cal(self.senser_evel.acc_y_rms)
|
|
self.dev_evel_msg["Y轴速度峰值"] = self.evel_cal(self.senser_evel.speed_y_pk)
|
|
self.dev_evel_msg["Y轴速度有效值"] = self.evel_cal(self.senser_evel.speed_y_rms)
|
|
self.dev_evel_msg["Y轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_y_1)
|
|
self.dev_evel_msg["Y轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_y_2)
|
|
self.dev_evel_msg["Y轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_y_3)
|
|
self.dev_evel_msg["Y轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_y_4)
|
|
self.dev_evel_msg["Y轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_y_5)
|
|
self.dev_evel_msg["Y轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_y)
|
|
self.dev_evel_msg["Y轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_y_1)
|
|
self.dev_evel_msg["Y轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_y_2)
|
|
self.dev_evel_msg["Y轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_y_3)
|
|
self.dev_evel_msg["Y轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_y_4)
|
|
self.dev_evel_msg["Z轴峰值"] = self.evel_cal(self.senser_evel.acc_z_pk)
|
|
self.dev_evel_msg["Z轴有效值"] = self.evel_cal(self.senser_evel.acc_z_rms)
|
|
self.dev_evel_msg["Z轴速度峰值"] = self.evel_cal(self.senser_evel.speed_z_pk)
|
|
self.dev_evel_msg["Z轴速度有效值"] = self.evel_cal(self.senser_evel.speed_z_rms)
|
|
self.dev_evel_msg["Z轴频带能量1"] = self.evel_cal(self.senser_evel.fpower_z_1)
|
|
self.dev_evel_msg["Z轴频带能量2"] = self.evel_cal(self.senser_evel.fpower_z_2)
|
|
self.dev_evel_msg["Z轴频带能量3"] = self.evel_cal(self.senser_evel.fpower_z_3)
|
|
self.dev_evel_msg["Z轴频带能量4"] = self.evel_cal(self.senser_evel.fpower_z_4)
|
|
self.dev_evel_msg["Z轴频带能量5"] = self.evel_cal(self.senser_evel.fpower_z_5)
|
|
self.dev_evel_msg["Z轴冲击能量"] = self.evel_cal(self.senser_evel.envepower_z)
|
|
self.dev_evel_msg["Z轴故障频率1"] = self.evel_cal(self.senser_evel.errpower_z_1)
|
|
self.dev_evel_msg["Z轴故障频率2"] = self.evel_cal(self.senser_evel.errpower_z_2)
|
|
self.dev_evel_msg["Z轴故障频率3"] = self.evel_cal(self.senser_evel.errpower_z_3)
|
|
self.dev_evel_msg["Z轴故障频率4"] = self.evel_cal(self.senser_evel.errpower_z_4)
|
|
|
|
def temp_cal(self, sdata):
|
|
if sdata > 2048:
|
|
temp = -(256 - sdata * 0.0625)
|
|
else:
|
|
temp = sdata * 0.0625
|
|
|
|
return temp
|
|
|
|
def evel_cal(self, 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 acc_range_cal(self, sdata):
|
|
if sdata == 0b00:
|
|
return "±8g"
|
|
elif sdata == 0b01:
|
|
return "±16g"
|
|
elif sdata == 0b10:
|
|
return "±32g"
|
|
elif sdata == 0b11:
|
|
return "±64g"
|
|
|
|
def acc_freq_cal(self, sdata):
|
|
if sdata == 0b00:
|
|
return "3.2kHz"
|
|
elif sdata == 0b01:
|
|
return "6.4kHz"
|
|
elif sdata == 0b10:
|
|
return "12.8kHz"
|
|
elif sdata == 0b11:
|
|
return "25.6kHz"
|
|
|
|
def init_zigbee_message(self):
|
|
self.dev_info_msg = {"测点名称": None,
|
|
"初始化标志": None,
|
|
"加速度传感器状态": None,
|
|
"Zigbee模块状态": None,
|
|
"设备温度传感器状态": None,
|
|
"环境温度传感器状态": None,
|
|
"设备运行状态": None,
|
|
"MAC地址": None,
|
|
"硬件版本": None,
|
|
"软件版本": None,
|
|
"生产批号": None,
|
|
"生产序列号": None,
|
|
"首次上电日期": None,
|
|
"唤醒次数": None,
|
|
"特征值发送次数": None,
|
|
"原始波形发送次数": None,
|
|
"电池电压": None,
|
|
"产品型号": None,
|
|
"无线信号强度": None,
|
|
}
|
|
|
|
self.dev_conf_msg = {"配置标志": 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
|
|
}
|
|
|
|
self.dev_evel_msg = {"传感器地址": None,
|
|
"采集时间": None,
|
|
"设备温度": None,
|
|
"环境温度": None,
|
|
"倾角": None,
|
|
"电池电压": None,
|
|
"X轴峰值": None,
|
|
"X轴有效值": None,
|
|
"X轴速度峰值": None,
|
|
"X轴速度有效值": None,
|
|
"Y轴峰值": None,
|
|
"Y轴有效值": None,
|
|
"Y轴速度峰值": None,
|
|
"Y轴速度有效值": None,
|
|
"Z轴峰值": None,
|
|
"Z轴有效值": None,
|
|
"Z轴速度峰值": None,
|
|
"Z轴速度有效值": 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轴频带能量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轴频带能量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
|
|
}
|