diff --git a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_01.md b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_01.md index 9d40d052054308e1d4196bfb004addce6542b209..7c72361222b5d9ecd283b8ef0f3ea68dfb607c68 100644 --- a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_01.md +++ b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_01.md @@ -19,13 +19,13 @@ Meanwhile, whether enabling the function of all components, you can configure vi Download **[toolchain.exe](https://github.com/quecpython/toolchain/releases)** under the circumstance of Windows 10 from GitHub website. - +![Helios_SDK_01_01](media\Helios_SDK_01_01.png) **Step 2 : Install tool-chain ** Run the **helios-toolchain.exe** by Administrator as described below. just click the " **Install** " button. -![image_1f4938o2fu9h10vd17pc1lt01m7n9.png-14.2kB](http://static.zybuluo.com/chenchi/w5y7tm21ii80rzci7xd0fbqm/image_1f4938o2fu9h10vd17pc1lt01m7n9.png) +![Helios_SDK_01_02](media\Helios_SDK_01_02.png) > The target folder is limited to C:\ and under no circumstance shall you modify it. @@ -35,6 +35,8 @@ Run the **helios-toolchain.exe** by Administrator as described below. just click Download **[toolchain.exe](https://github.com/quecpython/toolchain/releases)** under the circumstance of Ubuntu16.04 from GitHub website. +![Helios_SDK_01_03](media\Helios_SDK_01_03.png) + **Step 2: Install tool-chain** Place the package to the same location with the target folder as predicted. you can install the **tool-chain** via executing following command. @@ -56,7 +58,7 @@ Install `p7zip-full`, `git`, `make` and `python3` by clicking into following com You can extract the overall SDK codes via executing following commands by turns in command line. - 1. git clone https://gitee.com/quecpython/HeliosSDK.git + 1. git clone https://gitee.com/quecpython/HeliosSDK.git 2. cd HeliosSDK 3. git submodule init 4. git submodule update @@ -76,7 +78,7 @@ The next figure shows the SDK directory architecture, whose indications are vari * Gray: The generated folder after compiling, which can be deleted. * Black: Note -![Helios_SDK_01(E)](media\Helios_SDK_01(E).png) +![Helios_SDK_01_04](media\Helios_SDK_01_04.png) ## Compile application code @@ -235,7 +237,7 @@ If there is a need to delete the target to be compiled, click following commands The generated FW package is saved in the `output/release` folder under the root directory of SDK, which is shown as next figure. -![image_1f4ga4bf316861em8ojm3451mhs9.png-4.7kB](http://static.zybuluo.com/chenchi/z0dmqoxye285heg27yk6fsy3/image_1f4ga4bf316861em8ojm3451mhs9.png) +![Helios_SDK_01_05](media\Helios_SDK_01_05.png) **Step 4 : Flash FW** @@ -251,7 +253,7 @@ Connect the debug and PC via serial port wire. Open the device manager on PC, which is shown as next figure. In this document, it is the COM20 that is deployed. -![image_1f5ac1jtflcq1rng1a8q1n815hl9.png-26.4kB](http://static.zybuluo.com/chenchi/qw0g8xrt5hvcujamf3zmmp6s/image_1f5ac1jtflcq1rng1a8q1n815hl9.png) +![Helios_SDK_01_06](media\Helios_SDK_01_06.png) **Step 3: Open the serial port debug tool on PC** @@ -261,7 +263,7 @@ After that, click the drop-down of `Port` selection and select COM20 correspondi It is available to open the serial port via clicking the `Connect`button on the bottom right corner. -![image_1f5acgsin1aaq1n9fm9n173rfejm.png-29.2kB](http://static.zybuluo.com/chenchi/1t3cgtbqwytpbpqd5dj3elqk/image_1f5acgsin1aaq1n9fm9n173rfejm.png) +![Helios_SDK_01_07](media\Helios_SDK_01_07.png) **Step 4: Start module program ** @@ -271,7 +273,7 @@ It is available to open the serial port via clicking the `Connect`button on the Check the running log in the receiving area of serial port of SecureSRT. -![image_1f55ahtn91eni18d4v5it63gm.png-20.2kB](http://static.zybuluo.com/chenchi/tqe86xfa2c7hnq3gojnqbqyw/image_1f55ahtn91eni18d4v5it63gm.png) +![Helios_SDK_01_08](media\Helios_SDK_01_08.png) As above figure implies, the outputted format of log contains the `APP` (customized label), `AppSample` (the function name if outputted log), the `L29` ( The file lines of outputted log) and `app sample running ...` (The log content). diff --git a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_02.md b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_02.md index 96c8cad21bdb2cf940e43b601994e381f549b907..f3974eed371e991c3d45b05652dfd077964f0d81 100644 --- a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_02.md +++ b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_02.md @@ -151,7 +151,7 @@ As the next figure shows, long press the `PWK` button on the bottom left corner After starting up, the network light on the upper-right corner at the back of the EVB will spark, which means the boot is a success. -![Helios_SDK_02(E)](media\Helios_SDK_02(E).png) +![Helios_SDK_02_05](media\Helios_SDK_02_05.png) > Illustration on keys of EVB > @@ -167,7 +167,7 @@ After starting up, the network light on the upper-right corner at the back of th Open " **Device Manager** " and release " **COM and LPT** ", then find `USB serial device` and note down the number. In this case, it is COM5 as described below: -![image_1f5ad0i0lq31u1o567u4l14ts9.png-26.2kB](media\Helios_SDK_02_06.png) +![Helios_SDK_02_06](media\Helios_SDK_02_06.png) For opening COM5, please refer to the Step 3 of Chapter 7 in . diff --git a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_03.md b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_03.md index 0ced46fd68c1037cb7adbbe9488292bd49d8e5c8..ce595ba5b428bc75d3a53743a7d5de973a320612 100644 --- a/docs/Advanced_development/en/HeliosSDK/Helios_SDK_03.md +++ b/docs/Advanced_development/en/HeliosSDK/Helios_SDK_03.md @@ -54,13 +54,13 @@ According to the Step 3 of Chapter 3 in as an example, the name of which is composed by two variates in *main.py* file: **PROJECT_NAME** and **PROJECT_VERSION**. -![image-20210906173316872](media\image-20210906173316872.png) - -![image-20210929115143797_211008](media\image-20210929115143797_211008.png) +![Mass_production_index_03](media\Mass_production_index_03.png) The merging will be done within few seconds. -![image-20210906173923292](media\image-20210906173923292.png) +![Mass_production_index_04](media\Mass_production_index_04.png) After merging, the file name is composed by **PROJECT_NAME** and **PROJECT_VERSION **- two variates in *main.py* file. -![image-20210906173416123](media\image-20210906173416123.png) +![Mass_production_index_05](media\Mass_production_index_05.png) Flash the merged firmware. the *main.py* will run automatically when starting up. -![image-20210906174329859](media\image-20210906174329859.png) +![Mass_production_index_06](media\Mass_production_index_06.png) ## Mass Production Tool - Login official website and select"download”, then find " **QMulti_DL batch download tool** " by selecting the " **Resource** " in first category and " **Tool** " in second category comprehensively. For details, please refer to the figure below. -![image-20210906174758192](media\image-20210906174758192.png) +![Mass_production_index_07](media\Mass_production_index_07.png) - When Opening SW, select the merged FW in " **Load FW Files** "; then click " **Auto ALL** " , these 8 channels will be detected automatically till the flash is accomplished. @@ -108,9 +104,7 @@ Flash the merged firmware. the *main.py* will run automatically when starting up 2. Secondly, open **" QMulti_DL batch download tool " ** in PC and select the FW that going to be flashed. The SW will detect the flash automatically afterwards. -![image-202109061rtyurewry4](media\image-202109061rtyurewry4.png) - -![image-20210929113604978_211008](media\image-20210929113604978_211008.png) +![Mass_production_index_08](media\Mass_production_index_08.png) **Reminder** diff --git a/docs/Advanced_development/en/Mass_production/media/CodeEncryption_01.png b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_01.png new file mode 100644 index 0000000000000000000000000000000000000000..32f7ae9dffdc8dd22a3dc2820bd7427b7a3149b8 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_01.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/CodeEncryption_02.png b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_02.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1e62c7fa0a19464ad9ba81c34541fe2f6c0631 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_02.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/CodeEncryption_03.png b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_03.png new file mode 100644 index 0000000000000000000000000000000000000000..72c823fa3c531c7e25332a291a5db1a0d32e4084 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_03.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/CodeEncryption_04.png b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_04.png new file mode 100644 index 0000000000000000000000000000000000000000..14b180f7784ac51e85f4b8f0ccd24b9760df3284 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/CodeEncryption_04.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_01.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_01.png new file mode 100644 index 0000000000000000000000000000000000000000..32f7ae9dffdc8dd22a3dc2820bd7427b7a3149b8 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_01.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_02.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_02.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1e62c7fa0a19464ad9ba81c34541fe2f6c0631 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_02.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_03.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_03.png new file mode 100644 index 0000000000000000000000000000000000000000..768896877f672fe8266459ead83e49d32efdadf0 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_03.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_04.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_04.png new file mode 100644 index 0000000000000000000000000000000000000000..254bbdbf147a68f85c111ace91acc194dcf8515f Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_04.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_05.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_05.png new file mode 100644 index 0000000000000000000000000000000000000000..57c0bf5a135da952654b55e4065cc4f62b939c7a Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_05.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_06.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_06.png new file mode 100644 index 0000000000000000000000000000000000000000..26c673b53837002793f9e64415613afcb6280b34 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_06.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_07.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_07.png new file mode 100644 index 0000000000000000000000000000000000000000..0d2e7b91d2e1f4f6e2871574eef2443fa2bfbfe9 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_07.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/Mass_production_index_08.png b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_08.png new file mode 100644 index 0000000000000000000000000000000000000000..3a00c95ef346b63e0b81d8c6d9c9cd8a24a0bf73 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/Mass_production_index_08.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_01.png b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_01.png new file mode 100644 index 0000000000000000000000000000000000000000..12f7e9aa6f14548328f4c7522ecabee9d8ed0eeb Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_01.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_02.png b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_02.png new file mode 100644 index 0000000000000000000000000000000000000000..32f7ae9dffdc8dd22a3dc2820bd7427b7a3149b8 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_02.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_03.png b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_03.png new file mode 100644 index 0000000000000000000000000000000000000000..8a1e62c7fa0a19464ad9ba81c34541fe2f6c0631 Binary files /dev/null and b/docs/Advanced_development/en/Mass_production/media/QuecPythonBack_03.png differ diff --git a/docs/Advanced_development/en/Mass_production/media/image-20210906190809839.png b/docs/Advanced_development/en/Mass_production/media/image-20210906190809839.png index 5bad7ff90a85bf0d252c2fb58d9bd2764e361598..346f56f0da3fe199f377d1314027d924c0f1aa74 100644 Binary files a/docs/Advanced_development/en/Mass_production/media/image-20210906190809839.png and b/docs/Advanced_development/en/Mass_production/media/image-20210906190809839.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/Aliyun.md b/docs/Advanced_development/en/QuecPythonCloud/Aliyun.md index 941c03f03e4bdbdea1f802dcc4af88b929ac597a..3d9c2e97811f23c0ee41555f9811d4a6463570ba 100644 --- a/docs/Advanced_development/en/QuecPythonCloud/Aliyun.md +++ b/docs/Advanced_development/en/QuecPythonCloud/Aliyun.md @@ -20,29 +20,29 @@ The address of Aliyun: Click [product]---[IoT]--[IoT platform] -![AliyunCloud_IoT_210324_001](media/AliyunCloud_IoT_210324_001.png) +![AliyunCloud_IoT_01](media/AliyunCloud_IoT_01.png) ### Create real case -![AliyunCloud_IoT_210324_002](media/AliyunCloud_IoT_210324_002.png) +![AliyunCloud_IoT_02](media/AliyunCloud_IoT_02.png) -![AliyunCloud_IoT_210324_002A](media/AliyunCloud_IoT_210324_002A.png) +![AliyunCloud_IoT_03](media/AliyunCloud_IoT_03.png) ### Create product -![AliyunCloud_IoT_210324_003](media/AliyunCloud_IoT_210324_003.png) +![AliyunCloud_IoT_04](media/AliyunCloud_IoT_04.png) ### Add device -![AliyunCloud_IoT_210324_004](media/AliyunCloud_IoT_210324_004.png) +![AliyunCloud_IoT_05](media/AliyunCloud_IoT_05.png) ### Get triple The triple (ProductKey、DeviceName、DeviceSecret) are used to generate connection password of next step. -![AliyunCloud_IoT_210324_005](media/AliyunCloud_IoT_210324_005.png) +![AliyunCloud_IoT_06](media/AliyunCloud_IoT_06.png) -![](media/AliyunCloud_IoT_210324_006.png) +![AliyunCloud_IoT_07](media/AliyunCloud_IoT_07.png) ### Generate connection info @@ -56,7 +56,7 @@ The self-defined clientid can share the same name with deviceName, which is used The encryption of method should be aligned with that in connecting MQTT. -![](media/AliyunCloud_IoT_210324_007.png) +![AliyunCloud_IoT_08](media/AliyunCloud_IoT_08.png) The Password by calculating sign can be deployed to connect platform. @@ -65,7 +65,7 @@ CLIENT_ID = b'Chic_001|securemode=3,signmethod=hmacsha1|' SERVER = b'a1llZotKkCm.iot-as-mqtt.cn-shanghai.aliyuncs.com' PORT = 1883 USER = b'Chic_001&a1llZotKkCm' -PASSWORD = b'EC01986E912222B0A82049A874AF183D0A490E5E' +PASSWORD = b'1FA387B73684D6D77AF59BEB9659F704D57DE9EB' ``` **CLIENT_ID:**The fixed format: \${clientId}\|securemode=3,signmethod=hmacsha1\| @@ -86,7 +86,7 @@ PASSWORD = b'EC01986E912222B0A82049A874AF183D0A490E5E' ​ https://help.aliyun.com/document_detail/40654.html?spm=a2c4g.11186623.2.21.7b967908BJu7SZ -![](media/AliyunCloud_IoT_210324_008.png) +![AliyunCloud_IoT_09](media/AliyunCloud_IoT_09.png) ### Report and deliver data @@ -94,9 +94,9 @@ As for the topic created above, we may name it test, correspondingly, any topic E. g. /broadcast/a1llZotKkCm/123 -![AliyunCloud_IoT_210324_009](media/AliyunCloud_IoT_210324_009.png) +![AliyunCloud_IoT_10](media/AliyunCloud_IoT_10.png) -![AliyunCloud_IoT_210324_017](media/AliyunCloud_IoT_210324_010.png) +![AliyunCloud_IoT_11](media/AliyunCloud_IoT_11.png) ## SW design @@ -105,80 +105,122 @@ After getting ProductKey,DeviceName and DeviceSecret on AliyunCloud platform, Case codes ```python -import log + import utime import checkNet from aLiYun import aLiYun +import _thread +import sys_bus + + +class SYSTOPIC_Class(object): + RRPC = "rrpc" + OTA = "ota" + PUB = "pub" + SUB = "sub" + + +class aliyun_Class(object): + def __init__(self): + aliyun_Class.inst = self + self.productKey = "a1llZotKkCm" + self.productSecret = 'mj7qKfEn73y07gyK' + self.DeviceSecret = None + self.DeviceName = "Chic_001" + + self.subscribe_topic1 = "/" + self.productKey + \ + "/" + self.DeviceName + "/user/123" + self.subscribe_topic2 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq" + self.publish_topic1 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq" + + self.ali = aLiYun( + self.productKey, + self.productSecret, + self.DeviceName, + self.DeviceSecret) + + clientID = b'clientID' + ret = self.ali.setMqtt( + clientID, + clean_session=False, + keepAlive=60, + reconn=True) # False True + + self.ali.setCallback(self.ali_sub_cb) + + def ali_sub_cb(self, topic, msg): + if topic.decode().find(SYSTOPIC.RRPC) != -1: + sys_bus.publish(SYSTOPIC.RRPC, {"topic": topic, "msg": msg}) + elif topic.decode().find(SYSTOPIC.OTA) != -1: + sys_bus.publish(SYSTOPIC.OTA, {"topic": topic, "msg": msg}) + else: + sys_bus.publish(SYSTOPIC.SUB, {"topic": topic, "msg": msg}) + + def ali_start(self): + self.ali.start() + print('Runing') + # aLiYun.disconnect() + + def ali_subscribe_topic(self): + self.ali.subscribe(self.subscribe_topic1, qos=0) + self.ali.subscribe(self.subscribe_topic2, qos=0) + + def ali_publish(self, topic, msg): + ret = self.ali.getAliyunSta() + # print(ret) + if ret == 0: + try: + self.ali.publish(msg.get('topic'), msg.get("msg"), qos=0) + except BaseException: + print('!!!!!!') + + +class Handler(object): + @classmethod + def sub(cls, topic, msg): + print( + "Subscribe Recv: Topic={},Msg={}".format( + msg.get('topic').decode(), + msg.get("msg").decode())) + + @classmethod + def pub(cls, msg): + while True: + sys_bus.publish(SYSTOPIC.PUB, msg) + utime.sleep_ms(2000) + + @classmethod + def ota(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish_sync(SYSTOPIC.PUB, msg) + + @classmethod + def rrpc(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish(SYSTOPIC.PUB, msg) -''' -The following two global variables are necessary, the client can modify values of them via the actual need. -Values of these two variables will be printed before executing user codes. -''' -PROJECT_NAME = "QuecPython_AliYin_example" -PROJECT_VERSION = "1.0.0" -checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) - - -# Set the output level of log -log.basicConfig(level=log.INFO) -aliYun_log = log.getLogger("ALiYun") - -productKey = "a1llZotKkCm" # Product symbol(refer to the access to application notes of Aliyun) -productSecret = None # Private key of product (For authentication of "one private key for one device ", please import None,refer to the access to application notes of Aliyun ) -DeviceName = "11111" # Device name (refer to the access to application notes of Tencent Cloud) -# Private key of product (For authentication of "one private key for one device ", please import None,However, it is invalid to support free-pre-registration, you should create device on cloud. Please refer to the access to application notes of Aliyun) -DeviceSecret = "03c5e91aea167edead7d381d4b41ed71" - -state = 1 -# Callback function +if __name__ == '__main__': + PROJECT_NAME = "QuecPython" + PROJECT_VERSION = "1.0.0" + checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) + checknet.poweron_print_once() + checknet.wait_network_connected() + aliyunClass = aliyun_Class() + aliyunClass.ali_subscribe_topic() -def sub_cb(topic, msg): - global state - aliYun_log.info( - "Subscribe Recv: Topic={},Msg={}".format( - topic.decode(), msg.decode())) - state -= 1 + SYSTOPIC = SYSTOPIC_Class() + sys_bus.subscribe(SYSTOPIC.RRPC, Handler.rrpc) + sys_bus.subscribe(SYSTOPIC.OTA, Handler.ota) + sys_bus.subscribe(SYSTOPIC.SUB, Handler.sub) + sys_bus.subscribe(SYSTOPIC.PUB, aliyunClass.ali_publish) + tuple = ({"topic": aliyunClass.publish_topic1, "msg": "hello world"},) + _thread.start_new_thread(Handler.pub, tuple) -if __name__ == '__main__': - ''' - When running this routine mnually, the latency can be removed; However, if you change the routine name as main.py and in hope that auto running when opening up, this latency should be added. - Otherwise, it is invisible to see the printing message in poweron_print_once() from CDC port. - ''' - utime.sleep(5) - checknet.poweron_print_once() - ''' - If network related codes are contained in user program, it is a must to execute wait_network_connected() till the network is ready(the dail up is a success) - If it is irrelevant to network, the wait_network_connected() can be shielded. - 【The next line shall be kept in this routine!!!】 - ''' - checknet.wait_network_connected() + aliyunClass.ali_start() - # Create aliyun connection object - ali = aLiYun(productKey, productSecret, DeviceName, DeviceSecret) - - # Set mqtt connection attribute - clientID = b'11111clientID' # Self-assigned character(over 64 bits are not allowed) - ali.setMqtt(clientID, clean_session=False, keepAlive=300) - - # Set callback function - ali.setCallback(sub_cb) - topic = '/broadcast/a1llZotKkCm/123' # The self-defined or owned Topic on Cloud - # Subscribe topic - ali.subscribe(topic) - # Publish message - ali.publish(topic, "hello world") - # Run - ali.start() - - while True: - if state: - pass - else: - ali.disconnect() - break ``` The next step is to download and verify. You can download and run .py file on module via QPYcom since there is no need to compile python code. @@ -187,10 +229,14 @@ The next step is to download and verify. You can download and run .py file on mo Download and run **.py** file on module. -![](media/AliyunCloud_IoT_210324_011.png) +![AliyunCloud_IoT_12](media/AliyunCloud_IoT_12.png) Run the script manually after downloading. -![](media/AliyunCloud_IoT_210324_012.png) +![AliyunCloud_IoT_13](media/AliyunCloud_IoT_13.png) ## The matched code + + + Download the code + diff --git a/docs/Advanced_development/en/QuecPythonCloud/AmazonCloud.md b/docs/Advanced_development/en/QuecPythonCloud/AmazonCloud.md index 12f6d0a4e6a2d7331aa425b65852c2c6bf5b9a9e..7a9b03706be66b0907ebcfee4066ce85eae713b6 100644 --- a/docs/Advanced_development/en/QuecPythonCloud/AmazonCloud.md +++ b/docs/Advanced_development/en/QuecPythonCloud/AmazonCloud.md @@ -20,47 +20,47 @@ The front page of AmazonCloud:https://amazonaws-china.com/cn/ Enter [My account]---[AWS Management Console]---[IoT Core] -![1](media/1.png) - -![2](media/image-20210929165153457.png) - -![3](media/3.png) +![AmazonCloud_01](media\AmazonCloud_01.png) #### 【Create tactic】 -![3](media/3.png) +![AmazonCloud_01A](media\AmazonCloud_01A.png) -![6](media/6.png) +![AmazonCloud_01B](media\AmazonCloud_01B.png) #### 【Create product】 -![7](media/7.png) +![AmazonCloud_02](media\AmazonCloud_02.png) -![8](media/8.png) +![AmazonCloud_03](media\AmazonCloud_03.png) -![9](media/9.png) +![AmazonCloud_04](media\AmazonCloud_04.png) -![0](media/10.png) +![AmazonCloud_05](media\AmazonCloud_05.png) -![1](media/11.png) - -![2](media/12.png) +![AmazonCloud_06](media\AmazonCloud_06.png) Till now, "Create product" has been finished. It is available to connect AWS IoT platform via certificate. Please note that the same certificate can be used on several devices, and the Client ID of various devices shall be unique. +![AmazonCloud_07](media\AmazonCloud_07.png) + +![AmazonCloud_08](media\AmazonCloud_08.png) + +![AmazonCloud_09](media\AmazonCloud_09.png) + #### 【Device communication】 Get the MQTT connection address and port of AWS Server. -![3](media/13.png) +![AmazonCloud_10](media\AmazonCloud_10.png) + +![AmazonCloud_11](media\AmazonCloud_11.png) -![4](media/14.png) +![AmazonCloud_12](media\AmazonCloud_12.png) Test communication via MQTT.fx. fill in "#" on subscription topic bar to receive all topics. -![5](media/15.png) -![7](media/12.png) diff --git a/docs/Advanced_development/en/QuecPythonCloud/QuecCloud.md b/docs/Advanced_development/en/QuecPythonCloud/QuecCloud.md index 9c62aaba98c676f3d90e3fc722d6dcbeb43ebf87..662e2ab86f661c3de47a44096afe87b85185d93f 100644 --- a/docs/Advanced_development/en/QuecPythonCloud/QuecCloud.md +++ b/docs/Advanced_development/en/QuecPythonCloud/QuecCloud.md @@ -1,4 +1,4 @@ -## About document +## About document | Version | Date | Author | Description | | ------- | ---------- | ------ | --------------- | @@ -39,10 +39,6 @@ Input "product name". we just create the transparent product and communicate via ![image-20210908144838204](media\image-20210908144838204.png) -Click [Next step] and select module type used - -![image-20210908144859977](media\image-20210908144859977.png) - Manifestation on header ![image-20210908144924732](media\image-20210908144924732.png) diff --git a/docs/Advanced_development/en/QuecPythonCloud/TencentCloud.md b/docs/Advanced_development/en/QuecPythonCloud/TencentCloud.md index eecb035070a0e2a4dc757aeec30185593e67a5e6..63d0b3bc3ceca4fa3fed98bf57b191533523b467 100644 --- a/docs/Advanced_development/en/QuecPythonCloud/TencentCloud.md +++ b/docs/Advanced_development/en/QuecPythonCloud/TencentCloud.md @@ -32,39 +32,39 @@ In terms of "authentication" when creating product, please select" private keys" ![TencentCloud_03](media/TencentCloud_03.png) +![TencentCloud_04](media/TencentCloud_04.png) + ### Add device 1. Click the "product name" and enter the front page of adding device. For more details, pleas refer to the figure as described below. -![TencentCloud_04](media/TencentCloud_04.png) +![TencentCloud_05](media/TencentCloud_05.png) 2. Add device according to the indication of following page. -![TencentCloud_05](media/TencentCloud_05.png) +![TencentCloud_06](media/TencentCloud_06.png) ### Generate connection info In terms of "one private key for one device", following aspects should be paid more attention on the condition of tuple: -The location of "**Product ID**" (Which is shown as the No.3 red box) +The location of "**Product ID**" -![TencentCloud_06](media/TencentCloud_06.png) +![TencentCloud_07](media/TencentCloud_07.png) -The location of "**devicename**" and "**devicePsk**". ( Which is shown as No.3 and No.4) +The location of "**devicename**" and "**devicePsk**". -![TencentCloud_07](media/TencentCloud_07.png) +![TencentCloud_08](media/TencentCloud_08.png) + +![TencentCloud_09](media/TencentCloud_09.png) ### Rules engine The main function of it is used to transfer topic message,. Here shows the configuration of rules engine. -The rules engine 1 (Transfer the rules of same topic) +![TencentCloud_10](media/TencentCloud_10.png) -![TencentCloud_08](media/TencentCloud_08.png) -Rules Engine 2 (Transfer the rules of different topic) - -![TencentCloud_09](media/TencentCloud_09.png) ## SW design @@ -81,67 +81,105 @@ The message will be transferred to **pub_topic = "3ICA4ULOXI/QuecPython_test/ev ```python -from TenCentYun import TXyun -import log + import utime import checkNet +from TenCentYun import TXyun +import _thread +import sys_bus + +class SYSTOPIC_Class(object): + RRPC = "rrpc" + OTA = "ota" + PUB = "pub" + SUB = "sub" + +class TXyun_Class(object): + def __init__(self): + self.productID = "X3Z30XABBU" + self.devicename = "001" + self.devicePsk = None + self.ProductSecret = 'TeXbX8bZ40vutWHGxfUGJEZS' + + self.subscribe_topic1 = 'X3Z30XABBU/{}/data'.format(self.devicename) + self.publish_topic1 = 'X3Z30XABBU/{}/data'.format(self.devicename) + + self.tenxun = TXyun( + self.productID, + self.devicename, + self.devicePsk, + self.ProductSecret) + self.tenxun.setMqtt() + self.tenxun.setCallback(self.sub_cb) + + def sub_cb(self, topic, msg): + if topic.decode().find(SYSTOPIC.RRPC) != -1: + sys_bus.publish(SYSTOPIC.RRPC, {"topic": topic, "msg": msg}) + elif topic.decode().find(SYSTOPIC.OTA) != -1: + sys_bus.publish(SYSTOPIC.OTA, {"topic": topic, "msg": msg}) + else: + sys_bus.publish(SYSTOPIC.SUB, {"topic": topic, "msg": msg}) + + def TXyun_start(self): + self.tenxun.start() + print('start') + + def TXyun_subscribe_topic(self): + self.tenxun.subscribe(self.subscribe_topic1, qos=0) + # self.tenxun.subscribe(self.subscribe_topic2, qos=0) + + def TXyun_publish(self, topic, msg): + try: + self.tenxun.publish(msg.get('topic'), msg.get("msg"), qos=0) + except BaseException: + print('!!!!!') + +class Handler(object): + @classmethod + def sub(cls, topic, msg): + print( + "Subscribe Recv: Topic={},Msg={}".format( + msg.get('topic').decode(), + msg.get("msg").decode())) + + @classmethod + def pub(cls, msg): + while True: + sys_bus.publish(SYSTOPIC.PUB, msg) + utime.sleep_ms(2000) + @classmethod + def ota(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish_sync(SYSTOPIC.PUB, msg) -''' -It is a must to have following two global variables, however, the client can modify values of these two global variables based on actual need. -''' -PROJECT_NAME = "QuecPython_TencentYun_example" -PROJECT_VERSION = "1.0.0" - -checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) + @classmethod + def rrpc(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish(SYSTOPIC.PUB, msg) -# Set log output level -log.basicConfig(level=log.INFO) -txyun_log = log.getLogger("TenCentYun") +if __name__ == '__main__': + PROJECT_NAME = "QuecPython" + PROJECT_VERSION = "1.0.0" + checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) + checknet.poweron_print_once() + checknet.wait_network_connected() -''' -Function of Tencent IoT kit on user end -''' -productID = "3ICA4ULOXI" # Product label (refer to the access to application notes of Tencent Cloud) -devicename = "QuecPython_test" # Device name (refer to the access to application notes of Tencent Cloud) -devicePsk = "1uZhJRjRTQnBG8TVHKZ2xw==" # Private key of device (For authentication of "one private key for one device ", please import None,refer to the access to application notes of Tencent Cloud ) -ProductSecret = None # Private key of product (For authentication of "one private key for one device ", please import None,refer to the access to application notes of Tencent Cloud ) + TXyunClass = TXyun_Class() + TXyunClass.TXyun_subscribe_topic() -tenxun = TXyun(productID, devicename, devicePsk, ProductSecret) # Create conncetion object -state = 5 + SYSTOPIC = SYSTOPIC_Class() + sys_bus.subscribe(SYSTOPIC.RRPC, Handler.rrpc) + sys_bus.subscribe(SYSTOPIC.OTA, Handler.ota) + sys_bus.subscribe(SYSTOPIC.SUB, Handler.sub) + sys_bus.subscribe(SYSTOPIC.PUB, TXyunClass.TXyun_publish) -def sub_cb(topic, msg): # Callback function for responsing Cloud message - global state - txyun_log.info("Subscribe Recv: Topic={},Msg={}".format(topic.decode(), msg.decode())) - state -= 1 + msg = '{{"DeviceName":"{}","msg":"test publish"}}'.format(TXyunClass.devicename) + tuple = ({"topic": TXyunClass.publish_topic1, "msg": msg},) + _thread.start_new_thread(Handler.pub, tuple) + TXyunClass.TXyun_start() -if __name__ == '__main__': - stagecode, subcode = checknet.wait_network_connected(30) - if stagecode == 3 and subcode == 1: - txyun_log.info('Network connection successful!') - - tenxun.setMqtt(clean_session=True, keepAlive=300, reconn=True) # Set mqtt - tenxun.setCallback(sub_cb) # Set callbk function of message - topic = "3ICA4ULOXI/QuecPython_test/data" # Input the published Topic - sub_topic = "3ICA4ULOXI/QuecPython_test/control" - pub_topic = "3ICA4ULOXI/QuecPython_test/event" - tenxun.subscribe(sub_topic, 1) - tenxun.subscribe(topic, 1) # Subscribe Topic - tenxun.start() - while True: - tenxun.publish(topic, "123456789", 1) # Publish message - tenxun.publish(pub_topic, "987654321", 1) # Publish message - utime.sleep(5) - - while 1: - if state: - pass - else: - tenxun.disconnect() - break - else: - txyun_log.info('Network connection failed! stagecode = {}, subcode = {}'.format(stagecode, subcode)) ``` The next step is to download and verify. You can download and run **.py** file on module via QPYcom since there is no need to compile python code. @@ -150,8 +188,13 @@ The next step is to download and verify. You can download and run **.py** file o Download **.py** file into module -![TencentCloud_10](media/TencentCloud_10.png) +![TencentCloud_11](media/TencentCloud_11.png) After downloading, run the script manually. For more details, please check the following figure. -![TencentCloud_11](media/TencentCloud_11.png) +![TencentCloud_12](media/TencentCloud_12.png) + +## The matched code + + + Download the code \ No newline at end of file diff --git a/docs/Advanced_development/en/QuecPythonCloud/code/Aliyun_sysbus_Chic.py b/docs/Advanced_development/en/QuecPythonCloud/code/Aliyun_sysbus_Chic.py new file mode 100644 index 0000000000000000000000000000000000000000..3933af12c8e2b56826b50fadcbd88fc96c6763c6 --- /dev/null +++ b/docs/Advanced_development/en/QuecPythonCloud/code/Aliyun_sysbus_Chic.py @@ -0,0 +1,115 @@ + +import utime +import checkNet +from aLiYun import aLiYun +import _thread +import sys_bus + + +class SYSTOPIC_Class(object): + RRPC = "rrpc" + OTA = "ota" + PUB = "pub" + SUB = "sub" + + +class aliyun_Class(object): + def __init__(self): + aliyun_Class.inst = self + self.productKey = "a1llZotKkCm" + self.productSecret = 'mj7qKfEn73y07gyK' + self.DeviceSecret = None + self.DeviceName = "Chic_001" + + self.subscribe_topic1 = "/" + self.productKey + \ + "/" + self.DeviceName + "/user/123" + self.subscribe_topic2 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq" + self.publish_topic1 = "/" + self.productKey + "/" + self.DeviceName + "/user/qq" + + self.ali = aLiYun( + self.productKey, + self.productSecret, + self.DeviceName, + self.DeviceSecret) + + clientID = b'clientID' + ret = self.ali.setMqtt( + clientID, + clean_session=False, + keepAlive=60, + reconn=True) # False True + + self.ali.setCallback(self.ali_sub_cb) + + def ali_sub_cb(self, topic, msg): + if topic.decode().find(SYSTOPIC.RRPC) != -1: + sys_bus.publish(SYSTOPIC.RRPC, {"topic": topic, "msg": msg}) + elif topic.decode().find(SYSTOPIC.OTA) != -1: + sys_bus.publish(SYSTOPIC.OTA, {"topic": topic, "msg": msg}) + else: + sys_bus.publish(SYSTOPIC.SUB, {"topic": topic, "msg": msg}) + + def ali_start(self): + self.ali.start() + print('Runing') + # aLiYun.disconnect() + + def ali_subscribe_topic(self): + self.ali.subscribe(self.subscribe_topic1, qos=0) + self.ali.subscribe(self.subscribe_topic2, qos=0) + + def ali_publish(self, topic, msg): + ret = self.ali.getAliyunSta() + # print(ret) + if ret == 0: + try: + self.ali.publish(msg.get('topic'), msg.get("msg"), qos=0) + except BaseException: + print('!!!!!!') + + +class Handler(object): + @classmethod + def sub(cls, topic, msg): + print( + "Subscribe Recv: Topic={},Msg={}".format( + msg.get('topic').decode(), + msg.get("msg").decode())) + + @classmethod + def pub(cls, msg): + while True: + sys_bus.publish(SYSTOPIC.PUB, msg) + utime.sleep_ms(2000) + + @classmethod + def ota(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish_sync(SYSTOPIC.PUB, msg) + + @classmethod + def rrpc(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish(SYSTOPIC.PUB, msg) + + +if __name__ == '__main__': + PROJECT_NAME = "QuecPython" + PROJECT_VERSION = "1.0.0" + checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) + checknet.poweron_print_once() + checknet.wait_network_connected() + + aliyunClass = aliyun_Class() + aliyunClass.ali_subscribe_topic() + + SYSTOPIC = SYSTOPIC_Class() + sys_bus.subscribe(SYSTOPIC.RRPC, Handler.rrpc) + sys_bus.subscribe(SYSTOPIC.OTA, Handler.ota) + sys_bus.subscribe(SYSTOPIC.SUB, Handler.sub) + sys_bus.subscribe(SYSTOPIC.PUB, aliyunClass.ali_publish) + + tuple = ({"topic": aliyunClass.publish_topic1, "msg": "hello world"},) + _thread.start_new_thread(Handler.pub, tuple) + + aliyunClass.ali_start() diff --git a/docs/Advanced_development/en/QuecPythonCloud/code/TX_sysbus_Chic.py b/docs/Advanced_development/en/QuecPythonCloud/code/TX_sysbus_Chic.py new file mode 100644 index 0000000000000000000000000000000000000000..d8e3aa9f7317343e6a82f962e64ad32a146d62b9 --- /dev/null +++ b/docs/Advanced_development/en/QuecPythonCloud/code/TX_sysbus_Chic.py @@ -0,0 +1,98 @@ + +import utime +import checkNet +from TenCentYun import TXyun +import _thread +import sys_bus + +class SYSTOPIC_Class(object): + RRPC = "rrpc" + OTA = "ota" + PUB = "pub" + SUB = "sub" + +class TXyun_Class(object): + def __init__(self): + self.productID = "X3Z30XABBU" + self.devicename = "001" + self.devicePsk = None + self.ProductSecret = 'TeXbX8bZ40vutWHGxfUGJEZS' + + self.subscribe_topic1 = 'X3Z30XABBU/{}/data'.format(self.devicename) + self.publish_topic1 = 'X3Z30XABBU/{}/data'.format(self.devicename) + + self.tenxun = TXyun( + self.productID, + self.devicename, + self.devicePsk, + self.ProductSecret) + self.tenxun.setMqtt() + self.tenxun.setCallback(self.sub_cb) + + def sub_cb(self, topic, msg): + if topic.decode().find(SYSTOPIC.RRPC) != -1: + sys_bus.publish(SYSTOPIC.RRPC, {"topic": topic, "msg": msg}) + elif topic.decode().find(SYSTOPIC.OTA) != -1: + sys_bus.publish(SYSTOPIC.OTA, {"topic": topic, "msg": msg}) + else: + sys_bus.publish(SYSTOPIC.SUB, {"topic": topic, "msg": msg}) + + def TXyun_start(self): + self.tenxun.start() + print('start') + + def TXyun_subscribe_topic(self): + self.tenxun.subscribe(self.subscribe_topic1, qos=0) + # self.tenxun.subscribe(self.subscribe_topic2, qos=0) + + def TXyun_publish(self, topic, msg): + try: + self.tenxun.publish(msg.get('topic'), msg.get("msg"), qos=0) + except BaseException: + print('!!!!!') + +class Handler(object): + @classmethod + def sub(cls, topic, msg): + print( + "Subscribe Recv: Topic={},Msg={}".format( + msg.get('topic').decode(), + msg.get("msg").decode())) + + @classmethod + def pub(cls, msg): + while True: + sys_bus.publish(SYSTOPIC.PUB, msg) + utime.sleep_ms(2000) + + @classmethod + def ota(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish_sync(SYSTOPIC.PUB, msg) + + @classmethod + def rrpc(cls, topic, msg): + msg = {"topic": "xxx", "msg": "xxx"} + sys_bus.publish(SYSTOPIC.PUB, msg) + +if __name__ == '__main__': + PROJECT_NAME = "QuecPython" + PROJECT_VERSION = "1.0.0" + checknet = checkNet.CheckNetwork(PROJECT_NAME, PROJECT_VERSION) + checknet.poweron_print_once() + checknet.wait_network_connected() + + TXyunClass = TXyun_Class() + TXyunClass.TXyun_subscribe_topic() + + SYSTOPIC = SYSTOPIC_Class() + sys_bus.subscribe(SYSTOPIC.RRPC, Handler.rrpc) + sys_bus.subscribe(SYSTOPIC.OTA, Handler.ota) + sys_bus.subscribe(SYSTOPIC.SUB, Handler.sub) + sys_bus.subscribe(SYSTOPIC.PUB, TXyunClass.TXyun_publish) + + msg = '{{"DeviceName":"{}","msg":"test publish"}}'.format(TXyunClass.devicename) + tuple = ({"topic": TXyunClass.publish_topic1, "msg": msg},) + _thread.start_new_thread(Handler.pub, tuple) + + TXyunClass.TXyun_start() diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_01.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_01.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3b12ba3e9a814b11895d5fa69cdf099811fa0c Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_01.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_02.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_02.png new file mode 100644 index 0000000000000000000000000000000000000000..2205624d5b415345893927162c35ad97a8888d98 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_02.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_03.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_03.png new file mode 100644 index 0000000000000000000000000000000000000000..8aad2d51e261507e83d7a4b99f75341628224795 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_03.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_04.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_04.png new file mode 100644 index 0000000000000000000000000000000000000000..3be5b2d3c3132bd7d44b49b32db7ad5427125219 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_04.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_05.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_05.png new file mode 100644 index 0000000000000000000000000000000000000000..0ed2628071eba34f742a4374b0c38f36441e6327 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_05.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_06.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_06.png new file mode 100644 index 0000000000000000000000000000000000000000..1f17b724993a022e53ce6e1f556e9060b63db348 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_06.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_07.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_07.png new file mode 100644 index 0000000000000000000000000000000000000000..92efba51d575d604a3c69292ebfb46fda4da0294 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_07.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_08.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_08.png new file mode 100644 index 0000000000000000000000000000000000000000..3792e65bc181618cc20618c69e083bf223c2f33c Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_08.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_09.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_09.png new file mode 100644 index 0000000000000000000000000000000000000000..160eafec3d078fb5db60de9a3f40223228049f2f Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_09.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_10.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_10.png new file mode 100644 index 0000000000000000000000000000000000000000..64b52c118a7d4e3c806ee8424524f425324d7a63 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_10.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_11.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_11.png new file mode 100644 index 0000000000000000000000000000000000000000..12f8c187545deda0bc72d4ddfdf369b4bae886df Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_11.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_12.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6497e238d78d88ef977c2d5088cccb86a765cffa Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_12.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_13.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_13.png new file mode 100644 index 0000000000000000000000000000000000000000..69e13e9c88f9c0e72b458e0d8ba7fff9308c607c Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_13.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_001.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_001.png deleted file mode 100644 index 275a04a2c06c5f40ab346be17eb467533e84c76d..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_001.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002.png deleted file mode 100644 index 1ea252d0fc741f5f827190e0e0226a12d560d355..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002A.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002A.png deleted file mode 100644 index c2b9341c1d88f306decb80b5f374390c9af14159..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_002A.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_003.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_003.png deleted file mode 100644 index 9a3b3664300a19d9633f7f2799a62b4e1f113d24..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_003.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_004.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_004.png deleted file mode 100644 index f52880d0c6ac4f92c3fddf633cd0477a3f6a28da..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_004.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_005.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_005.png deleted file mode 100644 index 66d66e980f1a9744569da5ccc245c42fc69f34fe..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_005.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_006.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_006.png deleted file mode 100644 index 9f17684074e74a616ba212c1821c143139bc19f8..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_006.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_007.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_007.png deleted file mode 100644 index b67a870232d0783407f6484f0f89594f0f09b509..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_007.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_008.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_008.png deleted file mode 100644 index ab1c297875ac5aae8176694152c5f11d35002d1e..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_008.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_009.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_009.png deleted file mode 100644 index 9135c8e237116aa32bb1d8ce7efc5875ab4c026e..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_009.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_010.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_010.png deleted file mode 100644 index fc098834adec4d916f668ae85c87db4075880e5b..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_010.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_011.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_011.png deleted file mode 100644 index 0f43d769e739ce8e4b432e625891f194ab5ac922..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_011.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_012.png b/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_012.png deleted file mode 100644 index 7449980c169dafd0f3c24781d24842fc5da5434c..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/AliyunCloud_IoT_210324_012.png and /dev/null differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01.png new file mode 100644 index 0000000000000000000000000000000000000000..29de4b55ca3d25b8ba5f647d966bcecb2b462149 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01A.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01A.png new file mode 100644 index 0000000000000000000000000000000000000000..76a10df92c66d644dbe2c0964803f2e529b88eea Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01A.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01B.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01B.png new file mode 100644 index 0000000000000000000000000000000000000000..12104cea0ccbdd33fee123b58c5b386b262b7ed3 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_01B.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_02.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_02.png new file mode 100644 index 0000000000000000000000000000000000000000..7a886dc9ae3d0aa64f952df854bd62243f20a6cb Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_02.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_03.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_03.png new file mode 100644 index 0000000000000000000000000000000000000000..e3d419daf4dc565b0b21e86638495f0f95718fa9 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_03.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_04.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_04.png new file mode 100644 index 0000000000000000000000000000000000000000..7c612b296d022a243747205ef837e0f62e429ec0 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_04.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_05.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_05.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5c90e916d840eaa03eec33b24fff70354df6c1 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_05.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_06.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_06.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e7c8ca049410b4bcd482086353227aa9512a60 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_06.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_07.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_07.png new file mode 100644 index 0000000000000000000000000000000000000000..801a42803a358dc13d82b4a95b7f147446a79f5a Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_07.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_08.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_08.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2978611894644b147bc474196ea5d6adeb81bc Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_08.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_09.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_09.png new file mode 100644 index 0000000000000000000000000000000000000000..966c2a7db6d9aa73381ddebac90cb3421ef0a10e Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_09.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_10.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e5bb0c71545fd9011a867532a2facb17a7572893 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_10.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_11.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_11.png new file mode 100644 index 0000000000000000000000000000000000000000..807fe9653e35fb72dbe637ba090405cdb8e8f70a Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_11.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_12.png b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5caf4728c4d5ffabf53c78cb6fbd74e1e5254223 Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/AmazonCloud_12.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_01.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_01.png index bca31f7c3d9c355a025b55dcf44e9402320b7b4b..f06353b7395e8a5d79ef985b176c4083e3003c56 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_01.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_01.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_02.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_02.png index d9a17a43beb7cbe5c93e6b2c23d9201efc02c186..cc4209ed9b6858771c9d01f1e402b2c429adad52 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_02.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_02.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_03.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_03.png index 18f747eb1f19a4d70f8a8209f03b8a8a527a3aa3..62d5a45e7d264c16578b0ded58d9c98af937059e 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_03.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_03.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_04.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_04.png index 65165d065f21cc9208bd7502056e9aefb8681da3..2dc647e6fd116b5641f874c059b9d8c8fd4cc6f2 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_04.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_04.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_05.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_05.png index 976686be43d2e706a1f11b01ea196b0edeadba35..b60fdb0e9ce4a2f2c11e72f3087866fdead1d75e 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_05.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_05.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_06.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_06.png index a585f37f051468351371bd5cdc4de67feacd1e85..6cef59995d229350c0c5d362edcde9ee8e2153ca 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_06.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_06.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_07.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_07.png index 3006aa251e810b4deb90dec7a8d1036a399b990b..c0048a99f4de24cd049d6002cc7bc18fa140f7b8 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_07.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_07.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_08.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_08.png index 89f801b39feaffcc98551876e6cc698cb1bb1a57..34bb05827be501c2738d9ab56ea55e797022d0e3 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_08.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_08.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_09.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_09.png index d9793b34bcdb6bf42ec94edd3b0d83c40cb81e3b..0c55626d552ca335bdfb31c066bd119b46843a86 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_09.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_09.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_10.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_10.png index b0326c47a95ec1169efffc1d23b91555924261b0..827806a98557a9b2375c5d9f58f217ab67ce8719 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_10.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_10.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_11.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_11.png index fa16648bc619ad78181cad86ce3792f123c7aa1e..07911a572ab3413fb7e1907c978197fce410928f 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_11.png and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_11.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_12.png b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6d8bada68f6f382b371b133545d22fcbf2d18bcd Binary files /dev/null and b/docs/Advanced_development/en/QuecPythonCloud/media/TencentCloud_12.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144555513.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144555513.png index 026ba95620766a123e22a6df751fcd388d7f1e3d..21fce72ab88c149d65574176363ac52d729c1a7e 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144555513.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144555513.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144623750.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144623750.png index da6799cb1112c35753a1fa079898a415f7dff8bb..ba209a343a598c6bc9960ac059e3797a1472ed43 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144623750.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144623750.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144652295.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144652295.png index 399eaf19585e353fc309065f9644c2d9ce777336..094043b592dd2f24fb71e49f08ad48c04bf68267 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144652295.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144652295.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144718362.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144718362.png index 2352921d73b8b66ddb6e1e05b3d9e589e5c64a1a..b5295df51df99830eb2788a5085d88704a72d45d 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144718362.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144718362.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144746546.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144746546.png index 84c60efc5461d6f00ccf3f55a7c167ff27f5e461..4342bc2fd1b206083c059a40e4996be0965830dc 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144746546.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144746546.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144806929.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144806929.png index f80f49444f4e9298fdcbfdc8313e43b8ad2d1a4b..d4010eeb684553bb946356464fa0968985b6368e 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144806929.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144806929.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144838204.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144838204.png index baa9072a8a6c61aa582cac3150722ab087995976..60b5163d9f44c6bea7945288169396d74b4abba3 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144838204.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144838204.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144924732.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144924732.png index 6fe539b31633b5f9a2086c9abd7c86e402c3b6a7..cea00d45b90066c6cbe34e59d804d2d4cda22c9b 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144924732.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144924732.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144949454.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144949454.png index 4ad9a908289836865a86998390041a6fd54387c1..18800ef063092ccedfd343e9aa1bda57e8ddfb0d 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144949454.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908144949454.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145010988.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145010988.png index 774f4f781b11aece7284e93981547f481d54d281..eaca69f60be8ecb107e74484f46e131d5f086ccc 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145010988.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145010988.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145043964.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145043964.png index b77e0c2340203694bc57883469b451da258f226a..ac5ff2a79aaaf180889ba79305d48945e28ce098 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145043964.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145043964.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145113011.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145113011.png index 3f2e1a14d4adb34efb608c5ab3296a3ca414bd8c..ae42863f305ed1c5b88e475cfa40a211285ce29b 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145113011.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145113011.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145154238.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145154238.png index b77e0c2340203694bc57883469b451da258f226a..8a0613d45fd5096a6002274606429a6bfaebbd73 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145154238.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145154238.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145218946.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145218946.png index b7a21c0c6068d678615916565f8042c9c5c29447..19e8780a81d366ed414952f893b0d8a8d2f3f03c 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145218946.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145218946.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145242463.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145242463.png index c92b8ced1d55b36b95f8d58b83bb1f9293cfa84e..44e8fe9f6cbd0402aa4b7fcb3c0bf4f99eb21248 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145242463.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145242463.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145258810.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145258810.png index d12e249e734d2be127133921c045518ee4ea4a93..0bdb5c311a984a7822d506a2c9b0bb78c8ba9197 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145258810.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145258810.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145320185.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145320185.png index 8c277487c200f869ddf6a298fd2b616441ae3d28..ffbf286d58d7ddbe2f335449deb082a0b4405ada 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145320185.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145320185.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145340796.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145340796.png index ff6a35ca4803fc647e4d742ee7f6e6dd6f4cc6c4..0de549b2daef38d27600c9c54bb4775f688fb372 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145340796.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145340796.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145400060.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145400060.png index 719e3f1d48b2f4702fbab1e40c436c80c746c571..c99be1ae8dce1d194ce0a9c916d855aac74630df 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145400060.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145400060.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145421993.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145421993.png index d4bb7cad2dea504fcaf11a3ba8eb434b7b542879..21175a0d468d728f34338e5979d4a67c9ae833ae 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145421993.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145421993.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145443414.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145443414.png index d0965ca07c8c32a548274d937f9569ecb2cee6d3..436f45f025186f08b6d0c9010c31b470b5abf6e7 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145443414.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145443414.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145502660.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145502660.png index 27ee96134c8557d1023f4c0e165e055b7f3d983c..63fcd98e1dbbf637ba460e3021a4151cd414eb5c 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145502660.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145502660.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145524093.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145524093.png index a3473083da780dcee7d3643d37cd042ad21d0619..bc911e499addc526ffb3a0aa50513c325f15216c 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145524093.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145524093.png differ diff --git a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145541260.png b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145541260.png index 49183b8429431740f4096b3beecd937781c069d4..0b0e48d329de71947c7cbd2f900118502b23894c 100644 Binary files a/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145541260.png and b/docs/Advanced_development/en/QuecPythonCloud/media/image-20210908145541260.png differ diff --git a/docs/Advanced_development/zh/HeliosService/HeliosService_1.md b/docs/Advanced_development/zh/HeliosService/HeliosService_1.md index 8e1e2d5b58ebca3b8040d9c6a5bfa7a0fa6686a1..9b7df48fa7ef199915006640fef3cebcbc9fe006 100644 --- a/docs/Advanced_development/zh/HeliosService/HeliosService_1.md +++ b/docs/Advanced_development/zh/HeliosService/HeliosService_1.md @@ -219,7 +219,7 @@ if __name__ == '__main__': GPIO读写拦截器 ```python -from ql_interrupter import PinInterrupter +from usr.bin.third_party.ql_interrupter import PinInterrupter from machine import Pin, ExtInt pin_inter = PinInterrupter(Pin.GPIO1, trige_mode=Pin.OUT, pull_mode=Pin.PULL_DISABLE, mode=0) # 初始化 pin_inter.write(1) # 设置PIN脚电平输出为高 @@ -228,7 +228,7 @@ pin_inter.write(1) # 设置PIN脚电平输出为高 看门狗示例 ```python -from ql_interrupter import WatchDog +from usr.bin.third_party.ql_interrupter import WatchDog from machine import Pin, ExtInt import sys_bus # 初始化watch dog diff --git a/docs/Advanced_development/zh/QuecPythonAdvance/HeliosService_API.md b/docs/Advanced_development/zh/QuecPythonAdvance/HeliosService_API.md index 567cf77e0ea4ffc11e42d9dc5939b572053ae222..83a42fedc3acbb2e537b841ad2ff9da9b4e902e4 100644 --- a/docs/Advanced_development/zh/QuecPythonAdvance/HeliosService_API.md +++ b/docs/Advanced_development/zh/QuecPythonAdvance/HeliosService_API.md @@ -552,7 +552,7 @@ q.put(2) #### 输出订阅者的数据 -当我们订阅网络服务的时候我们, 网络的波动我们回收到相关通知, 通知为我们订阅的函数 +订阅日志服务之后,当打印日志的时候会通知我们订阅的函数 ```python from usr.bin.guard import GuardContext diff --git a/docs/Advanced_development/zh/QuecPythonCloud/Aliyun.md b/docs/Advanced_development/zh/QuecPythonCloud/Aliyun.md index d0d8c0c238350715aaddedab008da87a9f2b3c2a..fe8ac783e7305d66fcc92ad894101a4a027efdfe 100644 --- a/docs/Advanced_development/zh/QuecPythonCloud/Aliyun.md +++ b/docs/Advanced_development/zh/QuecPythonCloud/Aliyun.md @@ -93,8 +93,6 @@ PASSWORD = b'EC01986E912222B0A82049A874AF183D0A490E5E' ### 上报和下发数据 -在上面创建的Topic名称如:test,只要以test/为开头的Topic都可以订阅发布。 - 示例Topic如:/broadcast/a1llZotKkCm/123 ![](media/AliyunCloud_IoT_210324_009.png) diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_01.png b/docs/Quick_start/en/media/Quick_start_mqtt_01.png new file mode 100644 index 0000000000000000000000000000000000000000..5566242144568b5cdc627919e2c029b500359907 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_01.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_02.png b/docs/Quick_start/en/media/Quick_start_mqtt_02.png new file mode 100644 index 0000000000000000000000000000000000000000..8d65d681fa48c36a8150b3dc81a8bc1cbe777ce0 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_02.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_03.png b/docs/Quick_start/en/media/Quick_start_mqtt_03.png new file mode 100644 index 0000000000000000000000000000000000000000..0005cf6a18e52dda490ade7f4e9199cf62c54eba Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_03.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_04.png b/docs/Quick_start/en/media/Quick_start_mqtt_04.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0ac692b219c24db4022150961207cf8985cea8 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_04.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_05.png b/docs/Quick_start/en/media/Quick_start_mqtt_05.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7e61c3b212c2e338eba3eff52d6e28d22bb0be Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_05.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_06.png b/docs/Quick_start/en/media/Quick_start_mqtt_06.png new file mode 100644 index 0000000000000000000000000000000000000000..154120abfb0a2dab5f701b4f3912cb0673189eaf Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_06.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_07.png b/docs/Quick_start/en/media/Quick_start_mqtt_07.png new file mode 100644 index 0000000000000000000000000000000000000000..413d8e4b7f3e89a09d155f162b2ba58bc6b713f1 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_07.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_08.png b/docs/Quick_start/en/media/Quick_start_mqtt_08.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f74a7594570e3c6e0e6c7c02f177a5333b2a79 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_08.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_09.png b/docs/Quick_start/en/media/Quick_start_mqtt_09.png new file mode 100644 index 0000000000000000000000000000000000000000..8d611dd6aec18141be028df3378c9791237181bc Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_09.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_10.png b/docs/Quick_start/en/media/Quick_start_mqtt_10.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d22d1200747fb10093f8cb72553ca98891192f Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_10.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_11.png b/docs/Quick_start/en/media/Quick_start_mqtt_11.png new file mode 100644 index 0000000000000000000000000000000000000000..4d262f7aed533545456c79b87746c1fde1c08058 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_11.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_12.png b/docs/Quick_start/en/media/Quick_start_mqtt_12.png new file mode 100644 index 0000000000000000000000000000000000000000..26513a35a54de74e73f796bd250f694f88f018b5 Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_12.png differ diff --git a/docs/Quick_start/en/media/Quick_start_mqtt_13.png b/docs/Quick_start/en/media/Quick_start_mqtt_13.png new file mode 100644 index 0000000000000000000000000000000000000000..5adf421b411368e3719e8ecd40e915f3ca0648ce Binary files /dev/null and b/docs/Quick_start/en/media/Quick_start_mqtt_13.png differ diff --git a/docs/Quick_start/en/media/mqtt_211017_01.png b/docs/Quick_start/en/media/mqtt_211017_01.png deleted file mode 100644 index 27265284dbe6a5079fb7597add05f8d5149655db..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_01.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_02.png b/docs/Quick_start/en/media/mqtt_211017_02.png deleted file mode 100644 index f5993e2ab77fd9e07aa31e616d962a93f5344e7e..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_02.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_03.png b/docs/Quick_start/en/media/mqtt_211017_03.png deleted file mode 100644 index 4d5ea752a3d8aea890ec5f76e0983b1ca6b7b877..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_03.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_04.png b/docs/Quick_start/en/media/mqtt_211017_04.png deleted file mode 100644 index b0d70f66d9fdeb3de3f4a8245c5b892f192817a3..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_04.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_05.png b/docs/Quick_start/en/media/mqtt_211017_05.png deleted file mode 100644 index eb740028af890fcf9687eea3667fdcbad7a3bb82..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_05.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_06.png b/docs/Quick_start/en/media/mqtt_211017_06.png deleted file mode 100644 index 53ebf38b49563214a427f82d3851c9f12c55b218..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_06.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_07.png b/docs/Quick_start/en/media/mqtt_211017_07.png deleted file mode 100644 index 3edd715779812256ccdd6d1f2103f546c76f00fd..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_07.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_08.png b/docs/Quick_start/en/media/mqtt_211017_08.png deleted file mode 100644 index bfd39413dd33e39f9a526549044e3bd660b54a0b..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_08.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_09.png b/docs/Quick_start/en/media/mqtt_211017_09.png deleted file mode 100644 index 7923d1d7c380565e7ebed9aac9c4058994757359..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_09.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_10.png b/docs/Quick_start/en/media/mqtt_211017_10.png deleted file mode 100644 index 04ee48af97068d406ead3fe8a506af627d2fd72c..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_10.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_11.png b/docs/Quick_start/en/media/mqtt_211017_11.png deleted file mode 100644 index 05e6c514f379d4cbd19de1c2ef98a507f2687d52..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_11.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_12.png b/docs/Quick_start/en/media/mqtt_211017_12.png deleted file mode 100644 index 2962c63fa8f946146d60458d8147562541049fca..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_12.png and /dev/null differ diff --git a/docs/Quick_start/en/media/mqtt_211017_13.png b/docs/Quick_start/en/media/mqtt_211017_13.png deleted file mode 100644 index 88a72265c52ee680af44e6ca7cbe90ac86fb881d..0000000000000000000000000000000000000000 Binary files a/docs/Quick_start/en/media/mqtt_211017_13.png and /dev/null differ diff --git a/docs/Quick_start/en/mqtt.md b/docs/Quick_start/en/mqtt.md index 5d97d70edbab9f2b86bc13e85f90c85d4f58ce28..54d4ff24fa84f13af5ea613b43265557962ed63a 100644 --- a/docs/Quick_start/en/mqtt.md +++ b/docs/Quick_start/en/mqtt.md @@ -20,23 +20,23 @@ Front face of Aliyun: https://www.aliyun.com Click [Product]---[Container &Middleware]---[Message queue for MQTT] -![image-20211017101728372](media\mqtt_211017_01.png) +![Quick_start_mqtt_01](media\Quick_start_mqtt_01.png) 【Create case】 -![mqtt_02(E)](media\mqtt_02(E).png) +![Quick_start_mqtt_02](media\Quick_start_mqtt_02.png) 【Create Topic】 -![mqtt_03(E)](media\mqtt_03(E).png) +![Quick_start_mqtt_03](media\Quick_start_mqtt_03.png) 【Create Group ID】 -![mqtt_04(E)](media\mqtt_04(E).png) +![Quick_start_mqtt_04](media\Quick_start_mqtt_04.png) 【Signature authentication】 -![mqtt_05(E)](media\mqtt_05(E).png) +![Quick_start_mqtt_05](media\Quick_start_mqtt_05.png) Client ID to be signed: GID_ZHIQIANG@@@002 (Composed by GroupID+@@@+self-definition) @@ -44,17 +44,17 @@ Client ID to be signed: GID_ZHIQIANG@@@002 (Composed by GroupID+@@@+self-definit 【RAM access control】 -![mqtt_06(E)](media\mqtt_06(E).png) +![Quick_start_mqtt_06](media\Quick_start_mqtt_06.png) Create user in RAM Access Controller -![mqtt_07(E)](media\mqtt_07(E).png) +![Quick_start_mqtt_07](media\Quick_start_mqtt_07.png) 【Access Key、Secret Key】 Kindly reminder: you have only one chance to note down the generated Access Key and Secret Key. -![mqtt_08(E)](media\mqtt_08(E).png) +![Quick_start_mqtt_08](media\Quick_start_mqtt_08.png) 【Generate connection info】 @@ -62,7 +62,7 @@ Fill in Access Key, Secret Key and client ID to be singed, then click"Calculate Client ID to be signed: GID_ZHIQIANG@@@002 (Composed by GroupID+@@@+self-definition) -![mqtt_09(E)](media\mqtt_09(E).png) +![Quick_start_mqtt_09](media\Quick_start_mqtt_09.png) Click "Calculate signature" to get UserName, Password and ClientID. Meanwhile, get address port 1883 in "case illustration" to get access to platform. @@ -86,7 +86,7 @@ Click "Calculate signature" to get UserName, Password and ClientID. Meanwhile, g **PASSWORD: ** The generated string on above "signature authentication" -![mqtt_10(E)](media\mqtt_10(E).png) +![Quick_start_mqtt_10](media\Quick_start_mqtt_10.png) 【Report data】 @@ -96,7 +96,7 @@ Create Topic name as "test"on above, as long as the topic with a test prefixed, Exemplified Topics: test、test/123,test/123/ABC -![mqtt_11(E)](media\mqtt_11(E).png) +![Quick_start_mqtt_11](media\Quick_start_mqtt_11.png) ## SW design @@ -201,11 +201,11 @@ Following that, you can download and verify. There is no necessary to compile Py Download **.py** file and run on module -![image-20211017102023045](media\mqtt_211017_12.png) +![Quick_start_mqtt_12](media\Quick_start_mqtt_12.png) Make the script running manually after downloading, -![image-20211017102032878](media\mqtt_211017_13.png) +![Quick_start_mqtt_13](media\Quick_start_mqtt_13.png) diff --git a/docs/Quick_start/zh/media/mqtt_211017_12.png b/docs/Quick_start/zh/media/mqtt_211017_12.png index 2962c63fa8f946146d60458d8147562541049fca..2070b1f0be02baeb1dc7d139b58571aae6660e32 100644 Binary files a/docs/Quick_start/zh/media/mqtt_211017_12.png and b/docs/Quick_start/zh/media/mqtt_211017_12.png differ diff --git a/docs/Quick_start/zh/media/mqtt_211017_13.png b/docs/Quick_start/zh/media/mqtt_211017_13.png index 88a72265c52ee680af44e6ca7cbe90ac86fb881d..26a364e2e4470ce1229c8bb61d333c0910160179 100644 Binary files a/docs/Quick_start/zh/media/mqtt_211017_13.png and b/docs/Quick_start/zh/media/mqtt_211017_13.png differ diff --git a/docs/Quick_start/zh/mqtt.md b/docs/Quick_start/zh/mqtt.md index 50ec49a2f237787123a3b2fa9a26fe60cfec0e2f..9e0127637deee7c6dfde7442efeccffbf5df8e02 100644 --- a/docs/Quick_start/zh/mqtt.md +++ b/docs/Quick_start/zh/mqtt.md @@ -209,13 +209,13 @@ if __name__ == '__main__': 下载.py文件到模组运行: -![image-20211017102023045](media\mqtt_211017_12.png) +![mqtt_211017_12](media\mqtt_211017_12.png) 下载之后,手动让脚本跑起来。 -![image-20211017102032878](media\mqtt_211017_13.png) +![mqtt_211017_13](media\mqtt_211017_13.png) diff --git a/docs/sbs/en/QuecPythonWirelessNetwork/media/image-20210908140227016.png b/docs/sbs/en/QuecPythonWirelessNetwork/media/image-20210908140227016.png index d10092a8256edccfea18e07d3569ff48298d3fb3..7552f2cff6a6711e76f4f9f8b6d1b4356cb02717 100644 Binary files a/docs/sbs/en/QuecPythonWirelessNetwork/media/image-20210908140227016.png and b/docs/sbs/en/QuecPythonWirelessNetwork/media/image-20210908140227016.png differ