87 lines
3.3 KiB
Python
87 lines
3.3 KiB
Python
#!/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()
|