前段时间使用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>

  

效果:

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

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

  1. 在树莓派上读取DHT11温湿度传感器-python代码实现及常见问题(全面简单易懂)

    最近由于自己的课题需要,想要用在树莓派上使用DHT11温湿度传感器来读取空气中温湿度,遇到了几个问题,解决之后也对之前的知识进行了回顾,总结,特整理如下,希望能给也在学习树莓派的小伙伴们带来一些帮助. ...

  2. 树莓派使用python+继电器控制220V灯泡

    需要的材料 1.继电器:继电器是一种电控制器件,它实际上是用小电流去控制大电流运作的一种"自动开关",我们这里用它来控制电灯.控制了继电器就等于控制了电灯. 我购买的是某宝上3块钱 ...

  3. 花 1 小时,开源设计 LoRa 继电器开关

    提示1:锐米所有 LoRa 产品严格遵循国标标准的 LoRaWAN 协议. 提示2:您可以免费复制,修改和商用本项目,请注明锐米原创. 提示3:如果您有其他 LoRa 需求或建议,欢迎联系锐米 sup ...

  4. 【雕爷学编程】Arduino动手做(55)--DHT11温湿度传感器

    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践(动手试试)出真知的理念,以学习和交流为目的,这里准备 ...

  5. Arduino和C51开发DHT11温湿度传感器

    技术:51单片机.Arduino.DHT11.温湿度传感器.传感器   概述 学习单片机离不开对传感器的学习,本文主要介绍DHT11温湿度传感器的使用方法,同学也可以了解更多的传感器,这对你以后开发产 ...

  6. DHT11温湿度传感器编程思路以及代码的实现(转载)

    源自:https://blog.csdn.net/qq_34952376/article/details/81193938 在我们刚开始进入单片机的学习中,练习写传感器的时序是必不可少的,其实我比较推 ...

  7. STC15系列通用-STC15F2K60S2/STCW4K32S4读取DHT11温湿度传感器数据串口输出代码实例工程免费下载

    //为了方便大家调试,另附程序工程共大家下载,下载地址:https://www.90pan.com/b1908750 ​ //************************** //程序说明:stc ...

  8. 云中树莓派(3):通过 AWS IoT 控制树莓派上的 Led

    云中树莓派(1):环境准备 云中树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示 云中树莓派(3):通过 AWS IoT 控制树莓派上的Led 云中树莓派(4):利用声音传感 ...

  9. 【树莓派】【转】利用USB网卡配置树莓派为无线热点

    由于Wifi很慢,基本不可用:树莓派有无线网卡,恰好看到有文章用树莓派来做无线热点,利用树莓派来共享无线网络.比较有用,转发后续尝试. 本文转自:https://www.embbnux.com/201 ...

  10. 树莓派使用DHT11温湿度传感器

    一.相关介绍 DHT11介绍: DHT11是一款比较便宜的温湿度传感器模块.读取数据只需要占用一个IO口.能够同时测量温度和相对湿度. DHT11的数据手册可以看这里:http://wenku.bai ...

随机推荐

  1. vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案

    vite ts 安装 js-cookie 库,vscode找不到类型说明(有波浪线),解决方案 先安装库 https://www.npmjs.com/package/js-cookie 再安装类型 h ...

  2. 关于vue.js:iview-Bug-5114在iview的Poptip气泡提示内调用DatePicker出现遮挡或同时关闭窗口等冲突问题[转]

    转自:https://lequ7.com/guan-yu-vuejsiviewbug5114-zai-iview-de-poptip-qi-pao-ti-shi-nei-diao-yong-datep ...

  3. linux环境下基于python的OpenCV 保存视频

    一 概念 在OpenCV中保存视频使用的是VedioWriter对象,在其中指定输出文件的名称, A 创建视频写入的对象 out = cv2.VideoWriter(filename,fourcc, ...

  4. ffmpeg播放器-音视频解码流程

    目录 音视频介绍 音视频解码流程 FFmpeg解码的数据结构说明 AVFormatContext数据结构说明 AVInputFormat数据结构说明 AVStream数据结构说明 AVCodecCon ...

  5. 面试官:volatile如何保证可见性的,具体如何实现?

    写在开头 在之前的几篇博文中,我们都提到了 volatile 关键字,这个单词中文释义为:不稳定的,易挥发的,在Java中代表变量修饰符,用来修饰会被不同线程访问和修改的变量,对于方法,代码块,方法参 ...

  6. QT 智能指针 QPointer QScopedPointer QSharedPointer QWeakPointer QSharedDataPointer 隐式共享 显示共享

    QPointer QPointer 使一种受保护的指针,当其引用的对象被销毁时,它会被自动清除(但是,销毁引用对象还是必须手动delete).QPointer所指向的对象必须是QObject或其派生类 ...

  7. 2024-03-27:用go语言,多维费用背包。 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个

    2024-03-27:用go语言,多维费用背包. 给你一个二进制字符串数组 strs 和两个整数 m 和 n, 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 ...

  8. https://codeforces.com/gym/496137

    AB略. C:想复杂了. 只要判断最大的那个能不能继续吃即可. D:我的做法是建完全图然后跑生成树. 实际上可以这么考虑:和a[1]不同的直接连,相同的就和上一轮和a[1]不同的店去连可以O(n). ...

  9. python [pymysql] 操作MySQL数据库

    python [pymysql] 操作MySQL数据库 连接.关闭数据库 def get_conn_(): """ :return: 连接,游标 "" ...

  10. 实现一个简单的echarts词云图PythonFlask

    cloud.html 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta char ...