esp8266 + mqtt + 温度计 (platformio)
esp8266 + mqtt + 温度计
上报温度数据
温度接线

ESP8266 温度传感器
GND GND
5V VCC
A0 VOUT
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// 温度
#include <OneWire.h>
#include <DallasTemperature.h>
#define led 2
#define theemometer_gp 14
// wifi info
const char *SSID = "优美屋205";
const char *PASSWORD = "18111549";
// mqtt info
const char *MQTT_SERVER = "broker-cn.emqx.io";
const int MQTT_PROT = 1883;
// mqtt 主题
const char *MQTT_TOPIC_ONLINE = "xapi/home/online";
const char *MQTT_TOPIC_UPDATE = "xapi/home/update";
const char *CLIENT_ID = "esp8266-457065e5-f063-474e-2saf-cacf5cb52af5";
float wb_num = 0.00;
char *wb_num_str = "";
WiFiClient espClient;
PubSubClient client(espClient);
OneWire oneWire(theemometer_gp);
DallasTemperature sensors(&oneWire);
void init_wifi();
void mqtt_reconnect();
void mqtt_msg_callback(char *topic, byte *payload, unsigned int length);
void wb_update(); // 温度发送
void setup() {
Serial.begin(115200);
pinMode(led, OUTPUT);
digitalWrite(led, LOW);
init_wifi();
client.setServer(MQTT_SERVER, MQTT_PROT);
client.setCallback(mqtt_msg_callback);
sensors.begin(); // 温度计开始
}
void loop() {
if(!client.connected()){
mqtt_reconnect();
}
client.loop();
wb_update();
}
void init_wifi(){
Serial.println("连接中...");
Serial.println(SSID);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
}
void mqtt_reconnect(){
while (!client.connected())
{
Serial.print("正在尝试MQTT连接");
if(client.connect(CLIENT_ID)){
Serial.println("已连接");
client.publish(MQTT_TOPIC_ONLINE, "online"); // 发布
}else{
Serial.print("错误, rc");
Serial.print(client.state());
Serial.println("等待 5s");
delay(5000);
}
}
}
void mqtt_msg_callback(char *topic, byte *payload, unsigned int length){
Serial.print("Message arrived [");
Serial.print(topic); // 打印主题信息
Serial.print("] ");
}
void wb_update(){
if(client.connected()){
wb_num = sensors.getTempCByIndex(0);
dtostrf(wb_num, 2, 2, wb_num_str); // 浮点转字符串
sensors.requestTemperatures();
Serial.print("Temperature: ");
Serial.print(wb_num); // 以摄氏度为单位打印温度
Serial.print("c | ");
Serial.print((wb_num * 9.0) / 5.0 + 32.0); // 以华氏度打印温度
Serial.println("F");
digitalWrite(led, HIGH);
delay(1000);
client.publish(MQTT_TOPIC_UPDATE, wb_num_str);
digitalWrite(led, LOW);
delay(500);
}
}
esp8266 + mqtt + 温度计 (platformio)的更多相关文章
- (二 -3-1) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列 实战
#本片教程介绍了具体如何实现天猫精灵控制一个灯. 前提: HASS平台 你已经搭建一个可以在公网IP访问到的HASS平台--- 我用的是租了阿里云服务器,买了个域名,ubuntu1604系统 你已经搭 ...
- (二 -3) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列
参考网站 1该mqtt光平台可以让您控制您的MQTT启用灯.它支持设置亮度,色温,效果,闪烁,开/关,RGB颜色,过渡,XY颜色和白色值. https://www.home-assistant.io/ ...
- 使用esp32-Arduino+PubSubClient+mqtt 上传数据到中移动OneNet
使用esp32-doit-dev-v1开发板,测试mqtt协议, 发布(publish)到onenet 平台.注意:1.使用的mqtt arduino 客户端是 pubsubclient 库.其默认是 ...
- 玩转OneNET物联网平台之MQTT服务④ —— 远程控制LED(设备自注册)+ Android App控制
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 玩转OneNET物联网平台之MQTT服务③ —— 远程控制LED(设备自注册)
授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...
- 玩转OneNET物联网平台之MQTT服务② —— 远程控制LED
1.理论基础 参考博主线上博文: 玩转PubSubClient MQTT库 玩转OneNET物联网平台之简介 玩转OneNET物联网平台之MQTT服务① 2.远程控制LED 2.1 实验材料 ...
- MQTT 协议学习:008-在STM32上移植MQTT
前言 通过前面了解MQTT有关概念.分析了有关的报文,我们对于这个协议也有了更深的认识.但纸上谈来终觉浅,绝知此事要躬行. 本文参考:<STM32+W5500+MQTT+Android实现远程数 ...
- Arduino IDE开发ESP8266-01S连接MQTT服务器 控制继电器点亮LED
准备条件: 1.Arduino IDE 2.ESP-01S模块 2.MQTT服务器 3.手机热点或路由器热点 Wi-Fi芯片 默认订阅的主题是 "开关控制" 当你发送主题 &q ...
- ESP8266相关知识笔记
1.ESP8266 可以用来做串口透传,PWM 调控,远程控制开关:控制插座.开关.电器等.2.ESP8266有几种不同的使用方式,适用于不同水平的开发工作者. 使用AT指令进行操作:这是最常见的方式 ...
- 使用ST-Link下载程序出现Error:Flash Download Failed-“Cortex-M3“ 解决详细步骤(附图)
我一直用stm32 f407开发. 最近要学mqtt与阿里云联网之类的课程,因为没有做过,所以网上搜了一遍,结果全是stm32 f103c8t6的例程. 后来我就搬出我的f103最小系统版 (这个就为 ...
随机推荐
- 【牛客刷题】HJ8 合并表记录
题目链接 这题最开始的想法就是用一个map来解决问题: func main() { num := 0 fmt.Scan(&num) a := 0 b := 0 m := make(map[in ...
- springboot如何集成Prometheus如何暴露Histogram来获取P99等监控指标
背景 springboot如何集成Prometheus我这里不做详细描述,要想了解集成过程,可以参考一下博客: Spring Boot 使用 Micrometer 集成 Prometheus 监控 J ...
- nginx配置请求头防止点击劫持
在返回index.html配置中加入add_header X-Frame-Options DENY; location / {undefined root /data/nginx/html/dist/ ...
- win10缺少SNMP服务解决办法
一,以管理员的身份启动Powershell 第一步在win10系统任务栏上,点击搜索图标,输入"PowerShell",如下图所示: 2 第二步搜索到PowerShell之后,鼠标 ...
- mysql学习问题记录
Q: 问题 MySQL在创建外键索引时,使用工具会出现创建完成但是闪一下就没了 使用CONSTRAINT '外键索引名' FOREIGN KEY ('xx') REFERENCES 数据库名 (xx) ...
- ThinkPHP 6 + PHP7.4.3nts +nginx 使用mysql和oracle数据库
ThinkPHP 6 + PHP7.4.3nts +nginx 使用mysql和oracle数据库. 前言 业务需求,之前使用的php 7.3.4nts ,mysql自己写的代码,需要对接第三方系统, ...
- 以Top-Down思维去解决问题——递归
目录 递归的基础 递归的底层实现(不是重点) 递归的应用场景 编程中 两种解决问题的思维 自下而上(Bottom-Up) 自上而下(Top-Down) 自上而下的思考过程--求和案例 台阶问题 案例 ...
- 旺旺发消息代码,hook旺旺发消息,旺旺发消息call
工作需要写的,不是反汇编旺旺,是千牛的,基于千牛前端架构开发利用千牛发消息的一个组件,可以拿来做千牛客服机器人,可以拿来做千牛自动发货.非协议破解需要挂机,非模拟发送消息,非模拟发送消息,非模拟发送消 ...
- 线性dp:LeetCode516 .最长回文子序列
LeetCode516 .最长回文子序列 题目叙述: 力扣题目链接(opens new window) 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度. 子序列定义为:不改变剩余字 ...
- 合合信息亮相“海聚英才”全球创新创业峰会,政企研合力推动AI人才培养
近日,"聚上海,创未来"第三届"海聚英才"全球创新创业峰会在沪举行,"创新之路:卓越工程师培养交流研讨会"(简称"研讨会" ...