vc 控制台添加托盘显示_开源:ESP8266读DHT11温湿度,小程序实时显示

第一、原理讲解

原理简述:利用发布订阅模式。第一步,先读取DHT11温湿度数值,第二步,新建主题,然后esp8266往这个主题发送消息,第三步。小程序通过http API接口获取数据。小程序控制原理:esp8266订阅了一个主题,小程序往这个主题发消息,esp8266就可以收到消息,就可以执行相关控制指令了(开/关函数)

关于发布订阅:

订阅(订阅):订阅给定的一个主题/频道的信息。 发布(发布)将信息发送到指定的主题/频道。

只有订阅该主题的设备才可以收到发往该主题的消息。

通俗的来讲:就是像邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果博主发表了文章,那么100个人就会同时收到通知邮件,订阅/发布模式就是这样的原理。

如果还不理解的话再通俗讲一下,就像生活中听收音机,要想听收音机,肯定就是调频啦,只有在正确的频道上面,我们才能听得到好听的节目,所以说订阅首先要订阅一个频道/主题,只有订阅了该主题,我们才能收到发往该频道/主题的消息。

程序讲解:在本示例中,ESP8266 有两个角色,一个是temp(传感器数据)主题消息的发布者,esp8266往这个主题推送消息,小程序就可以收到传感器数据了。 esp8266联网后,订阅light002,手机往这个主题推送消息,esp8266就能收到手机的控制的指令了。

第二、ESP8266读取DHT11

003968aa09ce5f249ce21451a236d994.png

这里使用的是D4口。

本demo 是利用arduino IDE开发,关于arduino IDE 的ESP8266环境配置可参考:环境配置: 点击跳转

安装库 本案例使用一个非常简单易用且与ESP8266配合使用的是Simple DHT传感器库。可以通过Arduino IDE Library Manager轻松安装该库。


在 arduino IDE上方选项处----> 工具--->管理库,然后直接搜索dht11即可。点击安装库,如下图:

b9239a5a20a8101fe0f1463d9f97377c.png

测试程序:

#include <SimpleDHT.h>// for DHT11, 
//      VCC: 5V or 3V
//      GND: GND
//      DATA: 2
int pinDHT11 = D4;
SimpleDHT11 dht11(pinDHT11);void setup() {Serial.begin(115200);
}void loop() {// start working...Serial.println("=================================");Serial.println("Sample DHT11...");// read without samples.byte temperature = 0;byte humidity = 0;int err = SimpleDHTErrSuccess;if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);return;}Serial.print("Sample OK: ");Serial.print((int)temperature); Serial.print(" *C, "); Serial.print((int)humidity); Serial.println(" H");// DHT11 sampling rate is 1HZ.delay(1500);
}

正常工作的话,串口会正常输出的,如下图所示:

9083e3fe64fd52fc2c94fe6b61ecef34.png

第三、温湿度推送到云端

如果上一步的温湿度可以读取输出,那么就可以在上版的基础上,把数据上传到云端。

增加了按钮控制,数据用#号包裹,以便app采用字符串切割,分割出来数据,&msg=#23#80#on#rn,即#温度#湿度#按钮状态#,app端会根据#号分割字符串进行取值,以便显示。

如果上传的数据不止温湿度,可在#号后面继续添加&msg=#23#80#data1#data2#data3#data4#rn,app字符串分割的时候,要根据上传的数据进行分割

升级版程序下载:

点击下载 http://www.cloud.bemfa.com/zip/dht11_LED.zip

需要修改的地方

///****************需要修改的地方*****************/////WIFI名称,区分大小写,不要写错
#define DEFAULT_STASSID  "newhtc"
//WIFI密码
#define DEFAULT_STAPSW "qq123456"
//用户私钥,可在控制台获取,修改为自己的UID
String UID = "7d54f85af42976ee3c2693e692a6bb59";
//主题名字,可在控制台新建
String TOPIC = "temp"; //用于传输温湿度的主题
//DHT11引脚值
int pinDHT11 = D4;  //连接dht11的引脚
//单片机LED引脚值
const int LED_Pin = D2;  //假设连接led的引脚
//主题名字,可在控制台新建
String TOPIC2  = "light002";  //用于led控制的主题///*********************************************///

巴法创客云控制台 新建一个主题,主题名字随意,例如temp,本实例用用temp,使用示例代码时应修改为自己的主题名字,字母或数字或字母加数字组合。UID为用户私钥,在 巴法创客云控制台 注册登陆后可获得。 登陆完成后,可在控制台看到自己的私钥UID,如图所示:

e7bc80b9733ab08e4188328ca6e78ece.png

创建主题,在控制台,可创建主题。

  • 第一输入主题,字母或数字或字母+数字组合。
  • 点击创建主题,要创建两个主题,一个主题用来传递传感器数据,另一个主题用来进行LED灯的控制。在本例程中一个主题名字是:temp ,另一个主题名字是:light002,可自定义或修改,不过下方小程序里面的主题名字要和esp8266的主题保持一致,以便正常的往同一个主题发布订阅。

579591921e269caa831f76fd31aff07c.png

WIFI名称为自己的路由器WIFI名称,区分大小写,写错会导致连接不上网络的。

例程中,每两秒上传一次数据:

if(millis() - preHeartTick >= upDataTime){//上传数据preHeartTick = millis();/*****************获取DHT11 温湿度*****************/// read without samples.byte temperature = 0;byte humidity = 0;int err = SimpleDHTErrSuccess;if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);return;}/*********************数据上传*******************/String upstr = "";upstr = "cmd=2&uid="+UID+"&topic="+TOPIC+"&msg=#"+temperature+"#"+humidity+"#"+bt_status+"#rn";sendtoTCPServer(upstr);upstr = "";}

如果路由器有网络的话,数据会自动上传,可在巴法创客云控制台 刷新网页,即可看到上传的数据。如下图所示:

5ec68505d11a7f8d2ac9934399725b9b.png

数据上传时用#号进行了封装,27是温度,24是湿度,off是上传的灯的状态。

第四、小程序开发

在 公众平台注册小程序账号,拿到小程序 appid,长的大概是这样:34a2063de5cec04b,下面导入项目的时候会用到。

右侧点击 -开发--》开发设置--》下方服务器域名处,点击修改,在request合法域名处,添加域名https://api.bemfa.com/ 保存提交即可。如下图。

6b8965b726d9f82c2664503ab70f6e63.png

下载安装开发者工具。 下载demo示例程序。下载地址: 点击下载

打开开发者工具,小程序项目,导入项目。在目录处选择刚刚下载解压的demo示例程序,AppID处填入你的小程序AppID,然后点击下方导入即可。如下图。

3912d65871413940219ef0571a3041e1.png

本示例程序非常简单,各位大神可以继续开发添加各种功能,添加背景,优化色彩等等,如果只是简单使用,只需修改/pages/index/index.js 文件中uid 和topic 信息为自己的即可,这里的uid和topic需要和esp8266填入的uid和topic相同,这里有两个主题,一个用于传输温度和湿度,一个用于控制LED。如下图。

e490572616437716de8273f7a440a4e8.png

修改完毕后,ctrl+s 保存修改。可以点击左边屏幕上的按钮进行调试,如下图。

2d6714cab8394fc30e60c2551246a51c.png

console控制台可以查看小程序的调试信息。默认每2秒会自动请求一下服务器上的数据,以便查看esp8266的状态信息。点击打开或者关闭按钮,打开esp8266串口调试助手,可查看esp8266是否收到指令,如果第一步esp8266已联网,都是可以收到信息的。

如果界面和其他功能都开发完毕。可以点击开发者工具的上面的上传按钮,如下图。

abbf5785bffc610e894ec61994ec90a3.png

上传成功后,再登陆刚刚注册的公众平台,在版本管理处,可以看到自己刚刚上传的小程序,提交审核即可,等一天左右,一般都会通过,通过后登陆公众平台,提交发布即可。如果是自己使用的,做好加上登陆验证功能,比如验证匹配一下某个字符串是否正确等等,不然小程序上线后别人也可以随意控制了。

8ab5b3926edb473ff73889ef57330e5b.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python if elif else_python:通讯录(字典+while+if/else)

Hello,World.我是很久很久很久都没有更新的土土[看]但是即便如此呢我这个人也不喜欢拖拖拉拉的东扯西扯一上来咱们就来讲讲正题勿怪[笑哭]1.使用字典构建通讯录mydic{}//定义一个字典2.使用whlie循环判断是否继续进行while True://循环开始break//循环结束3.使用if/elif/else语…

有BUG!!!慎用default文本

前言下面这段代码&#xff0c;你能发现什么问题吗&#xff1f;public static int? Test1(string str) {return str switch{"A" > 1,"B" > 2,"C" > 3,_ > default,}; } public static int? Test2(string str) {switch (str){case &…

老师看完都吐血的五道题

全世界只有3.14 % 的人关注了 爆炸吧知识 老师看完都要吐血的五道题哈哈哈哈哈虽然小编觉得最后一答完全没问题哈哈哈图片来源于网络&#xff0c;如有侵权请联系删除。你点的每个在看&#xff0c;我都认真当成了喜欢

JDK5.0新特性--可变参数

2019独角兽企业重金招聘Python工程师标准>>> /*** 可变参数*/ public class VariableParamater {/*** 统计2个或多个数的和*/public static void main(String[] args) {//计算2个数的和sum(10,15);/** 问题&#xff1a;如果要计算3个数、4个数、5个数或n个数的和&am…

欧几里得距离网络_使用Tensorflow对象检测模型和OpenCV的社交距离和遮罩检测器...

将深度学习和计算机视觉相结合的隔离项目社会距离化这个术语已席卷全球&#xff0c;正在改变着我们的生活方式。社交距离也称为“物理距离”&#xff0c;是指在您自己与其他并非来自家庭的人之间保持安全的空间。随着该国开始在激增的COVID-19案件中发挥作用&#xff0c;保持社…

python 实现点击右键用某个程序打开功能_工欲善其事,必先利其器(1)——Python开发环境安装与配置...

Life Is Short, You Need Python.近年来随着Python的火爆&#xff0c;很多人想要学习并使用Python&#xff0c;本文将详细介绍一套Python开发环境的安装与配置&#xff0c;相比Python自带的IDEL&#xff0c;在此环境下将极大的提高开发效率。下面就让我们一步步的开始安装&…

5分钟盗走你的隐私照片,这个全球性漏洞到底有多可怕

全世界只有3.14 % 的人关注了爆炸吧知识转自&#xff1a;好机友ID&#xff1a;goodjiyou这个时代&#xff0c;大家对电脑出现漏洞&#xff0c;可能已经习以为常。但如果机哥告诉大家&#xff0c;这个漏洞能够在 5 分钟内&#xff0c;破解并盗取你所有加密文件&#xff0c;而且还…

我的世界命令计算机,我的世界有哪些指令?电脑版指令大全

在我的世界游戏中玩家可以依靠指令做很多现实生活中都可以做的事情&#xff0c;甚至有些现实中做不到的事情&#xff0c;比如上天堂&#xff0c;所以指令对于每个我的世界的玩家来说都非常重要&#xff0c;今天小编给大家介绍我的世界指令大全&#xff1a;我的世界指令大全&…

道德经和译文_老子《道德经》第九章原文、注释、译文、导读及解析(收藏版)...

《道德经》被誉为“万经之王”&#xff0c;内容涵盖哲学、伦理学、政治学、军事学等诸多学科&#xff0c;曾被后人尊奉为治国、齐家、修身、为学的宝典。它对我国的哲学、科学、政治、宗教等都产生了深远的影响&#xff0c;体现了古人的一种世界观和人生观。《道德经》作为道教…

StackOverflow程序员推荐:每个程序员都应读的30本书

“如果能时光倒流&#xff0c;回到过去&#xff0c;作为一个开发人员&#xff0c;你可以告诉自己在职业生涯初期应该读一本&#xff0c;你会选择哪本书呢&#xff1f;我希望这个书单列表内容丰富&#xff0c;可以涵盖很多东西。” 很多程序员响应&#xff0c;他们在推荐时也写下…

超震撼!你没见过的24张震撼照片

全世界只有3.14 % 的人关注了爆炸吧知识话不多说&#xff0c;这些照片&#xff0c;每张都很有价值&#xff1a;艾菲尔铁塔&#xff0c;从底部往上看360度的彩虹高科技停车&#xff08;大众沃尔夫斯堡汽车厂&#xff09;被整理过的蜂窝沙特阿拉伯的农田两棵树共享一个枝干两位接…

使用 baget 搭建 nuget 私有服务

现在几乎所有语言都提供包管理工具&#xff0c;比如 JavaScript 的 npm &#xff0c;Java 的 Maven &#xff0c;Dart 的 pub 。.Net 程序当然是 NuGet 。NuGet 也出现很多年了&#xff0c;奇怪的是居然还有很多人不知道。现在软件结构越来越复杂&#xff0c;在多个项目中往往需…

xp计算机dns怎么设置,XP系统dns怎么设置?XP系统dns的设置方法

在使用XP系统浏览网页时&#xff0c;大家有没碰到网页打开很慢&#xff0c;而网速检测又显示正常的情况。为什么会出现这样的情况呢&#xff1f;一方面可能是你的电脑中毒了&#xff0c;另一方面可能是你的dns选择的不够好。那么dns要怎么设置才最好呢&#xff1f;下面小编以XP…

线程打印_面试题:用程序实现两个线程交替打印 0~100 的奇偶数

作者&#xff1a;dadiyang来源&#xff1a;https://blog.csdn.net/dadiyang/article/details/88315124面试场景面试官&#xff1a;Java多线程了解吗&#xff1f;你给我写一下&#xff0c;起两个线程交替打印0~100的奇偶数。小黄&#xff1a;啊&#xff1f;面试官&#xff1a;就…

asp.net添加删除表格_如何用openpyxl自动化编写Excel电子表格

有很多不同的东西你可以写到电子表格&#xff0c;从简单的文本或数字值到复杂的公式&#xff0c;图表&#xff0c;甚至图像。创建一个简单的电子表格之前&#xff0c;大家看到了一个非常快速的例子&#xff0c;就是如何将 "Hello world!"写进电子表格中&#xff0c;所…

纯css3实现的鼠标悬停动画按钮

今天给大家带来一款纯css3实现的鼠标悬停动画按钮。这款按钮鼠标经过前以正方形的形式&#xff0c;当鼠标经过的时候以动画的形式变成圆形。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <div><span></span></div> …

如何交到一个女朋友?

1 北京的路&#xff0c;上海的路和重庆的路2 这兔子是吃弹簧长大的吧&#xff01;3 猫和老鼠原来是真的4 把水凝胶珠投入有颜色的水&#xff0c;过一会儿之后...5 为了同学得分&#xff0c;老师有多努力你知道吗&#xff1f;6 不同年龄段爱用的表情7 来自一个幼儿园小男生的教学…

浅析 Dapr 里的云计算设计模式

Dapr 实际上是把分布式系统 与微服务架构实践的挑战以及k8s 这三个主题的全方位的设计组合&#xff0c;特别是Kubernetes设计模式 一书作者Bilgin Ibryam 提出的Multi-Runtime Microservices Architecture&#xff0c;中译参见敖小剑的博客: [译] 多运行时微服务架构。分布式系…

Linux Kickstart无人值守安装(上)

Linux Kickstart无人值守安装 在我们的网络维护生涯中&#xff0c;有不少朋友&#xff0c;感觉到自己在机械的做一件事情&#xff0c;在无聊、无趣和无奈中工作。尤其一些简单重复的操作更容易让大家感到工作的无趣。今天将给大家介绍如何大规模的部署RedHat Linux操作系统&…

path manipulation怎么解决_干货!终于!解决macOS下pyenv安装python3.8.2缺少tkinter模块的问题!...

前言&#xff1a;笔者不过是一个刚立下flag要学习Python的小白&#xff0c;&#xff08;这也是笔者的第一篇网文、知乎文&#xff0c;如果没用&#xff0c;求轻虐&#xff09;&#xff0c;为此还冲动傻傻地配了一台2019款13寸的MacBook Pro。电脑配置&#xff08;作为参考&…