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

这篇具有很好参考价值的文章主要介绍了thingsboard+ESP8266+MQTT实现设备远程控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介:

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

前期准备:

  1. 之前搭建好的thingsboard平台
  2. NodeMCU开发板
  3. 开发NodeMCU的工具:Arduino
    thingsboard+ESP8266+MQTT实现设备远程控制
    thingsboard+ESP8266+MQTT实现设备远程控制

操作过程

1新建一个测试设备

新建一个租户账号进入到我们的thingsboard平台后点击设备管理新建一个设备。
thingsboard+ESP8266+MQTT实现设备远程控制
新建成功后点击设备进入详情页面,点击复制设备访问令牌,这个是后面MQTT访问对应的用户名,可以先保存下来
thingsboard+ESP8266+MQTT实现设备远程控制

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

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

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

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

#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);

  
  // 连接WiFi
  connectWifi();
  
  // 设置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中文文档里有详细介绍:
thingsboard+ESP8266+MQTT实现设备远程控制
3这里的methodName,value接收的thingsboard点击开关后传递过来的指令,这里自己看情况编写相应代码,楼主这里只是测试,所以写的比较简单。
4mqttUserName这个对应我们设备之前的访问令牌
5如果测试过程中一直失败,可以先用MQTT客户端工具测试看看能不能接收到订阅的消息
thingsboard+ESP8266+MQTT实现设备远程控制

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

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

演示视频

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

学习总结

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

到了这里,关于thingsboard+ESP8266+MQTT实现设备远程控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ESP8266】使用MQTT协议 连接华为云iotDA,实现设备属性上报

    相关资料:https://github.com/CQUPTLei/ESP8266 往期文章:【ESP8266】基础AT指令和常用WIF指令 【MQTT 5.0】协议 ——发布订阅模式、Qos、keepalive、连接认证、消息结构 华为云物联网平台 (IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上

    2024年02月09日
    浏览(29)
  • ESP32/ESP8266 WIFI接入通过HTTP响应远程控制(附可用源码)

    ESP共有三种工作模式,分别是无线接入点模式(AP)、无线终端模式STA(Wireless Station)以及混合模式(以上两种模式的混合)。 ESP的WiFi设置是储存在它的闪存系统中的。因此在启动ESP8266并连接WiFi时,它都会尝试使用闪存系统中储存的信息来进行WiFi连接 连接网络基本步骤

    2023年04月09日
    浏览(33)
  • 【智能家居远程控制系统】ESP8266连接阿里云(六)

    第一章 阿里云物联网平台搭建 第二章 订阅与发布MQTT消息 第三章 为ESP8266-NodeMCU搭建ArduinoIDE环境  第四章 ESP8266连接阿里云 第五章 阿里云平台云产品流转 第六章 使用Aruino与云产品流转实现远程控制ESP8266 目录 前言 一、远程控制的意义 二、准备工作 1.阿里云平台设备创建

    2024年02月03日
    浏览(40)
  • 【智能家居远程控制系统】ESP8266连接阿里云(一)

    第一章 阿里云物联网平台搭建 第二章 订阅与发布MQTT消息 第三章 为ESP8266-NodeMCU搭建ArduinoIDE环境  第四章 ESP8266连接阿里云 第五章 阿里云平台云产品流转 第六章 使用Aruino与云产品流转实现远程控制ESP8266 文章目录 目录 系列文章目录 前言 一、注册阿里云IOT 二、创建MQTT.

    2024年02月07日
    浏览(37)
  • 毕业设计——基于STM32的智能家具控制系统(ESP-01S(8266)、手机app远程控制、远程显示温度)

    智能家具系统分为两个不同版本系列: ①系列一:手机app远程控制、远程检测温湿度显示在app,(云平台)    ---------本文章 ②系列二:语音识别控制                https://blog.csdn.net/m0_59113542/article/details/123742383 步进电机及相关驱动 步进电机28BYJ48 uln2003驱动板器4相5线

    2023年04月09日
    浏览(36)
  • STM32--ESP8266物联网WIFI模块(贝壳物联)--远程无线控制点灯

    本文适用于STM32F103C8T6等MCU,其他MCU可以移植,完整资源见文末链接 一、简介 随着移动物联网的发展,各场景下对于物联控制、数据上传、远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块——ESP8266,话不多少我们先来看看这个神奇的模

    2024年02月08日
    浏览(48)
  • 创建OneNET新版MQTT设备:实现远程控制单片机 为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务)

    本项目教程总共分为四节 1.(当前文章)创建OneNET新版MQTT设备:为微信小程序与单片机通信打基础(微信小程序通信单片机前置任务) 2.ESP8266-01s入门:烧录AT固件与OneNET MQTT通信教程包含MQTT.fx1.7.1教程(微信小程序通信单片机前置任务) 3.物联网实践教程:微信小程序结合

    2024年02月04日
    浏览(49)
  • 阿里云iot haas Micropython连接esp32;esp32物联网设备上报信息及云端信息获取;远程控制设备自带led熄灭;网页界面交互远程控制

    参考:https://blog.csdn.net/HaaSTech/article/details/125975052 https://iot.console.aliyun.com/ https://www.bbsmax.com/A/x9J2X8nZd6/ 首先烧录阿里云iot haas固件: https://haas.iot.aliyun.com/haasapi/index.html#/Python/docs/zh-CN/startup/ESP32_startup ***直接下载后可以通过vscode插件烧录;烧录好后也可以在thony编辑运行代码

    2024年02月02日
    浏览(39)
  • 【阿里云】物联网平台配置ESP8266真实设备AT串口连接,支持MQTT协议通信

    1 阿里云物联网平台 官方文档:https://help.aliyun.com/product/30520.html 官方控制台:https://iot.console.aliyun.com/lk/summary/new 左边有产品和设备, 产品是抽象的品类 ,比如说电灯,空调等等。 设备是品类下具体的物品 ,和实物一一对应的云端信息,比如电灯1,电灯2,电灯-卧室,电灯

    2024年02月01日
    浏览(43)
  • 设备通过MQTT与ESP8266注册上云成功后出现离线连接不上问题

    之前在学习实现类如基于STM32开发的温度传感与上云开发时遇到了一个蛮头疼的问题。项目综合来说就是基于STM32的多点测温依据MQTT协议链接腾讯云,配套实现温度在微信小程序的显示。 最初开发时设备正常上云,在线后可实现温度数据上下行,相关微信小程序也可获得温度

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包