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)的更多相关文章

  1. (二 -3-1) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列 实战

    #本片教程介绍了具体如何实现天猫精灵控制一个灯. 前提: HASS平台 你已经搭建一个可以在公网IP访问到的HASS平台--- 我用的是租了阿里云服务器,买了个域名,ubuntu1604系统 你已经搭 ...

  2. (二 -3) 天猫精灵接入Home Assistant-自动发现Mqtt设备--灯系列

    参考网站 1该mqtt光平台可以让您控制您的MQTT启用灯.它支持设置亮度,色温,效果,闪烁,开/关,RGB颜色,过渡,XY颜色和白色值. https://www.home-assistant.io/ ...

  3. 使用esp32-Arduino+PubSubClient+mqtt 上传数据到中移动OneNet

    使用esp32-doit-dev-v1开发板,测试mqtt协议, 发布(publish)到onenet 平台.注意:1.使用的mqtt arduino 客户端是 pubsubclient 库.其默认是 ...

  4. 玩转OneNET物联网平台之MQTT服务④ —— 远程控制LED(设备自注册)+ Android App控制

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  5. 玩转OneNET物联网平台之MQTT服务③ —— 远程控制LED(设备自注册)

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  6. 玩转OneNET物联网平台之MQTT服务② —— 远程控制LED

    1.理论基础     参考博主线上博文: 玩转PubSubClient MQTT库 玩转OneNET物联网平台之简介 玩转OneNET物联网平台之MQTT服务① 2.远程控制LED 2.1 实验材料 ...

  7. MQTT 协议学习:008-在STM32上移植MQTT

    前言 通过前面了解MQTT有关概念.分析了有关的报文,我们对于这个协议也有了更深的认识.但纸上谈来终觉浅,绝知此事要躬行. 本文参考:<STM32+W5500+MQTT+Android实现远程数 ...

  8. Arduino IDE开发ESP8266-01S连接MQTT服务器 控制继电器点亮LED

    准备条件: 1.Arduino IDE 2.ESP-01S模块 2.MQTT服务器 3.手机热点或路由器热点 Wi-Fi芯片 默认订阅的主题是  "开关控制" 当你发送主题  &q ...

  9. ESP8266相关知识笔记

    1.ESP8266 可以用来做串口透传,PWM 调控,远程控制开关:控制插座.开关.电器等.2.ESP8266有几种不同的使用方式,适用于不同水平的开发工作者. 使用AT指令进行操作:这是最常见的方式 ...

  10. 使用ST-Link下载程序出现Error:Flash Download Failed-“Cortex-M3“ 解决详细步骤(附图)

    我一直用stm32 f407开发. 最近要学mqtt与阿里云联网之类的课程,因为没有做过,所以网上搜了一遍,结果全是stm32 f103c8t6的例程. 后来我就搬出我的f103最小系统版 (这个就为 ...

随机推荐

  1. 并查集基础 &打击罪犯

    并查集基础 真的很基础 题目描述:Description 某个地区有n(n<=1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个 ...

  2. 告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧

    告别卡顿,畅享GitHub:国内开发者必看的五大加速访问与下载技巧 本文介绍了五种加速在国内访问和下载 GitHub 的方法,包括:使用 Gitee 平台加速克隆代码.修改 hosts 文件.使用油猴 ...

  3. SLAB:华为开源,通过线性注意力和PRepBN提升Transformer效率 | ICML 2024

    论文提出了包括渐进重参数化批归一化和简化线性注意力在内的新策略,以获取高效的Transformer架构.在训练过程中逐步将LayerNorm替换为重参数化批归一化,以实现无损准确率,同时在推理阶段利用 ...

  4. Terraform中的for_each和count

    通过Terraform创建云主机时,在某些业务场景下,一个机器需要挂载多个云盘,一般云厂商都是单独创建云主机和云硬盘然后通过attachment的资源去挂载,因此我们的模板大致如下: resource ...

  5. Django集成腾讯COS对象存储

    前言 最近遇到一个场景需要把大量的资源文件存储到 OSS 里,这里选的是腾讯的 COS 对象存储 (话说我接下来想搞的 SnapMix 项目也是需要大量存储的,我打算搭个 MinIO 把 24T 的服 ...

  6. 【Python】Selenium自动化测试之滑块拼图验证码图片方法

    在项目中有时验证码是滑块拼图形式的,这种验证码该如何完成验证呢? 有以下几个步骤: 目录 第一步:得到验证码图片 第二步:匹配缺口照片在完整照片的位置 第三步:机器模拟人工滑动轨迹 第四步:判断拼图是 ...

  7. 【Docker】之重启容器相关命令

    我想每次打开电脑,只要自动运行docker的时候,马上把设置指定的容器也自动运行起来. 首先查看一下容器启动情况: # 查看docker运行命令 docker ps -a --restart参数有3个 ...

  8. MarkDown语法教程(转)

    https://blog.csdn.net/2301_77569009/article/details/137957203

  9. AutoFitTextureView Error inflating class

    报错: Binary XML file line #0: Binary XML file line #0: Error inflating class xxx.AutoFitTextureView 解 ...

  10. CM3和ARM7的差异

    此文章由文心一言生成,引用请标注作者:文心一言CM3通常指的是Cortex-M3,它是ARM公司设计的一种基于ARMv7-M架构的32位处理器内核,主要用于嵌入式系统.而ARM7则是ARM公司早期设计 ...