V1.4:无秤模式不上报/拒绝zero、onceWt;WiFi断链(CLOSED/ping超时15s)打印原因并整机复位;Uptime联网后每60s打印;README同步
This commit is contained in:
parent
308119a45c
commit
10ce67cc76
|
|
@ -126,17 +126,19 @@ void net_wifi_process(void)
|
||||||
int r;
|
int r;
|
||||||
while ((r = mqttc_process()) == 1) { }
|
while ((r = mqttc_process()) == 1) { }
|
||||||
if (r == -1) {
|
if (r == -1) {
|
||||||
log_warn("> WiFi: TCP closed, need reconnect");
|
/* 收到 CLOSED:服务器主动断开 TCP(被平台踢下线),直接复位重连 */
|
||||||
g_wifi_mqtt_ready = 0;
|
log_error("> WiFi: connection closed by server (kicked offline by platform), system reset");
|
||||||
return;
|
HAL_Delay(100);
|
||||||
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 30s 一次 PINGREQ;上一帧 PINGREQ 未收到 PINGRESP 判断链 */
|
/* 15s 一次 PINGREQ;上一帧 PINGREQ 未收到 PINGRESP 判断链 */
|
||||||
if (HAL_GetTick() - s_ping_tick >= 30000) {
|
if (HAL_GetTick() - s_ping_tick >= 15000) {
|
||||||
if (g_mqttc_ping_outstanding) {
|
if (g_mqttc_ping_outstanding) {
|
||||||
log_warn("> WiFi: ping timeout, need reconnect");
|
/* 心跳超时:服务器无响应(假在线/网络异常),直接复位重连 */
|
||||||
g_wifi_mqtt_ready = 0;
|
log_error("> WiFi: ping timeout (server no response), system reset");
|
||||||
return;
|
HAL_Delay(100);
|
||||||
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
s_ping_tick = HAL_GetTick();
|
s_ping_tick = HAL_GetTick();
|
||||||
mqttc_ping();
|
mqttc_ping();
|
||||||
|
|
|
||||||
|
|
@ -252,14 +252,26 @@ void NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4,
|
||||||
/* ver 字段:固件版本号,平台据此可识别设备是否发生了 OTA 回退 */
|
/* ver 字段:固件版本号,平台据此可识别设备是否发生了 OTA 回退 */
|
||||||
/* sw1 与 feeding 都映射继电器 1 状态(无秤模式两者等效),
|
/* sw1 与 feeding 都映射继电器 1 状态(无秤模式两者等效),
|
||||||
* 两个字段都上报,平台的 sw1 开关和 feeding 状态才能同步刷新 */
|
* 两个字段都上报,平台的 sw1 开关和 feeding 状态才能同步刷新 */
|
||||||
|
/* 无秤模式(PRODUCT_WITH_FEED_SCALE=0)不上报 zero/onceWt 字段 */
|
||||||
if (s_backend == NET_BACKEND_4G) {
|
if (s_backend == NET_BACKEND_4G) {
|
||||||
|
#if PRODUCT_WITH_FEED_SCALE
|
||||||
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22ver\\22:%u,\\22weight\\22:%.1f,\\22onceWt\\22:%.1f,\\22zero\\22:%.1f,\\22sw1\\22:%d,\\22feeding\\22:%d,\\22sw2\\22:%d,\\22sw3\\22:%d,\\22sw4\\22:%d}}\"",
|
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22ver\\22:%u,\\22weight\\22:%.1f,\\22onceWt\\22:%.1f,\\22zero\\22:%.1f,\\22sw1\\22:%d,\\22feeding\\22:%d,\\22sw2\\22:%d,\\22sw3\\22:%d,\\22sw4\\22:%d}}\"",
|
||||||
MqttInfoStr.ClientID, (unsigned)MqttInfoStr.Ver, zero_kg, once_wt_kg, weight_kg, sw1, feeding, sw2, sw3, sw4);
|
MqttInfoStr.ClientID, (unsigned)MqttInfoStr.Ver, zero_kg, once_wt_kg, weight_kg, sw1, feeding, sw2, sw3, sw4);
|
||||||
|
#else
|
||||||
|
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22ver\\22:%u,\\22weight\\22:%.1f,\\22sw1\\22:%d,\\22feeding\\22:%d,\\22sw2\\22:%d,\\22sw3\\22:%d,\\22sw4\\22:%d}}\"",
|
||||||
|
MqttInfoStr.ClientID, (unsigned)MqttInfoStr.Ver, zero_kg, sw1, feeding, sw2, sw3, sw4);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
char json[256];
|
char json[256];
|
||||||
|
#if PRODUCT_WITH_FEED_SCALE
|
||||||
snprintf(json, sizeof(json),
|
snprintf(json, sizeof(json),
|
||||||
"{\"header\":\"iot.prop.post\",\"body\":{\"ver\":%u,\"weight\":%.1f,\"onceWt\":%.1f,\"zero\":%.1f,\"sw1\":%d,\"feeding\":%d,\"sw2\":%d,\"sw3\":%d,\"sw4\":%d}}",
|
"{\"header\":\"iot.prop.post\",\"body\":{\"ver\":%u,\"weight\":%.1f,\"onceWt\":%.1f,\"zero\":%.1f,\"sw1\":%d,\"feeding\":%d,\"sw2\":%d,\"sw3\":%d,\"sw4\":%d}}",
|
||||||
(unsigned)MqttInfoStr.Ver, zero_kg, once_wt_kg, weight_kg, sw1, feeding, sw2, sw3, sw4);
|
(unsigned)MqttInfoStr.Ver, zero_kg, once_wt_kg, weight_kg, sw1, feeding, sw2, sw3, sw4);
|
||||||
|
#else
|
||||||
|
snprintf(json, sizeof(json),
|
||||||
|
"{\"header\":\"iot.prop.post\",\"body\":{\"ver\":%u,\"weight\":%.1f,\"sw1\":%d,\"feeding\":%d,\"sw2\":%d,\"sw3\":%d,\"sw4\":%d}}",
|
||||||
|
(unsigned)MqttInfoStr.Ver, zero_kg, sw1, feeding, sw2, sw3, sw4);
|
||||||
|
#endif
|
||||||
net_wifi_publish_up(json);
|
net_wifi_publish_up(json);
|
||||||
}
|
}
|
||||||
net_at_unlock();
|
net_at_unlock();
|
||||||
|
|
|
||||||
|
|
@ -276,6 +276,12 @@ void relayAction(uint8_t *data)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
} else if (proto_locate((char *)data, "onceWt")) {
|
} else if (proto_locate((char *)data, "onceWt")) {
|
||||||
|
#if FEED_SCALE_DISABLED
|
||||||
|
/* 无秤模式:无单次投喂量概念,拒绝设置 */
|
||||||
|
log_warn("> RELAY: onceWt rejected (no scale)");
|
||||||
|
NET_publish_response(CmdId, 0, "no scale on this device");
|
||||||
|
return;
|
||||||
|
#else
|
||||||
/* 单独设置单次投喂量, 持久化到 EEPROM */
|
/* 单独设置单次投喂量, 持久化到 EEPROM */
|
||||||
uint16_t once_wt_100g = 0;
|
uint16_t once_wt_100g = 0;
|
||||||
proto_get_kg100((char *)data, "onceWt", &once_wt_100g);
|
proto_get_kg100((char *)data, "onceWt", &once_wt_100g);
|
||||||
|
|
@ -288,7 +294,14 @@ void relayAction(uint8_t *data)
|
||||||
NET_publish_response(CmdId, 1, "OK");
|
NET_publish_response(CmdId, 1, "OK");
|
||||||
relayStatueUpdata();
|
relayStatueUpdata();
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
} else if (proto_locate((char *)data, "zero")) {
|
} else if (proto_locate((char *)data, "zero")) {
|
||||||
|
#if FEED_SCALE_DISABLED
|
||||||
|
/* 无秤模式:无去皮/空载重量概念,拒绝设置 */
|
||||||
|
log_warn("> RELAY: zero rejected (no scale)");
|
||||||
|
NET_publish_response(CmdId, 0, "no scale on this device");
|
||||||
|
return;
|
||||||
|
#else
|
||||||
/* 平台下发空载重量/去皮值,直接解析 value 并保存 */
|
/* 平台下发空载重量/去皮值,直接解析 value 并保存 */
|
||||||
uint16_t zero_100g = 0;
|
uint16_t zero_100g = 0;
|
||||||
proto_get_kg100((char *)data, "zero", &zero_100g);
|
proto_get_kg100((char *)data, "zero", &zero_100g);
|
||||||
|
|
@ -301,6 +314,7 @@ void relayAction(uint8_t *data)
|
||||||
NET_publish_response(CmdId, 1, "OK");
|
NET_publish_response(CmdId, 1, "OK");
|
||||||
relayStatueUpdata();
|
relayStatueUpdata();
|
||||||
return;
|
return;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
log_warn("> RELAY: no sw/feeding/zero");
|
log_warn("> RELAY: no sw/feeding/zero");
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ void app_init(void)
|
||||||
{
|
{
|
||||||
log_info("");
|
log_info("");
|
||||||
log_info("* * * * * * * * * * * * * * * * * *");
|
log_info("* * * * * * * * * * * * * * * * * *");
|
||||||
log_info("* Version: 1.4.3 (RTOS) *");
|
log_info("* Version: 1.4.0 (RTOS) *");
|
||||||
log_info("* * * * * * * By Helei * * * *");
|
log_info("* * * * * * * By Helei * * * *");
|
||||||
|
|
||||||
/* EEPROM 中的 MQTT/版本配置 */
|
/* EEPROM 中的 MQTT/版本配置 */
|
||||||
|
|
@ -200,19 +200,22 @@ static void sys_task(void *arg)
|
||||||
update_batter();
|
update_batter();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 运行时长心跳:每 30s 串口输出一次(天/时/分),
|
/* 运行时长心跳:联网后每 60s 串口输出一次(天/时/分);
|
||||||
|
* 未联网(配网/重连中)不打印,避免干扰配网倒计时日志。
|
||||||
* 64 位累计,HAL_GetTick 约 49 天回绕也不受影响 */
|
* 64 位累计,HAL_GetTick 约 49 天回绕也不受影响 */
|
||||||
{
|
{
|
||||||
uint32_t now = HAL_GetTick();
|
uint32_t now = HAL_GetTick();
|
||||||
up_ms += (uint32_t)(now - up_last); /* 32位差值天然容忍回绕 */
|
up_ms += (uint32_t)(now - up_last); /* 32位差值天然容忍回绕 */
|
||||||
up_last = now;
|
up_last = now;
|
||||||
if (now - up_print >= 30000) {
|
if (now - up_print >= 60000) {
|
||||||
up_print = now;
|
up_print = now;
|
||||||
uint32_t mins = (uint32_t)(up_ms / 60000);
|
if (g_net_mqtt_ready) {
|
||||||
log_info("> Uptime: %uday--%02uh--%02um\r\n",
|
uint32_t mins = (uint32_t)(up_ms / 60000);
|
||||||
(unsigned)(mins / 1440),
|
log_info("> Uptime: %uday--%02uh--%02um\r\n",
|
||||||
(unsigned)((mins % 1440) / 60),
|
(unsigned)(mins / 1440),
|
||||||
(unsigned)(mins % 60));
|
(unsigned)((mins % 1440) / 60),
|
||||||
|
(unsigned)(mins % 60));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -299,27 +299,27 @@
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
</Group>
|
|
||||||
|
|
||||||
<Group>
|
|
||||||
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
|
||||||
<tvExp>1</tvExp>
|
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
|
||||||
<cbSel>0</cbSel>
|
|
||||||
<RteFlg>0</RteFlg>
|
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>2</GroupNumber>
|
||||||
<FileNumber>5</FileNumber>
|
<FileNumber>5</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c</PathWithFileName>
|
<PathWithFileName>../Src/stm32f1xx_hal_timebase_tim.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_gpio_ex.c</FilenameWithoutPath>
|
<FilenameWithoutPath>stm32f1xx_hal_timebase_tim.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>Middlewares/FreeRTOS</GroupName>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>3</GroupNumber>
|
||||||
<FileNumber>6</FileNumber>
|
<FileNumber>6</FileNumber>
|
||||||
|
|
@ -328,8 +328,8 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c</PathWithFileName>
|
<PathWithFileName>../Middlewares/FreeRTOS/Source/tasks.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_tim.c</FilenameWithoutPath>
|
<FilenameWithoutPath>tasks.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
|
@ -341,8 +341,8 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c</PathWithFileName>
|
<PathWithFileName>../Middlewares/FreeRTOS/Source/queue.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_tim_ex.c</FilenameWithoutPath>
|
<FilenameWithoutPath>queue.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
|
@ -354,8 +354,8 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</PathWithFileName>
|
<PathWithFileName>../Middlewares/FreeRTOS/Source/list.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_uart.c</FilenameWithoutPath>
|
<FilenameWithoutPath>list.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
|
@ -367,8 +367,8 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</PathWithFileName>
|
<PathWithFileName>../Middlewares/FreeRTOS/Source/portable/RVDS/ARM_CM3/port.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal.c</FilenameWithoutPath>
|
<FilenameWithoutPath>port.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
|
|
@ -380,14 +380,100 @@
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<bDave2>0</bDave2>
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Middlewares/FreeRTOS/Source/portable/MemMang/heap_4.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>heap_4.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
</Group>
|
||||||
|
|
||||||
|
<Group>
|
||||||
|
<GroupName>Drivers/STM32F1xx_HAL_Driver</GroupName>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<cbSel>0</cbSel>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>11</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_gpio_ex.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>stm32f1xx_hal_gpio_ex.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>12</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>stm32f1xx_hal_tim.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>13</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_tim_ex.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>stm32f1xx_hal_tim_ex.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>14</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_uart.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>stm32f1xx_hal_uart.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>15</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal.c</PathWithFileName>
|
||||||
|
<FilenameWithoutPath>stm32f1xx_hal.c</FilenameWithoutPath>
|
||||||
|
<RteFlg>0</RteFlg>
|
||||||
|
<bShared>0</bShared>
|
||||||
|
</File>
|
||||||
|
<File>
|
||||||
|
<GroupNumber>4</GroupNumber>
|
||||||
|
<FileNumber>16</FileNumber>
|
||||||
|
<FileType>1</FileType>
|
||||||
|
<tvExp>0</tvExp>
|
||||||
|
<Focus>0</Focus>
|
||||||
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
|
<bDave2>0</bDave2>
|
||||||
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c</PathWithFileName>
|
<PathWithFileName>../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_hal_rcc.c</PathWithFileName>
|
||||||
<FilenameWithoutPath>stm32f1xx_hal_rcc.c</FilenameWithoutPath>
|
<FilenameWithoutPath>stm32f1xx_hal_rcc.c</FilenameWithoutPath>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>11</FileNumber>
|
<FileNumber>17</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -399,8 +485,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>12</FileNumber>
|
<FileNumber>18</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -412,8 +498,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>13</FileNumber>
|
<FileNumber>19</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -425,8 +511,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>14</FileNumber>
|
<FileNumber>20</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -438,8 +524,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>15</FileNumber>
|
<FileNumber>21</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -451,8 +537,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>16</FileNumber>
|
<FileNumber>22</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -464,8 +550,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>17</FileNumber>
|
<FileNumber>23</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -477,8 +563,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>18</FileNumber>
|
<FileNumber>24</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -490,8 +576,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>19</FileNumber>
|
<FileNumber>25</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -503,8 +589,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>3</GroupNumber>
|
<GroupNumber>4</GroupNumber>
|
||||||
<FileNumber>20</FileNumber>
|
<FileNumber>26</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -519,13 +605,13 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Drivers/CMSIS</GroupName>
|
<GroupName>Drivers/CMSIS</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>4</GroupNumber>
|
<GroupNumber>5</GroupNumber>
|
||||||
<FileNumber>21</FileNumber>
|
<FileNumber>27</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -540,13 +626,13 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>m_app</GroupName>
|
<GroupName>m_app</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>5</GroupNumber>
|
<GroupNumber>6</GroupNumber>
|
||||||
<FileNumber>22</FileNumber>
|
<FileNumber>28</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -566,8 +652,8 @@
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>23</FileNumber>
|
<FileNumber>29</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -579,8 +665,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>24</FileNumber>
|
<FileNumber>30</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -592,8 +678,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>25</FileNumber>
|
<FileNumber>31</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -605,8 +691,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>26</FileNumber>
|
<FileNumber>32</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -618,8 +704,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>27</FileNumber>
|
<FileNumber>33</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -631,8 +717,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>28</FileNumber>
|
<FileNumber>34</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -644,8 +730,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>29</FileNumber>
|
<FileNumber>35</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -657,8 +743,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>30</FileNumber>
|
<FileNumber>36</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -670,8 +756,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>31</FileNumber>
|
<FileNumber>37</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -683,8 +769,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>32</FileNumber>
|
<FileNumber>38</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -696,8 +782,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>33</FileNumber>
|
<FileNumber>39</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -709,8 +795,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>34</FileNumber>
|
<FileNumber>40</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -722,8 +808,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>35</FileNumber>
|
<FileNumber>41</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -735,8 +821,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>36</FileNumber>
|
<FileNumber>42</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -748,8 +834,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>37</FileNumber>
|
<FileNumber>43</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -761,8 +847,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>38</FileNumber>
|
<FileNumber>44</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -774,8 +860,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>39</FileNumber>
|
<FileNumber>45</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -787,8 +873,8 @@
|
||||||
<bShared>0</bShared>
|
<bShared>0</bShared>
|
||||||
</File>
|
</File>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>6</GroupNumber>
|
<GroupNumber>7</GroupNumber>
|
||||||
<FileNumber>40</FileNumber>
|
<FileNumber>46</FileNumber>
|
||||||
<FileType>1</FileType>
|
<FileType>1</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
@ -803,13 +889,13 @@
|
||||||
|
|
||||||
<Group>
|
<Group>
|
||||||
<GroupName>Doc</GroupName>
|
<GroupName>Doc</GroupName>
|
||||||
<tvExp>1</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<tvExpOptDlg>0</tvExpOptDlg>
|
<tvExpOptDlg>0</tvExpOptDlg>
|
||||||
<cbSel>0</cbSel>
|
<cbSel>0</cbSel>
|
||||||
<RteFlg>0</RteFlg>
|
<RteFlg>0</RteFlg>
|
||||||
<File>
|
<File>
|
||||||
<GroupNumber>7</GroupNumber>
|
<GroupNumber>8</GroupNumber>
|
||||||
<FileNumber>41</FileNumber>
|
<FileNumber>47</FileNumber>
|
||||||
<FileType>5</FileType>
|
<FileType>5</FileType>
|
||||||
<tvExp>0</tvExp>
|
<tvExp>0</tvExp>
|
||||||
<Focus>0</Focus>
|
<Focus>0</Focus>
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@
|
||||||
| --- | --- | --- | --- |
|
| --- | --- | --- | --- |
|
||||||
| net_task | 3 | 3KB | 网络状态机 `NET_process`:4G/WiFi 建链与切换、MQTT 收发、GPS 轮询、OTA 下载 |
|
| net_task | 3 | 3KB | 网络状态机 `NET_process`:4G/WiFi 建链与切换、MQTT 收发、GPS 轮询、OTA 下载 |
|
||||||
| app_task | 2 | 2KB | 业务:继电器命令/反馈状态机、断电记忆恢复、投喂秤轮询与保护、状态上报、OTA 确认与健康检查 |
|
| app_task | 2 | 2KB | 业务:继电器命令/反馈状态机、断电记忆恢复、投喂秤轮询与保护、状态上报、OTA 确认与健康检查 |
|
||||||
| sys_task | 1 | 1KB | 系统:LED、电量(1s)、蓝牙调试命令、Uptime 打印(30s) |
|
| sys_task | 1 | 1KB | 系统:LED、电量(1s)、蓝牙调试命令、Uptime 打印(联网后每 60s) |
|
||||||
| idle 钩子 | - | - | 喂 IWDG(任务死循环占 CPU → idle 饿死 → 复位,正是期望行为) |
|
| idle 钩子 | - | - | 喂 IWDG(任务死循环占 CPU → idle 饿死 → 复位,正是期望行为) |
|
||||||
|
|
||||||
关键设计:
|
关键设计:
|
||||||
|
|
@ -84,7 +84,8 @@ WiFi 建链子顺序(net_wifi_init,阻塞式,等待期间 vTaskDelay 让
|
||||||
② AT+CWJAP 连代码里固定的 SSID/PASS(esp8266.h 的 WIFI_SSID/WIFI_PASS,60s 倒计时)
|
② AT+CWJAP 连代码里固定的 SSID/PASS(esp8266.h 的 WIFI_SSID/WIFI_PASS,60s 倒计时)
|
||||||
③ ESP-Touch SmartConfig 智能配网(60s 倒计时,配到的热点由模块保存)
|
③ ESP-Touch SmartConfig 智能配网(60s 倒计时,配到的热点由模块保存)
|
||||||
全部失败 → 回 4G
|
全部失败 → 回 4G
|
||||||
WiFi 运行:30s MQTT PINGREQ 心跳;TCP 断开(CLOSED)/心跳超时 → 自动重连,重连失败回 4G
|
WiFi 运行:15s MQTT PINGREQ 心跳;TCP 断开(CLOSED)/心跳超时 → 打印原因并直接整机复位重连
|
||||||
|
(CLOSED=服务器主动断开/被平台踢下线;ping 超时=服务器无响应/假在线,最坏检测延迟 ~30s)
|
||||||
```
|
```
|
||||||
|
|
||||||
> 注:已存 AP 的判断用 `AT+CIPSTATUS` 主动查询而非被动等 `WIFI GOT IP` 打印——
|
> 注:已存 AP 的判断用 `AT+CIPSTATUS` 主动查询而非被动等 `WIFI GOT IP` 打印——
|
||||||
|
|
@ -239,12 +240,14 @@ W25Q64 外部 Flash(8MB):
|
||||||
| `ver` | 固件版本号 | 每次状态上报携带,平台可据此识别设备是否发生回退 |
|
| `ver` | 固件版本号 | 每次状态上报携带,平台可据此识别设备是否发生回退 |
|
||||||
| `weight` | 空载重量 | 平台显示为去皮重量 `zero` |
|
| `weight` | 空载重量 | 平台显示为去皮重量 `zero` |
|
||||||
| `zero` | 剩余料重 | 平台显示为当前剩余料重 |
|
| `zero` | 剩余料重 | 平台显示为当前剩余料重 |
|
||||||
| `onceWt` | 单次投喂量 | 每次投喂目标重量 |
|
| `onceWt` | 单次投喂量 | 每次投喂目标重量;**无秤模式不上报、下发设置被拒绝** |
|
||||||
| `sw1` / `feeding` | 第一路继电器状态 | 1=投喂中,0=停止;无秤模式下两字段**同时上报**,平台两个开关同步刷新 |
|
| `sw1` / `feeding` | 第一路继电器状态 | 1=投喂中,0=停止;无秤模式下两字段**同时上报**,平台两个开关同步刷新 |
|
||||||
| `sw2~sw4` | 备用继电器状态 | 0/1 |
|
| `sw2~sw4` | 备用继电器状态 | 0/1 |
|
||||||
| `pow` | 电量状态 | 1=正常,0=低电量 |
|
| `pow` | 电量状态 | 1=正常,0=低电量 |
|
||||||
| `GPS` | 定位坐标 | 仅 4G 通道(Air780EG),GCJ-02 高德坐标系,格式 `"经度,纬度"`,每 5 分钟上报 |
|
| `GPS` | 定位坐标 | 仅 4G 通道(Air780EG),GCJ-02 高德坐标系,格式 `"经度,纬度"`,每 5 分钟上报 |
|
||||||
|
|
||||||
|
> 注:`zero`(剩余料重)与 `onceWt` 为称重模式专用字段——`PRODUCT_WITH_FEED_SCALE=0` 时状态上报不携带这两个字段,平台下发设置会收到 `no scale on this device` 拒绝应答。
|
||||||
|
|
||||||
下行报文由 `m_app/proto.c` 按键名定位解析(`"sw2"` 不会误中 `"sw21"`,其他字段里的 true/false 不会造成误判)。
|
下行报文由 `m_app/proto.c` 按键名定位解析(`"sw2"` 不会误中 `"sw21"`,其他字段里的 true/false 不会造成误判)。
|
||||||
|
|
||||||
## 串口调试命令
|
## 串口调试命令
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue