#!/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()