add:定时任务数据放回

add:关闭系统led灯
add:上电初始化继电器状态
This commit is contained in:
Zip
2019-03-19 16:33:26 +08:00
parent e01def779a
commit 9064df8568
3 changed files with 72 additions and 5 deletions

View File

@@ -106,8 +106,11 @@ int application_start( void )
}
MicoGpioInitialize( (mico_gpio_t) MICO_GPIO_5, OUTPUT_PUSH_PULL );
user_led_set( 0 );
for ( i = 0; i < Relay_NUM; i++ )
{
user_relay_set(i,user_config->plug[i].on);
}
MicoSysLed(0);
if ( user_config->version != USER_CONFIG_VERSION || user_config->plug[0].task[0].hour < 0 || user_config->plug[0].task[0].hour > 23 )
{
os_log( "WARNGIN: user params restored!" );

View File

@@ -47,7 +47,6 @@ void user_function_cmd_received( int udp_flag, uint8_t *pusrdata )
cJSON *p_cmd = cJSON_GetObjectItem( pJsonRoot, "cmd" );
if ( p_cmd && cJSON_IsString( p_cmd ) && strcmp( p_cmd->valuestring, "device report" ) == 0 )
{
cJSON *pRoot = cJSON_CreateObject( );
cJSON_AddStringToObject( pRoot, "name", sys_config->micoSystemConfig.name );
cJSON_AddStringToObject( pRoot, "mac", strMac );

View File

@@ -4,6 +4,7 @@
#include "user_gpio.h"
#include "sntp.h"
#include "user_sntp.h"
#include "cJSON/cJSON.h"
void rtc_thread( mico_thread_arg_t arg );
@@ -107,6 +108,7 @@ OSStatus user_rtc_init( void )
void rtc_thread( mico_thread_arg_t arg )
{
int i, j;
char task_flag[PLUG_NUM] = { -1, -1, -1, -1, -1, -1 }; //<2F><>¼ÿ<C2BC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OSStatus err = kUnknownErr;
LinkStatusTypeDef LinkStatus;
mico_rtc_time_t rtc_time;
@@ -131,7 +133,6 @@ void rtc_thread( mico_thread_arg_t arg )
while ( 1 )
{
mico_time_get_utc_time( &utc_time );
utc_time += 28800;
struct tm * currentTime = localtime( (const time_t *) &utc_time );
@@ -163,10 +164,31 @@ void rtc_thread( mico_thread_arg_t arg )
&& rtc_time.hr == user_config->plug[i].task[j].hour
&& ((repeat == 0x00) || repeat & (1 << (rtc_time.weekday - 1)))
)
{
if ( user_config->plug[i].on = user_config->plug[i].task[j].action )
{
user_relay_set( i, user_config->plug[i].task[j].action );
update_user_config_flag = 1;
//<2F><><EFBFBD><EFBFBD>domoticz״̬
if ( user_config->plug[i].idx >= 0 )
{
uint8_t *buf = NULL;
buf = malloc( 32 ); //idxΪ1λʱ<CEBB><CAB1><EFBFBD><EFBFBD>Ϊ24
if ( buf != NULL )
{
sprintf( buf, "{\"idx\":%d,\"nvalue\":%d}", user_config->plug[i].idx, user_config->plug[i].on );
if ( !user_mqtt_isconnect( ) )
user_udp_send( buf ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
user_mqtt_send( buf );
free( buf );
}
}
}
if ( repeat == 0x00 )
{
task_flag[i] = j;
user_config->plug[i].task[j].on = 0;
update_user_config_flag = 1;
}
@@ -178,8 +200,51 @@ void rtc_thread( mico_thread_arg_t arg )
//<2F><><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ( update_user_config_flag == 1 )
{
os_log("update_user_config_flag");
mico_system_context_update( sys_config );
update_user_config_flag = 0;
cJSON *json_send = cJSON_CreateObject( );
cJSON_AddStringToObject( json_send, "mac", strMac );
for ( i = 0; i < PLUG_NUM; i++ )
{
char strTemp1[] = "plug_X";
strTemp1[5] = i + '0';
cJSON *json_send_plug = cJSON_CreateObject( );
cJSON_AddNumberToObject( json_send_plug, "on", user_config->plug[i].on );
if ( task_flag[i] >= 0 )
{
cJSON *json_send_plug_setting = cJSON_CreateObject( );
j = task_flag[i];
char strTemp2[] = "task_X";
strTemp2[5] = j + '0';
cJSON *json_send_plug_task = cJSON_CreateObject( );
cJSON_AddNumberToObject( json_send_plug_task, "hour", user_config->plug[i].task[j].hour );
cJSON_AddNumberToObject( json_send_plug_task, "minute", user_config->plug[i].task[j].minute );
cJSON_AddNumberToObject( json_send_plug_task, "repeat", user_config->plug[i].task[j].repeat );
cJSON_AddNumberToObject( json_send_plug_task, "action", user_config->plug[i].task[j].action );
cJSON_AddNumberToObject( json_send_plug_task, "on", user_config->plug[i].task[j].on );
cJSON_AddItemToObject( json_send_plug_setting, strTemp2, json_send_plug_task );
cJSON_AddItemToObject( json_send_plug, "setting", json_send_plug_setting );
task_flag[i]=-1;
}
cJSON_AddItemToObject( json_send, strTemp1, json_send_plug );
}
char *json_str = cJSON_Print( json_send );
if ( !user_mqtt_isconnect( ) )
user_udp_send( json_str ); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else
user_mqtt_send( json_str );
free( json_str );
cJSON_Delete( json_send );
os_log("cJSON_Delete");
}
//SNTP<54><50><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿСʱУ׼һ<D7BC><D2BB>