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
  • - 插座-2 + + 插座-2
  • - 插座-3 + + 插座-3
  • - 插座-4 + + 插座-4
  • - 插座-5 + + 插座-5
  • - 插座-6 + + 插座-6