diff --git a/README.md b/README.md
index d39044a..ff63132 100644
--- a/README.md
+++ b/README.md
@@ -8,10 +8,10 @@
# 固件web界面
-
+
# HASS接入效果
-
+
固件启动后, 会开启一个热点 TC1-AP-XXXXXX,连接热点后, 直接用浏览器访问: http://192.168.0.1 即可看到如上web界面.
@@ -53,6 +53,7 @@ TC1 排插硬件分 A1 A2 两个版本, 本固件仅支持 **A1 版本**. A1 A2
- [x] HomeAssistant中增加总耗电量传感器,今日耗电量传感器,昨日耗电量传感器,数据来自于插座历史统计
- [x] 可以设置mqtt数据上报频率,默认2秒
- [x] 可以设置电源 led 是否打开,默认打开(系统自检以及错误指示灯仍会工作)
+- [x] 后台和ha mqtt增加总开关控制
# 编译固件
diff --git a/TC1/http_server/app_httpd.c b/TC1/http_server/app_httpd.c
index fcc081b..bf72230 100644
--- a/TC1/http_server/app_httpd.c
+++ b/TC1/http_server/app_httpd.c
@@ -52,7 +52,7 @@
static bool is_http_init;
static bool is_handlers_registered;
const struct httpd_wsgi_call g_app_handlers[];
-char power_info_json[1552] = {0};
+char power_info_json[1952] = {0};
char up_time[16] = "00:00:00";
/*
@@ -149,13 +149,21 @@ static int HttpGetAssets(httpd_request_t *req) {
static int HttpGetTc1Status(httpd_request_t *req) {
char *sockets = GetSocketStatus();
- char *tc1_status = malloc(512);
+ char *tc1_status = malloc(1024);
+ char *socket_names = malloc(512);
+ sprintf(socket_names, "%s,%s,%s,%s,%s,%s",
+ user_config->socket_names[0],
+ user_config->socket_names[1],
+ user_config->socket_names[2],
+ user_config->socket_names[3],
+ user_config->socket_names[4],
+ user_config->socket_names[5]);
sprintf(tc1_status, TC1_STATUS_JSON, sockets, ip_status.mode,
sys_config->micoSystemConfig.ssid, sys_config->micoSystemConfig.user_key,
user_config->ap_name, user_config->ap_key, MQTT_SERVER, MQTT_SERVER_PORT,
MQTT_SERVER_USR, MQTT_SERVER_PWD,
VERSION, ip_status.ip, ip_status.mask, ip_status.gateway, user_config->mqtt_report_freq,
- user_config->power_led_enabled, 0L);
+ user_config->power_led_enabled, 0L,socket_names);
OSStatus err = kNoErr;
send_http(tc1_status, strlen(tc1_status), exit, &err);
@@ -183,6 +191,31 @@ static int HttpSetSocketStatus(httpd_request_t *req) {
return err;
}
+static int HttpSetSocketName(httpd_request_t *req) {
+ OSStatus err = kNoErr;
+
+ int buf_size = 512;
+ char *buf = malloc(buf_size);
+
+ err = httpd_get_data(req, buf, buf_size);
+ require_noerr(err, exit);
+
+ sscanf(buf, "%s,%s,%s,%s,%s,%s",
+ user_config->socket_names[0],
+ user_config->socket_names[1],
+ user_config->socket_names[2],
+ user_config->socket_names[3],
+ user_config->socket_names[4],
+ user_config->socket_names[5]);
+ mico_system_context_update(sys_config);
+ registerMqttEvents();
+ send_http("OK", 2, exit, &err);
+
+ exit:
+ if (buf) free(buf);
+ return err;
+}
+
static int HttpGetPowerInfo(httpd_request_t *req) {
OSStatus err = kNoErr;
char buf[16];
@@ -204,8 +237,16 @@ static int HttpGetPowerInfo(httpd_request_t *req) {
char *powers = GetPowerRecord(idx);
char *sockets = GetSocketStatus();
+ char *socket_names = malloc(512);
+ sprintf(socket_names, "%s,%s,%s,%s,%s,%s",
+ user_config->socket_names[0],
+ user_config->socket_names[1],
+ user_config->socket_names[2],
+ user_config->socket_names[3],
+ user_config->socket_names[4],
+ user_config->socket_names[5]);
sprintf(power_info_json, POWER_INFO_JSON, sockets, power_record.idx, PW_NUM, p_count, powers,
- up_time,user_config->power_led_enabled,RelayOut()?1:0);
+ up_time,user_config->power_led_enabled,RelayOut()?1:0,socket_names);
send_http(power_info_json, strlen(power_info_json), exit, &err);
exit:
return err;
@@ -502,6 +543,7 @@ const struct httpd_wsgi_call g_app_handlers[] = {
{"/ota", HTTPD_HDR_DEFORT, 0, Otastatus, OtaStart, NULL, NULL},
{"/led", HTTPD_HDR_DEFORT, 0, LedStatus, LedSetEnabled, NULL, NULL},
{"/socketAll", HTTPD_HDR_DEFORT, 0, NULL, TotalSocketSetEnabled, NULL, NULL},
+ {"/socketNames", HTTPD_HDR_DEFORT, 0, NULL, HttpSetSocketName, NULL, NULL},
};
static int g_app_handlers_no = sizeof(g_app_handlers) / sizeof(struct httpd_wsgi_call);
diff --git a/TC1/http_server/app_httpd.h b/TC1/http_server/app_httpd.h
index be32a72..d33a2d2 100644
--- a/TC1/http_server/app_httpd.h
+++ b/TC1/http_server/app_httpd.h
@@ -64,10 +64,11 @@
'gateway':'%s',\
'reportFreq':'%d',\
'ledEnabled':%d,\
- 'up_time':%ld\
+ 'up_time':%ld,\
+ 'socketNames':%s\
}"
-#define POWER_INFO_JSON "{'sockets':'%s','idx':%d,'len':%d,'p_count':%ld,'powers':[%s],'up_time':'%s','led_enabled':%d,'total_switch_on':%d}"
+#define POWER_INFO_JSON "{'sockets':'%s','idx':%d,'len':%d,'p_count':%ld,'powers':[%s],'up_time':'%s','led_enabled':%d,'total_switch_on':%d,'socketNames':%s}"
int AppHttpdStart(void);
diff --git a/TC1/http_server/web/index.html b/TC1/http_server/web/index.html
index a81ce1f..122c363 100644
--- a/TC1/http_server/web/index.html
+++ b/TC1/http_server/web/index.html
@@ -147,7 +147,14 @@
- 插座-1
+
+ 插座-1