前段时间使用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. vue-cli-plugin-electron-builder

    https://nklayman.github.io/vue-cli-plugin-electron-builder/guide/#installation 用cnpm安装 cnpm install ...

  2. python使用replace将数组写入txt文本

    一 概念 1 Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次. 2 用法:str.replace ...

  3. Python使用os模块创建带时间戳的文件夹

    直接上源码: # 导入os模块 import os import time # 创建文件夹函数 def mkdir(path): # os.path.exists 函数判断文件夹是否存在 folder ...

  4. day10-面向对象

    面向对象 1.什么是面向对象? 1.1面向过程&&面向对象 面向过程思想: 步骤清晰简单,第一步做什么,第二步做什么-- 面对过程适合处理一些较为简单地问题 面向对象思想 物以类聚,分 ...

  5. python面向对象(继承)

    一 继承 1.什么是继承1)继承是一种创建新类的方式,新建的类可称为子类或派生类,父类又可称为基类或超类子类会遗传父类的属性2)需要注意的是:python支持多继承 在python中,新建的类可以继承 ...

  6. ArrayList扩容代码分析

    ArrayList扩容机制是在面试中频繁出现的问题,平时了解的比较含糊,特此记录! 注意:每次发生扩容,其容量扩充为原来的1.5倍左右 add方法 public boolean add(E e) { ...

  7. ET8.1(一)简介

    此系列文章逐个内容讲解ET8.1的新特性. ET8.1 发布,带来以下新特性: 1. 多线程多进程架构,架构更加灵活强大,多线程设计详细内容请看多线程设计课程   2. 抽象出纤程(Fiber)的概念 ...

  8. ET介绍——更为便捷高效的AI框架-行为机(Behavior Machine)

    什么是行为机 顾名思义,类比状态机每个节点是一个状态,行为机每个节点是描述一种行为.行为机每个节点之间是互斥的,并且节点相互之间完全不用关心是怎么切换的.这里就不讲状态机跟行为树是怎么做ai的了,这里 ...

  9. #莫比乌斯函数,Miller-Rabin#洛谷 3653 小清新数学题

    题目 求\(\sum_{i=l}^r\mu(i),r-l\leq 10^5,1\leq l\leq r\leq 10^{18}\) 分析 其实有一道可以算是弱化版的题目 这种类型的tricks就是枚举 ...

  10. #模拟#U137456 数字

    题目 牛牛和他的小伙伴们高高兴兴的吃完了蛋糕,吃完蛋糕之后就到了牛牛和他的小伙伴们最喜欢的环节了--猜数 字, 这次是牛牛的生日,大家决定让牛牛来制定规则,由于牛牛的生日是4月7日,所以牛牛特别喜欢数 ...