diff --git a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c index 4001fac..ea27996 100644 --- a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c +++ b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.c @@ -3,4 +3,4 @@ /* 本文件为 UTF-8 编码:ARMCC 原样输出字符串字面量的字节, * 串口收到即为 UTF-8(串口工具编码选 UTF-8 即可正确显示中文) */ const char FMT_UPTIME[] = "> 运行时间: %u天--%02u小时--%02u分钟"; -const char FMT_UPTIME_EN[] = "> 运行时间: %u天--%02u小时--%02u分钟 电能: %.2fkWh 电压: %.1fV 电流: %.2fA 功率: %.1fW"; +const char FMT_ENERGY[] = "> 电能: %.2fkWh 电压: %.1fV 电流: %.2fA 功率: %.1fW"; diff --git a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h index 1c3c1cf..11334d4 100644 --- a/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h +++ b/V1.5/STM32F103_App1/HardWare/LOG/log_cn.h @@ -3,6 +3,6 @@ /* 中文日志格式串(UTF-8 编码,定义在 log_cn.c —— 串口工具编码选 UTF-8 即可正确显示) */ extern const char FMT_UPTIME[]; /* "> 运行时间: %u天--%02u小时--%02u分钟" */ -extern const char FMT_UPTIME_EN[]; /* 运行时间 + 电能 */ +extern const char FMT_ENERGY[]; /* 电能 + 电压/电流/功率 */ #endif /* LOG_CN_H */ diff --git a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c index 56525dc..53cf0d3 100644 --- a/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c +++ b/V1.5/STM32F103_App1/HardWare/SYSINIT/app_loop.c @@ -191,6 +191,9 @@ static void app_task(void *arg) } } +/* 电能日志/上报间隔:想改频率就改这个宏(单位 ms) */ +#define ENERGY_REPORT_INTERVAL_MS 10000u + /*==== sys_task:系统辅助(LED/电量/蓝牙命令/运行时长)====*/ static void sys_task(void *arg) { @@ -198,6 +201,7 @@ static void sys_task(void *arg) uint32_t batt_tick = HAL_GetTick(); uint32_t up_last = HAL_GetTick(); uint32_t up_print = HAL_GetTick(); + uint32_t en_print = HAL_GetTick(); uint64_t up_ms = 0; for (;;) { @@ -229,27 +233,26 @@ static void sys_task(void *arg) up_print = now; if (g_net_mqtt_ready) { uint32_t mins = (uint32_t)(up_ms / 60000); - if (hlw8032_online()) { - /* 每分钟随心跳上报一次累计电量(标识符 energy),日志同步显示 */ - float kwh = hlw8032_get_energy_kwh(); - NET_publish_energy(kwh); - log_info(FMT_UPTIME_EN, - (unsigned)(mins / 1440), - (unsigned)((mins % 1440) / 60), - (unsigned)(mins % 60), (double)kwh, - (double)hlw8032_get_voltage_v(), - (double)hlw8032_get_current_a(), - (double)hlw8032_get_power_w()); - } else { - log_info(FMT_UPTIME, - (unsigned)(mins / 1440), - (unsigned)((mins % 1440) / 60), - (unsigned)(mins % 60)); - } + log_info(FMT_UPTIME, + (unsigned)(mins / 1440), + (unsigned)((mins % 1440) / 60), + (unsigned)(mins % 60)); } } } + /* 电能日志+上报:联网且计量芯片在线时每 ENERGY_REPORT_INTERVAL_MS 一条 */ + if (g_net_mqtt_ready && hlw8032_online() && + (HAL_GetTick() - en_print) >= ENERGY_REPORT_INTERVAL_MS) { + en_print = HAL_GetTick(); + float kwh = hlw8032_get_energy_kwh(); + NET_publish_energy(kwh); + log_info(FMT_ENERGY, (double)kwh, + (double)hlw8032_get_voltage_v(), + (double)hlw8032_get_current_a(), + (double)hlw8032_get_power_w()); + } + vTaskDelay(20); } }