mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-12 21:18:13 +08:00
自定义命令-1
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user