TG-PlatformPlus/default_http.py

66 lines
1.8 KiB
Python
Raw Normal View History

2026-03-02 14:29:58 +08:00
import time
import json
from datetime import datetime
recvData = bytearray() #接收的数据存放此数组
startTime = time.time()
# 将bytearray以字为单位转换成16进制字符串方便显示
def wordData2HexStr(data):
ret = ' '.join(data[i:i+2].hex() for i in range(0, len(data), 2))
return ret.upper()
# 获取当前时间字符串
def nowStr():
now = datetime.now()
ret = now.strftime('%H:%M:%S.') + f"{now.microsecond // 1000:03d}"
return ret
# 启动函数,命令开始会调用此函数
def start():
global tsdb
log_i('----------------- ' + cmdInfo['name'] + ' ----------------')
startTime = time.time() #记录启动时间
recvData = bytearray() #清空接收数组
attr = cmdInfo['attr']
url = attr['url']
rsp_params = attr['rsp_params']
rsp_headers = attr['rsp_headers']
rsp_bodys = attr['rsp_bodys']
type = attr['type']
cmd = {
'url': url,
'type': type,
'rsp_params': rsp_params,
'rsp_headers': rsp_headers,
'rsp_bodys': rsp_bodys
}
cmdStr = json.dumps(cmd)
send(bytearray(cmdStr, encoding='utf-8'))
log_d(f"[{nowStr()}]TX:{cmdStr}")
return True
# 接收数据处理函数,当收到数据会调用此函数
def recvDataHandler(data):
global recvData
global tsdb,_G
recvData = recvData + bytearray(data)
tmpData = bytes(recvData).decode('utf-8')
# 此函数会被重复调用间隔10毫秒直到finish()
def loop():
global recvData
if time.time() > startTime + int(cmdInfo['attr']['rsp_timeout']) / 1000.0:
if len(recvData) > 0:
log_w(f"[{nowStr()}]RX timeout:{wordData2HexStr(recvData)}")
else:
log_w(f"[{nowStr()}]RX timeout")
log_e(f"[{devInfo['name']}]{cmdInfo['name']} fail.")
finish()