我一直在使用 ESP32 S2 作为主机和 Nimbelink 的 Skywire Nano (nrf9160) 作为由串行 AT 命令控制的 LTE 调制解调器编写 AT 客户端,LTE 模块响应迅速并且运行良好。LTE 调制解调器有一个内部 TCP 堆栈,我们使用它通过 HTTP POST 成功地将数据发送到 dweet.io,但我们还没有成功地向私有 MQTT 服务器发送相同的数据。
LTE 模块使用了一种叫做 Socket Dials 的方法,这些是 AT 指令,方便将数据发送到 Web,它基本上包含这三个指令:
- AT#SOCKET 激活套接字
- AT#TCPCONN 连接到一个 URL
例子:
at#xtcpconn=3,"node02.myqtthub.com",1883
- AT#TCPSEND 打开一个 > 提示,您可以在其中输入要发送的任何内容
我不是通信协议专家,因此很难找到发送字符串的正确方法,因为我没有找到使用 TCP 套接字的类似示例。我尝试发送 mosquitto_pub 字符串但没有成功,nimbelink 只有一个使用 HTTP 的示例,我希望有人可以帮助我,或者至少让我朝着正确的方向前进。
at#xsocket=3,1,1 #XSOCKET: 3,6 OK at#xtcpconn=3,"node02.myqtthub.com",1883 #XTCPCONN: 1 OK at#xtcpsend=3
mosquitto_pub -h node02.myqtthub.com -i hub -u user -P 'password' -t topic -m "hello world"#XTCPSEND: 104
OK 袜子:3,HUP
编辑:添加了尝试的 LTE 日志