首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Simcom设备上AT命令的MQTT证书

Simcom设备上AT命令的MQTT证书
EN

Stack Overflow用户
提问于 2019-08-31 01:33:08
回答 1查看 614关注 0票数 2

我正在研究如何在google cloud中使用MQTT。我已经提到过,我没有找到关于AT命令和Google Cloud MQTT的具体文档

我使用的是Simcom 7600模块

AT documentation

文档说它要求这样做:

代码语言:javascript
运行
复制
+CSSLCFG: "sslversion",(0-9),(0-4)
+CSSLCFG: "authmode",(0-9),(0-3)
+CSSLCFG: "ignorelocaltime",(0-9),(0,1)
+CSSLCFG: "negotiatetime",(0-9),(10-300)
+CSSLCFG: "cacert",(0-9),(5-128)
+CSSLCFG: "clientcert",(0-9),(5-128)
+CSSLCFG: "clientkey",(0-9),(5-128)

ca certs generation Google cloud

所以我生成了RSA密钥:

代码语言:javascript
运行
复制
openssl genpkey -algorithm RSA -out rsa_private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in rsa_private.pem -pubout -out rsa_public.pem
#X.509 certificate for iot device in Google Cloud
openssl req -x509 -nodes -newkey rsa:2048 -keyout rsa_private.pem \
-out rsa_cert.pem -subj "/CN=unused"

在那之后,我想使用以下命令上传证书,基于musquito设置和这个python示例MQTT SIMCOM 7000 example

代码语言:javascript
运行
复制
MQTT_URL = "mqtt.googleapis.com"
CERTS_FOLDER = 'certs'
CA_NAME = 'rsa_cert.pem'  # cacert 'mosquitto-ca.crt'
CERT_NAME = 'rsa_private.pem'  # clientcert "mosquitto.crt"
KEY_NAME = 'client.key'  # client key "mosquitto.key"

我将示例修改为我的模块的波特率和正确的端口。我已经在用它打电话和发短信了,所以我知道它是有效的。

代码语言:javascript
运行
复制
    AT('+CFSINIT')
    with open(os.path.join(CERTS_FOLDER, CA_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(CA_NAME, len(data)), success="DOWNLOAD")
        send(data)
    with open(os.path.join(CERTS_FOLDER, CERT_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(CERT_NAME, len(data)), success="DOWNLOAD")
        send(data)
    with open(os.path.join(CERTS_FOLDER, KEY_NAME),'rb') as f:
        data = f.read()
        AT('+CFSWFILE=3,"{}",0,{},5000'.format(KEY_NAME, len(data)), success="DOWNLOAD")
        send(data)
    AT('+CFSTERM')

我得到的回应是:不幸的是,所有证书都是ERROR。在这方面的帮助将是巨大的:)提前感谢。

EN

回答 1

Stack Overflow用户

发布于 2021-06-04 22:20:30

您遵循的AT命令看起来不适用于SIM7600系列模块。请参考下面的示例,并按照顺序操作。

代码语言:javascript
运行
复制
2019-12-02 12:40:05:201[Recv<-]
+CPIN: READY

2019-12-02 12:40:06:823[Recv<-]
SMS DONE

2019-12-02 12:40:13:397[Recv<-]
PB DONE

2019-12-02 12:40:41:207[Send->]AT+CSQ
2019-12-02 12:40:41:214[Recv<-]
+CSQ: 29,99                                          // Check signal strength

OK

2019-12-02 12:40:42:861[Send->]AT+COPS?
2019-12-02 12:40:42:869[Recv<-]
+COPS: 0,0,"IND airtel airtel",7                       // Network operator

OK

2019-12-02 12:40:45:244[Send->]AT+CREG?
2019-12-02 12:40:45:248[Recv<-]
+CREG: 0,1                                            // Registration status

OK

2019-12-02 12:40:47:090[Send->]AT+CGATT?
2019-12-02 12:40:47:095[Recv<-]
+CGATT: 1

OK

2019-12-02 12:43:44:560[Send->]AT+CCERTLIST
2019-12-02 12:43:44:572[Recv<-]
+CCERTLIST: "cacert.pem"
+CCERTLIST: "clientcert.pem"
+CCERTLIST: "clientkey.pem"

OK

2019-12-02 12:43:55:518[Send->]AT+CCERTDELE="cacert.pem"                    // Delete stored certificates
2019-12-02 12:43:55:529[Recv<-]
OK

2019-12-02 12:44:04:807[Send->]AT+CCERTDELE="clientcert.pem"
2019-12-02 12:44:04:816[Recv<-]
OK

2019-12-02 12:44:16:405[Send->]AT+CCERTDELE="clientkey.pem"
2019-12-02 12:44:16:415[Recv<-]
OK

2019-12-02 12:44:31:519[Send->]AT+CCERTDOWN="clientcert.pem",1225               // Downloading client certificate
2019-12-02 12:44:31:527[Recv<-]
>
2019-12-02 12:44:33:600[Recv<-]-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

2019-12-02 12:44:54:930[Send->]AT+CCERTLIST
2019-12-02 12:44:54:939[Recv<-]A
OK

2019-12-02 12:44:57:573[Send->]AT+CCERTLIST
2019-12-02 12:44:57:580[Recv<-]
+CCERTLIST: "clientcert.pem"

OK

2019-12-02 12:45:11:073[Send->]AT+CCERTDOWN="clientkey.pem",1679                  // Downloading client private key
2019-12-02 12:45:11:080[Recv<-]
>
2019-12-02 12:45:12:801[Recv<-]-----BEGIN RSA PRIVATE KEY-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END RSA PRIVATE KEY-----

OK

2019-12-02 12:45:23:584[Send->]AT+CCERTDOWN="cacert.pem",1188            // Downloading Root CA
2019-12-02 12:45:23:595[Recv<-]
>
2019-12-02 12:45:25:234[Recv<-]-----BEGIN CERTIFICATE-----
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-----END CERTIFICATE-----

OK

2019-12-02 12:45:32:619[Send->]AT+CCERTLIST                           // View list of certifactes stored
2019-12-02 12:45:32:630[Recv<-]
+CCERTLIST: "cacert.pem"
+CCERTLIST: "clientcert.pem"
+CCERTLIST: "clientkey.pem"

OK

2019-12-02 12:45:40:685[Send->]AT+CSSLCFG="sslversion",0,4      // Set the SSL version for SSL context
2019-12-02 12:45:40:694[Recv<-]
OK

2019-12-02 12:45:41:955[Send->]AT+CSSLCFG="authmode",0,2     // Set the authentication mode(2 = verify server and client) of the SSL context
2019-12-02 12:45:41:965[Recv<-]
OK

2019-12-02 12:45:43:204[Send->]AT+CSSLCFG="cacert",0,"cacert.pem"   // Set the server root CA of the SSL context
2019-12-02 12:45:43:213[Recv<-]
OK

2019-12-02 12:45:44:430[Send->]AT+CSSLCFG="clientcert",0,"clientcert.pem"    //Set the client certificate of the SSL context
2019-12-02 12:45:44:439[Recv<-]
OK

2019-12-02 12:45:45:746[Send->]AT+CSSLCFG="clientkey",0,"clientkey.pem"   // Set the client key of the SSL context
2019-12-02 12:45:45:755[Recv<-]
OK

2019-12-02 12:45:47:119[Send->]AT+CMQTTSTART     // start MQTT service, activate PDP context
2019-12-02 12:45:47:134[Recv<-]
+CMQTTSTART: 0

OK

2019-12-02 12:45:49:313[Send->]AT+CMQTTACCQ=0,"SIMCom_client01",1   // Acquire one client which will connect to a MQTT server
2019-12-02 12:45:49:321[Recv<-]
OK

2019-12-02 12:45:51:844[Send->]AT+CMQTTSSLCFG=0,0   // Set the SSL context to be used in the SSL connection
2019-12-02 12:45:51:851[Recv<-]
OK

2019-12-02 12:45:55:612[Send->]AT+CMQTTWILLTOPIC=0,31   // Set the will topic for the CONNECT message
2019-12-02 12:45:55:620[Recv<-]
>
2019-12-02 12:45:57:974[Send->]aws/things/simcom7600_device01/
2019-12-02 12:45:57:982[Recv<-]
OK

2019-12-02 12:46:00:067[Send->]AT+CMQTTWILLMSG=0,17,1   // Set the will message for the CONNECT message
2019-12-02 12:46:00:073[Recv<-]
>
2019-12-02 12:46:01:845[Send->]SIMCom Connected!
2019-12-02 12:46:01:850[Recv<-]
OK

2019-12-02 12:46:07:832[Send->]AT+CMQTTCONNECT=0,"tcp://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.amazonaws.com:8883",60,1   // Connect to a MQTT server
2019-12-02 12:46:07:847[Recv<-]
OK

2019-12-02 12:46:09:702[Recv<-]
+CMQTTCONNECT: 0,0

2019-12-02 12:46:32:413[Send->]AT+CMQTTSUBTOPIC=0,31,1    // Set one topic for the SUBSCRIBE message
2019-12-02 12:46:32:421[Recv<-]
>
2019-12-02 12:46:34:212[Send->]aws/things/simcom7600_device02/
2019-12-02 12:46:34:220[Recv<-]
OK
   
2019-12-02 12:46:36:012[Send->]AT+CMQTTSUB=0     // Subscribe a message
2019-12-02 12:46:36:020[Recv<-]
OK

2019-12-02 12:46:36:288[Recv<-]
+CMQTTSUB: 0,0

2019-12-02 12:46:44:730[Send->]AT+CMQTTTOPIC=0,31      // Set the topic for the PUBLISH message
2019-12-02 12:46:44:739[Recv<-]
>
2019-12-02 12:46:46:059[Send->]aws/things/simcom7600_device02/
2019-12-02 12:46:46:070[Recv<-]
OK

2019-12-02 12:46:48:724[Send->]AT+CMQTTPAYLOAD=0,38   // Set the payload for the PUBLISH message
2019-12-02 12:46:48:732[Recv<-]
>
2019-12-02 12:46:50:446[Send->]{"message":"Hello from SIMCom Module"}
2019-12-02 12:46:50:454[Recv<-]
OK

2019-12-02 12:46:51:919[Send->]AT+CMQTTPUB=0,1,60        // Publish a message
2019-12-02 12:46:51:927[Recv<-]
OK

2019-12-02 12:46:52:253[Recv<-]  
+CMQTTPUB: 0,0
  
+CMQTTRXSTART: 0,31,38                          // Acknowledgement of received message from subscribed client  
+CMQTTRXTOPIC: 0,31
aws/things/simcom7600_device02/
+CMQTTRXPAYLOAD: 0,38
{"message":"Hello from SIMCom Module"}
+CMQTTRXEND: 0
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57731026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档