thingsboard+ESP8266+MQTT实现设备远程控制

article/2025/9/19 1:15:12

简介:

本次主要想实现功能:thingsboard平台远程控制设备
设备(ESP8266上的灯作为一台设备,模拟控制灯的开关)
指令传输通过thingsboard平台集成的MQTT协议
利用thingsboard仪表盘库的一个控制组件模拟发送指令来控制我们的
灯的开关

前期准备:

  1. 之前搭建好的thingsboard平台
  2. NodeMCU开发板
  3. 开发NodeMCU的工具:Arduino
    在这里插入图片描述
    在这里插入图片描述

操作过程

1新建一个测试设备

新建一个租户账号进入到我们的thingsboard平台后点击设备管理新建一个设备。
在这里插入图片描述
新建成功后点击设备进入详情页面,点击复制设备访问令牌,这个是后面MQTT访问对应的用户名,可以先保存下来
在这里插入图片描述

2在仪表盘库新建一个开关

后面将用这个开关模拟发送指令控制设备
首先我们先要建一个仪表板,用于放置我们的开关组件。
在这里插入图片描述
新建成功后打开仪表板,点击编辑选择一个开关控制组件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后保存退出,完成。
这里我们可以点击开关,打开调试控制台看它发出的指令
在这里插入图片描述

3编辑相关接收灯开关的指令对应代码烧录到我们的ESP8266开发板上。

这里我使用的是开关工具是:Arduino
开发之前要先确保我们的ESP8266连接上我们的Arduino
这个可以参考太极创客的官网进行相关学习操作,官网地址:
http://www.taichi-maker.com/
在这里插入图片描述
确保连接成功后,就可以编写我们的程序了。
在这里插入图片描述
附上源代码:

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>// 设置wifi接入信息(请根据您的WiFi信息进行修改)
const char* ssid = "WIFE名称";
const char* password = "WIFE密码";
const char* mqttServer = "MQTT服务端地址,我们搭建本地thingsboard成功后对应的就是我们网络的ip地址";// MQTT服务端连接用户名密码
const char* mqttUserName = "设备访问令牌";
const char* mqttPassword = NULL;WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
const byte ledPin = LED_BUILTIN; // 需要控制的led灯
void setup() {Serial.begin(9600);//设置ESP8266工作模式为无线终端模式WiFi.mode(WIFI_STA);// 连接WiFiconnectWifi();// 设置MQTT服务器和端口号mqttClient.setServer(mqttServer, 1883);// 连接MQTT服务器connectMQTTServer();mqttClient.setCallback(callback);        // 设置回调,控制led灯pinMode(ledPin,OUTPUT);
}void loop() { if (mqttClient.connected()) { // 如果开发板成功连接服务器    mqttClient.loop();          // 保持客户端心跳} else {                  // 如果开发板未能成功连接服务器connectMQTTServer();    // 则尝试连接服务器}
}void connectMQTTServer(){// 根据ESP8266的MAC地址生成客户端ID(避免与其它ESP8266的客户端ID重名)String clientId = "esp8266-" + WiFi.macAddress();// 连接MQTT服务器if (mqttClient.connect(clientId.c_str(), mqttUserName, mqttPassword)) { //连接成功后就订阅主题mqttClient.subscribe("v1/devices/me/rpc/request/+");//订阅主题Serial.print("订阅主题成功!!");} else {Serial.println(mqttClient.state());delay(3000);}   
}// ESP8266连接wifi
void connectWifi(){WiFi.begin(ssid, password);//等待WiFi连接,成功连接后输出成功信息while (WiFi.status() != WL_CONNECTED) {delay(1000);Serial.print(".");}Serial.println("");Serial.println("WiFi Connected!");  Serial.println(""); 
}//回调函数
void callback(char* topic, byte* payload, unsigned int length) {Serial.println("begin callback");char s[length];for (int i=0;i<length;i++) {s[i]=(char)payload[i];}std::string str;str=s;DynamicJsonDocument doc(1024);deserializeJson(doc, str);JsonObject obj = doc.as<JsonObject>();const char* methodName;bool value;methodName=obj["method"];value=obj["params"];Serial.println(methodName);Serial.println(value);if(value==1){Serial.println("开灯");digitalWrite(ledPin,HIGH);}else{Serial.println("关灯");digitalWrite(ledPin, LOW);}}

4需要注意的几个地方:

1首先要确保我们的ESP8266能够连接上WIFE
2确保我们的MQTT订阅成功,即
mqttClient.subscribe(“v1/devices/me/rpc/request/+”);//订阅主题
这个对应thingsboard中文文档里有详细介绍:
在这里插入图片描述
3这里的methodName,value接收的thingsboard点击开关后传递过来的指令,这里自己看情况编写相应代码,楼主这里只是测试,所以写的比较简单。
4mqttUserName这个对应我们设备之前的访问令牌
5如果测试过程中一直失败,可以先用MQTT客户端工具测试看看能不能接收到订阅的消息
在这里插入图片描述

5编写程序完成后点击编译然后上传烧录到我们的开发板中,就可以进行测试了,大功告成!!!

在这里插入图片描述

演示视频

thingsboard模拟发送指令控制esp8266的灯开关

学习总结

本次过程只是简单的模拟了一下设备远程控制,其实里面还有好多的东西我们可以去实现的,有很多可以优化的地方。
例如:可以写一个微信小程序或者app去远程控制我们的设备,
现在程序的wife和密码都是固定的,不灵活,这里可以实现动态配置,也就是我们经常提到的设备配网,这个后面也会考虑写一期记录一下。还有很多很多,就先记录到这里了,感兴趣的小伙伴可以一起学习交流呀。


http://chatgpt.dhexx.cn/article/NOFTNiDS.shtml

相关文章

工业物联网数控机床设备远程控制整体解决方案

1、数控机床设备是复杂性的工业机器&#xff0c;机械制造、计算机、液压、传感、信息处理、光机电等技术的机电一体化产品。 2、数控机床设备的故障会严重阻碍着生产的效率和质量&#xff0c;目前先进的数控系统均配有完备的远程通信接口和与上位机进行通信的完整协议&#xff…

plc设备远程控制系统

采用工业互联网与大数据分析技术,实时监控异地设备运行状态,为设备提供定制化的响应式服务,包括设备的智能分析诊断、预测性维护、节能管理、空中升级和远程作业指导等,减少因设备意外停车引起的生产停滞,提高设备利用率,为设备健康与安全高效生产保驾护航。 实时监控设…

如何远程控制电脑?3个方法轻松搞定!

案例&#xff1a;如何远程控制电脑&#xff1f; 【我不想时时刻刻都带着自己的电脑&#xff0c;听朋友说可以远程电脑。有没有大神分享一下具体的操作方法&#xff1f;感谢&#xff01;】 随着科技的不断进步&#xff0c;远程控制电脑已经不再是一件难以实现的事情。如今&…

几种远程控制方式

之前有一种想法&#xff0c;就是可以利用完善的手机移动通信网络进行远程控制&#xff0c; 在思考的过程中又想到几种远程控制的方案 硬件&#xff1a;家里要有电脑、下位机、多台摄像头 、&#xff08;如果可以有一台小车&#xff0c;可以让小车载着摄像头按程序定时到处拍照…

远程控制三层设备

一、三层设备配置IP 1、三层设备接口默认是关闭状态需要手动开启 2、给三层设备配置ip地址 Router(config)#int g0/1 切换到g0接口 Router(config-if)#ip add 192.168.0.254 255.255.255.0 配置ip子网掩码 Router(config-if)#no shut 手动开启接口3…

numpy下载安装

可以将要安装的包放在一个文件夹&#xff0c;如下&#xff0c;然后pip install -r 文件名&#xff0c;批量安装&#xff0c;网不好就一个一个区官网下载安装包&#xff0c;然后pip install 下载路径\文件名 numpy 下载页面python3 是linux系统中的命令&#xff0c;windows系统直…

python numpy库下载_Numpy函数库下载与安装教程

1 首先下载numpy函数库&#xff0c;下载链接https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 。 注意选择与自己Python版本匹配的numpy。我是Python2.7版本&#xff0c;windows64位&#xff0c;所以我下载的是numpy-1.16.5mkl-cp27-cp27m-win_amd64.whl 。 2 将下载的nu…

Pycharm安装numpy失败

在使用Pycharm下载numpy库时&#xff0c;可能会出现以下错误&#xff1a; 这种情况主要是两种思路&#xff1a; 第一种方法是查看是否pip版本是否正确&#xff0c;具体操作方法可以参照这篇博客&#xff1a;PyCharm安装库numpy失败的解决方法_不自由戛剑生的博客-CSDN博客_pyc…

python numpy库下载_python3.6下Numpy库下载与安装图文教程

python3.6下Numpy库下载与安装图文教程 今天在做Plotly的散点图时&#xff0c;需要Numpy 这个库的使用。 没有安装Numpy这个库的时候&#xff0c;报错一般是下图这样&#xff1a;ModuleNotFoundError: No module named numpy 看到这个错&#xff0c;肯定是Numpy这个库没有安装…

有关pycharm安装numpy简便方法

有关pycharm安装numpy简便方法 写调用numpy代码&#xff1a;import numpy as np 然后你会得到一个报错&#xff0c;说你没有numpy包&#xff0c;然后点击下载&#xff0c;不用管能不能下载成功&#xff0c;基本上都是下载失败&#xff0c;然后打开错误详情 复制下面那个串&am…

anaconda3下载第三方库如numpy遇到condaHTTPError 解决方法

发现的报condaHTTPError最大的问题&#xff1a;https报错改成http就好了&#xff01;&#xff01;&#xff01; 有教程说是因为http比https更稳定。 注意&#xff1a;教程一定要看最新的&#xff0c;之前有一些过时的教程 通过conda config --add channels http://mirrors.tuna…

Python的Numpy库下载及安装

** 1、首先需要下载Numpy的安装包 ** Numpy下载地址 选择跟自己系统相对应的版本&#xff0c;64位windows操作系统就下载这个版本 然后需要确认你的python版本在3.4或3.7以上&#xff0c;只有这样才能安装Numpy。 ** 2、开始安装Numpy ** 打开cmd直接输入命令 pip insta…

Python和numpy下载安装方法

一般python分2.7和3.0系类的,2.7的稳定&#xff0c;教程最多&#xff0c;所以目前我们就用这个来入门 win7,64位的&#xff0c;就安装对应的包&#xff1a;python-2.7.13.amd64 下载地址&#xff1a;https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64.msi 其实这…

python下载numpy库_python怎么下载numpy

安装Python step1&#xff1a;官网下载安装包&#xff1b; https://www.python.org/ 我下载的是python-3.4.4.msi step2&#xff1a;python环境变量配置&#xff1b; 计算机-属性-高级系统设置-环境变量-系统变量 找到PATH&#xff0c;点击编辑&#xff0c;加英文分号;在分号后…

numpy下载失败解决方法

方法&#xff1a;使用清华大学开源软件镜像下载 一&#xff1a;清华大学开源软件镜像站网址 pypi | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 二&#xff1a;找到安装python的文件路径&#xff0c;打开Scripts&#xff0c;在文件路径显示框中输…

chatgpt赋能python:Python入门:如何下载NumPy库

Python入门&#xff1a;如何下载NumPy库 如果你是Python初学者或是有开发经验的工程师&#xff0c;你可能会涉及到使用NumPy库。NumPy是Python中一个非常重要的科学计算库&#xff0c;它提供了高效的多维数组数据结构和数学函数&#xff0c;被许多人用于数据分析、机器学习、科…

numpy库的下载与应用

numpy库下载地址 https://www.lfd.uci.edu/~gohlke/pythonlibs/ 打开网址找到下图圈出来的numpy点击进去 找到对应的python版本的下载 我的python是3.6.4 电脑64位的 所以选择下图圈出的下载 将下载的numpy复制到Python文件夹中的Scripts文件夹里 在python文件夹下的Scripts…

numpy 下载安装

在安装 numpy 之前&#xff0c;必须要先安装 python&#xff0c;而且 numpy 与 python 的版本是对应的。 numpy 与 python 版本对应关系链接 1. 下载和安装 python 3.10 如果你的电脑已经安装了python3.4以后的版本&#xff0c;那么就可以使用 pip 工具 python官网 记得选中…

NumPy下载与安装

NumPy下载与安装 NumPy 是 Python 的第三方扩展包&#xff0c;但它并没有包含在 Python 标准库中&#xff0c;因此您需要单独安装它。本节介绍如何在不同的操作系统上安装 NumPy。 Windows系统安装 在 Windows 系统下安装 NumPy 有两种常用方式&#xff0c;下面分别对其进行…