自定义命令-1

This commit is contained in:
zogodo
2020-02-17 14:54:56 +08:00
parent a4111dedfa
commit 1c90fa943d
2 changed files with 30 additions and 14 deletions

View File

@@ -46,6 +46,7 @@ static void MessageArrived(MessageData* md);
static OSStatus MqttMsgPublish(Client *c, const char* topic, char qos, char retained, const unsigned char* msg, uint32_t msg_len); static OSStatus MqttMsgPublish(Client *c, const char* topic, char qos, char retained, const unsigned char* msg, uint32_t msg_len);
OSStatus UserRecvHandler(void *arg); OSStatus UserRecvHandler(void *arg);
void ProcessHaCmd(char* cmd);
bool isconnect = false; bool isconnect = false;
mico_queue_t mqtt_msg_send_queue = NULL; mico_queue_t mqtt_msg_send_queue = NULL;
@@ -383,6 +384,7 @@ static void MessageArrived(MessageData* md)
strncpy(p_recv_msg->topic, md->topicName->lenstring.data, md->topicName->lenstring.len); strncpy(p_recv_msg->topic, md->topicName->lenstring.data, md->topicName->lenstring.len);
memcpy(p_recv_msg->data, message->payload, message->payloadlen); memcpy(p_recv_msg->data, message->payload, message->payloadlen);
app_log("MessageArrived topic[%s] data[%s]", p_recv_msg->topic, p_recv_msg->data);
err = mico_rtos_send_asynchronous_event(&mqtt_client_worker_thread, UserRecvHandler, p_recv_msg); err = mico_rtos_send_asynchronous_event(&mqtt_client_worker_thread, UserRecvHandler, p_recv_msg);
require_noerr(err, exit); require_noerr(err, exit);
@@ -402,14 +404,31 @@ OSStatus UserRecvHandler(void *arg)
p_mqtt_recv_msg_t p_recv_msg = arg; p_mqtt_recv_msg_t p_recv_msg = arg;
require(p_recv_msg, exit); require(p_recv_msg, exit);
app_log("user get data success! from_topic=[%s], msg=[%ld].\r\n", p_recv_msg->topic, p_recv_msg->datalen); app_log("user get data success! from_topic=[%s], msg=[%ld].", p_recv_msg->topic, p_recv_msg->datalen);
UserFunctionCmdReceived(0, p_recv_msg->data); //UserFunctionCmdReceived(0, p_recv_msg->data);
ProcessHaCmd(p_recv_msg->data);
free(p_recv_msg); free(p_recv_msg);
exit: exit:
return err; return err;
} }
void ProcessHaCmd(char* cmd)
{
app_log("ProcessHaCmd[%s]", cmd);
char mac[20] = { 0 };
if (strcmp(cmd, "set socket") == ' ')
{
int i, on;
sscanf(cmd, "set socket %s %d %d", mac, &i, &on);
app_log("set socket[%d] on[%d]", i, on);
UserRelaySet(i, on);
}
}
OSStatus UserMqttSendTopic(char *topic, char *arg, char retained) OSStatus UserMqttSendTopic(char *topic, char *arg, char retained)
{ {
OSStatus err = kUnknownErr; OSStatus err = kUnknownErr;
@@ -486,7 +505,7 @@ void UserMqttHassAuto(char socket_id)
"\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\"," "\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\","
"\"cmd_t\":\"device/ztc1/set\"," "\"cmd_t\":\"device/ztc1/set\","
"\"pl_on\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":1}}\"," "\"pl_on\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":1}}\","
"\"pl_off\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":0}}\"" "\"pl_off\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":0,\\\"ttt1\\\":1}}\""
"}", "}",
socket_id, str_mac + 8, str_mac, socket_id, str_mac, socket_id, str_mac, socket_id); socket_id, str_mac + 8, str_mac, socket_id, str_mac, socket_id, str_mac, socket_id);
UserMqttSendTopic(topic_buf, send_buf, 1); UserMqttSendTopic(topic_buf, send_buf, 1);
@@ -509,8 +528,7 @@ void UserMqttHassAutoName(char socket_id)
"\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\"," "\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\","
"\"cmd_t\":\"device/ztc1/set\"," "\"cmd_t\":\"device/ztc1/set\","
"\"pl_on\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":1}}\"," "\"pl_on\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":1}}\","
"\"pl_off\":\"{\\\"mac\\\":\\\"%s\\\",\\\"socket_%d\\\":{\\\"on\\\":0}}\"" "\"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); user_config->socket_configs[(int)socket_id].name, str_mac, socket_id, str_mac, socket_id, str_mac, socket_id);
UserMqttSendTopic(topic_buf, send_buf, 0); UserMqttSendTopic(topic_buf, send_buf, 0);
} }

View File

@@ -1,11 +1,9 @@
1. 登录 1. 登录
2. ota进度 2. station改回ap并关闭station
3. station改回ap并关闭station 3. 删除定时任务
4. mqtt 4. 保存ap及密码到Flash
5. 删除定时任务 5. 重复定时任务
6. 保存ap及密码到Flash 6. 去掉C_Json
7. user_config 如何保存 7. 去除user_udp
8. 重复定时任务 8. 统一os_log
9. 处理计算功率超过3秒的情况
10.ha不能控制