From 651e8f25c41cb70123729d8eef22709e5f0fd044 Mon Sep 17 00:00:00 2001 From: zogodo <742782908@qq.com> Date: Mon, 17 Feb 2020 16:57:55 +0800 Subject: [PATCH] socket_status[SOCKET_NUM] --- TC1/main.c | 14 +---- TC1/main.h | 10 +--- TC1/mqtt_server/user_mqtt_client.c | 83 +++++++++++------------------- TC1/user_gpio.c | 30 +++++------ 4 files changed, 48 insertions(+), 89 deletions(-) diff --git a/TC1/main.c b/TC1/main.c index 38eeff4..a1d1f7d 100644 --- a/TC1/main.c +++ b/TC1/main.c @@ -40,17 +40,7 @@ void appRestoreDefault_callback(void * const user_config_data, uint32_t size) int i; for (i = 0; i < SOCKET_NUM; i++) { - userConfigDefault->socket_configs[i].on = 1; - //插座名称 插口1-6 - userConfigDefault->socket_configs[i].name[0] = 0xe6; - userConfigDefault->socket_configs[i].name[1] = 0x8f; - userConfigDefault->socket_configs[i].name[2] = 0x92; - userConfigDefault->socket_configs[i].name[3] = 0xe5; - userConfigDefault->socket_configs[i].name[4] = 0x8f; - userConfigDefault->socket_configs[i].name[5] = 0xa3; - userConfigDefault->socket_configs[i].name[6] = i + '1'; - userConfigDefault->socket_configs[i].name[7] = 0; - //sprintf(userConfigDefault->socket[i].name, "插座%d", i);//编码异常 + userConfigDefault->socket_status[i] = 1; } //mico_system_context_update(sys_config); } @@ -90,7 +80,7 @@ int application_start(void) for (i = 0; i < Relay_NUM; i++) { MicoGpioInitialize(Relay[i], OUTPUT_PUSH_PULL); - UserRelaySet(i, user_config->socket_configs[i].on); + UserRelaySet(i, user_config->socket_status[i]); } MicoSysLed(0); diff --git a/TC1/main.h b/TC1/main.h index 169ef82..b3d4582 100644 --- a/TC1/main.h +++ b/TC1/main.h @@ -11,7 +11,7 @@ #define ZTC1_NAME "zTC1-%s" -#define USER_CONFIG_VERSION 3 +#define USER_CONFIG_VERSION 5 #define SETTING_MQTT_STRING_LENGTH_MAX 32 //必须4字节对齐。 #define SOCKET_NAME_LENGTH 32 @@ -32,12 +32,6 @@ #define Relay_5 MICO_GPIO_18 #define Relay_NUM SOCKET_NUM -typedef struct -{ - char name[SOCKET_NAME_LENGTH]; - char on; //记录当前开关 -} user_socket_config_t; - //用户保存参数结构体 typedef struct { @@ -46,7 +40,7 @@ typedef struct int mqtt_port; //mqtt service port char mqtt_user[SETTING_MQTT_STRING_LENGTH_MAX]; //mqtt service user char mqtt_password[SETTING_MQTT_STRING_LENGTH_MAX]; //mqtt service user - user_socket_config_t socket_configs[SOCKET_NUM]; + char socket_status[SOCKET_NUM]; //记录当前开关 char user[maxNameLen]; WiFiEvent last_wifi_status; } user_config_t; diff --git a/TC1/mqtt_server/user_mqtt_client.c b/TC1/mqtt_server/user_mqtt_client.c index 7ad38b9..d1286f7 100644 --- a/TC1/mqtt_server/user_mqtt_client.c +++ b/TC1/mqtt_server/user_mqtt_client.c @@ -76,58 +76,33 @@ void UserMqttTimerFunc(void *arg) timer_status++; switch (timer_status) { - case 1: - UserMqttHassAutoPower(); - break; - case 2: - UserMqttHassAuto(0); - break; - case 3: - UserMqttHassAuto(1); - break; - case 4: - UserMqttHassAuto(2); - break; - case 5: - UserMqttHassAuto(3); - break; - case 6: - UserMqttHassAuto(4); - break; - case 7: - UserMqttHassAuto(5); - break; - case 8: - UserMqttHassAutoName(0); - break; - case 9: - UserMqttHassAutoName(1); - break; - case 10: - UserMqttHassAutoName(2); - break; - case 11: - UserMqttHassAutoName(3); - break; - case 12: - UserMqttHassAutoName(4); - break; - case 13: - UserMqttHassAutoName(5); - break; - case 14: - UserMqttHassAutoPowerName(); - break; - case 15: - if (buf1 == NULL) break; - sprintf(buf1, "{\"mac\":\"%s\",\"version\":null,\"socket_0\":{\"on\":null,\"setting\":{\"name\":null}},\"socket_1\":{\"on\":null,\"setting\":{\"name\":null}},\"socket_2\":{\"on\":null,\"setting\":{\"name\":null}},\"socket_3\":{\"on\":null,\"setting\":{\"name\":null}},\"socket_4\":{\"on\":null,\"setting\":{\"name\":null}},\"socket_5\":{\"on\":null,\"setting\":{\"name\":null}}}", str_mac); - //UserFunctionCmdReceived(0, buf1); - free(buf1); - break; - default: - mico_stop_timer(&timer_handle); -// mico_deinit_timer(&timer_handle); - break; + case 1: + UserMqttHassAutoPower(); + break; + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + UserMqttHassAuto(timer_status - 2); + break; + case 8: + case 9: + case 10: + case 11: + case 12: + case 13: + UserMqttHassAutoName(timer_status - 8); + break; + case 14: + UserMqttHassAutoPowerName(); + break; + case 15: + break; + default: + mico_stop_timer(&timer_handle); + break; } } } @@ -478,7 +453,7 @@ OSStatus UserMqttSendSocketState(char socket_id) if (send_buf != NULL && topic_buf != NULL) { sprintf(topic_buf, "homeassistant/switch/%s/socket_%d/state", str_mac, (int)socket_id); - sprintf(send_buf, "set socket %s %d %d", str_mac, socket_id, (int)user_config->socket_configs[(int)socket_id].on); + sprintf(send_buf, "set socket %s %d %d", str_mac, socket_id, (int)user_config->socket_status[(int)socket_id]); oss_status = UserMqttSendTopic(topic_buf, send_buf, 1); } if (send_buf) free(send_buf); @@ -526,7 +501,7 @@ void UserMqttHassAutoName(char socket_id) "\"cmd_t\":\"device/ztc1/set\"," "\"pl_on\":\"set socket %s %d 1\"," "\"pl_off\":\"set socket %s %d 0\"}", - user_config->socket_configs[(int)socket_id].name, str_mac, socket_id, str_mac, socket_id, str_mac, socket_id); + "SSS", str_mac, socket_id, str_mac, socket_id, str_mac, socket_id); UserMqttSendTopic(topic_buf, send_buf, 0); } if (send_buf) diff --git a/TC1/user_gpio.c b/TC1/user_gpio.c index ca74049..43e2cbf 100644 --- a/TC1/user_gpio.c +++ b/TC1/user_gpio.c @@ -22,7 +22,7 @@ bool RelayOut(void) int i; for (i = 0; i < SOCKET_NUM; i++) { - if (user_config->socket_configs[i].on != 0) + if (user_config->socket_status[i] != 0) { return true; } @@ -33,28 +33,28 @@ bool RelayOut(void) const unsigned char* GetSocketStatus() { sprintf(socket_status, "%d,%d,%d,%d,%d,%d", - user_config->socket_configs[0].on, - user_config->socket_configs[1].on, - user_config->socket_configs[2].on, - user_config->socket_configs[3].on, - user_config->socket_configs[4].on, - user_config->socket_configs[5].on); + user_config->socket_status[0], + user_config->socket_status[1], + user_config->socket_status[2], + user_config->socket_status[3], + user_config->socket_status[4], + user_config->socket_status[5]); return (const unsigned char*)socket_status; } void SetSocketStatus(char* socket_status) { sscanf(socket_status, "%d,%d,%d,%d,%d,%d,", - (int*)&user_config->socket_configs[0].on, - (int*)&user_config->socket_configs[1].on, - (int*)&user_config->socket_configs[2].on, - (int*)&user_config->socket_configs[3].on, - (int*)&user_config->socket_configs[4].on, - (int*)&user_config->socket_configs[5].on); + (int*)&user_config->socket_status[0], + (int*)&user_config->socket_status[1], + (int*)&user_config->socket_status[2], + (int*)&user_config->socket_status[3], + (int*)&user_config->socket_status[4], + (int*)&user_config->socket_status[5]); int i = 0; for (i = 0; i < SOCKET_NUM; i++) { - UserRelaySet(i, user_config->socket_configs[i].on); + UserRelaySet(i, user_config->socket_status[i]); UserMqttSendSocketState(i); } mico_system_context_update(sys_config); @@ -78,7 +78,7 @@ void UserRelaySet(unsigned char i, unsigned char on) MicoGpioOutputLow(relay[i]); } - user_config->socket_configs[i].on = on; + user_config->socket_status[i] = on; if (RelayOut()) {