V1.5: 新增实时功率上报(power字段,与energy同一条报文,策略同步)
This commit is contained in:
parent
e6f25bfa0b
commit
7e427fbfc4
|
|
@ -356,17 +356,17 @@ int NET_publish_power(int on)
|
|||
}
|
||||
|
||||
/* 上报累计电量: energy 字段,单位 kWh,两位小数 */
|
||||
void NET_publish_energy(float kwh)
|
||||
void NET_publish_energy(float kwh, float power_w)
|
||||
{
|
||||
if (g_net_tx_busy) { log_info("> NET: energy 上报被丢弃 (发送忙)"); return; }
|
||||
if (net_at_trylock() != 0) { log_info("> NET: energy 上报被丢弃 (AT 忙)"); return; }
|
||||
if (s_backend == NET_BACKEND_4G) {
|
||||
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22energy\\22:%.2f}}\"",
|
||||
MqttInfoStr.ClientID, kwh);
|
||||
CAT1_printf("AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22energy\\22:%.2f,\\22power\\22:%.1f}}\"",
|
||||
MqttInfoStr.ClientID, kwh, power_w);
|
||||
} else {
|
||||
char json[96];
|
||||
char json[128];
|
||||
snprintf(json, sizeof(json),
|
||||
"{\"header\":\"iot.prop.post\",\"body\":{\"energy\":%.2f}}", kwh);
|
||||
"{\"header\":\"iot.prop.post\",\"body\":{\"energy\":%.2f,\"power\":%.1f}}", kwh, power_w);
|
||||
net_wifi_publish_up(json);
|
||||
}
|
||||
log_debug("> NET: energy 已发布 %.2f", (double)kwh);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ int NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4,
|
|||
void NET_publish_response(const char *cmd_id, int ok, const char *msg);
|
||||
int NET_publish_power(int on);
|
||||
void NET_publish_version(const char *ver); /* 上报代码版本字符串(FIRMWARE_VERSION_STR) */ /* 返回 0=已发出,-1=通道忙被丢弃 */
|
||||
void NET_publish_energy(float kwh); /* 上报累计电量,标识符 energy,单位 kWh */
|
||||
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=送达 */
|
||||
int NET_ota_confirm(void); /* 0=确认通知已送达 1=无挂起 -1=未送达(需重试) */
|
||||
|
||||
|
|
|
|||
|
|
@ -394,7 +394,7 @@ static void sys_task(void *arg)
|
|||
}
|
||||
if (report) {
|
||||
energy_report_tick = HAL_GetTick();
|
||||
NET_publish_energy(kwh);
|
||||
NET_publish_energy(kwh, pw);
|
||||
}
|
||||
log_info(FMT_ENERGY, (double)kwh,
|
||||
(double)hlw8032_get_voltage_v(),
|
||||
|
|
|
|||
|
|
@ -346,6 +346,7 @@ W25Q64 外部 Flash(8MB):
|
|||
| `sw2~sw4` | 备用继电器状态 | 0/1 |
|
||||
| `pow` | 电量状态 | 1=正常,0=低电量 |
|
||||
| `energy` | 累计消耗电量 | HLW8032 计量,单位 kWh,两位小数(>10W 每 30s,否则首次+开关切换) |
|
||||
| `power` | 实时功率 | HLW8032 计量,单位 W,一位小数,与 energy 同一条报文上报(策略同 energy) |
|
||||
| `iccid` | SIM 卡号 | 仅 4G 通道,MQTT 连上后随 pow 上报一次,用于物联网卡套餐查询缴费 |
|
||||
| `fwver` | 代码版本字符串 | 格式 `FIRMWARE_VERSION_STR`+`:`+EEPROM 版本序号(如 "1.5.0:15"),字符串类型,每次重启联网后上报一次(与状态大报文中的整数 `ver` OTA 版本号区分开) |
|
||||
| `GPS` | 定位坐标 | 仅 4G 通道(Air780EG),GCJ-02 高德坐标系,格式 `"经度,纬度"`,每 5 分钟上报 |
|
||||
|
|
|
|||
|
|
@ -168,3 +168,5 @@
|
|||
(原先要等踢线/重启/拨开关触发上报才更新)
|
||||
- 修复重启后磅秤重量平台一直为 0:首次重量上报被 AT 忙丢弃后不重试,
|
||||
改为发布成功才置标志,失败下轮查询继续重试
|
||||
- 新增实时功率上报:标识符 power(单位 W,一位小数),与 energy 合并同一条报文
|
||||
(>10W 每 30s,否则首次+开关切换),平台物模型加 float 即可
|
||||
|
|
|
|||
Loading…
Reference in New Issue