前段时间使用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. Zabbix“专家坐诊”第187期问答汇总

    问题一 Q:zabbix server 5.0有办法不通过脚本监控SSL证书到期时间么? A:目前还是流行通过脚本方式去获取. Q:如果是通配符证书应该怎么监控? A:通过解析域名获取对应的过期时间的 ...

  2. springboot使用pagehelper

    自己写的用户系统项目需要加个分页,之前都是用现成的,或者使用在sql里面拼接分页查询,这次任务紧急想直接找个包实现吧,找了很多博客看了都不行啊,不知道为啥,最后还是找了之前maven使用的包才行,简单 ...

  3. 网络流媒体协议的联系与区别 (RTP RTCP RTSP RTMP HLS)(转)

    网络流媒体协议的联系与区别(RTP RTCP RTSP RTMP HLS) RTP RTCP RTSP RTMP HLS 区别与联系 RTP传输流媒体数据.RTCP对RTP进行控制,同步.RTSP发起 ...

  4. 对角矩阵try

    \begin{bmatrix}1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\end{bmatrix}

  5. [STM32 HAL]一种可能不错的DMA处理串口数据方案

    [STM32 HAL]一种可能不错的DMA处理数据方案 原文链接:https://blog.csdn.net/youmeichifan/article/details/51750435?spm=100 ...

  6. 基于Rust的Tile-Based游戏开发杂记(01)导入

    什么是Tile-Based游戏? Tile-based游戏是一种使用tile(译为:瓦片,瓷砖)作为基本构建单位来设计游戏关卡.地图或其他视觉元素的游戏类型.在这样的游戏中,游戏世界的背景.地形.环境 ...

  7. 工作记录:TypeScript从入门到项目实战(项目篇)

    Vue项目中使用 前面两篇介绍过TypeScript基础和较深入的东西,本章介绍如何在Vue项目中使用. 项目创建 创建项目直接使用Vue-cli创建 下面是步骤: 1.运行vuecli, 2.选择合 ...

  8. 工作中常用且容易遗忘的 CSS 样式清单

    注:本文转载自公众号 Vue中文社区的一篇文章 1.文字超出部分显示省略号 单行文本的溢出显示省略号(一定要有宽度)  p{    width:200rpx;    overflow: hidden; ...

  9. html 本地预览图片 图片上绘制矩形框

    效果如图 完整html代码如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" / ...

  10. C++中自定义事件与委托

    自定义事件,和委托其实是一类操作. 在蓝图中都表现为红色方块. 自定义事件通过DECLARE_EVENT(ClassName, EventName)来创建一个属于ClassName的EventName ...