点此进入CSDN

点此添加QQ好友 加载失败时会显示




使用树莓派远程控制灯继电器开关,dht11温湿度网页显示,树莓派物联网

前段时间使用esp8266搞了个智能家居,通过网页控制,但是没有办法实现远程控制,只能局域网控制,因为我没有平台,使用机制云等平台还需要开发app

使用chatgpt生成的main.py程序

from flask import Flask, render_template, request
import Adafruit_DHT
import RPi.GPIO as GPIO
import threading

app = Flask(__name__)

# 设置LED引脚和DHT11传感器引脚
LED_PIN = 18
DHT_PIN = 4

# 初始化GPIO引脚
GPIO.setmode(GPIO.BCM)
GPIO.setup(LED_PIN, GPIO.OUT)

# 变量用于存储最新的温湿度值
dht_data = {
'temperature': 0,
'humidity': 0
}

# 定时读取DHT11温湿度传感器数据
def read_dht_data():
global dht_data
while True:
humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, DHT_PIN)
dht_data = {
'temperature': temperature,
'humidity': humidity
}

# 启动定时读取线程
dht_thread = threading.Thread(target=read_dht_data)
dht_thread.daemon = True
dht_thread.start()

# 网页主页
@app.route('/')
def index():
led_status = GPIO.input(LED_PIN)
return render_template('index.html', led_status=led_status, dht_data=dht_data)

# 处理LED控制请求
@app.route('/led', methods=['POST'])
def control_led():
action = request.form['action']
if action == 'on':
GPIO.output(LED_PIN, GPIO.LOW)
elif action == 'off':
GPIO.output(LED_PIN, GPIO.HIGH)
# return 'success'
led_status = GPIO.input(LED_PIN)
return render_template('index.html', led_status=led_status, dht_data=dht_data)


if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)

  index.html程序,注意flask要求静态模版放在templates下面

<!DOCTYPE html>
<html>
<head>
<title>Raspberry Pi LED Control</title>
<style>
body {
text-align: center;
}

.container {
background-color: #f2f2f2;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}

.title {
font-size: 50px;
color: #ff00ff;
}

.status {
font-size: 40px;
color: #00ff00;
}

.data {
font-size: 40px;
color: #0000ff;
}

.btn {
font-size: 50px;
background-color: #ffff00;
color: #ff0000;
padding: 20px 40px;
border: none;
border-radius: 10px;
margin-top: 20px;
}
</style>
</head>
<body>
<div class="container">
<h1 class="title">Raspberry Pi LED Control</h1>
<h2 class="status">LED Status: {% if led_status %}Off{% else %}On{% endif %}</h2>
<form method="POST" action="/led">
<button class="btn" type="submit" name="action" value="on">Turn On</button>
<button class="btn" type="submit" name="action" value="off">Turn Off</button>
</form>
<h2 class="data">DHT11 Temperature: {{ dht_data.temperature }}°C</h2>
<h2 class="data">DHT11 Humidity: {{ dht_data.humidity }}%</h2>
</div>
</body>
</html>

  

效果:

 

 

如果需要远程控制,可以注册一个小米球,很好用,速度也很快

posted @   高颜值的殺生丸  阅读(76)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App

作者信息

昵称:

刘新宇

园龄:4年6个月


粉丝:1209


QQ:522414928

点击右上角即可分享
微信分享提示