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,一经查实,立即删除!

相关文章

python 冷知识 66 个 0708

66个有趣的Python冷知识 内联注释 可以在代码行尾使用 # 进行内联注释&#xff0c;例如 x 10 # 这是一个内联注释。 多行注释 多行注释可以用三个引号 或 """ 包裹。 分数 fractions 模块提供了分数类型&#xff0c;可以精确表示分数值。 小数 decimal 模块…

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

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

Visual Studio下安装引入Boost库

背景&#xff1a; 在 Win 上通过 Visual Studio 运行 c 代码&#xff0c;引入头文件 #include <boost/...>&#xff0c;显式无法打开&#xff0c;需要手动下载boost并进行配置。 1、下载boost&#xff1a; Boost官网&#xff1a;Boost Downloads 下载boost&#xff0c…

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

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

Pytorch中的DataLoader类

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…

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

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

oracle19 数据库介绍

1.1Oracle数据库概念和应用 每个人家里都会有冰箱&#xff0c;冰箱是用来干什么的&#xff1f;冰箱是用来存放食物的地方。同样的&#xff0c;数据库是存放数据的地方。正是因为有了数据库后&#xff0c;可以直接查找数据。例如你每天使用余额宝查看自己的账户收益&#xff0c;…

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

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

MySQL数据库巡检步骤

MySQL巡检 系统基本信息 机型号 IP CPU 内存 磁盘 (业务)系统信息 操作系统 主机名 操作系统巡检 检查内容 说明 检查方法 结果&#xff08;异常需详细说明&#xff09; 正常输出结果 系统配置检查 操作系 统版本 #uname –a □正常 □异常 显示系统版本和核心补丁信…

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;来表…

HTML5 WebSocket技术使用详解

HTML5 WebSocket API 提供了一种在单个连接上进行全双工通信的方式。这意味着客户端和服务器可以同时发送和接收数据&#xff0c;而不需要像传统的 HTTP 请求那样进行多次请求和响应的轮询。WebSocket 允许更实时的交互&#xff0c;非常适合需要快速、连续数据交换的应用场景&a…

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…

OpenCV:解锁计算机视觉的魔法钥匙

OpenCV&#xff1a;解锁计算机视觉的魔法钥匙 在人工智能与图像处理的世界里&#xff0c;OpenCV是一个响当当的名字。作为计算机视觉领域的瑞士军刀&#xff0c;OpenCV以其丰富的功能库、跨平台的特性以及开源的便利性&#xff0c;成为了开发者手中不可或缺的工具。本文将深入…

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

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