Thingsboard 系列之通过 ESP8266+MQTT 模拟设备上报数据到平台

前置工作

  • Thingsboard平台
  • ESP 8266 NodeMCU 开发板
  • IDE: Arduino 或 VScode 均可

服务端具体对接流程

  • 系统管理员账号通过 Thingsboard 控制面板创建租户等信息并以租户账号登录

  • 实体 —> 设备维护具体设备信息在这里插入图片描述

  • 创建完成后通过管理凭据修改或直接复制访问令牌

在这里插入图片描述

设备端逻辑

  • 测试源码,来源于网络并进行简单修改
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <Ticker.h>// 设置 wifi 接入信息
const char* wifiName = "Your WiFi name";
const char* password = "Your WiFi password";
// 服务端地址
const char* mqttServerHost = "10.11.11.102";// 服务端复制的令牌凭证
const char* mqttUserName = "xxxxx";
// thingsboard 默认只验证 username,密码为空
const char* mqttPassword = NULL;Ticker ticker;
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);int count;void setup() {Serial.begin(9600);// Ticker 定时对象ticker.attach(1, tickerCount);//设置 ESP8266 工作模式为无线终端模式WiFi.mode(WIFI_STA);// 连接WiFiconnectWifi();// 设置服务端端口号,我这里是默认的 1883mqttClient.setServer(mqttServer, 1883);// 连接服务器connectMQTTServer();
}void loop() {if (!mqttClient.connected()) {connectMQTTServer();}mqttClient.loop();// 每隔3秒钟发布一次信息if (count >= 3) {pubMQTTmsg();count = 0;}
}void tickerCount() {count++;
}void connectMQTTServer() {// 根据 ESP8266 的 MAC 地址生成客户端 IDString clientId = "esp8266-" + WiFi.macAddress();// 连接MQTT服务器。此处使用了程序首部定义的用户名和密码来实现MQTT服务端认证if (mqttClient.connect(clientId.c_str(), mqttUserName, mqttPassword)) {Serial.println(">>>>>>>>>>>>>>> MQTT Server Connected.");Serial.print(">>>>>>>>>>>>>>>>>>>> Server Address: ");Serial.println(mqttServer);Serial.print("ClientId: ");Serial.println(clientId);} else {Serial.print(">>>>>>>>>>>>>>>>> MQTT Server Connect Failed. Client State:");Serial.println(mqttClient.state());delay(3000);}
}// 发布信息
void pubMQTTmsg() {static int value;// 建立发布主题。主题名称以taichi/Pub-为前缀,后面添加设备的MAC地址。// 这么做是为确保不同用户进行MQTT信息发布时,ESP8266客户端名称各不相同,String topicString = "v1/devices/me/telemetry";char publishTopic[topicString.length() + 1];strcpy(publishTopic, topicString.c_str());// 信息内容以 Hello ThingsBoard 为起始,后面为测试的发布次数String messageString = "{\"Hello ThingsBoard\":" + String(value++) + "}";char publishMsg[messageString.length() + 1];strcpy(publishMsg, messageString.c_str());// 实现 ESP8266 向主题发布信息if (mqttClient.publish(publishTopic, publishMsg)) {Serial.print("Publish Topic:"); Serial.println(publishTopic);Serial.print("Publish message:"); Serial.println(publishMsg);} else {Serial.println(">>>>>>>>>>>>>>>>> Message Publish Failed.");}
}// ESP8266 连接 wifi
void connectWifi() {WiFi.begin(ssid, password);//等待WiFi连接,成功连接后输出成功信息while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.println("WiFi connecting......");}Serial.println(">>>>>>>>>>>>>> WiFi Connected!");
}
  • 指定消息发布主题:v1/devices/me/telemetry,其他主题请查阅官方文档

  • 如果部分库找不到,请百度解决

  • IDE 配置开发板相关信息及对应串口

    在这里插入图片描述

  • 编译并烧录至 ESP8266

在这里插入图片描述

  • 烧录结果

    在这里插入图片描述

  • 打开端口监视器,开发板在正常发送测试数据

    在这里插入图片描述

服务端控制台信息

在这里插入图片描述

  • 到这里就基本上测试完成
  • 如需协议转换可通过软网关或硬网关自行对接测试

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

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

相关文章

致远OA同步组织架构到企业微信

致远OA同步组织架构到企业微信 可适配任何系统 背景 原有的微协同无法满足人员同步&#xff0c;因为在启用微协同的时候&#xff0c;企业微信已经存在人员&#xff0c;所以配置微协同之后&#xff0c;人员会出现新增而不会同步修改 方案 重写同步&#xff0c;针对已经存在…

网安加·百家讲坛 | 关昕健:新时代企业数据安全运营思路

作者简介&#xff1a;关昕健&#xff0c;某运营商安全专家&#xff0c;2015年获CISSP认证&#xff0c;长期负责企业安全运营工作&#xff0c;关注国内外数据安全动态与解决方案&#xff0c;持续开展数据安全运营实践。 近年来&#xff0c;随着《数据安全法》的出台和国家数据局…

js逆向案例 | 加速乐反爬逆向

前言 加速乐作为一种常见的反爬虫技术&#xff0c;在网络上已有大量详尽深入的教程可供参考。然而&#xff0c;对于那些初次接触的人来说&#xff0c;直接面对它可能仍会感到困惑。 声明 本文仅用于学习交流&#xff0c;学习探讨逆向知识&#xff0c;欢迎私信共享学习心得。如…

【YOLOv5/v7改进系列】改进池化层为RFB

一、导言 论文 "Receptive Field Block Net for Accurate and Fast Object Detection" 中提出的 RFB (Receptive Field Block) 模块旨在模仿人类视觉系统中的感受野结构&#xff0c;以增强深度学习模型对不同尺度和位置的目标检测能力。下面总结了RFB模块的主要优点…

AIGC时代程序员的跃迁——编程高手的密码武器

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

一、redis-万字长文读懂redis

高性能分布式缓存Redis `第一篇章`1.1缓存发展史&缓存分类1.1.1 大型网站中缓存的使用带来的问题1.1.2 常见缓存的分类及对比与memcache对比1.2 数据类型选择&应用场景1.2.1 string1.2.2 hash1.2.3 链表1.2.4 set1.2.5 sortedset有序集合类型1.2.6 总结1.3 Redis高级应…

[数仓]三、离线数仓(Hive数仓系统)

第1章 数仓分层 1.1 为什么要分层 DIM&#xff1a;dimensionality 维度 1.2 数据集市与数据仓库概念 1.3 数仓命名规范 1.3.1 表命名 ODS层命名为ods_表名DIM层命名为dim_表名DWD层命名为dwd_表名DWS层命名为dws_表名 DWT层命名为dwt_表名ADS层命名为ads_表名临时表命名为…

昇思25天训练营Day11 - 基于 MindSpore 实现 BERT 对话情绪识别

模型简介 BERT全称是来自变换器的双向编码器表征量&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;&#xff0c;它是Google于2018年末开发并发布的一种新型语言模型。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、…

56、最近邻向量量化(LVQ) 网络训练对输入向量进行分类

1、LVQ 网络训练对输入向量进行分类简介 1&#xff09;简介 LVQ&#xff08;最近邻向量量化&#xff09;是一种简单而有效的神经网络模型&#xff0c;用于对输入向量进行分类。LVQ网络通过学习一组原型向量&#xff08;也称为代码矢量或参考向量&#xff09;&#xff0c;来表…

SAP Build4-office 操作

1. 邮件操作 1.1 前期准备 商店中找到outlook的sdk&#xff0c;添加到build中 在process中添加outlook的SDK 电脑上装了outlook的邮箱并且已经登录 我用个人foxmail邮箱向outlook发了一封带附件的销售订单邮件&#xff0c;就以此作为例子 1.2 搜索邮件 搜索有两层&…

计算机视觉、目标检测、视频分析的过去和未来:目标检测从入门到精通 ------ YOLOv8 到 多模态大模型处理视觉基础任务

文章大纲 计算机视觉项目的关键步骤计算机视觉项目核心内容概述步骤1: 确定项目目标步骤2:数据收集和数据标注步骤3:数据增强和拆分数据集步骤4:模型训练步骤5:模型评估和模型微调步骤6:模型测试步骤7:模型部署常见问题目标检测入门什么是目标检测目标检测算法的分类一阶…

CSS实现图片裁剪居中(只截取剪裁图片中间部分,图片不变形)

1.第一种方式&#xff1a;&#xff08;直接给图片设置&#xff1a;object-fit:cover;&#xff09; .imgbox{width: 100%;height:200px;overflow: hidden;position: relative;img{width: 100%;height: 100%; //图片要设置高度display: block;position: absolute;left: 0;right…

基于Java+SpringMvc+Vue技术的在线学习交流平台的设计与实现---60页论文参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于Java技术领域开发与管理&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经…

AI+若依框架(低代码开发)

提前说明&#xff1a; 文章是实时更新&#xff0c;写了就会更。 文章是黑马视频的笔记&#xff0c;如果要自己学可以点及下面的链接&#xff1a; https://www.bilibili.com/video/BV1pf421B71v/一、若依介绍 1.版本介绍 若依为满足多样化的开发需求&#xff0c;提供了多个版本…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(一)图标svgicon的使用

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、lowflow这里使用了tsx的动态图标&#xff0c;如下&#xff1a; import ./index.scss import type { CSSProperties, PropType } from vue import { computed, defineComponent, resolv…

MATLAB基础应用精讲-【数模应用】 岭回归(Ridge)(附MATLAB、python和R语言代码实现)

目录 前言 算法原理 数学模型 Ridge 回归的估计量 Ridge 回归与标准多元线性回归的比较 3. Ridge 参数的选择 算法步骤 SPSSPRO 1、作用 2、输入输出描述 3、案例示例 4、案例数据 5、案例操作 6、输出结果分析 7、注意事项 8、模型理论 SPSSAU 岭回归分析案…

支付宝沙箱对接(GO语言)

支付宝沙箱对接 1.1 官网1.2 秘钥生成&#xff08;系统默认&#xff09;1.3 秘钥生成&#xff08;软件生成&#xff09;1.4 golan 安装 SDK1.5 GoLand 代码1.6 前端代码 1.1 官网 沙箱官网: https://open.alipay.com/develop/sandbox/app 秘钥用具下载&#xff1a; https://ope…

并行处理百万个文件的解析和追加

处理和解析大量文件&#xff0c;尤其是百万级别的文件&#xff0c;是一个复杂且资源密集的任务。为实现高效并行处理&#xff0c;可以使用Python中的多种并行和并发编程工具&#xff0c;比如multiprocessing、concurrent.futures模块以及分布式计算框架如Dask和Apache Spark。这…

Mysql系列-Binlog主从同步

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/669450627 一、主从同步概述 mysql主从同步&#xff0c;即MySQL Replication,可以实现将数据从一台数据库服务器同步到多台数据库服务器。MySQL数据库自带主 从同步功能&#xff0c;经过配置&#xff0c;可以实现基于库、表…

B端设计:任何不顾及用户体验的设计,都是在装样子,花架子

B端设计是指面向企业客户的设计&#xff0c;通常涉及产品、服务或系统的界面和功能设计。与C端设计不同&#xff0c;B端设计更注重实用性和专业性&#xff0c;因为它直接影响企业的效率和利益。 在B端设计中&#xff0c;用户体验同样至关重要。不顾及用户体验的设计只是空洞的表…