V1.5: 断电pow:0改等模组OK(1.5s x3次)+OK后800ms空口,失败也照常记录复位
This commit is contained in:
parent
3daf12e144
commit
433030cd9d
|
|
@ -65,15 +65,18 @@ void update_batter(void)
|
|||
}
|
||||
if (!confirm) return;
|
||||
|
||||
/* 分毫必争:先发掉电消息,后打日志(串口打印也要十几 ms)。
|
||||
* 发送通道被占用(如 GPS 轮询)时丢弃返回 -1:不锁存,下个 50ms 周期重试,
|
||||
* 直到发出或电容耗尽 */
|
||||
if (NET_publish_power(0) != 0) return;
|
||||
/* 分毫必争:发掉电消息并等模组回 OK(最多 ~1.5s/次,最多试 3 次)。
|
||||
* 3 次都发不出(通道忙/模组已掉线)也照常记录复位,不能因发送失败就不记录 */
|
||||
{
|
||||
static uint8_t pub_try = 0;
|
||||
if (NET_publish_power_wait(0) != 0 && ++pub_try < 3) return;
|
||||
pub_try = 0;
|
||||
}
|
||||
powoff = 1;
|
||||
log_info("> 电量低: %d%%", (int)batter_valtage);
|
||||
hlw8032_save(); /* 本地记录:电量、断电原因(都很快) */
|
||||
reset_log_power_loss();
|
||||
HAL_Delay(500); /* 给模组把 MQTT 报文发出去的时间 */
|
||||
HAL_Delay(800); /* OK 后再留 800ms 让报文上空口 */
|
||||
NVIC_SystemReset();
|
||||
/* BootLoader 会检测主电源,12V 未恢复前不跳 APP,防止外设没上电时程序乱跑 */
|
||||
}
|
||||
|
|
|
|||
|
|
@ -355,7 +355,29 @@ int NET_publish_power(int on)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* 上报累计电量: energy 字段,单位 kWh,两位小数 */
|
||||
/* 断电预警专用:发 pow 并等模组回 OK(最多 ~1.5s),确认模组已受理。
|
||||
* 返回 0=模组已受理,-1=通道忙/无应答。WiFi 通道 QoS0 无 OK 概念,发完即返 0 */
|
||||
int NET_publish_power_wait(int on)
|
||||
{
|
||||
if (g_net_tx_busy) return -1;
|
||||
if (net_at_trylock() != 0) return -1;
|
||||
int rc = 0;
|
||||
if (s_backend == NET_BACKEND_4G) {
|
||||
static char cmd[160];
|
||||
sprintf(cmd, "AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22pow\\22:%d}}\"",
|
||||
MqttInfoStr.ClientID, on ? 1 : 0);
|
||||
if (catSendCmd(cmd, "OK", 1, 15) != 0) rc = -1;
|
||||
} else {
|
||||
char json[96];
|
||||
snprintf(json, sizeof(json),
|
||||
"{\"header\":\"iot.prop.post\",\"body\":{\"pow\":%d}}", on ? 1 : 0);
|
||||
net_wifi_publish_up(json);
|
||||
}
|
||||
net_at_unlock();
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* 上报累计电量+实时功率: energy(kWh) + power(W),同一条报文 */
|
||||
void NET_publish_energy(float kwh, float power_w)
|
||||
{
|
||||
if (g_net_tx_busy) { log_info("> NET: energy 上报被丢弃 (发送忙)"); return; }
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ int NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4,
|
|||
float weight_kg, float once_wt_kg, float zero_kg); /* 返回 0=已发出 */
|
||||
void NET_publish_response(const char *cmd_id, int ok, const char *msg);
|
||||
int NET_publish_power(int on);
|
||||
int NET_publish_power_wait(int on); /* 断电预警专用:等模组 OK,0=已受理 */
|
||||
void NET_publish_version(const char *ver); /* 上报代码版本字符串(FIRMWARE_VERSION_STR) */ /* 返回 0=已发出,-1=通道忙被丢弃 */
|
||||
void NET_publish_energy(float kwh, float power_w); /* 上报累计电量,标识符 energy,单位 kWh */
|
||||
int NET_mqtt_report(const char *header, const char *ota_id, int val); /* 返回 0=送达 */
|
||||
|
|
|
|||
|
|
@ -54,14 +54,14 @@ extern UART_HandleTypeDef huart3;
|
|||
//#define MQTT_PASSWORD "b612c2839c135934"
|
||||
|
||||
////RTOS版-投料机-无蠕变磅秤-01
|
||||
#define MQTT_CLIENT_ID "46c080c385c3652e"
|
||||
#define MQTT_USERNAME "766990788193702677"
|
||||
#define MQTT_PASSWORD "6ae9622b7034326b"
|
||||
//#define MQTT_CLIENT_ID "46c080c385c3652e"
|
||||
//#define MQTT_USERNAME "766990788193702677"
|
||||
//#define MQTT_PASSWORD "6ae9622b7034326b"
|
||||
|
||||
//RTOS版-投料机-无蠕变磅秤-03
|
||||
//#define MQTT_CLIENT_ID "5791a8579d459290"
|
||||
//#define MQTT_USERNAME "766990788193702677"
|
||||
//#define MQTT_PASSWORD "5f6cd7748ec9db35"
|
||||
#define MQTT_CLIENT_ID "5791a8579d459290"
|
||||
#define MQTT_USERNAME "766990788193702677"
|
||||
#define MQTT_PASSWORD "5f6cd7748ec9db35"
|
||||
|
||||
#define MQTT_SERVER_IP "58.17.14.95"
|
||||
#define MQTT_SERVER_PORT 1880
|
||||
|
|
@ -75,7 +75,7 @@ extern UART_HandleTypeDef huart3;
|
|||
/*===== 蓝牙发射功率(AT+RFPOWER) =====
|
||||
* 1~18 共 18 级,出厂默认 8。多台设备同场所时调小(如 1~3),
|
||||
* 缩短可搜索距离,避免互相认错设备。模块内保存,改宏后下次开机自动重设一次 */
|
||||
#define BLE_TX_POWER 8
|
||||
#define BLE_TX_POWER 1
|
||||
|
||||
/*===== HLW8032 电量计量系数(UART5 PD2 接收,只上报累计电量) =====
|
||||
* 电压通道: ZMPT107-1(2mA:2mA),初级 220V 串 100K,次级并 49.9R
|
||||
|
|
|
|||
|
|
@ -172,3 +172,5 @@
|
|||
(>10W 每 30s,否则首次+开关切换),平台物模型加 float 即可
|
||||
- 新增蓝牙发射功率配置:main.h 宏 BLE_TX_POWER(AT+RFPOWER 1~18 级,默认 8),
|
||||
功率值并入 EEPROM 缓存判断(偏移 158),改宏后下次开机自动重设一次
|
||||
- 断电消息发送加固:pow:0 改等模组回 OK(~1.5s/次,最多 3 次)+ OK 后留 800ms 空口时间;
|
||||
3 次都失败也照常写记录复位(不因发送失败丢断电记录)
|
||||
|
|
|
|||
Loading…
Reference in New Issue