V1.5: 新增SIM卡号ICCID读取与上报(4G初始化AT+ICCID,MQTT OK后随pow上报,标识符iccid)

This commit is contained in:
helei 2026-08-15 17:50:38 +08:00
parent 01b5ab0e44
commit ac2aca4286
5 changed files with 35 additions and 3 deletions

BIN
V1.5/STM32F103_App1.zip Normal file

Binary file not shown.

View File

@ -228,6 +228,8 @@ static int cat_wait_cgatt_attached(int max_wait_s) {
#define CAT_BAUD_TARGET 921600u
#define CAT_BAUD_DEFAULT 115200u
static char s_iccid[24] = {0}; /* SIM 卡号MQTT OK 后上报平台 */
static int cat_connect_network(void) {
log_info("> 4G: 网络...");
g_net_ui_phase = NET_UI_4G_AT;
@ -284,6 +286,24 @@ static int cat_connect_network(void) {
return -1;
}
/* 读取 SIM 卡号 ICCID物联网卡套餐管理平台可查卡号缴费 */
{
s_iccid[0] = 0;
if (catSendCmd("AT+ICCID", "+ICCID:", 1, 10) == 0) {
char *p = strstr((char *)U2_CopyBuff, "+ICCID:");
if (p) {
p += 7;
while (*p == ' ') p++;
int n = 0;
while (p[n] >= '0' && p[n] <= '9' && n < 20) n++;
memcpy(s_iccid, p, n);
s_iccid[n] = 0;
}
}
if (s_iccid[0]) log_info("> 4G: ICCID %s", s_iccid);
else log_warn("> 4G: ICCID 读取失败");
}
if (cat_wait_cgatt_attached(30) != 0) return -1;
/* 信号质量检测AT+CSQ → +CSQ: rssi,berrssi 0~3199=未知/无信号)。
@ -761,6 +781,11 @@ void air780e_init(void) {
sprintf(pub, "AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22pow\\22:1}}\"", MqttInfoStr.ClientID);
CAT1_printf("%s", pub);
HAL_Delay(50);
if (s_iccid[0]) {
sprintf(pub, "AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22iot.prop.post\\22,\\22body\\22:{\\22iccid\\22:\\22%s\\22}}\"", MqttInfoStr.ClientID, s_iccid);
CAT1_printf("%s", pub);
HAL_Delay(50);
}
return;
}
log_warn("> 4G: MQTT 失败,重试 %d", retry);

View File

@ -6,8 +6,12 @@
/*===== 用户配置区 =====*/
/* 固定 WiFi 凭据:优先尝试连接的热点;连不上(60s)则进 Smart Config 智能配网 */
#define WIFI_SSID "TP_Link-02" /* TODO: 輕흙미땍 WiFi 츰냔 */
#define WIFI_PASS "zxcvbnmm112" /* TODO: 輕흙미땍 WiFi 쵱쯤 */
#define WIFI_SSID "OrayBox-6B0E" /* TODO: 輕흙미땍 WiFi 츰냔 */
#define WIFI_PASS "nky20192006" /* TODO: 輕흙미땍 WiFi 쵱쯤 */
//#define WIFI_SSID "TP_Link-01" /* TODO: 輕흙미땍 WiFi 츰냔 */
//#define WIFI_PASS "zxcvbnmm112" /* TODO: 輕흙미땍 WiFi 쵱쯤 */
//#define WIFI_SSID "TP_Link" /* TODO: 填入固定 WiFi 名称 */
//#define WIFI_PASS "zxcvbnm888" /* TODO: 填入固定 WiFi 密码 */

View File

@ -337,7 +337,8 @@ W25Q64 外部 Flash8MB
| `sw1` / `feeding` | 第一路继电器状态 | 1=投喂中0=停止;无秤模式下两字段**同时上报**,平台两个开关同步刷新 |
| `sw2~sw4` | 备用继电器状态 | 0/1 |
| `pow` | 电量状态 | 1=正常0=低电量 |
| `energy` | 累计消耗电量 | HLW8032 计量,单位 kWh两位小数联网后每分钟上报 |
| `energy` | 累计消耗电量 | HLW8032 计量,单位 kWh两位小数>10W 每 30s否则首次+开关切换) |
| `iccid` | SIM 卡号 | 仅 4G 通道MQTT 连上后随 pow 上报一次,用于物联网卡套餐查询缴费 |
| `GPS` | 定位坐标 | 仅 4G 通道(Air780EG)GCJ-02 高德坐标系,格式 `"经度,纬度"`,每 5 分钟上报 |
> 注:`zero`(剩余料重)与 `onceWt` 为称重模式专用字段——`PRODUCT_WITH_FEED_SCALE=0` 时状态上报不携带这两个字段,平台下发设置会收到 `no scale on this device` 拒绝应答。

View File

@ -133,3 +133,5 @@
- 修复 4G MPUB 转义错误:`` 误写为 C 八进制 ``(=0x12 字节)energy/pow/指令应答
共 8 处独立报文平台收不到(上电能收到是因为状态大报文转义本来就对)
- OLED 欢迎页按产品模式显示标题;运行时间改 天:时:分 格式
- 新增 SIM 卡号上报4G 初始化 SIM 就绪后 AT+ICCID 读卡号MQTT OK 后随 pow 上报平台
(标识符 iccid字符串平台物模型加字符串字段即可便于物联网卡套餐到期查询缴费