树莓派读取DHT11实时显示在安卓APP
- 起因
- 树莓派上安装Adafruit_Python_DHT
- 树莓派上创建文件夹DHT11
- 安卓开发
起因
最近在做毕设想做一个安卓APP控制家居,然后就想着用树莓派读取DHT11温湿度来显示在安卓APP上,一开始想着像玩STM32从树莓派上传数据到安卓,但是这个过程目前个人能力有限,想不出来实现的方案,所以就找了另一个办法
树莓派上安装Adafruit_Python_DHT
https://shumeipai.nxez.com/2018/05/16/dht11-temperature-and-humidity-sensor-raspberry-pi.html 参考了这个,感谢
安装包可能有点难下载,可以电脑网页下载下来再传到树莓派上
树莓派上创建文件夹DHT11
参考了一下自己做了一点改变 ,感谢
在里面生成一个文件templates 和一个DHT11_new.py
templates 里面再生成一个DTHweb.html 的文件
DTHweb.html 里面写入这些内容
<h1 style="font-family:verdana;color:red;font-size:30px">阿祖智能家居</h1>
<body bgcolor = "#000033">
<p style="font-family:arial;color:red;font-size:25px;">温度:{{i}} 湿度:{{j}}</p>
<meta http-equiv="refresh" content="2;url=http://192.168.191.2:8899">
</body>
content=“时间秒数;url=http://IP:端口号”>
添加你自己的ip和端口号
DHT11_new.py 文件里添加
import Adafruit_DHT
from flask import Flask, render_template , request
import RPi.GPIO as GPIO
sensor=Adafruit_DHT.DHT11
gpio= 22
humidity,temperature = Adafruit_DHT.read_retry(sensor, gpio)
if humidity is not None and temperature is not None:
# print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
# ese:
# print('Failed to get reading. Try again!')
app = Flask(__name__)
@app.route('/',methods=['GET','POST'])
def index():
# temp = 0
#list_result=[]
#列表
#result= Adafruit_DHT.read_retry(sensor,gpio);
#print(result[0])
#print(type(result[0]))
#print(result[1])
humidity,temperature = Adafruit_DHT.read_retry(sensor, gpio)
# print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
#result1 = humidity
#result2 = temperature
# if humidity is not None and temperature is not None:
# print('Temp={0:0.1f}*C Humidity={1:0.1f}%'.format(temperature, humidity))
#else:
# print('not fail')
return render_template('DTHweb.html',i = str(temperature)+str(u'\u2103'),j= str(humidity)+'%')
#return render_template('DTHweb.html',i = str(result2)+str(u'\u2103'),j= str(result1)+'%')
#return render_template('DTHweb.html',i = str(result[0])+str(u'\u2103'),j= str(result[1])+'%')
if __name__=='__main__':
app.run(host='192.168.191.2', port=8899, debug=True)
app.run(host=‘IP’, port=端口号, debug=True)
添加你自己的ip和端口号
打开到你的文件下
输入 python3 DHT11_new.py
大概会有这样的效果,图片的文件名字我打错了,不过没关紧要照着你自己的命名来
接下来是让树莓派上电就自动启动显示
sudo nano /etc/rc.local
在exit 0 前添加
cd 的文件路径根据你自己的来
然后运行文件 最后的&不能省略这样上电后才能在后台运行
ctrl + o 然后enter确定 ctrl + x 退出
重新上电看看
sudo reboot
上电后看看有没有在后台运行
sudo systemctrl status rc.local
成功
安卓开发
默认大家都有一点安卓开发的基础
创建
public void WarmWebView_Ctrl() //WarmWebView控制函数
{ //获得控件
WebView Warm_webview = (WebView) findViewById(R.id.Warm_webview);
//访问网页
Warm_webview.loadUrl("http://192.168.191.2:8899");
//系统默认会通过手机浏览器打开网页,为了能够直接通过WebView显示网页,则必须设置
Warm_webview.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//使用WebView加载显示url
view.loadUrl(url);
//返回true
return true;
}
});
}
Warm_webview.loadUrl(“http://IP:端口号”);
同理用你自己的IP和端口号
XML文件里一定要加上
运行效果