MQTT通讯-使用EMQX将ESP8266与微信小程序通讯

这篇具有很好参考价值的文章主要介绍了MQTT通讯-使用EMQX将ESP8266与微信小程序通讯。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

MQTT

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅范式的“轻量级”消息协议,由IBM发布。MQTT可以在TCP/IP协议族上工作,并且是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议。因此,MQTT协议适用于硬件性能低下的远程设备以及网络状况不佳的环境中,如机器与机器(M2M)通信和物联网(IoT)等领域。
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu
关于MQTT还有很多其他的概念例如订阅发布机制、消息服务等级、心跳机制等,在阅读文章之前请先了解相关的知识,推荐学习地址。

ESP8266

乐鑫ESP8266是一款内置WiFi功能的单片机,它具有高性能的无线SOC特性,能够为移动设备和物联网应用提供无线连接功能。
ESP8266的特点如下:
封装尺寸小,超低功耗,支持多种电源模式。
带有高性能的UART-WiFi透传模块,能够直接连接至其他基于微控制器的设备。
支持STA/AP/STA+AP三种工作模式,可以作为无线接入点或者客户端使用。
内置TCP/IP协议栈,支持多路TCP Client连接,无需添加任何匹配电路。
支持三种天线接口形式:板载PCB天线、IPEX接口和邮票孔接口。
可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。
需要注意的是,虽然我提供的信息尽可能准确,但产品可能在不断更新和变化,建议查阅乐鑫官方网站获取最新和最准确的信息。
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu

搭建自己的MQTT服务器

本文使用的是EMQX 官网地址
购买自己的服务器后使用下面代码部署

curl -s https://assets.emqx.com/scripts/install-emqx-rpm.sh | sudo bash
sudo yum install emqx -y
sudo systemctl start emqx

小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu

安装完成之后 打开后台http://你的IP地址/#/login?to=/websocket 初始账户admin密码是public。
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu

烧录ESP8266代码

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

// WiFi
const char *ssid = "mousse"; // Enter your WiFi name
const char *password = "qweqweqwe";  // Enter WiFi password

// MQTT Broker
const char *mqtt_broker = "broker.emqx.io";
const char *topic = "esp8266/test";
const char *mqtt_username = "emqx";
const char *mqtt_password = "public";
const int mqtt_port = 1883;

WiFiClient espClient;
PubSubClient client(espClient);

void setup() {
    // Set software serial baud to 115200;
    Serial.begin(115200);
    // connecting to a WiFi network
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.println("Connecting to WiFi..");
    }
    Serial.println("Connected to the WiFi network");
    //connecting to a mqtt broker
    client.setServer(mqtt_broker, mqtt_port);
    client.setCallback(callback);
    while (!client.connected()) {
        String client_id = "esp8266-client-";
        client_id += String(WiFi.macAddress());
        Serial.printf("The client %s connects to the public mqtt broker\n", client_id.c_str());
        if (client.connect(client_id.c_str(), mqtt_username, mqtt_password)) {
            Serial.println("Public emqx mqtt broker connected");
        } else {
            Serial.print("failed with state ");
            Serial.print(client.state());
            delay(2000);
        }
    }
    // publish and subscribe
    client.publish(topic, "hello emqx");
    client.subscribe(topic);
}

void callback(char *topic, byte *payload, unsigned int length) {
    Serial.print("Message arrived in topic: ");
    Serial.println(topic);
    Serial.print("Message:");
    for (int i = 0; i < length; i++) {
        Serial.print((char) payload[i]);
    }
    Serial.println();
    Serial.println("-----------------------");
}

void loop() {
    client.loop();
}

将上面的信息改成自己的
注意添加PubSubClient库

微信小程序开发

官方接入教程
创建微信小程序的项目,并添加库文件,本文使用的是MQTT.js,同时针对不用的客户端都有相关的SDK,这里微信小程序使用JavaScript语言所以使用本库。
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu
EMQX要求微信小程序支持通过 WebSocket 进行即时通信,EMQX 的 MQTT Over WebSocket 能够完全兼容使用在微信小程序上。
提示
由于微信小程序的规范限制,EMQX 使用微信小程序接入时需要注意以下几点:
必须使用已经通过域名备案 (opens new window)的域名接入
域名需要在小程序管理后台 (opens new window)域名/IP 白名单中(开发 -> 开发设置 -> 服务器域名 -> socket 合法域名)
仅支持 WebSocket/TLS 协议,需要为域名分配受信任 CA 颁发的证书
由于微信小程序 BUG,安卓真机必须使用 TLS/443 端口,否则会连接失败(即连接地址不能带端口)

下载并导入 mqtt.mini.js
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu
在微信小程序onLoad声明周期中测试。

	 onLoad(options) {
    try {
      console.log("开始链接");
      const clientId = new Date().getTime();//mqtt的连接ID
      app.globalData.client = mqtt.connect(`wxs://${host}/mqtt`, {
          username,
          password,
          reconnectPeriod,
          connectTimeout,
          clientId,
      });
    } catch (error) {
        console.log("mqtt.connect error", error);
    }
    if (app.globalData.client) {
      app.globalData.client.subscribe("test")
    }

    app.globalData.client.on("message", (topic, payload) => {
      console.log(`收到消息 - Topic: ${topic},Payload: ${payload}`)
      // app.globalData.currMsg = JSON.parse(payload);
      // console.log(typeof payload)
    });
  }

这里已经收到遗嘱消息
小程序链接emqx,微信小程序,ESP8266,微信小程序,小程序,物联网,mcu
订阅、发布、消息回调更多API请查询MQTT.js。文章来源地址https://www.toymoban.com/news/detail-850972.html

到了这里,关于MQTT通讯-使用EMQX将ESP8266与微信小程序通讯的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 实现手机app和微信小程序和树莓派智能音箱远程控制arduino获取甲醛温湿度和控制灯(esp8266 ZE08-CH2O DHT11 MQTT 语音识别 语言合成 http请求转串口通信系统 )

    首先你有这样的esp8266 这种esp8266自身带2个按键和烧录芯片方便调试,综合性价比较高。 需要有一个arduino uno 连接甲醛探测器和温湿度探测器 或者其他芯片都行。 还有就是你要有树莓派和usb麦克风,用来实现智能音箱,有了这3个开发板我们开始吧! https://www.bilibili.com/video

    2024年02月14日
    浏览(51)
  • 两星期自学:微信小程序+ESP8266实现智能家居控制(1)

    在开始前,我简单的介绍一下我的项目功能和原理。项目功能:支持一键配网、有完整的微信小程序注册登录流程、小程序控制ESP8266、ESP8266读温湿度显示到小程序上、支持50组自定义红外遥控和一键配置米家、天猫精灵。 项目原理:巴法云作为服务器,可以把他理解成一个

    2024年03月15日
    浏览(45)
  • 微信小程序+esp8266NodeMcu(cp2102)+onenet物联平台(二)

    目录 一、搭建环境 1、esp8266NodeMcu(cp2102)驱动安装  2、为esp8266NodeMcu搭建Arduino开发环境 3、安装PubSubClient库 二、编写代码 上一篇文章微信小程序+esp8266NodeMcu(cp2102)+onenet物联平台(一)介绍了onenet平台注册及设备连接,接下来介绍,如何使用Arduino IDE编写代码,控制esp8266,使用

    2024年02月01日
    浏览(46)
  • 基于STM32设计的智慧农业管理系统(ESP8266+腾讯云微信小程序)

    基于STM32设计的智慧农业控制系统(ESP8266+腾讯云微信小程序) 随着人们对食品安全和生态环境的日益重视,智慧农业逐渐成为一个备受关注的领域。智能化管理可以提高农业生产效率,减少资源浪费,改善生态环境。因此,基于物联网技术的智慧农业管理系统越来越受到农民和

    2024年02月08日
    浏览(46)
  • “编辑微信小程序与后台数据交互与微信小程序wxs的使用“

    在现代移动应用开发中,微信小程序已经成为了一个非常流行和广泛使用的平台。为了使小程序能够展示丰富的内容和实现复杂的功能,与后台数据的交互是至关重要的。同时,微信小程序还提供了一种特殊的脚本语言——wxs,用于增强小程序的业务逻辑处理能力。本篇博客

    2024年02月08日
    浏览(46)
  • ESP8266控制LED点灯和按钮,配合巴法云平台和微信小程序实现远程控制

    ESP8266控制LED点灯和按钮,配合巴法云平台和微信小程序实现远程控制 本文将介绍如何使用ESP8266控制LED点灯和按钮,同时利用巴法云平台和微信小程序实现远程控制。具体实现过程如下: 一、硬件准备 ESP8266模块 LED灯 按钮 杜邦线 面包板 二、开发环境搭建 ESP8266使用Arduino

    2024年02月12日
    浏览(45)
  • 【ESP8266】使用MQTT协议 连接华为云iotDA,实现设备属性上报

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

    2024年02月09日
    浏览(40)
  • 【物联网】手把手完整实现STM32+ESP8266+MQTT+阿里云+APP应用——第2节-编写STM32程序初步实现ESP8266上云与发布订阅消息

    本节目标: 本节实现,硬件连接STM32与ESP8266,编写STM32程序通过at命令方式实现STM32+ESP8266与阿里云物联网平台发布订阅消息,本节最终实现初步的发布订阅消息(能够发布消息给阿里云物联网平台但无外设数据,能够订阅阿里云物联网平台发送的消息来开关LED灯)。 硬件连接

    2024年02月03日
    浏览(65)
  • EMQX(MQTT)----基本用法以及使用Python程序进行模拟流程

            EMQX是大规模分布式物联网MQTT消息服务器,除了发送接送的流量不能太大(不能用于生产!),在学习MQTT方面上有很大的优势的!         在使用该协议时,主要需要弄懂的一个知识点就是“发布者”和“订阅者”的关系,在最简单的模型中,一般会含有以上两

    2023年04月24日
    浏览(80)
  • 微信小程序使用MQTT的小例子

    本文章大部分内容来自MQTT官方教程,有需要的可以去MQTT官网查看,这里只分享一下自己的使用过程。谢谢大家观看! 首先我们使用微信开发者工具创建一个空项目。 不使用云开发,不使用模板。 然后我们去MQTT网址,或者下方链接下载mqtt.mini.js 这个可以下载mqtt.mini.js http

    2024年04月13日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包