147 lines
4.5 KiB
Python
147 lines
4.5 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
433MHz模块测试脚本
|
|
用于测试ESP32上的RTM300-433M模块功能
|
|
"""
|
|
|
|
import requests
|
|
import time
|
|
import json
|
|
import sys
|
|
import argparse
|
|
|
|
# 默认设备IP地址
|
|
DEFAULT_DEVICE_IP = "192.168.1.3"
|
|
|
|
def get_status(device_ip):
|
|
"""获取433MHz模块状态"""
|
|
url = f"http://{device_ip}/api/rf433/status"
|
|
try:
|
|
response = requests.get(url, timeout=5)
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
else:
|
|
print(f"错误: 状态码 {response.status_code}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"请求失败: {e}")
|
|
return None
|
|
|
|
def send_data(device_ip, hex_data):
|
|
"""发送433MHz数据"""
|
|
url = f"http://{device_ip}/api/rf433/send"
|
|
payload = {
|
|
"data": hex_data
|
|
}
|
|
try:
|
|
response = requests.post(url, json=payload, timeout=5)
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
else:
|
|
print(f"错误: 状态码 {response.status_code}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"请求失败: {e}")
|
|
return None
|
|
|
|
def enable_receive(device_ip, enable=True):
|
|
"""启用/禁用接收模式"""
|
|
url = f"http://{device_ip}/api/rf433/receive"
|
|
payload = {
|
|
"enable": enable
|
|
}
|
|
try:
|
|
response = requests.post(url, json=payload, timeout=5)
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
else:
|
|
print(f"错误: 状态码 {response.status_code}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"请求失败: {e}")
|
|
return None
|
|
|
|
def read_register(device_ip, reg_addr):
|
|
"""读取寄存器值"""
|
|
url = f"http://{device_ip}/api/rf433/register?addr={reg_addr}"
|
|
try:
|
|
response = requests.get(url, timeout=5)
|
|
if response.status_code == 200:
|
|
return response.json()
|
|
else:
|
|
print(f"错误: 状态码 {response.status_code}")
|
|
return None
|
|
except Exception as e:
|
|
print(f"请求失败: {e}")
|
|
return None
|
|
|
|
def test_basic_functions(device_ip):
|
|
"""测试基本功能"""
|
|
print("===== 433MHz模块基本功能测试 =====")
|
|
|
|
# 测试1: 获取模块状态
|
|
print("\n[测试1] 获取模块状态...")
|
|
status = get_status(device_ip)
|
|
if status:
|
|
print(f"模块状态: {json.dumps(status, indent=2, ensure_ascii=False)}")
|
|
if status.get("ready", False):
|
|
print("✅ 模块就绪")
|
|
else:
|
|
print("❌ 模块未就绪")
|
|
else:
|
|
print("❌ 获取状态失败")
|
|
return False
|
|
|
|
# 测试2: 发送数据
|
|
print("\n[测试2] 发送测试数据...")
|
|
test_data = "A55A01020304" # 测试数据: 0xA5 0x5A 0x01 0x02 0x03 0x04
|
|
send_result = send_data(device_ip, test_data)
|
|
if send_result:
|
|
print(f"发送结果: {json.dumps(send_result, indent=2, ensure_ascii=False)}")
|
|
if send_result.get("success", False):
|
|
print(f"✅ 数据发送成功: {test_data}")
|
|
else:
|
|
print(f"❌ 数据发送失败: {test_data}")
|
|
else:
|
|
print("❌ 发送请求失败")
|
|
|
|
# 测试3: 启用接收模式
|
|
print("\n[测试3] 启用接收模式...")
|
|
receive_result = enable_receive(device_ip, True)
|
|
if receive_result:
|
|
print(f"接收模式设置结果: {json.dumps(receive_result, indent=2, ensure_ascii=False)}")
|
|
if receive_result.get("success", False):
|
|
print("✅ 接收模式启用成功")
|
|
else:
|
|
print("❌ 接收模式启用失败")
|
|
else:
|
|
print("❌ 设置接收模式请求失败")
|
|
|
|
# 测试4: 读取寄存器
|
|
print("\n[测试4] 读取寄存器值...")
|
|
reg_addr = 0x00 # 控制寄存器
|
|
reg_result = read_register(device_ip, reg_addr)
|
|
if reg_result:
|
|
print(f"寄存器0x{reg_addr:02X}值: {json.dumps(reg_result, indent=2, ensure_ascii=False)}")
|
|
if "value" in reg_result:
|
|
print(f"✅ 寄存器值: 0x{reg_result['value']:02X}")
|
|
else:
|
|
print("❌ 读取寄存器失败")
|
|
else:
|
|
print("❌ 读取寄存器请求失败")
|
|
|
|
print("\n===== 测试完成 =====")
|
|
return True
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description='433MHz模块测试工具')
|
|
parser.add_argument('--ip', default=DEFAULT_DEVICE_IP, help='ESP32设备IP地址')
|
|
args = parser.parse_args()
|
|
|
|
print(f"使用设备IP: {args.ip}")
|
|
test_basic_functions(args.ip)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|