From 1c90fa943d359931bdc536d6419cabddb7e415d1 Mon Sep 17 00:00:00 2001 From: zogodo <742782908@qq.com> Date: Mon, 17 Feb 2020 14:54:56 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E5=91=BD=E4=BB=A4-1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TC1/mqtt_server/user_mqtt_client.c | 28 +++++++++++++++++++++++----- TODO.txt | 16 +++++++--------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/TC1/mqtt_server/user_mqtt_client.c b/TC1/mqtt_server/user_mqtt_client.c index 60ca023..cbb4007 100644 --- a/TC1/mqtt_server/user_mqtt_client.c +++ b/TC1/mqtt_server/user_mqtt_client.c @@ -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); OSStatus UserRecvHandler(void *arg); +void ProcessHaCmd(char* cmd); bool isconnect = false; 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); 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); require_noerr(err, exit); @@ -402,14 +404,31 @@ OSStatus UserRecvHandler(void *arg) p_mqtt_recv_msg_t p_recv_msg = arg; 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); - UserFunctionCmdReceived(0, p_recv_msg->data); + 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); + + ProcessHaCmd(p_recv_msg->data); + free(p_recv_msg); exit: 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 err = kUnknownErr; @@ -486,7 +505,7 @@ void UserMqttHassAuto(char socket_id) "\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\"," "\"cmd_t\":\"device/ztc1/set\"," "\"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); UserMqttSendTopic(topic_buf, send_buf, 1); @@ -509,8 +528,7 @@ void UserMqttHassAutoName(char socket_id) "\"stat_t\":\"homeassistant/switch/%s/socket_%d/state\"," "\"cmd_t\":\"device/ztc1/set\"," "\"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); UserMqttSendTopic(topic_buf, send_buf, 0); } diff --git a/TODO.txt b/TODO.txt index 8aeeeab..b1360bc 100644 --- a/TODO.txt +++ b/TODO.txt @@ -1,11 +1,9 @@ 1. 登录 -2. ota进度 -3. station改回ap并关闭station -4. mqtt -5. 删除定时任务 -6. 保存ap及密码到Flash -7. user_config 如何保存 -8. 重复定时任务 -9. 处理计算功率超过3秒的情况 -10.ha不能控制 +2. station改回ap并关闭station +3. 删除定时任务 +4. 保存ap及密码到Flash +5. 重复定时任务 +6. 去掉C_Json +7. 去除user_udp +8. 统一os_log