金三iot3已经同步链接
authorazao <821478748@qq.com>
Fri, 9 Jan 2026 10:46:32 +0000 (18:46 +0800)
committerazao <821478748@qq.com>
Fri, 9 Jan 2026 10:46:32 +0000 (18:46 +0800)
2.sdk/project/K8/sdk/services/microPython/ports/quectel/core/protocol.py

index a3fc338..3cffbec 100644 (file)
@@ -703,10 +703,6 @@ class SockMangager(Abstract):
             print("connect_iot_websocket error")\r
     def heart_IOt(self,event,msg):\r
         print("heart_IOT.....")\r
-        #Header\r
-        header = ustruct.pack('>H', 0xFFFE)  # 使用大端模式\r
-        #Type\r
-        packet_type = ustruct.pack('B', 0x02)\r
         #心跳帧\r
         json_str = {\r
             "cmd":"post_heart_beat",\r
@@ -721,7 +717,7 @@ class SockMangager(Abstract):
         payload = json_str.encode('utf-8')\r
         payloadLen = ustruct.pack('H', len(payload))\r
         #拼接\r
-        heart_packet = header + packet_type + payloadLen + payload#+ crc\r
+        heart_packet = b"\xff\xfe" + b"\x01"+ b"\x03" + b"\x00" * 3+ payloadLen + payload#+ crc\r
         EventMesh.publish("CHANNEL_IOT_SEND", heart_packet)\r
         # print("心跳发送数据包:{}".format(heart_packet))\r
 \r
@@ -733,31 +729,19 @@ class SockMangager(Abstract):
             print("iot不在线")\r
             EventMesh.publish("publish_AI_btnInfo",{"func":self.connect_iot_websocket}) \r
             return \r
-        #Header\r
-        header = ustruct.pack('>H', 0xFFFE)  # 使用大端模式\r
-        #Type\r
-        packet_type = ustruct.pack('B', 0x03)\r
-        #字典转为json字符串\r
-        json_str = EventMesh.publish("GET_IOT_SEND_CMD", data)\r
-        json_str = ujson.dumps(json_str)\r
-        #字符串转为二进制数据Payload\r
-        payload = json_str.encode('utf-8')\r
-        #PayloadLen\r
-        payloadLen = ustruct.pack('H', len(payload))\r
-         #CRC16(2字节,基于pay字段计算)\r
-        crc = self.crc16(payload)\r
-        print("crc的长度为{}".format(len(crc)))\r
-        #拼接\r
-        full_packet = header + packet_type + payloadLen + payload#+ crc\r
-        EventMesh.publish("CHANNEL_IOT_SEND", full_packet)\r
-        print("发送更新数据包:{}".format(full_packet))\r
+        MAGIC =  (0xfffe).to_bytes(2,"big")\r
+        VERSION = (0x01).to_bytes(1,"big")#"03".encode('utf-8')\r
+        TYPE = (0x03).to_bytes(1,"big")\r
+        HR_JSON = ujson.dumps(EventMesh.publish("GET_IOT_SEND_CMD", data))\r
+        GPS_JSON_b = HR_JSON.encode('utf-8')\r
+        DATA_LEN = (len(HR_JSON)).to_bytes(4,"big")\r
+        heards_infor = b''\r
+        heards_infor = MAGIC+VERSION+TYPE+DATA_LEN+GPS_JSON_b\r
+        EventMesh.publish("CHANNEL_IOT_SEND", heards_infor)\r
+        print("发送更新数据包:{}".format(heards_infor))\r
 \r
     def login_IOT(self,event,msg):\r
         print("登录中")\r
-        #Header\r
-        header = ustruct.pack('>H', 0xFFFE)  # 使用大端模式\r
-        #Type\r
-        packet_type = ustruct.pack('B', 0x00)\r
         #设备ID\r
         device_id_bytes = modem.getDevImei().encode('utf-8')[:20]  # 转为字节并截断到20字节\r
         device_id = bytes_ljust(device_id_bytes, 20, b'\x00')\r
@@ -765,7 +749,7 @@ class SockMangager(Abstract):
         token_bytes = EventMesh.publish("get_dev_token").encode('utf-8')[:36]  # 转为字节并截断\r
         token_padded = bytes_ljust(token_bytes, 36, b'\x00')\r
         #拼接\r
-        body = header + packet_type + device_id + token_padded\r
+        body = b"\xff\xfe" + b"\x01"+ b"\x03" + device_id + token_padded\r
         #CRC16(2字节,基于上述所有字段计算)\r
         crc = self.crc16(body)\r
         # 完整数据包\r