前段时间使用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. MVC阶段所有框架完整组合示例

    思路:创建工程,导包.编辑配置文件包括 核心spring配置   SpringConfig myBatis 配置文件  mybatisConfig  JdbcConfig  jdbc.properti ...

  2. 遥感图像镶嵌拼接:ENVI的Pixel Based Mosaicking工具操作方法

      本文介绍基于ENVI软件,利用"Pixel Based Mosaicking"工具实现栅格遥感影像镶嵌拼接的方法.   首先需要说明的是,本文需要镶嵌的遥感影像并不含地理参考信 ...

  3. folder-alias vscode左侧目录树 起别名 插件 (git decorations)

    folder-alias vscode左侧目录树 起别名 插件 插件 效果 不足 文件路径或目录路径中包含中文 会挂不上别名,纯英文路径没问题 有修改后,git会覆盖,不显示别名 个人意见 我的项目都 ...

  4. TP6框架--EasyAdmin学习笔记:excel的数据,图片处理

    这是我写的学习EasyAdmin的第七章,这一章我给大家分享下如何处理excel中的数据,图片 原理就是使用easyadmin中封装好的phpexcel,来进行数据的导入,view层我们需要一个用了导 ...

  5. vue-router动态注册

    来源 写路由时每新建一个路由都需要import一下或其他方式(如箭头函数import)很是麻烦,有麻烦就有需求,于是以下这篇文章就来了 吹水 要想动态注册路由,那么就需要制定规则,即每个路由有一定的规 ...

  6. 为什么医疗保健需要MFT来帮助保护EHR文件传输

    毫无疑问,医疗保健行业需要EHR技术来处理患者,设施,提供者等之间的敏感患者信息.但是,如果没有安全的MFT解决方案,您将无法安全地传输患者文件,从而使您的运营面临遭受数据泄露,尴尬,声誉损失以及随之 ...

  7. KingbaseES V8R6备份恢复案例之---备份crond计划任务的调整

    案例说明: 在KingbaseES V8R6数据库通常备份建立的crond任务,默认由root用户建立,写入到/etc/cron.d/KINGBASECRON文件中,在有的生产环境限制了普通用户使用r ...

  8. C++ 中的 volatile 和 atomic

    C++ 中的 volatile 和 atomic 0. TL;DR std::atomic 用于多线程并发场景,有两个典型使用场景: 原子操作:对 atomic 变量的操作(读/写/自增/自减)仿佛受 ...

  9. 5W1H聊开源之What——开源是什么?

    美国政治传播学家拉斯韦尔提出了5W传播模式,经过后人的不断运用和发展总结,形成了一套逐渐成熟的"5W1H"体系,即:对选定的项目.工序或操作,都要从原因(何因Why).对象(何事W ...

  10. 一文总结ACE代码框架

    一.前言 ACE_Engine框架是OpenAtom OpenHarmony(简称"OpenHarmony")的UI开发框架,为开发者提供在进行应用UI开发时所必需的各种组件,以及 ...