学习使用ESP8266进行MQTT通信并在网页上可视化显示
目录
一、工具
二、 流程
三、代码实现
设置MQTT服务器地址
设置服务器和端口号
连接MQTT服务器并订阅话题
回调处理函数
发布数据到话题
四、调试软件使用
打开MQTTx
添加话题
五、网页使用
一、工具
arduino ide
esp8266/32单片机
lot物联网网页
MQTTx软件或者mqttfx
二、 流程
建议先去网上学习一下MQTT协议再来进行配置
这里推荐太极创客http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-tuttorial/mqtt-tutorial/
http://www.taichi-maker.com/homepage/esp8266-nodemcu-iot/iot-tuttorial/mqtt-tutorial/
现在arduino配置连接代码,然后找几个免费的MQTT服务器(多找几个备用),然后通过配置话题来进行点对点通信,lot网页进行最终的效果展示,MQTTx或者mqttfx进行过程调试。
这里提供服务器为官方免费用于学习的服务器。
免费的公共 MQTT 服务器 | EMQ

提供一个用于学习的lot网页
(公测)KZone喵星球 - 探索AI与编程的乐趣
需要注册账号,最多使用五个话题和一个可视化页面。 该网站的服务器地址为iot.kittenbot.cn
三、代码实现
设置MQTT服务器地址
const char* mqttServer = "iot.kittenbot.cn";
头文件不要忘记加
#include <PubSubClient.h>
设置服务器和端口号
// 设置MQTT服务器和端口号mqttClient.setServer(mqttServer, 1883);mqttClient.setCallback(receiveCallback);
连接MQTT服务器并订阅话题
void connectMQTTserver(){// 根据ESP8266的MAC地址生成客户端ID(避免与其它ESP8266的客户端ID重名)String clientId = "esp8266-" + WiFi.macAddress();// 连接MQTT服务器if (mqttClient.connect(clientId.c_str())) { Serial.println("MQTT Server Connected.");Serial.println("Server Address:");Serial.println(mqttServer);Serial.println("ClientId: ");Serial.println(clientId);subscribeTopic(); // 订阅指定主题} else {Serial.print("MQTT Server Connect Failed. Client State:");Serial.println(mqttClient.state());delay(5000);}
}
订阅多个话题
void subscribeTopic(){String topicString = "/jiezz/esp8266/state";char subTopic[topicString.length() + 1]; strcpy(subTopic, topicString.c_str());// 建立订阅主题2String topicString2 = "/jiezz/esp8266/wendu";char subTopic2[topicString2.length() + 1]; strcpy(subTopic2, topicString2.c_str());// 通过串口监视器输出是否成功订阅主题1以及订阅的主题1名称if(mqttClient.subscribe(subTopic)){Serial.println("Subscrib Topic:");Serial.println(subTopic);} else {Serial.print("Subscribe Fail...");} // 通过串口监视器输出是否成功订阅主题2以及订阅的主题2名称if(mqttClient.subscribe(subTopic2)){Serial.println("Subscrib Topic:");Serial.println(subTopic2);} else {Serial.print("Subscribe Fail...");}
}
回调处理函数
void receiveCallback(char* topic, byte* payload, unsigned int length) {Serial.print("Message Received [");Serial.print(topic);Serial.print("] ");for (int i = 0; i < length; i++) {Serial.print((char)payload[i]);}Serial.println("");Serial.print("Message Length(Bytes) ");Serial.println(length);if ((char)payload[0] == '1') { // 如果收到的信息以“1”为开始digitalWrite(BUILTIN_LED, LOW); // 则点亮LED。} else { digitalWrite(BUILTIN_LED, HIGH); // 否则熄灭LED。}
}
这里说明一下,这个回调函数会处理所有话题的数据,如果想要处理单个话题单独处理,需要加个if语句即可
整体代码可以去太极创客官网查看
发布数据到话题
void pubMQTTmsg(){static int value; // 客户端发布信息用数字String topicString = "/jiezz/esp8266";char publishTopic[topicString.length() + 1]; strcpy(publishTopic, topicString.c_str());String messageString = "Hello jiezz " + String(value++); char publishMsg[messageString.length() + 1]; strcpy(publishMsg, messageString.c_str());// 实现ESP8266向主题发布信息if(mqttClient.publish(publishTopic, publishMsg)){Serial.println("Publish Topic:");Serial.println(publishTopic);Serial.println("Publish message:");Serial.println(publishMsg); } else {Serial.println("Message Publish Failed."); }
}
四、调试软件使用
打开MQTTx
点击左侧第二个按钮,添加连接

输入名称和服务器地址,iot.kittenbot.cn
端口默认1883
其他都默认,点击连接
添加话题
话题名称自拟,两端相同就行
连接单片机后就能在这里查看发出的信息了。
注意:这个软件也可以发布数据到话题,在右下角点击发送即可,有多个解析形式注意区分

五、网页使用
进入KZone官网,注册账号后打开lot平台,三个页面,服务概况,话题中心,可视化页面。
a、先在话题中心增加一个话题,随意命名
b、点击可视化面板,新建一个面板,在里面加一个多行文字
c、修改右侧的数据话题绑定
d、点击右上角的开始按钮就可以用了
如果有问题欢迎在评论区指正!
相关文章:
学习使用ESP8266进行MQTT通信并在网页上可视化显示
目录 一、工具 二、 流程 三、代码实现 设置MQTT服务器地址 设置服务器和端口号 连接MQTT服务器并订阅话题 回调处理函数 发布数据到话题 四、调试软件使用 打开MQTTx 添加话题 五、网页使用 一、工具 arduino ide esp8266/32单片机 lot物联网网页 MQTTx软件或者m…...
mysql进阶(三)
MySQL架构和存储引擎 1. MySQL架构 MySQL8.0服务器是由连接池、服务管理⼯具和公共组件、NoSQL接⼝、SQL接⼝、解析器、优化 器、缓存、存储引擎、⽂件系统组成。MySQL还为各种编程语⾔提供了⼀套⽤于外部程序访问服务器 的连接器。整体架构图如下所⽰: 2. 连接层 …...
硬件抽象层(HAL)
硬件抽象层(HAL):应用开发的得力助手 硬件抽象层(HAL)的核心作用是为应用提供访问硬件的接口,同时屏蔽硬件细节,让开发者专注于应用开发,无需深入了解硬件底层的复杂操作。 1. HAL…...
【MYSQL数据库异常处理】执行SQL语句报超时异常
MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…...
深入理解三色标记、CMS、G1垃圾回收器
三色标记算法 简介 三色标记算法是一种常见的垃圾收集的标记算法,属于根可达算法的一个分支,垃圾收集器CMS,G1在标记垃圾过程中就使用该算法 三色标记法(Tri-color Marking)是垃圾回收中用于并发标记存活对象的核心算…...
60页PDF | 四川电信数据湖及数据中台实施方案!(附下载)
一、前言 这份报告是关于四川电信数据湖与数据中台实施方案的详细规划。报告从数据驱动、事件管理、数据湖构建、数据资产管理和数据治理等多个方面展开,介绍了如何通过数据湖与数据中台的建设,实现数据的高效采集、存储、分析与共享,提升数…...
短分享-Flink图构建
一、背景 通过简单的书写map、union、keyby等代码,Flink便能构建起一个庞大的分布式计算任务,Flink如何实现的这个酷炫功能呢?我们本次分享Flink做的第一步,将代码解析构建成图 源码基于Flink 2.10,书籍参考《Flink核…...
java常见的几种并发安全问题及解决方案
项目场景: 并发的应用场景,在开发过程会经常遇到。 例如:服务应用启动后,需要简单统计接口的总访问量;实时更新订单状态,成交总额。 问题描述: 比如统计接口访问次数,如下的实现&a…...
【mysql系】mysql启动异常Can‘t create test file localhost.lower-test
1.查看通过下面命令获取对应mysql配置文件 whereis my.cnf 2.查看日志文件 下面这里是对应的错误日志 2025-03-03T06:33:56.402057Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see …...
Docker save命令怎么用
docker save 命令用于将一个 Docker 镜像保存为一个 tar 文件。这在将镜像传输到其他系统或进行备份时非常有用。通过此命令,你可以将镜像导出到本地存储设备或传输给其他人。 基本语法 docker save -o <保存文件路径> <镜像名>:<标签>-o <保…...
物联网的隧道监测场景中,要实现全面且有效的监测
在物联网的隧道监测场景中,要实现全面且有效的监测,需要从传感器选型、数据采集与传输、数据分析模型构建等多个关键环节进行考量。以下是详细的实现方案: 1. 传感器选型 结构安全监测 应变计:用于测量隧道结构表面的应变情况&…...
如何使用 LLM 生成的术语自动在搜索应用程序上构建 autocomplete 功能
作者:来自 Elastic Michael Supangkat 了解如何在 Elastic Cloud 中,通过使用 LLM 生成的词汇,为搜索应用增强自动补全功能,实现更智能、更动态的搜索建议。 自动补全是搜索应用中的一项关键功能,它通过在用户输入时实…...
安全见闻之网络安全新兴术语
在计算机和网络安全领域,随着技术的不断创新与发展,许多新兴的术语和缩写逐渐出现。这些新词汇不仅代表了技术进步,也反映了网络安全应对复杂攻击和防护需求变化的趋势。尤其是在当前网络环境中,由于攻击手段的不断演变࿰…...
vscode离线配置远程服务器
目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器,并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port(vscode报错解决方法)-C…...
JVM常用概念之对象初始化的成本
在JVM常用概念之新对象实例化博客中我讲到了对象的实例化,主要包含分配(TLAB)、系统初始化、用户初始化,而我在JVM常用概念之线程本地分配缓冲区(ThreadLocal Allocation Buffer,TLAB)博客中也讲…...
MinIO 容器化快速部署指南
MinIO 容器化快速部署指南 一、快速开始 # 创建网络(需提前执行) docker network create srebro#创建工作目录 mkdir -p /home/application/Middleware/minio/# 启动服务 docker-compose up -d二、配置说明 docker-compose.yaml 结构 services:minio…...
历年杭州电子科技大学计算机考研复试上机真题
历年杭州电子科技大学计算机考研复试机试真题 在线评测:https://app2098.acapp.acwing.com.cn/ 最大公约数和最小公倍数 题目描述 输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 输入格式 两个整数 输出格式 最大公约数,最小公…...
K8S学习之基础十四:k8s中Deployment控制器概述
Deployment控制器概述: Deployment控制器是k8s中最常用的资源对象,为Replicaset和Pod创建提供了一种声明式的定义方法,在Deployment对象中描述一个期望的状态,Deployment控制器就会按照一定的控制速率把实际状态改成期望状态&…...
django中视图作用和视图功能 以及用法
在 Django REST Framework(DRF)中,视图(View)是处理 HTTP 请求并返回响应的核心组件。DRF 提供了多种视图类,适用于不同的场景和需求。以下是 DRF 中常见的视图类及其作用、使用方法的详细说明: 一、DRF 视图的分类 DRF 的视图可以分为以下几类: 基于函数的视图(Func…...
React Native v0.78 更新
这个版本在 React Native 中引入了 React 19,并带来了一些重要的新功能,例如 Android 矢量图(Vector Drawables)的原生支持 以及 iOS 更好的 Brownfield 集成。 亮点 React 19 集成更小更快的发布节奏可选择在 Metro 中启用 Jav…...
记录Linux安装mysql8
1.mysql8安装 yum安装mysql8.0版本_yum 安装mysql8-CSDN博客文章浏览阅读833次,点赞10次,收藏9次。yum安装mysql8.0版本,如果系统中已经安装了旧版本的 MySQL 或者 mariadb,需要先卸载._yum 安装mysql8https://blog.csdn.net/…...
采用OllamaSharp实现.NET快速对接deepseek实现聊天、模型管理、流式响应等功能
1. OllamaSharp 是什么? OllamaSharp 是一个用于在 .NET 环境中与 Ollama API 交互的库。它提供了对 Ollama API 端点的全面支持,包括聊天、模型管理、流式响应等功能,适合需要与 Ollama 服务进行交互的 .NET 开发者。 2. 安装 OllamaSharp…...
CodeBlocks个性化竞赛配置
文章目录 1. 主题设置2. 设置默认代码3. 比赛时的使用 1. 主题设置 参考博客 --> codeblocks更改主题颜色及调试 跟随当前教程配置主题 博主使用的主题为son of obsidian,此主题为黑色背景,按照上边参考博文修改一下光标颜色即可。 效果图࿱…...
如何用单机版deepseek编写示例
以下是一个简单的 DeepSeek 编程示例,通过 API 调用实现智能对话功能:文末有链接 一、环境准备 pip install requests # 安装 HTTP 请求库:ml-citation{ref"2" data"citationList"} 二、代码实现 import requests def chat_wi…...
python实现的可爱卸载动画
在逛掘金时,掘金用户在B站看到的灵感进行的一个卸载窗口的动画效果的实用案例。人类是一种不断在学习的动物,并且是一种模仿能力学习能里比较强的动物。我这里是第三波的学习实践者咯! 相对VUE构建动画效果窗口,我更加喜欢用pytho…...
钣金加工行业数字化转型MES方案
一、 行业痛点:钣金加工行业普遍面临以下挑战: 订单多样化、小批量、定制化需求增多:传统生产模式难以适应快速变化的市场需求。 生产流程复杂、工序繁多:涉及切割、折弯、焊接、表面处理等多个环节,协同效率低。 生产…...
pinginfoview网络诊断工具中文版
介绍 pinginfoview中文版本是一款实用的网络诊断工具,它专为中文用户设计,提供了方便易用的界面,使得在Windows环境下进行ping测试变得更加简单。该工具是由NirSoft开发的一款免费的桌面应用程序,尽管官方可能并未正式发布中文版…...
关于服务器无法下载kcv_encoder.h5权重的解决方法
最近租服务器跑实验代码,在模型初次加载时会下载stable diffusion的一系列预训练权重,但服务器一直卡在 Downloading data from https://huggingface.co/fchollet/stable-diffusion/resolve/main/kcv_encoder.h5 ,最后报错 File /usr/local/…...
计算光学成像与光学计算概论
计算光学成像所涉及研究的内容非常广泛,虽然计算光学成像的研究内容是发散的,但目的都是一致的:如何让相机记录到客观实物更丰富的信息,延伸并扩展人眼的视觉感知。总的来说,计算光学成像现阶段已经取得了很多令人振奋…...
Linux——Docker容器内MySQL密码忘记了如何查看
目录 查看正在运行的MySQL的容器ID 方法一:查看MySQL容器的日志里的密码 方法二:通过环境变量密码登录 方法三:修改密码 查看正在运行的MySQL的容器ID docker ps 方法一:查看MySQL容器的日志里的密码 docker logs [MySQL的容器…...
