Xena Valkyrie以太网测试仪,如何手动去获取QSFPxx光模块的温度数据
在ValkyrieManager软件界面上,有2个温度信息,一个是测试仪板卡的温度监控,另一个是光模块/TCVR的温度,针对光模块信息,还提供其功耗,Laser Power的监控信息
//之前一直以为这些信息是可有可无的,但在一次交流中,用户提出他们目前测试用的这颗光模块属于试验阶段,担心温度过高会导致损毁,所以希望能够不间断的去查询这个温度
ValkyrieManager软件UI显示的光模块温度信息等,都是来自于光模块本身的寄存器上报回来的数据,我们也可以手动去获得这些信息,/// 同样的可以将这个信息用脚本的方式来获取,达到长期记录绘制的效果。
通过查询CMIS相关规范,我们得知温度信息分为整数位和小数位两个部分,分别在Page0 ,14,15。
我们通过获取这2个寄存器的信息,经过进制转换,公式推演,过程如下
Page0,14数据为HEX 23, 换算成十进制数值为 35,
Page0,15数据为HEX 9B ,换算成十进制数值为 155,验算后 155/256= 0.61
所以得出光模块/TCVR的温度数值为 35.61 °C
当然,为了将这些数据更友好的展示,软件也提供IEEE,QSFPxx,SFPxx多套模板,用户可以直接导入模板进行常用的一些寄存器信息的读写交互
附上Python脚本上的实现
# coding=UTF-8
import time, json, random, types, sys, socket, math, os
from binascii import hexlify
from TestUtilsL23 import XenaScriptTools
#########################################
##############Description################
## Aurthor: Zohn Yang ##
## Date : 2019-12-1 ##
## Email : szy@xenanetworks.com ##
## Software : Pyhton 3.7.4 ##
## This is a scripting special for the ##
## transceiver test. It could monitor ##
## each x seconds Fec bit error rate ##
## base on the port and each physical ##
## lines. ##
#########################################
def runtest(xm, ports, tt, step, number):
filename = 'output.txt'
with open(filename,'ab') as f:
for m in range(11):
for n in range(256):
print(m)
print(n)
res = xm.Send("4/0 PX_RW [" + str(m) + "," + str(n) + "] ?")
res = res.encode()
f.write(res + b'\r\n')
print(str(res))
res = xm.Send("4/1 PX_RW [" + str(m) + "," + str(n) + "] ?")
res = res.encode()
f.write(res + b'\r\n')
print(str(res))
def main(argv):
a = sys.argv
configvalue = {}
with open('config.json','rb') as f:
configs=json.loads(f.read())
ip_address = configs.get('ip_address')
ports = configs.get('ports', '')
tt = configs.get('time')
step = configs.get('step')
number = configs.get('number')
xm = XenaScriptTools(ip_address)
xm.LogonSetOwner("xena", "python_test_1")
runtest(xm, ports, tt, step, number)
if __name__ == '__main__':
sys.exit(main(sys.argv))
然后在本地可以输出一个类似的数据表单,可根据这个表单进行数据的二次整理
专注有线以太网测试100年!(还差87年)
--Xena Networks.