树莓派读取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

android 读取应用安装目录 安卓app读取应用列表_python


大概会有这样的效果,图片的文件名字我打错了,不过没关紧要照着你自己的命名来

android 读取应用安装目录 安卓app读取应用列表_后端_02


接下来是让树莓派上电就自动启动显示

sudo nano /etc/rc.local

android 读取应用安装目录 安卓app读取应用列表_后端_03


在exit 0 前添加

cd 的文件路径根据你自己的来

然后运行文件 最后的&不能省略这样上电后才能在后台运行

ctrl + o 然后enter确定 ctrl + x 退出

重新上电看看

sudo reboot

上电后看看有没有在后台运行

sudo systemctrl status rc.local

android 读取应用安装目录 安卓app读取应用列表_后端_04

成功

安卓开发

默认大家都有一点安卓开发的基础

创建

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和端口号

android 读取应用安装目录 安卓app读取应用列表_python_05


XML文件里一定要加上

运行效果

android 读取应用安装目录 安卓app读取应用列表_flask_06