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

发布时间 2023-05-26 23:43:40作者: 高颜值的殺生丸

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

使用chatgpt生成的main.py程序

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

app = Flask(__name__)

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

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

GPIO.output(LED_PIN, GPIO.HIGH)
# 获取DHT11温湿度传感器数据
def get_dht_data():
    humidity, temperature = Adafruit_DHT.read_retry(Adafruit_DHT.DHT11, DHT_PIN)
    return {
        'temperature': temperature,
        'humidity': humidity
    }

# 网页主页
@app.route('/')
def index():
    led_status = GPIO.input(LED_PIN)
    dht_data = get_dht_data()
    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)
    dht_data = get_dht_data()
    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;
        }
    </style>
</head>
<body>
    <h1>Raspberry Pi LED Control</h1>
    <h2>LED Status: {% if led_status %}On{% else %}Off{% endif %}</h2>
    <form method="POST" action="/led">
        <button type="submit" name="action" value="on">Turn On</button>
        <button type="submit" name="action" value="off">Turn Off</button>
    </form>
    <h2>DHT11 Temperature: {{ dht_data.temperature }}°C</h2>
    <h2>DHT11 Humidity: {{ dht_data.humidity }}%</h2>
</body>
</html>

  

效果:

Raspberry Pi LED Control

LED Status: Off

 

DHT11 Temperature: 29.0°C

DHT11 Humidity: 50.0%

 

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