diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_01.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_01.png" new file mode 100644 index 0000000000000000000000000000000000000000..6ce502a3c5166c2dfd63feca1b95aa02681d5138 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_01.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_02.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_02.png" new file mode 100644 index 0000000000000000000000000000000000000000..d62b95b986a065f7e652bad1f200d197a8f7f4f5 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_02.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_03.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_03.png" new file mode 100644 index 0000000000000000000000000000000000000000..1895ead687c6c14d25a86df471d3346e10e2a30b Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_03.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_04.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_04.png" new file mode 100644 index 0000000000000000000000000000000000000000..6d1c6da36e220508a35d3bfaae0537ee547472eb Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_04.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_05.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_05.png" new file mode 100644 index 0000000000000000000000000000000000000000..5cce5810dad9d53ffc8835d350c9de1c39df788a Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_05.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_06.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_06.png" new file mode 100644 index 0000000000000000000000000000000000000000..8f8e0615e0f1da2cd3b7041af333cdbddec67b3e Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_06.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_07.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_07.png" new file mode 100644 index 0000000000000000000000000000000000000000..74d35fd8549c2801686910a6cbf6bdf59f9669de Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_07.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_08.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_08.png" new file mode 100644 index 0000000000000000000000000000000000000000..bdffec3a62de8adcc55e982c4751ea8dcb2193ba Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_08.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_09.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_09.png" new file mode 100644 index 0000000000000000000000000000000000000000..deecd9e1054541ee5a5cd4d2d080486f8deb102f Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_09.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_10.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_10.png" new file mode 100644 index 0000000000000000000000000000000000000000..aa8744987075cd4e4a52d84b33460b26ccae0f65 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_10.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_11.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_11.png" new file mode 100644 index 0000000000000000000000000000000000000000..3edf0e0f35a7eeab130700beecd5cb1309db62af Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_11.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_12.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_12.png" new file mode 100644 index 0000000000000000000000000000000000000000..db4f7608ff92912a9dc20c6269bbcefede711da0 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_12.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_13.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_13.png" new file mode 100644 index 0000000000000000000000000000000000000000..22918c0e9ef023385e93b5be9ddf9248d8abb5ad Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_13.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_14.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_14.png" new file mode 100644 index 0000000000000000000000000000000000000000..9cdea6e45f0dd590284eb192340a44a3850ae743 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_14.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_15.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_15.png" new file mode 100644 index 0000000000000000000000000000000000000000..da0e93167b0be9269b18fdf709325db2822c80bd Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_15.png" differ diff --git "a/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_16.png" "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_16.png" new file mode 100644 index 0000000000000000000000000000000000000000..79856c073eed6f73b8b477e31092b224daf35553 Binary files /dev/null and "b/docs/advanced_tutorial/zh/media/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245AWS_16.png" differ diff --git "a/docs/advanced_tutorial/zh/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS.md" "b/docs/advanced_tutorial/zh/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS.md" new file mode 100644 index 0000000000000000000000000000000000000000..1f7d3bc7982e805e7d426c0fe2be2ec82d5ed4f1 --- /dev/null +++ "b/docs/advanced_tutorial/zh/\344\272\221\345\271\263\345\217\260\345\257\271\346\216\245/AWS.md" @@ -0,0 +1,242 @@ +# 云平台对接-AWS应用开发 + +## 什么是云平台AWS + +AWS 全称Amazon web service(亚马逊网络服务),是亚马逊公司旗下云计算服务平台,为全世界各个国家和地区的客户提供一整套基础设施和云解决方案。 AWS面向用户提供包括弹性计算、存储、数据库、物联网在内的一整套云计算服务,帮助企业降低IT投入和维护成本,轻松上云 从概念是来看,AWS提供了一系列的托管产品,帮助我们在没有物理服务器的情况下,照样可以正常完成软件开发中的各种需求,也就是我们常说的云服务。 + +## 怎么使用云平台AWS + +#### 【进入平台】 + +[亚马逊云首页](https://amazonaws-china.com/cn/)点击【产品】---【物联网】---【AWS IoT Core】 + +![image-20230301153819079](../media/云平台对接/AWS/云平台对接AWS_01.png) + +![image-20230301154126556](../media/云平台对接/AWS/云平台对接AWS_02.png) + +![image-20230301154323459](../media/云平台对接/AWS/云平台对接AWS_03.png) + +#### 【创建策略】 + +![image-20230301154602272](../media/云平台对接/AWS/云平台对接AWS_04.png) + +![image-20230301155516253](../media/云平台对接/AWS/云平台对接AWS_05.png) + +#### 【创建物品】 + +![image-20230301161042093](../media/云平台对接/AWS/云平台对接AWS_06.png) + +![image-20230301161125928](../media/云平台对接/AWS/云平台对接AWS_07.png) + +![image-20230301161323026](../media/云平台对接/AWS/云平台对接AWS_08.png) + +![image-20230301161410209](../media/云平台对接/AWS/云平台对接AWS_09.png) + +![image-20230301161505534](../media/云平台对接/AWS/云平台对接AWS_10.png) + +![image-20230301161743688](../media/云平台对接/AWS/云平台对接AWS_11.png) + +![image-20230301161854690](../media/云平台对接/AWS/云平台对接AWS_12.png) + +至此完成“创建物品”。用证书连接AWS IoT平台,同一个证书可以用于多个设备,不同设备的Client ID保持唯一。 + + + +#### 【设备通信】 + +获取AWS服务器的MQTT连接地址、端口: + +![image-20230301163235249](../media/云平台对接/AWS/云平台对接AWS_13.png) + +使用MQTT.fx工具测试通信,在订阅主题栏填写“#”,表示接收所有主题。 + +![13](../media/云平台对接/AWS/云平台对接AWS_14.png) + +![12](../media/云平台对接/AWS/云平台对接AWS_15.png) + + + + + +### 软件应用 + +看到代码在创建MQTTClient的时间,设置了ssl=True,"cert": certificate_content,"key": private_content 等关键参数,其中证书是在AWS平台下载获取。 + +```python +from umqtt import MQTTClient +import modem +import _thread +import checkNet +import utime +from misc import Power + +CLIENT_ID = b'Chic_001' +SERVER = b'ambzd54j67b7h-ats.iot.us-west-2.amazonaws.com' +PORT = 8883 +USER = None # b'' +PASSWORD = None # b'' + +# 1. 数字证书 (certificate.crt) +# 2. 私钥 (private.pem) + +certificate_content = """ +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIVAKxYi7zakXXKtbz5k2T72amn9k0GMA0GCSqGSIb3DQEB +CwUAME0xSzBJBgNVBAsMQkFtYXpvbiBXZWIgU2VydmljZXMgTz1BbWF6b24uY29t +IEluYy4gTD1TZWF0dGxlIFNUPVdhc2hpbmd0b24gQz1VUzAeFw0yMjA2MDYwNzU1 +MzNaFw00OTEyMzEyMzU5NTlaMB4xHDAaBgNVBAMME0FXUyBJb1QgQ2VydGlmaWNh +dGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDW9JpDiRLvYBt/62o7 +1fGfXG+MH9fC4+AnjPT1Kn4l1jKulEyix6ICGXL2+Ms77GXJrB+uIpMb4NgxG2D1 +qeA/xDKkh2QHXWvXsVf2KqWjRekprHLLNDWjZuig14cOhaDrIRlQfPoMMFsnehBZ +BUwyZZferg9u/GXor5hKAkLSpmCLsMAex6tn1f/ZpNwrrXABumLD+GX64L0XUla9 +kzj7b7qc2bSLirQVCmS44tk3Jvu2B3eS8Xf05CNkTLvdlHWhjepLtyDbukj9/HIJ ++CC0uYk7OYmfz85RhfVM0jbmFd2ebFS9yLnTsM0MZ/9weV/1NbEbQwwNnajKy3Q9 +LcsHAgMBAAGjYDBeMB8GA1UdIwQYMBaAFBruG06tF4R5Jac0d3Vq+WPmtW8hMB0G +A1UdDgQWBBSzpZijfWVvj/e9yy/+mYFP46lPgjAMBgNVHRMBAf8EAjAAMA4GA1Ud +DwEB/wQEAwIHgDANBgkqhkiG9w0BAQsFAAOCAQEAIxfbQzXNn8wnSOd/O1mEKdpu +nqw1FScwBSrKAx5IMb4LouOwl2OiLvPRNyCvKF5vVRsLHlCVFC2F4epJ2GgUhkid +rE0aiIACPgmtjF1vzHRU8nMOLKMsqE0gehw5zlqWaVKICIBe8ZrzTspipONeJL/B +MUWc5Jc1LoR37CmUKe2M//b3dh1Q4/aaSYEWG1J1cAk0mpKogBhJzK/JIsnzoW8D +Ho9pMvj8hdd5/PVx4Euj02IkG/uoxLqAcUu7TPotu5kTa5SWPhk7PANv84rlN5Xn +FyqMdt3hj3kHutTAv+MjAvjp/nmoi80NVEHhNlXYb2Cs4b877xxHMv/uzmZI7A== +-----END CERTIFICATE----- +""" + +private_content = """ +-----BEGIN RSA PRIVATE KEY----- +MIIEogIBAAKCAQEA1vSaQ4kS72Abf+tqO9Xxn1xvjB/XwuPgJ4z09Sp+JdYyrpRM +oseiAhly9vjLO+xlyawfriKTG+DYMRtg9angP8QypIdkB11r17FX9iqlo0XpKaxy +yzQ1o2booNeHDoWg6yEZUHz6DDBbJ3oQWQVMMmWX3q4Pbvxl6K+YSgJC0qZgi7DA +HserZ9X/2aTcK61wAbpiw/hl+uC9F1JWvZM4+2+6nNm0i4q0FQpkuOLZNyb7tgd3 +kvF39OQjZEy73ZR1oY3qS7cg27pI/fxyCfggtLmJOzmJn8/OUYX1TNI25hXdnmxU +vci507DNDGf/cHlf9TWxG0MMDZ2oyst0PS3LBwIDAQABAoIBAEqP7FbS3HOWRdO4 +iFAbJUYfHT5g6UncG6v8dBf61mkvhMMUBAVO9D6AL2XF5VFy7dfn0dFogtjfxH48 +PgTZGUVlPB/gKu13FWprRNTJ9EzPelKPU/5yrMxybO0l9d4usiP9hjdqMp45w9TM +vZDzinvMy8JdZFMeUAdHqa66XA2PL99kaRbptzWx3nX60auDMIIvzO7mORdl+TwU +AFX5VA7ixkIWl55gH45exU6U1Px93WeUaG05QtECtj69MjQevgcT+xJ8bk7qZYjD +nHsyuf3MRdt5mASNG29dA3/WIbBPfn+65RdZFNm2KdGV78pDsoLQEZJU+iGqPq2E +QNcZeBECgYEA9845Qo4O0adLxStNwBszSROWp2zmitF1dAEBb8Ycjdngy/XplwLO +0+1xJAyek2Vjam8oHEmvGNr3QUqlIIP8xKBZs2zZyxiYYo/E4h4J5QIV1uQL/Zqe +wE+2wfVCgfMhjOnXDPjuSyV9NkwQxYYsHQv4X6RKN3QrYysyqDVoDFkCgYEA3hBK +F2C9jm7OOO0M77EQGwAb4aSIlSfJFXcl6ef18Rgido2oiA3GssckorssxorGdnhj +0lIgFK84SPokGYFVc5xh93zL9hskSEyrHDceeVAfsnp/xTmwk4Z+ngJrfCpP6mrx +I8DGVxc2MgurXYsVS8Gx7zqmqe9Uvchf0qAcJl8CgYAifd/WdbN2VxTi0s41qROQ +Xluf3jaQp+rzRJiQmECtNeBmQ0pKLKfhM7GF1QPVfE1EKUip90+Z5BB6VAt75SMv +syoJIWOHM1syjNRYrNmvuISVrpRErlreZboIcTzanZ7T4FCAi72PVB6Dij7jX3OQ +b3QYy+NQqKjJWt/oLdbXsQKBgFO1rkhrxmkn6gNZkPPWOm0DOH9x567aZZn65Ubs +kzDEWVF5ixtmng2MtonFp1Zcv/2u2mpRXRiPCNexu+QFdjHztJZ36+clSiMbC7HC +MXGnu5srRHkTizXBkH9+CAixZpjGoYpJxDrWXC63aW0E3g1Fwg6dfHA48Sftnfmn +M5VfAoGAUUBGEbg7kImiSx1r357EMB2Vt4UwgWdY5idiaajYEJNSPIlrsBbi5WZH +X6R85MWT+UD9Y7FSiZo2acf/rO4CUWZcqSI22KgErBB4boBpwtVLMpF+MGFR9b5G +as/T8DAMikugyGkzogMGMZEK7DLfXwSA7VuiQ/uiSA3kMCLHesM= +-----END RSA PRIVATE KEY----- +""" + + +IMEI = None # modem.getDevImei() +SUB_TOPIC = '{}' +PUB_TOPIC = SUB_TOPIC + +def sub_cb(topic, msg): + global c + print( + "Subscribe Recv: Topic={},Msg={}".format( + topic.decode(), + msg.decode())) + + +def wait_msg(): + global c + while True: + if c is not None: + c.wait_msg() + # ret = c.get_mqttsta() + # print('wait_msg get_mqttsta:', ret) + utime.sleep_ms(100) + + +def MQTT_PUB(): + global c + while True: + try: + if c is not None: + c.publish(PUB_TOPIC.format(IMEI), "Hello World!") + # c.publish(PUB_TOPIC.format(IMEI), bytearray(b'\x30\x31\x32\x33\x00\x01\x02\x03')) + utime.sleep_ms(3000) + # ret = c.get_mqttsta() + # print('MQTT_PUB get_mqttsta:', ret) + except BaseException as e: + print('BaseException, Resatrting...', e) + + +def MQTT_Init(): + global c + + # 创建一个mqtt实例 + c = MQTTClient( + client_id=CLIENT_ID, + server=SERVER, + port=PORT, + user=USER, + password=PASSWORD, + keepalive=30, + ssl=True, + ssl_params={ + "cert": certificate_content, + "key": private_content}) + # 设置消息回调 + c.set_callback(sub_cb) + # 设置遗嘱消息 + c.set_last_will( + topic='set_last_will', + msg='set_last_will', + retain=False, + qos=1) + # 建立连接 + c.connect() + # 订阅主题 + c.subscribe(SUB_TOPIC.format(IMEI)) + # 发布消息 + c.publish(PUB_TOPIC.format(IMEI), "Hello World!") + + # 关闭连接 + # c.disconnect() + + +def GetDevImei(): + global IMEI + IMEI = modem.getDevImei() + print(IMEI) + + +def main(): + GetDevImei() + MQTT_Init() + _thread.start_new_thread(MQTT_PUB, ()) + _thread.start_new_thread(wait_msg, ()) + + +if __name__ == '__main__': + stagecode, subcode = checkNet.wait_network_connected(30) + print('stagecode = {}, subcode = {}'.format(stagecode, subcode)) + if stagecode == 3 and subcode == 1: + print('Network connection successful!') + else: + print('Not Net, Resatrting...') + utime.sleep_ms(200) + Power.powerRestart() + + main() + +``` + +## 云平台AWS功能测试 + +使用QPYcom运行代码,下面实例是基于uMQTT执行连接云平台的效果。 + +![image-20230301165904773](../media/云平台对接/AWS/云平台对接AWS_16.png) + +## 云平台AWS功能应用实例 + +[code](https://gitee.com/q767904101/quec-python_-code.git) + diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_GET.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_GET.png" new file mode 100644 index 0000000000000000000000000000000000000000..ef15e9959e9c4cb22dff990fcad6a64ba9cea98d Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_GET.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_ap.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_ap.png" new file mode 100644 index 0000000000000000000000000000000000000000..b8bd8587762c8efb21231fb9b6f7ac8068e55da3 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_ap.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_sta.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_sta.png" new file mode 100644 index 0000000000000000000000000000000000000000..d03bdf1d54feb0bb691fa18f92b3af6d552c9a39 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/Web\351\205\215\347\275\221_sta.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap.png" new file mode 100644 index 0000000000000000000000000000000000000000..705586684dcc25b1c9aac99857517563c3b932ec Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap\346\211\213\346\234\272\347\225\214\351\235\242" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap\346\211\213\346\234\272\347\225\214\351\235\242" new file mode 100644 index 0000000000000000000000000000000000000000..25eeaab3c7c4435528c0b257163ac2fb52f05dd1 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_ap\346\211\213\346\234\272\347\225\214\351\235\242" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station.png" new file mode 100644 index 0000000000000000000000000000000000000000..d05e17a3d49eecd1ff0aed7827fbbe0fe840b433 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station\346\211\213\346\234\272\347\225\214\351\235\242.png" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station\346\211\213\346\234\272\347\225\214\351\235\242.png" new file mode 100644 index 0000000000000000000000000000000000000000..89f247579e5bdbe7bcd2270e15d0f99226690b17 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221_station\346\211\213\346\234\272\347\225\214\351\235\242.png" differ diff --git "a/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\346\240\270\345\277\203\346\235\277_\345\260\201.jpg" "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\346\240\270\345\277\203\346\235\277_\345\260\201.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1f92b6520f189ae0037cefa70c8008be439b55f5 Binary files /dev/null and "b/docs/development_guide/zh/media/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\346\240\270\345\277\203\346\235\277_\345\260\201.jpg" differ diff --git "a/docs/development_guide/zh/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276-\345\244\226\346\214\202WiFi\345\272\224\347\224\250\345\274\200\345\217\221.md" "b/docs/development_guide/zh/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276-\345\244\226\346\214\202WiFi\345\272\224\347\224\250\345\274\200\345\217\221.md" index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..2d6c86414268fcfa35169ce7feb640ee7c148ce3 100644 --- "a/docs/development_guide/zh/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276-\345\244\226\346\214\202WiFi\345\272\224\347\224\250\345\274\200\345\217\221.md" +++ "b/docs/development_guide/zh/\345\244\226\350\256\276\345\272\224\347\224\250\345\274\200\345\217\221/\345\244\226\350\256\276-\345\244\226\346\214\202WiFi\345\272\224\347\224\250\345\274\200\345\217\221.md" @@ -0,0 +1,163 @@ +# 外挂WiFi应用开发 + +## 什么是外挂WiFi + +由于模组主要功能是4G联网,自身并不具备WiFi联网功能,而对于某些应用场景既需要4G又需要WiFi,就可以用模组+外挂ESP8266来实现。 + +## 怎么使用外挂WiFi + +### 硬件设计 + +准备一块模组和ESP8266,模组的UART:Rx、Tx、GND和ESP8266的Tx、Rx、GND交叉对接,注意电平需要匹配。本次实验使用的是“封”开发板,板子上的UART1和ESP8266已经连接好,可以直接使用。 + +![核心板_封](../../zh/media/外设应用开发/核心板_封.jpg) + +应用电路可以参考QuecPython的开发板,开发板可以通过天猫旗舰店、京东旗舰店等移远通信官方销售渠道获取,开发板的硬件设计同样是参考的上述硬件文档。 + +### 软件应用 + +模组搭配ESP8266实现ap模式、station模式,还可以提供给用户配网的web模式。作为station模式时,还可以设置网卡走4G还是走WiFi。 + + +## 外挂WiFi功能测试 + +以下逐个功能演示, +ap模式: + +把ap.py和 WLAN.py文件下载到usr区,执行ap.py即可看到实验现象。 + +```python +from usr.WLAN import ESP8266 +from machine import UART +import dataCall + +# 初始化esp8266网卡 +esp8266 = ESP8266(UART.UART1, ESP8266.AP) +# 启动esp8266以ap模式启动 +esp8266.ap('Chic_ap', '123456999') +# 获取当前网卡状态 4表示网卡已启用,可以进行下一步操作 +# 0: esp8266设备不存在 +# 1: esp8266 station模式已连接 +# 2: esp8266 station模式未连接 +# 3: esp8266 web配网模式 +# 4: esp8266 ap模式 +esp8266.status() +# 获取拨号信息 +Info = dataCall.getInfo(1, 0) +# 设置默认网卡 +esp8266.set_default_NIC(Info[2][2]) +# 添加路由信息,设置网卡转发规则,默认ap的网段192.168.4.0,子网掩码255.255.255.0 +esp8266.router_add('192.168.4.0', '255.255.255.0') + +# esp8266.ipconfig() +# esp8266.stop() + +''' +UART.UART1 +''' +``` + +![image-20230227171405884](../../zh/media/外设应用开发/外设应用开发_ap.png) + +![image-20230227171659764](../../zh/media/外设应用开发/外设应用开发_ap手机界面) + + + +station模式: + +```python +from usr.WLAN import ESP8266 +from machine import UART + + +# 初始化esp8266网卡 +esp8266=ESP8266(UART.UART1, ESP8266.STA) +# 启动esp8266以staion模式启动 +esp8266.station('iPhone 12 mini', '123456999') +# esp8266.station('QQ', '123456999') +# 获取当前网卡状态 4表示网卡已启用,可以进行下一步操作 +# 0: esp8266设备不存在 +# 1: esp8266 station模式已连接 +# 2: esp8266 station模式未连接 +# 3: esp8266 web配网模式 +# 4: esp8266 ap模式 +esp8266.status() +# 设置dns服务器地址 +esp8266.set_dns('8.8.8.8', '114.114.114.114') +# 设置esp8266作为默认网卡,使用esp8266进行网络连接 +ip = esp8266.ipconfig()[0] +esp8266.set_default_NIC(ip) + +# esp8266.ipconfig() +# esp8266.stop() + +''' +UART.UART1 +''' +``` + +![image-20230227172655914](../../zh/media/外设应用开发/外设应用开发_station.png) + +执行station.py后,可查询连接状态,返回1: esp8266 station模式已连接 + +```python +>>> esp8266.status() +1 +>>> +``` + +![image-20230227172557721](../../zh/media/外设应用开发/外设应用开发_station手机界面.png) + + + +web模式: + +```python +from usr.WLAN import ESP8266 +from machine import UART + +# 初始化esp8266网卡 +#若使用web配置ap模式,需把以下模式ESP8266设置为ESP8266.AP +esp8266=ESP8266(UART.UART1, ESP8266.STA) +# 使esp8266以web配网模式启动 +esp8266.web_config('Chic_web','123456999') # 配网网址:192.168.4.1 +# 获取当前网卡状态 返回4表示已连接,可以使用esp8266进行下一步操作 +# 0: esp8266设备不存在 +# 1: esp8266 station模式已连接 +# 2: esp8266 station模式未连接 +# 3: esp8266 web配网模式 +# 4: esp8266 ap模式 +esp8266.status() +# 获取当前网卡状态 返回3表示web配网已启用,可以使用web配网模式 + +#使用手机等设备连接热点,使用浏览器进入网址192.168.4.1,进行配网 + +# esp8266.ipconfig() +# esp8266.stop() + +''' +UART.UART1 +''' +``` + +执行web.py之后,终端可以连接'Chic_web','123456999',通过192.168.4.1进入web配网界面。 +也可以通过http请求方式取代web界面, +使用get,http://192.168.4.1 +使用post,http://192.168.4.1/ap_set 具体参数设置参考以下截图 +使用post,http://192.168.4.1/station_set 具体参数设置参考以下截图 + +web配网之后ESP8266会自动重启连接,之后每次上电ESP8266就会自动连接。 + + +![Web配网_GET](../../zh/media/外设应用开发/Web配网_GET.png) + +![Web配网_ap](../../zh/media/外设应用开发/Web配网_ap.png) + +![Web配网_sta](../../zh/media/外设应用开发/Web配网_sta.png) + + + +## 外挂WiFi功能应用实例 + +[code](https://gitee.com/q767904101/quec-python_-code.git) +