ESP8266+blinker测温湿度
文章目录
- blinker数据反馈
- 一.简介
- 二.心跳包
- 三.心跳包初始化ui
- 1.代码部分
- 2.ui库的使用
- 四.温湿度测试
- 1.DHT 库的安装
- 2.app端ui组件设置
- 3.代码部分
- 4.测试
- 四.总结
blinker数据反馈
一.简介
我们在做智能家居项目的时候,数据的反馈是必不可少的,比如测温度湿度等等,将得到的数据通过服务器发送到我们的app端,实时的观测数据,今天简=简绍的是blinker 的心跳包来反馈数据
二.心跳包
我们先来了解一下什么是心跳包
在blinker app上,点击设备图标进入设备控制页面时,app会向设备发送一个状态查询指令(心跳查询)
此后,WiFi设备,每59秒会返回一次心跳包;Ble(蓝牙)设备,每29秒返回一次心跳包
状态查询指令
{"get":"state"}
默认状态下,wifi接入设备会返回
{"state":"online"}
BLE(蓝牙)接入设备会返回
{"state":"connected"}
blinker提供了改写心跳包内容的方法,使用此方法可将一些数据放置在心跳包中返回,该方法可用于数据同步、状态查询。
但是注意
设备端不主动发送数据(我们在app上不刷新的话我们检测的数据是不会变得),一切反馈都是由客户端(APP)发起。这样设计可以节约服务器资源,避免浪费。
三.心跳包初始化ui
1.代码部分
#define BLINKER_WIFI#include <Blinker.h>char auth[] = "Your Device Secret Key";
char ssid[] = "Your WiFi network SSID or name";
char pswd[] = "Your WiFi network WPA password or WEP key";
// 新建组件对象
BlinkerButton Button1("btn-abc");// 按下按键即会执行该函数
void button1_callback(const String & state) {BLINKER_LOG("get button state: ", state);
}// 心跳包函数
void heartbeat() {Button1.icon("fas fa-lightbulb");Button1.color("#fddb00");Button1.text("关灯","打开啦");Button1.print("on");
}void setup() {// 初始化串口Serial.begin(115200);// 初始化有LED的IOpinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, HIGH);// 初始化blinkerBlinker.begin(auth, ssid, pswd);Button1.attach(button1_callback);//注册一个心跳包Blinker.attachHeartbeat(heartbeat);
}void loop() {Blinker.run();
}
上面代码的目的就是在进入软件控制界面后初始化ui界面
下面代码是对Button1 组件的初始化,当用户调用Button1.print(“on”);这些设置才会一并发送,APP收到这些数据,即会改变组件上显示的内容
Button1.icon("fas fa-lightbulb");Button1.color("#fddb00");Button1.text("关灯","打开啦");
2.ui库的使用
我们可以在下面 图标库中找到我们想要的图标
点击此处:图标库
我们只需要根据 图标的名字来更换 下面代码中 fa-
后面的内容就可以了
Button1.icon("fas fa-lightbulb");
四.温湿度测试
在这里我就用DHT11模块来测量温湿度数据,然后再通过心跳包的形式发送到app上面
1.DHT 库的安装
首先我们下载DHT库,然后将这个库文件解压到我们arduino 软件安装目录下的 libraries文件夹下
下载地址:DHT11库文件
2.app端ui组件设置
首先我们添加两个数据组件,将数据键值分别设为humi(温度)和temp(湿度) 如图
此图借用的是Arduino中文社区的图片
我们可以再添加一个调试组件,用以观察APP收到的数据,方便调试程序。
3.代码部分
#define BLINKER_WIFI#include <Blinker.h>
#include <DHT.h>char auth[] = "774c60aac10f"; //上一步中在app中获取到的Secret Key(新建设备的秘钥)char ssid[] = "ZFQ"; //你的WiFi热点名称char pswd[] = "123456789"; //你的WiFi密码BlinkerNumber HUMI("humi");
BlinkerNumber TEMP("temp");#define DHTPIN 2 //接的是GPIO2端口#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)DHT dht(DHTPIN, DHTTYPE);float humi_read = 0, temp_read = 0;void heartbeat()
{//反馈温度数据HUMI.print(humi_read);//设置ui组件图标和颜色HUMI.icon("fas fa-thermometer-2");HUMI.color("#fddb10");//反馈湿度数据TEMP.print(temp_read);TEMP.icon("fas fa-heart");HUMI.color("#fddb01");
}void setup()
{Serial.begin(115200);BLINKER_DEBUG.stream(Serial);BLINKER_DEBUG.debugAll();pinMode(LED_BUILTIN, OUTPUT);digitalWrite(LED_BUILTIN, LOW);Blinker.begin(auth, ssid, pswd);Blinker.attachHeartbeat(heartbeat);dht.begin();
}void loop()
{Blinker.run();float h = dht.readHumidity();float t = dht.readTemperature();if (isnan(h) || isnan(t)){BLINKER_LOG("Failed to read from DHT sensor!");}else{BLINKER_LOG("Humidity: ", h, " %");BLINKER_LOG("Temperature: ", t, " *C");humi_read = h;temp_read = t;}Blinker.delay(2000);
}
注意
配置自己的模块联网代码,不会的可以看一下 前一个教程
注意配置
#define DHTPIN D7
模块的io口,我们可以根据自己的连接来定义这个宏,不同的开发板书写上可能会不同,大家注意一下我们根据我们所所选择的模块,来在代码此处修改
#define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321 //#define DHTTYPE DHT21 // DHT 21 (AM2301)
blinker下的所有延时操作,都需要使用Blinker.delay(val);替代,否则会导致设备断开连接
同时我们也可以自己可以在心跳包里添加ui组件美化的代码,来优化组件
4.测试
我们连接好开发板,将程序烧写进去,我们就可以看到对应的数据了
四.总结
这篇文章参考arduino中文社区里的教程,自己测试了一边,有的地方书写的不够详细,包括如何和DHT11连接,如何设置IO口,以及程序如何下载进开发板,这些问题都挺简单的,不会的可以先去看一下前一篇文章,blinker点灯的文章,同时也可以和我交流
ESP8266+blinker测温湿度相关推荐
- 小爱同学+ESP8266+blinker点灯
系列文章目录 第一章 ESP8266+blinker 点灯 文章目录 系列文章目录 小爱同学控制 一.简介 二. app端添加设备 三. 小爱同学接入 1.简绍 2.代码部分 3.代码讲解 4.米家的 ...
- ESP8266+Blinker 的万物互联(智能家居篇)
前面学习了使用ESP8266将温湿度等上传到阿里云平台,于是我想起来了万物互联,就想先做个有关智能家居的,通过查阅资料发现了Blinker(轻松物联网).下面是演示视频 Esp8266物联网 文章目录 ...
- 从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座
从零开始使用ESP8266 + Blinker 实现小爱同学可控可读取状态的多路插座 前言 一直对8266很感兴趣,放寒假嘛,也挺闲,刚好手头有原来买下的Nodemcu,就拿来做个多路开关 参考资料我 ...
- 【stm32c8t6+esp8266上传温湿度到Onenet云平台】
stm32c8t6+esp8266上传温湿度到Onenet云平台 最近做的一个小项目中需要将获取的数据到云平台,我选择的是onenet平台,下面会根据个人学习过程分享如何使用onenet平台以及如何通 ...
- ESP32+dht11/sht30测温湿度(arduino编程)
闲话不多说,直接上干货. 文章目录 一.硬件介绍 二.软件编程 1.dht11测温湿度 2.sht30测温湿度 3.运行结果 一.硬件介绍 开发板型号:NodeMCU-32S(这个是我用的,其他类型的 ...
- ⑦ ESP8266 开发学习笔记_By_GYC 【ESP8266 驱动 DHT11 温湿度传感器】
目录 一.准备材料 二.硬件连接 三.软件编程 1.修改工程名 2.添加组件 3.编程 4.反馈结果 5.核心代码 四.总结 ⑦ ESP8266 开发学习笔记_By_GYC [ESP8266 驱动 D ...
- ESP8266读DHT11温湿度,开发微信小程序实时显示
ESP8266读DHT11温湿度,开发微信小程序实时显示 第一.原理讲解 第二.ESP8266读取DHT11 第三.温湿度推送到云端 第四.微信小程序开发 个人可免费注册五个微信小程序账号. 第一.原 ...
- (可远程)ESP8266读DHT11温湿度,APP inventor制作app实时显示
ESP8266读DHT11温湿度传感器------APP inventor实时显示 原理讲解 ESP8266读取DHT11 温湿度推送到云端 app inventor 制作app 接收实时数据 关键程 ...
- WOL远程开机——通过ESP8266+blinker(点灯)平台实现
WOL远程开机--通过ESP8266+blinker(点灯)平台实现 之前疫情现在家里,无聊时改装家里的吸顶灯入网时,寻找了各种物联网平台,最终找到了blinker(点灯)这个物联网平台,APP很简洁 ...
- Arduio ESP8266将DHT11温湿度传感器数据在网页上显示
Arduio ESP8266将DHT11温湿度传感器数据在网页上显示
最新文章
- ThinkPHP的field方法的用法总结
- 【SSM面向CRUD编程专栏 1】Spring简介 xml配置文件 依赖注入 数据注入
- java中对时间的操作
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情(一)
- docker部署php的性能,Docker 学习之部署php + nginx(一)
- C语言:运行中获取宏名字的技巧
- Windows界面编程_Miniblink(6) 个人信息界面
- 【GIS|原理】地统计分析
- gaster字体转换器_gautami字体
- 【干货分享】Color Fonts是什么?多彩字体详解
- 拇指玩」制作的「谷歌安装器」app
- 通过搭建web服务来实现页面访问
- iOS 9-iPhone6s-iPadmini4企业证书信任
- 手风琴效果——原生JS
- 利用C语言求一个数的所有质因数
- 计算机组装前工具的准备,计算机组装 必备工具
- 目睹鸿蒙开创四大至高位面,第二十三章 鸿蒙四大至高规则
- 如何在安卓手机上查看airpods pro的电量
- Calibre xRC在 RF PDK的使用
- Powershell管理系列(三)2012 AD域用户UPN名称还原
热门文章
- 16岁的雅虎问答,因“不再受欢迎”将永久关闭
- android 读取本地超大图片
- 修改postgresql库表的owner
- java读取服务器上文件,java 读取linux服务器上文件
- 基于C# winform实现随机点名小工具(支持csv导入)
- swift 选取图库中的图片
- 深度xp系统插入光盘显示上一张光盘资料解决方法
- IDEA2021+Tomcat8+Servlet加载别人的项目时无web application导致无法进行Tomcat部署及实现Servlet程序的解决办法
- android中menu重写哪些方法,在Android中Menu的使用
- 计算机病毒有熊猫病毒,世界最厉害的电脑病毒排名 熊猫烧香病毒最使人讨厌...