2026-09-04 20:09:04 +08:00
/* net_wifi.c - WiFi <20> <> <EFBFBD> ˣ<EFBFBD> <CBA3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> µ<EFBFBD> ͨ<EFBFBD> <CDA8> ʵ<EFBFBD> <CAB5> ֮һ <D6AE> <D2BB>
*
* <EFBFBD> <EFBFBD> <EFBFBD> ɣ <EFBFBD> esp8266 . c ( ESP - 01 S AT <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> / TCP <EFBFBD> <EFBFBD> ) + mqtt_client . c ( <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> MQTT 3.1 .1 ) <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ˳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ѵ <EFBFBD> AP <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( 20 s ) <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̶ <EFBFBD> SSID ( 60 s ) <EFBFBD> <EFBFBD>
* Smart Config <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( 60 s ) <EFBFBD> <EFBFBD> ʧ <EFBFBD> ܷ <EFBFBD> <EFBFBD> أ <EFBFBD> <EFBFBD> <EFBFBD> network . c <EFBFBD> л <EFBFBD> 4 G <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> н Σ <EFBFBD> mqttc_process <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD> <EFBFBD> ģ <EFBFBD> 30 s <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( CLOSED / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ ) <EFBFBD> <EFBFBD> ready <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> network . c <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> л <EFBFBD> 4 G <EFBFBD> <EFBFBD>
*/
# include "net_wifi.h"
# include "esp8266.h"
# include "mqtt_client.h"
# include "network.h"
# include "air780e.h" /* bg_delay */
# include "uart.h"
# include "log.h"
# include "reset_log.h"
# include "stdio.h"
# include "string.h"
volatile uint8_t g_wifi_mqtt_ready = 0 ;
volatile uint8_t g_wifi_first_publish_ok = 0 ;
/* WiFi ģ<> <C4A3> <EFBFBD> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ־<EFBFBD> <D6BE> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> WIFIRESET <20> <> <EFBFBD> <EFBFBD> (sys<79> <73> <EFBFBD> <EFBFBD> )<29> <> λ<EFBFBD> <CEBB>
* net <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> net_wifi_process <EFBFBD> <EFBFBD> ִ <EFBFBD> С <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> UART4 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> տ <EFBFBD> <EFBFBD> <EFBFBD> net <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 4 G <EFBFBD> л <EFBFBD> / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ͻ */
volatile uint8_t g_wifi_restore_req = 0 ;
static uint32_t s_ping_tick = 0 ;
/* <20> <> <EFBFBD> з<EFBFBD> <D0B7> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݴ<EFBFBD> */
static char s_topic_up [ 48 ] ;
/*==== <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɹ<EFBFBD> <C9B9> <EFBFBD> <EFBFBD> <EFBFBD> 0 <20> <> <EFBFBD> <EFBFBD> g_wifi_mqtt_ready ====
* <EFBFBD> <EFBFBD> ˳ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> EEPROM <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " <EFBFBD> ϴγ ɹ<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ " <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> ϴ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ȳ <EFBFBD> <EFBFBD> Ѵ <EFBFBD> AP <EFBFBD> Զ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ( CIPSTATUS , 10 s )
* Ȼ <EFBFBD> <EFBFBD> ͳ һ <EFBFBD> <EFBFBD> <EFBFBD> ̶ <EFBFBD> SSID ( 60 s <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ ) <EFBFBD> <EFBFBD> SmartConfig ( 60 s <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ )
* <EFBFBD> ɹ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʵ <EFBFBD> <EFBFBD> ʹ <EFBFBD> õ ķ <EFBFBD> ʽ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> EEPROM <EFBFBD> <EFBFBD> <EFBFBD> 䣨 NET_SaveMode <EFBFBD> <EFBFBD> */
int net_wifi_init ( void )
{
log_info ( " > WiFi: <20> <> ʼ <EFBFBD> <CABC> ... " ) ;
g_wifi_mqtt_ready = 0 ;
g_wifi_first_publish_ok = 0 ;
esp_gpio_init ( ) ;
UART4_StartRx ( ) ;
if ( esp_reset ( ) ! = 0 ) return - 1 ;
if ( esp_send_cmd ( " AT " , " OK " , 2000 ) ! = 0 ) return - 1 ;
esp_send_cmd ( " ATE0 " , " OK " , 1000 ) ; /* <20> ػ<EFBFBD> <D8BB> ԣ<EFBFBD> ʧ<EFBFBD> ܲ<EFBFBD> <DCB2> <EFBFBD> <EFBFBD> <EFBFBD> */
if ( esp_send_cmd ( " AT+CWMODE=1 " , " OK " , 2000 ) ! = 0 ) return - 1 ;
int joined = 0 ;
uint8_t via_smart = 0 ; /* 1=<3D> <> <EFBFBD> <EFBFBD> <EFBFBD> õ<EFBFBD> <C3B5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ㣨<C8B5> Ѵ <EFBFBD> AP<41> <50> SmartConfig<69> <67> */
2026-09-18 15:19:22 +08:00
/* <20> <> <EFBFBD> <EFBFBD> ѡ <EFBFBD> <D1A1> ģʽ <C4A3> <CABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ӷ<EFBFBD> ʽ (V1.7.1 <20> <> ): <20> <> <EFBFBD> <EFBFBD> ģʽ ֻ<CABD> <D6BB> <EFBFBD> Ѵ <EFBFBD> AP+SmartConfig, <20> ̶<EFBFBD> ģʽ ֻ<CABD> <D6BB> <EFBFBD> ̶<EFBFBD> <CCB6> ȵ<EFBFBD> */
uint8_t fmode = NET_GetForceMode ( ) ;
/* <20> <> <EFBFBD> <EFBFBD> ģʽ <C4A3> <CABD> ģ<EFBFBD> <C4A3> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϴ<EFBFBD> <CFB4> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ<EFBFBD> <C8B5> <EFBFBD> <EFBFBD> 룬<EFBFBD> <EBA3AC> <EFBFBD> Ȳ<EFBFBD> <C8B2> Զ<EFBFBD> <D4B6> <EFBFBD> <EFBFBD> <EFBFBD> */
if ( fmode = = NET_MODE_WIFI_SMART ) {
2026-09-04 20:09:04 +08:00
if ( esp_saved_ap_connected ( 10 ) = = 0 ) {
joined = 1 ;
via_smart = 1 ;
}
}
2026-09-18 15:19:22 +08:00
/* <20> ̶<EFBFBD> <CCB6> ȵ<EFBFBD> ģʽ <C4A3> <CABD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ̶<EFBFBD> /EEPROM <20> <> <EFBFBD> õ<EFBFBD> SSID/PASS */
if ( ! joined & & fmode = = NET_MODE_WIFI_FIXED & & esp_join_fixed_ap ( ) = = 0 ) {
2026-09-04 20:09:04 +08:00
joined = 1 ;
via_smart = 0 ;
}
2026-09-18 15:19:22 +08:00
/* <20> <> <EFBFBD> <EFBFBD> ģʽ <C4A3> <CABD> <EFBFBD> Ѵ <EFBFBD> AP <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> SmartConfig <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ESP-Touch APP <20> 㲥<EFBFBD> <E3B2A5> <EFBFBD> 룩 */
if ( ! joined & & fmode = = NET_MODE_WIFI_SMART ) {
2026-09-04 20:09:04 +08:00
if ( esp_smartconfig ( ) = = 0 ) {
joined = 1 ;
via_smart = 1 ;
} else {
log_warn ( " > WiFi: <20> <> <EFBFBD> <EFBFBD> AP <20> <> <EFBFBD> ӷ<EFBFBD> ʽ <EFBFBD> <CABD> ʧ<EFBFBD> <CAA7> " ) ;
return - 1 ;
}
}
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ㣺<C8B5> <E3A3BA> ӡ<EFBFBD> ź<EFBFBD> ǿ<EFBFBD> ȣ <EFBFBD> dBm<42> <6D> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ֳ<EFBFBD> <D6B3> жϰڷ<CFB0> λ<EFBFBD> <CEBB> */
esp_log_rssi ( ) ;
/* TCP <> <CDB8> <EFBFBD> <EFBFBD> MQTT <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
if ( esp_enter_transparent ( MqttInfoStr . ServerIP , MqttInfoStr . ServerPort ) ! = 0 ) return - 1 ;
/* <20> <> <EFBFBD> <EFBFBD> MQTT <20> <> <EFBFBD> <EFBFBD> + <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
mqttc_init ( MqttInfoStr . ClientID , MqttInfoStr . Username , MqttInfoStr . Passward ) ;
if ( mqttc_connect ( ) ! = 0 ) return - 1 ;
{
char topic_down [ 48 ] ;
snprintf ( topic_down , sizeof ( topic_down ) , " %s%s " , MqttInfoStr . Topic , MqttInfoStr . ClientID ) ;
if ( mqttc_subscribe ( topic_down ) ! = 0 ) return - 1 ;
snprintf ( s_topic_up , sizeof ( s_topic_up ) , " /iot/data/up/%s " , MqttInfoStr . ClientID ) ;
}
g_wifi_mqtt_ready = 1 ;
s_ping_tick = HAL_GetTick ( ) ;
log_info ( " > WiFi: Ready " ) ;
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʽ <EFBFBD> <CABD> <EFBFBD> 䣨<EFBFBD> <E4A3A8> <EFBFBD> 仯ʱд EEPROM<4F> <4D> */
NET_SaveMode ( via_smart ? NET_MODE_WIFI_SMART : NET_MODE_WIFI_FIXED ) ;
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ϱ <EFBFBD> һ <EFBFBD> ε<EFBFBD> <CEB5> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 4G <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ϊ<EFBFBD> <CEAA> <EFBFBD> 루ͬʱ<CDAC> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> ״η<D7B4> <CEB7> <EFBFBD> <EFBFBD> ɹ<EFBFBD> <C9B9> <EFBFBD> */
NET_publish_power ( 1 ) ;
return 0 ;
}
/*==== <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ѯ<EFBFBD> <D1AF> <EFBFBD> <EFBFBD> <EFBFBD> б <EFBFBD> <D0B1> Ľ<EFBFBD> <C4BD> <EFBFBD> + <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ====*/
void net_wifi_process ( void )
{
/* <20> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> WIFIRESET<45> <54> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> net <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ<EFBFBD> У <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> 뱾 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ľ <EFBFBD> <EFBFBD> <EFBFBD> / <EFBFBD> շ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> */
if ( g_wifi_restore_req ) {
g_wifi_restore_req = 0 ;
log_warn ( " > WiFi: <20> յ<EFBFBD> <D5B5> ָ<EFBFBD> <D6B8> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ִ<EFBFBD> <D6B4> AT+RESTORE <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
g_net_tx_busy = 1 ;
g_wifi_mqtt_ready = 0 ;
reset_log_mark ( RSN_CMD_RECOVERY ) ;
if ( esp_factory_restore ( ) ! = 0 ) {
log_warn ( " > WiFi: RESTORE ʧ<> ܣ<EFBFBD> <DCA3> <EFBFBD> ǿ<EFBFBD> <C7BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> " ) ;
}
HAL_Delay ( 100 ) ;
NVIC_SystemReset ( ) ;
}
if ( ! g_wifi_mqtt_ready ) return ;
int r ;
while ( ( r = mqttc_process ( ) ) = = 1 ) { }
if ( r = = - 1 ) {
/* <20> յ<EFBFBD> CLOSED<45> <44> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ͽ<EFBFBD> TCP<43> <50> <EFBFBD> <EFBFBD> ƽ ̨<C6BD> <CCA8> <EFBFBD> <EFBFBD> <EFBFBD> ߣ<EFBFBD> <DFA3> <EFBFBD> ֱ<EFBFBD> Ӹ<EFBFBD> λ<EFBFBD> <CEBB> <EFBFBD> <EFBFBD> */
log_error ( " > WiFi: <20> <> <EFBFBD> ӱ<EFBFBD> <D3B1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> رգ <D8B1> <D5A3> <EFBFBD> ƽ ̨<C6BD> <CCA8> <EFBFBD> <EFBFBD> <EFBFBD> ߣ<EFBFBD> <DFA3> <EFBFBD> ϵͳ<CFB5> <CDB3> λ " ) ;
reset_log_mark ( RSN_KICKED ) ;
HAL_Delay ( 100 ) ;
NVIC_SystemReset ( ) ;
}
/* <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ݣ<EFBFBD> <DDA3> ο <EFBFBD> V3.0 <20> <> <EFBFBD> <EFBFBD> TIM6 <20> <> <EFBFBD> ƣ<EFBFBD> <C6A3> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 30 s һ <EFBFBD> <EFBFBD> PINGREQ <EFBFBD> <EFBFBD> δ <EFBFBD> յ <EFBFBD> PINGRESP <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 3 s <EFBFBD> <EFBFBD> ̽ <EFBFBD> ⣨ <EFBFBD> <EFBFBD> <EFBFBD> ̵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 5 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ <EFBFBD> <EFBFBD> Լ 42 s <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> · <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԭ <EFBFBD> ػ ָ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> λ <EFBFBD> <EFBFBD>
* <EFBFBD> <EFBFBD> һ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ԭ TCP <EFBFBD> <EFBFBD> <EFBFBD> ط <EFBFBD> CONNECT <EFBFBD> <EFBFBD> · <EFBFBD> <EFBFBD> / <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 1 ~ 2 s <EFBFBD> ָ <EFBFBD> <EFBFBD> <EFBFBD>
* <EFBFBD> ڶ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ؽ <EFBFBD> WiFi <EFBFBD> <EFBFBD> · <EFBFBD> <EFBFBD> ESP <EFBFBD> ϵ <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> + <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ȵ <EFBFBD> + <EFBFBD> <EFBFBD> + MQTT <EFBFBD> <EFBFBD> */
static uint8_t ping_miss = 0 ;
uint32_t interval = ( ping_miss = = 0 ) ? 30000u : 3000u ;
if ( HAL_GetTick ( ) - s_ping_tick > = interval ) {
if ( g_mqttc_ping_outstanding ) {
ping_miss + + ;
log_warn ( " > WiFi: PINGRESP <20> <> ʱ (%d/5) " , ping_miss ) ;
if ( ping_miss > = 5 ) {
ping_miss = 0 ;
log_error ( " > WiFi: <20> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʱ<EFBFBD> <CAB1> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> Ӧ<EFBFBD> <D3A6> <EFBFBD> <EFBFBD> ԭ<EFBFBD> <D4AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> MQTT " ) ;
if ( mqttc_connect ( ) = = 0 ) {
char topic_down [ 48 ] ;
snprintf ( topic_down , sizeof ( topic_down ) , " %s%s " , MqttInfoStr . Topic , MqttInfoStr . ClientID ) ;
if ( mqttc_subscribe ( topic_down ) = = 0 ) {
log_info ( " > WiFi: MQTT ԭ<> <D4AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ɹ<EFBFBD> " ) ;
s_ping_tick = HAL_GetTick ( ) ;
mqttc_ping ( ) ;
return ;
}
}
log_warn ( " > WiFi: ԭ<> <D4AD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ʧ<EFBFBD> ܣ<EFBFBD> <DCA3> ؽ<EFBFBD> <D8BD> <EFBFBD> · " ) ;
g_wifi_mqtt_ready = 0 ;
if ( net_wifi_init ( ) = = 0 ) {
log_info ( " > WiFi: <20> <> ·<EFBFBD> ؽ<EFBFBD> <D8BD> ɹ<EFBFBD> " ) ;
} else {
log_warn ( " > WiFi: <20> <> ·<EFBFBD> ؽ<EFBFBD> ʧ<EFBFBD> ܣ<EFBFBD> <DCA3> <EFBFBD> <EFBFBD> <EFBFBD> ״̬<D7B4> <CCAC> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> /<2F> <> 4G " ) ;
}
}
} else {
if ( ping_miss ) log_info ( " > WiFi: <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ѻָ<D1BB> " ) ;
ping_miss = 0 ;
}
s_ping_tick = HAL_GetTick ( ) ;
mqttc_ping ( ) ;
}
}
/*==== <20> <> <EFBFBD> з<EFBFBD> <D0B7> <EFBFBD> ====*/
2026-09-14 10:57:28 +08:00
/* QoS1 <20> <> <EFBFBD> <EFBFBD> (<28> <> ƽ ָ̨<CCA8> <D6B8> Ӧ<EFBFBD> <D3A6> <EFBFBD> <EFBFBD> ): <20> <> <EFBFBD> <EFBFBD> <EFBFBD> ı <EFBFBD> ʶ<EFBFBD> <CAB6> , <20> <> <EFBFBD> ÷<EFBFBD> <C3B7> <EFBFBD> <EFBFBD> е <EFBFBD> PUBACK */
int net_wifi_publish_qos1 ( const char * json , uint16_t pkt_id )
{
if ( ! g_wifi_mqtt_ready ) return - 1 ;
return mqttc_publish_qos1 ( s_topic_up , json , pkt_id ) ;
}
2026-09-04 20:09:04 +08:00
void net_wifi_publish_up ( const char * json )
{
if ( ! g_wifi_mqtt_ready ) return ;
if ( mqttc_publish ( s_topic_up , json ) = = 0 & & ! g_wifi_first_publish_ok ) {
g_wifi_first_publish_ok = 1 ;
log_info ( " > WiFi: <20> ״η<D7B4> <CEB7> <EFBFBD> <EFBFBD> ɹ<EFBFBD> " ) ;
}
}