socket_status[SOCKET_NUM]

This commit is contained in:
zogodo
2020-02-17 16:57:55 +08:00
parent 5f800d131d
commit 651e8f25c4
4 changed files with 48 additions and 89 deletions

View File

@@ -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);

View File

@@ -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;

View File

@@ -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)

View File

@@ -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())
{