0


基于树莓派的智能AI网关接入豆包流程:HTTP/HTTPS、MQTT、Flask、Web可视化(代码示例)

一、项目概述

随着物联网和智能家居技术的迅速发展,越来越多的家庭开始关注环境监测和智能控制。本文介绍一个基于树莓派的智能AI网关项目,旨在通过接入豆包(Doubao)API,实现对家庭环境的实时监测和智能控制。

项目目标和用途

该项目的主要目标是构建一个智能家居环境监测和控制系统。用户可以通过该系统获取实时天气和环境数据,并根据数据分析结果自动调整家居设备,提升居住舒适度和节能效果。

二、系统架构

本项目的系统架构分为多个层次,以实现数据获取、处理和控制的完整流程。

1. 系统架构设计

  • 数据获取层:通过豆包API获取实时天气和环境数据,支持定时拉取和事件驱动更新。
  • 数据处理层:对获取的数据进行清洗、格式化和分析,提取关键的环境信息。
  • 控制层:根据处理结果自动调整家居设备,并提供手动控制接口。
  • 用户界面层:为用户提供可视化界面,展示实时数据和历史记录。

2. 技术选择

  • 硬件:树莓派 4B
  • 传感器:温度传感器(如DHT11)、空气质量传感器(如MQ-135)
  • 通信协议:HTTP/HTTPS用于API调用,MQTT用于设备控制
  • 技术栈:Python用于数据处理和控制逻辑,Flask用于搭建Web界面

3. 系统架构图

#mermaid-svg-8Lf2nFZ3puAuw7KR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .error-icon{fill:#552222;}#mermaid-svg-8Lf2nFZ3puAuw7KR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-8Lf2nFZ3puAuw7KR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .marker.cross{stroke:#333333;}#mermaid-svg-8Lf2nFZ3puAuw7KR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .cluster-label text{fill:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .cluster-label span{color:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .label text,#mermaid-svg-8Lf2nFZ3puAuw7KR span{fill:#333;color:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .node rect,#mermaid-svg-8Lf2nFZ3puAuw7KR .node circle,#mermaid-svg-8Lf2nFZ3puAuw7KR .node ellipse,#mermaid-svg-8Lf2nFZ3puAuw7KR .node polygon,#mermaid-svg-8Lf2nFZ3puAuw7KR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .node .label{text-align:center;}#mermaid-svg-8Lf2nFZ3puAuw7KR .node.clickable{cursor:pointer;}#mermaid-svg-8Lf2nFZ3puAuw7KR .arrowheadPath{fill:#333333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-8Lf2nFZ3puAuw7KR .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-8Lf2nFZ3puAuw7KR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-8Lf2nFZ3puAuw7KR .cluster text{fill:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR .cluster span{color:#333;}#mermaid-svg-8Lf2nFZ3puAuw7KR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-8Lf2nFZ3puAuw7KR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

       数据获取层 
     

       API调用 
     

       定时任务 
     

       豆包API 
     

       数据处理层 
     

       数据清洗 
     

       数据分析 
     

       控制层 
     

       设备控制 
     

       手动控制接口 
     

       用户界面层 
     

       可视化展示 
     

       历史数据 
     

三、环境搭建

1. 硬件环境

  • 树莓派 4B
  • 电源适配器
  • DHT11温度传感器
  • MQ-135空气质量传感器
  • 路由器(支持Wi-Fi连接)

2. 软件环境

  • 操作系统:Raspberry Pi OS
  • 开发工具:Python 3、Flask框架
  • 库:requests(用于API调用)、pandas(用于数据处理)

3. 环境安装步骤

  1. 系统安装:
  • 下载并安装Raspberry Pi OS镜像到SD卡。
  • 将SD卡插入树莓派,连接电源启动。
  1. 环境配置:
  • 更新系统:sudoapt updatesudo apt upgrade
  • 安装Python和Flask:sudoaptinstall python3 python3-pippip3 install Flask requests pandas
  1. 传感器连接:
  • 按照传感器的接线图连接DHT11和MQ-135到树莓派的GPIO引脚。

4. 配置示例

  • 配置Wi-Fi连接:sudo raspi-config

5. 注意事项

  • 确保传感器与树莓派的连接正确,以免损坏设备。
  • 在调试过程中,定期检查API的响应,以确保数据准确。

四、代码实现

以下是系统各功能模块的关键代码示例:

1. 数据获取模块

数据获取模块负责从豆包API定期获取天气数据,并将其存储以供后续处理。

import requests
import time

API_KEY ='YOUR_DOUBAO_API_KEY'# 替换为你的豆包API密钥
API_URL ='https://api.doubao.com/weather'# 豆包天气API的URLdeffetch_weather_data():"""从豆包API获取天气数据"""try:
        response = requests.get(API_URL, params={'apikey': API_KEY})
        response.raise_for_status()# 检查请求是否成功
        data = response.json()# 将响应转换为JSON格式return data
    except requests.exceptions.RequestException as e:print(f"API请求失败: {e}")returnNoneif __name__ =="__main__":whileTrue:
        weather_data = fetch_weather_data()if weather_data:print(weather_data)# 打印获取的天气数据
        time.sleep(3600)# 每小时更新一次数据

2. 数据处理模块

数据处理模块负责对获取的天气数据进行清洗和分析,以提取有用的信息。

import pandas as pd

defclean_and_format_data(raw_data):"""清洗和格式化原始天气数据"""try:# 提取所需的信息,例如温度、湿度、风速等
        processed_data ={'temperature': raw_data['main']['temp'],'humidity': raw_data['main']['humidity'],'wind_speed': raw_data['wind']['speed'],'air_quality': raw_data['air_quality']# 假设豆包API提供了空气质量数据}return processed_data
    except KeyError as e:print(f"数据格式错误: {e}")returnNonedefanalyze_data(processed_data):"""分析天气数据并提供建议"""
    recommendations =[]if processed_data['temperature']>30:# 如果温度大于30度
        recommendations.append("建议开启空调")if processed_data['humidity']<40:# 如果湿度低于40%
        recommendations.append("建议使用加湿器")return recommendations

# 示例使用if __name__ =="__main__":
    raw_weather_data = fetch_weather_data()# 假设已存在fetch_weather_data函数if raw_weather_data:
        formatted_data = clean_and_format_data(raw_weather_data)if formatted_data:
            suggestions = analyze_data(formatted_data)print("系统建议:", suggestions)

3. 控制模块

控制模块负责根据处理后的数据自动调节家居设备,并提供手动控制接口。

importpaho.mqtt.client as mqtt

MQTT_BROKER ='mqtt.example.com'  # 替换为你的MQTT代理地址
MQTT_PORT =1883
MQTT_TOPIC ='home/devices/control'

def on_connect(client, userdata, flags, rc):"""连接MQTT代理时的回调函数"""print(f"连接成功,结果代码: {rc}")

def control_device(command):"""发送控制命令到设备"""
    client = mqtt.Client()
    client.on_connect = on_connect
    client.connect(MQTT_BROKER, MQTT_PORT,60)
    client.loop_start()
    
    client.publish(MQTT_TOPIC, command)  # 发布控制命令
    client.loop_stop()
    client.disconnect()

# 示例使用
if __name__ =="__main__":control_device("turn_on_air_conditioner")  # 示例命令

4. 用户界面模块

用户界面模块使用Flask框架构建一个简单的Web界面,以展示实时数据和历史记录。

1. 更新天气数据线程
from flask import Flask, render_template, jsonify
import threading

app = Flask(__name__)# 假设有一个全局变量来存储最新的天气数据
latest_weather_data ={}@app.route('/')defindex():"""主页,展示实时天气信息和建议"""return render_template('index.html', weather=latest_weather_data)@app.route('/api/weather')defget_weather_data():"""API接口,返回最新的天气数据"""return jsonify(latest_weather_data)defupdate_weather_data():"""定时更新天气数据的线程"""global latest_weather_data
    whileTrue:
        raw_weather_data = fetch_weather_data()# 调用数据获取模块if raw_weather_data:
            formatted_data = clean_and_format_data(raw_weather_data)if formatted_data:
                latest_weather_data = formatted_data  # 更新全局天气数据
        time.sleep(3600)# 每小时更新一次数据# 启动线程以更新天气数据if __name__ =="__main__":
    threading.Thread(target=update_weather_data, daemon=True).start()# 启动后台线程
    app.run(host='0.0.0.0', port=5000)# 启动Flask应用
2. HTML模板示例

在项目目录中创建一个名为

templates

的文件夹,并在其中创建一个

index.html

文件,内容如下:

<!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>智能家庭环境监测</title><linkrel="stylesheet"href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.5.2/css/bootstrap.min.css"></head><body><divclass="container"><h1class="mt-5">实时天气和环境监测</h1><divclass="mt-4"><h3>当前天气状态</h3><p>温度: {{ weather.temperature }} °C</p><p>湿度: {{ weather.humidity }} %</p><p>风速: {{ weather.wind_speed }} m/s</p></div><divclass="mt-4"><h3>系统建议</h3><ul>
                {% for suggestion in suggestions %}
                <li>{{ suggestion }}</li>
                {% endfor %}
            </ul></div></div></body></html>

5. 项目总结

  1. 项目主要功能:
  • 通过豆包API获取实时天气和环境数据。
  • 清洗和格式化数据,提取有效信息。
  • 根据环境数据智能控制家居设备,并提供手动控制接口。
  • 提供一个用户友好的Web界面,展示实时数据和历史数据。
  1. 实现过程:
  • 使用树莓派作为硬件平台,搭建了一个基于Python的智能AI网关。
  • 通过Flask框架构建了Web界面,实现了数据的动态展示。
  • 利用MQTT协议实现了设备的远程控制。
  • 采用多线程机制定期更新天气数据,确保用户获取最新信息。

6. 运行项目

在完成上述所有代码及文件的创建后,确保以下步骤已完成:

  1. 安装所需库: 确保在树莓派上安装了所需的Python库:pip3 install Flask requests pandas paho-mqtt
  2. 运行应用: 在终端中,导航到项目目录并运行主程序:python3 app.py
  3. 访问Web界面: 打开浏览器,访问 http://<树莓派的IP地址>:5000,即可查看实时天气数据和控制界面。
标签: http 人工智能 https

本文转载自: https://blog.csdn.net/qq_40431685/article/details/141357202
版权归原作者 极客小张 所有, 如有侵权,请联系我们删除。

“基于树莓派的智能AI网关接入豆包流程:HTTP/HTTPS、MQTT、Flask、Web可视化(代码示例)”的评论:

还没有评论