add:mqtt连接后自动更新数据

This commit is contained in:
Zip
2019-03-19 17:08:10 +08:00
parent 41f9545021
commit 687e6ec82a

View File

@@ -22,6 +22,7 @@
#include "mico.h" #include "mico.h"
#include "MQTTClient.h" #include "MQTTClient.h"
#include "user_function.h" #include "user_function.h"
#include "cJSON/cJSON.h"
/****************************************************** /******************************************************
* Macros * Macros
******************************************************/ ******************************************************/
@@ -45,7 +46,7 @@
#define MAX_MQTT_TOPIC_SIZE (256) #define MAX_MQTT_TOPIC_SIZE (256)
#define MAX_MQTT_DATA_SIZE (1024) #define MAX_MQTT_DATA_SIZE (1024)
#define MAX_MQTT_SEND_QUEUE_SIZE (5) #define MAX_MQTT_SEND_QUEUE_SIZE (10)
#ifdef MQTT_CLIENT_SSL_ENABLE #ifdef MQTT_CLIENT_SSL_ENABLE
@@ -212,7 +213,7 @@ void mqtt_client_thread( mico_thread_arg_t arg )
{ {
OSStatus err = kUnknownErr; OSStatus err = kUnknownErr;
int rc = -1; int i,rc = -1;
fd_set readfds; fd_set readfds;
struct timeval t = { 0, MQTT_YIELD_TMIE * 1000 }; struct timeval t = { 0, MQTT_YIELD_TMIE * 1000 };
@@ -294,6 +295,29 @@ void mqtt_client_thread( mico_thread_arg_t arg )
require_noerr_string( rc, MQTT_reconnect, "ERROR: MQTT client subscribe err." ); require_noerr_string( rc, MQTT_reconnect, "ERROR: MQTT client subscribe err." );
mqtt_log("MQTT client subscribe success! recv_topic=[%s].", MQTT_CLIENT_SUB_TOPIC1); mqtt_log("MQTT client subscribe success! recv_topic=[%s].", MQTT_CLIENT_SUB_TOPIC1);
/*4.1 <20><><EFBFBD>ӳɹ<D3B3><C9B9><EFBFBD><EFBFBD>ȸ<EFBFBD><C8B8>·<EFBFBD><C2B7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
isconnect = true;
uint8_t *buf1 = NULL;
buf1 = malloc( 1024 ); //idxΪ1λʱ<CEBB><CAB1><EFBFBD><EFBFBD>Ϊ24
if ( buf1 != NULL )
{
sprintf(
buf1,
"{\"mac\":\"%s\",\"plug_0\":{\"on\":null,\"setting\":{\"name\":null}},\"plug_1\":{\"on\":null,\"setting\":{\"name\":null}},\"plug_2\":{\"on\":null,\"setting\":{\"name\":null}},\"plug_3\":{\"on\":null,\"setting\":{\"name\":null}},\"plug_4\":{\"on\":null,\"setting\":{\"name\":null}},\"plug_5\":{\"on\":null,\"setting\":{\"name\":null}}}",
strMac );
user_function_cmd_received( 0, buf1 );
for ( i = 0; i < PLUG_NUM; i++ )
{
if ( user_config->plug[i].idx >= 0 )
{
sprintf( buf1, "{\"idx\":%d,\"nvalue\":%d}", user_config->plug[i].idx, user_config->plug[i].on );
user_mqtt_send( buf1 );
}
}
free( buf1 );
}
/* 5. client loop for recv msg && keepalive */ /* 5. client loop for recv msg && keepalive */
while ( 1 ) while ( 1 )
{ {
@@ -399,7 +423,7 @@ OSStatus user_recv_handler( 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][%s].\r\n", p_recv_msg->topic, p_recv_msg->datalen, p_recv_msg->data); app_log("user get data success! from_topic=[%s], msg=[%ld].\r\n", p_recv_msg->topic, p_recv_msg->datalen);
user_function_cmd_received( 0, p_recv_msg->data ); user_function_cmd_received( 0, p_recv_msg->data );
free( p_recv_msg ); free( p_recv_msg );