#!/usr/bin/env python3 """ 雷达距离检测测试脚本 测试ESP32雷达传感器的UART距离检测功能 """ import requests import json import time def test_radar_distance(): """测试雷达距离检测功能""" esp32_ip = "192.168.1.3" api_url = f"http://{esp32_ip}:80/thermal_grid" print("🔧 雷达距离检测测试") print("=" * 50) print(f"📡 ESP32地址: {esp32_ip}") print(f"🌐 API地址: {api_url}") print("=" * 50) try: for i in range(10): print(f"\n📊 第 {i+1} 次测试:") # 发送HTTP请求 response = requests.get(api_url, timeout=5) if response.status_code == 200: data = response.json() # 解析PIR数据 pir_status = "有人" if data.get('pir', 0) == 1 else "无人" print(f"🚶 PIR传感器: {pir_status}") # 解析雷达数据 radar_data = data.get('radar', {}) if isinstance(radar_data, dict): # 新格式:包含距离信息 detected = "有人" if radar_data.get('detected', 0) == 1 else "无人" uart_available = "可用" if radar_data.get('uart_available', 0) == 1 else "不可用" distance_range = radar_data.get('distance_range', 'unknown') moving_distance = radar_data.get('moving_distance', 0) static_distance = radar_data.get('static_distance', 0) print(f"📡 雷达传感器: {detected}") print(f"📊 UART通信: {uart_available}") print(f"📏 距离分段: {distance_range}") if uart_available == "可用": print(f"🏃 运动目标: {moving_distance}cm") print(f"🧍 静止目标: {static_distance}cm") # 距离分段说明 range_desc = { 'none': '无目标', 'near': '近距离 (0-100cm)', 'medium': '中距离 (100-300cm)', 'far': '远距离 (300cm+)', 'unknown': '未知距离' } print(f"📍 距离说明: {range_desc.get(distance_range, '未知')}") else: print("⚠️ UART数据不可用,仅使用GPIO检测") else: # 旧格式:仅布尔值 radar_status = "有人" if radar_data == 1 else "无人" print(f"📡 雷达传感器: {radar_status} (旧格式)") else: print(f"❌ HTTP请求失败: {response.status_code}") time.sleep(2) # 等待2秒 except requests.exceptions.RequestException as e: print(f"❌ 网络错误: {e}") except json.JSONDecodeError as e: print(f"❌ JSON解析错误: {e}") except KeyboardInterrupt: print("\n⏹️ 测试被用户中断") print("\n✅ 测试完成") if __name__ == "__main__": test_radar_distance()