xiaozhou-lei / pxt-mqtt-1

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

EMmqtt

English 中文版

esp8266-mqtt无线模块是emakefun公司基于乐鑫科技的wifi芯片ESP8266基础上重新研发的串口转wifi的物联网模块,该模块采用AT配置方式来支持wifi无线通信,AT指令全面兼容乐鑫官方指令库(V3.0.0),在此基础上添加了MQTT指令,并且全部封装成scratch,mixly,Makecode图形化编程块支持arduino,micro:bit。让用户非常容易接收和发送物联网信息,远程物联网控制从未如此简单。

image

硬件参数

  • 工作电压:5V
  • 接口速率:9600 bps
  • 无线频率:2.4GHz
  • 接口类型:PH2.0-4Pin (G V TX TX)
  • 无线模式:IEEE802.11b/g/n
  • SRAM:160KB
  • 外置Flash:4MB
  • 支持低功耗:<240mA
  • 模块尺寸:4 * 2.1cm
  • 安装方式:M4螺钉螺母固定

模块特点:

  • 内置低功率 32 位 CPU:可以兼作应用处理器
  • 内置协议:TCP/IP 协议栈
  • 加密类型:WPA WPA2/WPA2–PSK
  • 支持乐鑫官方AT标准指令集
  • 支持连接标准MQTT协议和TTL串口到无线的应用

MQTT扩展AT指令

AT+MQTTUSERCFG - 配置 MQTT 用户属性

设置指令: AT+MQTTUSERCFG=,,<"client_id">,<"username">,<"password">,<cert_key_ID>,<CA_ID>,<"path">

功能: 设置 MQTT 用户配置

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 scheme: 1: MQTT over TCP 2: MQTT over TLS(no certificate verify) 3: MQTT over TLS(verify server certificate) 4: MQTT over TLS(provide client certificate) 5: MQTT over TLS(verify server certificate and provide client certificate) 6: MQTT over WebSocket(based on TCP) 7: MQTT over WebSocket Secure(based on TLS, no certificate verify) 8: MQTT over WebSocket Secure(based on TLS, verify server certificate) 9: MQTT over WebSocket Secure(based on TLS, provide client certificate) 10: MQTT over WebSocket Secure(based on TLS, verify server certificate and provide client certificate) client_id: 对应 MQTT client ID, 用于标志 client 身份, 最长 256 字节 username: 用于登录 MQTT broker 的 username, 最长 64 字节 password: 用于登录 MQTT broker 的 password, 最长 64 字节 cert_key_ID: 证书 ID, 目前支持一套 cert 证书, 参数为 0 CA_ID: CA ID, 目前支持一套 CA 证书, 参数为 0 path: 资源路径, 最长 32 字节

AT+MQTTCLIENTID - 配置 MQTT 客户端 ID

设置指令:

AT+MQTTCLIENTID=<"client_id">

功能: 设置 MQTT 客户端 ID, 将会覆盖 AT+MQTTUSERCFG 中 clientID 参数, 用户可通过 AT+MQTTCLIENTID 设置较长的 clientID.

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 client_id: 对应 MQTT client ID, 用于标志 client 身份, 最长 256 字节

AT+MQTTUSERNAME - 配置 MQTT 登录用户名

设置指令:

AT+MQTTUSERNAME=<"username">

功能: 设置 MQTT 登录用户名, 将会覆盖 AT+MQTTUSERCFG 中 username 参数, 用户可通过 AT+MQTTUSERNAME 设置较长的用户名.

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 username: 对应 MQTT username, 用于登录 MQTT broker, 最长 256 字节

AT+MQTTPASSWORD - 配置 MQTT 登录密码

设置指令:

AT+MQTTPASSWORD=<"password">

功能: 设置 MQTT 登录密码, 将会覆盖 AT+MQTTUSERCFG 中 password 参数, 用户可通过 AT+MQTTPASSWORD 设置较长的密码.

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 password: 对应 MQTT password, 用于登录 MQTT broker, 最长 256 字节

AT+MQTTCONNCFG - 配置 MQTT 连接属性

设置指令:

AT+MQTTCONNCFG=,,<disable_clean_session>,<"lwt_topic">,<"lwt_msg">,<lwt_qos>,<lwt_retain>

功能: 设置 MQTT 连接配置

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 keepalive: MQTT PING 超时时间,范围为 [60, 7200], 单位为秒. 默认 120 disable_clean_session: MQTT 清理会话标志, 参数为 0 或 1, 默认为 0 lwt_topic: 遗嘱 topic, 最长 64 字节 lwt_msg: 遗嘱 message, 最长 64 字节 lwt_qos: 遗嘱 QoS, 参数可选 0, 1, 2, 默认为 0 lwt_retain: 遗嘱 retain, 参数可选 0, 1, 默认为 0

AT+MQTTCONN

设置指令:

AT+MQTTCONN=,<"host">,,

功能: 连接指定 MQTT broker

响应:

OK或ERROR

查询指令:

AT+MQTTCONN?

功能: 查询 AT 已连接的 MQTT broker

响应:

AT+MQTTCONN:,,<"host">,,<"path">,

参数说明:

LinkID: 当前只支持 0 host: 连接 MQTT broker 域名, 最大 128 字节 port: 连接 MQTT broker 端口, 最大 65535 path: 资源路径, 最长 32 字节 reconnect: 是否重连 MQTT, 若设置为 1, 需要消耗较多内存资源 state: MQTT 当前状态, 状态说明如下: 0: 连接未初始化 1: 已设置 MQTTUSERCFG 2: 已设置 MQTTCONNCFG 3: 连接已断开 4: 已建立连接 5: 已连接, 但未订阅 topic 6: 已连接, 已订阅过 topic scheme: 1: MQTT over TCP 2: MQTT over TLS(no certificate verify) 3: MQTT over TLS(verify server certificate) 4: MQTT over TLS(provide client certificate) 5: MQTT over TLS(verify server certificate and provide client certificate) 6: MQTT over WebSocket(based on TCP) 7: MQTT over WebSocket Secure(based on TLS, no certificate verify) 8: MQTT over WebSocket Secure(based on TLS, verify server certificate) 9: MQTT over WebSocket Secure(based on TLS, provide client certificate) 10: MQTT over WebSocket Secure(based on TLS, verify server certificate and provide client certificate)

AT+ALIYUN_MQTTCONN?

设置指令:

AT+ALIYUN_MQTTCONN=<"host">,,<"ProductKey">,<"DeviceName">,<"DeviceSecret">

功能: 连接指定的阿里云MQTT broker

参数说明: host: 连接阿里云的MQTT broker 域名, 详情请参考阿里云域名格式 port: 连接 MQTT broker 端口, 最大 65535 默认 1883 ProductKey: 设备所属产品的ProductKey,即物联网平台为产品颁发的全局唯一标识符 DeviceName: 设备在产品内的唯一标识符。DeviceName与设备所属产品的ProductKey组合,作为设备标识,用来与物联网平台进行连接认证和通信。 DeviceSecret: 物联网平台为设备颁发的设备密钥,用于认证加密。需与DeviceName成对使用。

响应:

OK或ERROR

AT+MQTTPUB

设置指令:

AT+MQTTPUB=,<"topic">,<"data">,,

功能: 在 LinkID上通过 topic 发布数据 data, 其中 data 为字符串消息, 若要发布二进制,请使用 AT+MQTTPUBRAW

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 topic: 发布主题, 最长 64 字节 data: 发布消息, data 不能包含 \0, 请确保整条 AT+MQTTPUB 不超过 AT 指令的最大长度限制 qos: 发布服务质量, 参数可选 0,1,2, 默认为 0 retain: 发布 retain

AT+MQTTPUBRAW

设置指令:

AT+MQTTPUBRAW=,<"topic">,,,

功能: 在 LinkID 上通过 topic 发布数据 data, 其中 data 为二进制数据

响应:

OK或ERROR

等待用户输入 length 大小数据, 之后响应如下:

+MQTTPUB:FAIL

+MQTTPUB:OK

参数说明:

LinkID: 当前只支持 0 topic: 发布主题, 最长 64 字节 length: 要发布消息长度, 长度受限于当前可用内存 qos: 发布服务质量, 参数可选 0,1,2, 默认为 0 retain: 发布 retain AT port 未收到指定 length 长度的数据, 将一直等待, 在此期间接收到的数据都会当成普通数据

AT+MQTTSUB

设置指令:

AT+MQTTSUB=,<"topic">,

功能: 订阅指定连接的 MQTT 主题, 可重复多次订阅不同 topic

响应:

OK或ERROR

当收到对应主题订阅的 MQTT 消息时, 将按照如下格式打印消息内容

+MQTTSUBRECV:,<"topic">,<data_length>,data

如果订阅已订阅过的主题, 仍无条件向 MQTT broker 订阅, Log 口打印 ALREADY SUBSCRIBE

查询指令:

AT+MQTTSUB?

功能:

查询 MQTT 所有连接上已订阅的 topic

响应:

+MQTTSUB:,,<"topic1">, +MQTTSUB:,,<"topic2">, +MQTTSUB:,,<"topic3">, ... OK 1 2 3 4 5 或ERROR

参数说明:

LinkID: 当前只支持 0 state: MQTT 当前状态, 状态说明如下: 0: 连接未初始化 1: 已设置 MQTTUSERCFG 2: 已设置 MQTTCONNCFG 3: 连接已断开 4: 已建立连接 5: 已连接, 但未订阅 topic 6: 已连接, 已订阅过 topic topic*: 订阅过的主题 qos: 订阅过的 QoS

AT+MQTTUNSUB

设置指令:

AT+MQTTUNSUB=,<"topic">

功能: 取消订阅指定连接的 MQTT 主题, 可多次取消不同订阅 topic

响应:

OK或ERROR

参数说明:

LinkID: 当前只支持 0 topic: 取消订阅主题, 最长 64 字节 如果取消未订阅的主题, 仍无条件向 MQTT broker 取消订阅, Log 口打印 NO UNSUBSCRIBE

AT+MQTTCLEAN

设置指令:

AT+MQTTCLEAN=

功能: 关闭 MQTT Client 为 LinkID 的连接, 并释放内部占用的资源

响应:

OK或者ERROR

参数说明:

LinkID: 当前只支持 0

microbit makecode块

  • 初始化设置块 image

在初始化设置块中,首先要设置TX(发送)和RX(接收)端口引脚,然后是设置模块需要连接的wifi账号和密码,初始化还需要设置自己mqtt服务器的ip和端口(默认为1883),同时点击➕可以设置其他信息。

  • 阿里云服务器设置块 ![image](image/aliyun introduction.png) 在阿里云控制台找到相对应的域名,设备所属产品的ProductKey、设备在产品内的唯一标识符DeviceName、物联网平台为设备颁发的设备密钥DeviceSecret 详情请点击这里
  • 消息订阅块

image

消息订阅快是用来订阅主题然后设置消息接受的模块,其topic后输入你想订阅的主题名称,后面的Qos为你订阅消息传输设置。 当输入数字为0时: 服务器发送的一条消息,用户最多能收到一次,也就是说服务器力向用户发送消息,如果发送失败,也就算了; 当输入数字为1时: 服务器发送的一条消息,用户至少能收到一次,也就是说服务器向用户发送消息,如果发送失败,会继续重试,直到用户收到消息为止,但是因为重传的原因,用户有可能会收到重复的消息; 当输入数字为2时: 服务器发送的一条消息,用户确保能收到而且只收到一次,也就是说服务器尽力向用户发送消息,如果发送失败,会继续重试,直到用户收到消息为止,同时保证用户不会因为消息重传而收到重复的消息。

  • 消息发送块

image

向用户发为主题的发送内容,输入你需要以哪个主题推送消息和消息内容。

  • 消息接收块

image

接收你所订阅的某个主题推送过来的消息。

  • http模式配置块

image

设置http服务器的域名(或IP)和端口,默认80。

  • http模式get请求块

image

发送get请求。

mqtt模式演示

image

解释:mqtt物联网模块设置P1,P2引脚为发送接收引脚,设置Wi-Fi配置,连接Wi-Fi;连接mqtt服务器,端口为1883,之后订阅主题“test”,并设置至少能接受到一次消息,当按下microbit A键之后,向主题“testtopic”推送消息"hello world",同时也接收来自主题“test”推送过来的数据,并在microbit上显示出来。

http模式演示

image

解释:mqtt物联网模块设置P1,P2引脚为发送接收引脚,设置Wi-Fi配置,连接Wi-Fi;连接http服务器,端口为80,当按下microbit A键之后,mqtt模块发送get请求"test",并且把接收到的请求数据在microbit点阵屏上显示。

阿里云 mqtt模式演示

image

解释:mqtt物联网模块设置P1,P2引脚为发送接收引脚,设置Wi-Fi配置,连接Wi-Fi;连接阿里云服务器,端口为1883,当按下microbit A键之后,mqtt模块向topic(/a1gVfAJo2pv/emakefun/user/update)发送"helloworld",发送的数据我们可以通过查看阿里云日志服务里面的数据和状态,看到对应的日志;同时也接收来自主题"/a1gVfAJo2pv/emakefun/user/get"推送过来的数据,并在microbit上显示出来。

About

License:MIT License


Languages

Language:TypeScript 94.2%Language:C++ 5.4%Language:Makefile 0.4%