52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			52 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
								 | 
							
								from flask import Blueprint, request, jsonify
							 | 
						|||
| 
								 | 
							
								import sqlite3
							 | 
						|||
| 
								 | 
							
								from collections import defaultdict
							 | 
						|||
| 
								 | 
							
								import traceback
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								bp = Blueprint('shi2', __name__)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								def get_db_connection():
							 | 
						|||
| 
								 | 
							
								    conn = sqlite3.connect('agriculture.db')
							 | 
						|||
| 
								 | 
							
								    conn.row_factory = sqlite3.Row
							 | 
						|||
| 
								 | 
							
								    return conn
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								@bp.route('/device-moisture', methods=['GET'])
							 | 
						|||
| 
								 | 
							
								def get_device_moisture_data():
							 | 
						|||
| 
								 | 
							
								    # 固定查询2025-05-27的数据
							 | 
						|||
| 
								 | 
							
								    query_date = '2025-05-27'
							 | 
						|||
| 
								 | 
							
								    start_time = '00:00:00'
							 | 
						|||
| 
								 | 
							
								    end_time = '23:59:59'
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								    conn = get_db_connection()
							 | 
						|||
| 
								 | 
							
								    try:
							 | 
						|||
| 
								 | 
							
								        cur = conn.cursor()
							 | 
						|||
| 
								 | 
							
								        # 修正表名和字段名,使用temperature_data表中的实际字段
							 | 
						|||
| 
								 | 
							
								        cur.execute('''
							 | 
						|||
| 
								 | 
							
								            SELECT device_id, humidity as moisture, timestamp
							 | 
						|||
| 
								 | 
							
								            FROM temperature_data
							 | 
						|||
| 
								 | 
							
								            WHERE DATE(timestamp) = ? 
							 | 
						|||
| 
								 | 
							
								              AND TIME(timestamp) BETWEEN ? AND ?
							 | 
						|||
| 
								 | 
							
								            ORDER BY device_id, timestamp
							 | 
						|||
| 
								 | 
							
								        ''', (query_date, start_time, end_time))
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        rows = cur.fetchall()
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        # 按设备ID分组湿度数据(修正字段引用为humidity)
							 | 
						|||
| 
								 | 
							
								        device_data = defaultdict(list)
							 | 
						|||
| 
								 | 
							
								        for row in rows:
							 | 
						|||
| 
								 | 
							
								            device_id = row['device_id']
							 | 
						|||
| 
								 | 
							
								            moisture = float(row['moisture'])  # 这里使用别名moisture
							 | 
						|||
| 
								 | 
							
								            device_data[device_id].append(moisture)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        if not device_data:
							 | 
						|||
| 
								 | 
							
								            return jsonify({}), 200
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								        return jsonify(device_data)
							 | 
						|||
| 
								 | 
							
								    except Exception as e:
							 | 
						|||
| 
								 | 
							
								        print(f"数据库查询错误: {str(e)}")
							 | 
						|||
| 
								 | 
							
								        traceback.print_exc()
							 | 
						|||
| 
								 | 
							
								        return jsonify({'error': '数据库查询失败,请检查日志'}), 500
							 | 
						|||
| 
								 | 
							
								    finally:
							 | 
						|||
| 
								 | 
							
								        conn.close()
							 |