Commit a869b387 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】增加布防撤防功能

See merge request chenweican/k-sdk!99
parents 042c495e 49d392c3
......@@ -55,7 +55,8 @@ static int _kk_area_db_init(void)
const char *pAreaTable = "CREATE TABLE IF NOT EXISTS AreaInfo( \
idx INTEGER PRIMARY KEY, \
name varchar(256), \
roomId varchar(256))";
roomId varchar(256), \
armingstate INTEGER)";
if (sqlite3_exec(ctx->pDb, pAreaTable, NULL, NULL, &pcErr) != SQLITE_OK)
{
......@@ -103,7 +104,6 @@ int kk_area_init(void)
}
return SUCCESS_RETURN;
}
static int kk_check_room_exist(const char *roomId)
{
int isExist = 0;
......@@ -200,7 +200,6 @@ static int _kk_room_dev_update(const char *name,const char *roomId)
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_add(const char *name,const char *roomId)
{
if(kk_check_room_exist(roomId)){
......@@ -211,9 +210,28 @@ int kk_room_add(const char *name,const char *roomId)
}else{
return _kk_room_add(name,roomId);
}
}
}
int kk_room_update_armingstate(int state,const char *roomid)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
_kk_area_lock();
sqlCmd = sqlite3_mprintf("UPDATE AreaInfo SET armingstate=%d WHERE roomId= '%s'",state,roomid);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_delete(const char *roomId)
{
int res = 0;
......@@ -240,37 +258,6 @@ int kk_room_delete(const char *roomId)
return SUCCESS_RETURN;
}
int kk_get_device_name(const char* deviceCode,const char *epNum,char *devName,int size)
{
int isGet = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pEpNum = NULL;
char *pDevName = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
pEpNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{
pDevName = (char*)sqlite3_column_text(stmt, DB_DEV_DEV_NAME);
memset(devName,0,size);
snprintf(devName,size,"%s",pDevName);
isGet = 1;
}
}
//INFO_PRINT("\n");
sqlite3_finalize(stmt);
_kk_area_unlock();
return isGet;
}
static int _kk_check_dev_exist(const char* deviceCode,const char *epNum)
{
int isExist = 0;
......@@ -328,7 +315,101 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_room_reset_armingstate(void)
{
char *sqlCmd = NULL;
int rc = 0;
char *zErrMsg = 0;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
_kk_area_lock();
sqlCmd = sqlite3_mprintf("UPDATE AreaInfo SET armingstate=%d ",0);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}else{
INFO_PRINT("Table updata data successfully\n");
}
sqlite3_free(sqlCmd);
_kk_area_unlock();
return SUCCESS_RETURN;
}
int kk_get_room_armingstate(const char* roomId)
{
sqlite3_stmt *stmt;
int state = 0;
char *sqlCmd = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaInfo where roomId = '%s';";
_kk_area_lock();
sqlCmd = sqlite3_mprintf(searchCmd,roomId);
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
state = sqlite3_column_int(stmt, DB_ROOM_ARMING);
}
sqlite3_finalize(stmt);
sqlite3_free(sqlCmd);
_kk_area_unlock();
return state;
}
int kk_get_roomId_by_deviceCode(const char* deviceCode,const char *epNum,char *roomId,int size)
{
int isGet = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pEpNum = NULL;
char *pRoomId = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
pEpNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{
pRoomId = (char*)sqlite3_column_text(stmt, DB_DEV_ROOM_ID);
memset(roomId,0,size);
snprintf(roomId,size,"%s",pRoomId);
isGet = 1;
}
}
//INFO_PRINT("\n");
sqlite3_finalize(stmt);
_kk_area_unlock();
return isGet;
}
int kk_get_device_name(const char* deviceCode,const char *epNum,char *devName,int size)
{
int isGet = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pEpNum = NULL;
char *pDevName = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
pEpNum = (char*)sqlite3_column_text(stmt, DB_DEV_EPNUM);
if(!strcmp(deviceCode,pDeviceCode) && !strcmp(pEpNum,epNum))
{
pDevName = (char*)sqlite3_column_text(stmt, DB_DEV_DEV_NAME);
memset(devName,0,size);
snprintf(devName,size,"%s",pDevName);
isGet = 1;
}
}
//INFO_PRINT("\n");
sqlite3_finalize(stmt);
_kk_area_unlock();
return isGet;
}
int kk_room_dev_remove(const char *deviceCode,const char *epNum)
{
int res = 0;
......
......@@ -10,7 +10,8 @@ typedef struct kk_dev_list{
enum{
DB_ROOM_IDX = 0,
DB_ROOM_NAME,
DB_ROOM_ID,
DB_ROOM_ID,
DB_ROOM_ARMING,
};
enum{
......@@ -30,6 +31,10 @@ int kk_room_device_list_add(const char *deviceCode);
kk_dev_list_t* kk_get_room_deviceCode(const char* roomId);
void kk_free_room_dev_list(void);
int kk_get_device_name(const char* deviceCode,const char *epNum,char *devName,int size);
int kk_room_update_armingstate(int state,const char *roomid);
int kk_get_room_armingstate(const char* roomId);
int kk_get_roomId_by_deviceCode(const char* deviceCode,const char *epNum,char *roomId,int size);
#endif
......@@ -392,24 +392,19 @@ int dm_mgr_get_device_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _O
return FAIL_RETURN;
}
int dm_mgr_get_device_by_productType(_IN_ char *productType, _OU_ dm_mgr_dev_node_t **node)
int dm_mgr_get_deviceNum_by_productType(_IN_ char *productType)
{
dm_mgr_ctx *ctx = _dm_mgr_get_ctx();
dm_mgr_dev_node_t *search_node = NULL;
int num = 0;
list_for_each_entry(search_node, &ctx->dev_list, linked_list, dm_mgr_dev_node_t) {
if ((strlen(search_node->deviceCode) == strlen(productType)) &&
(memcmp(search_node->deviceCode, productType, strlen(productType)) == 0)) {
if ((strlen(search_node->productType) == strlen(productType)) &&
(memcmp(search_node->productType, productType, strlen(productType)) == 0)) {
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
if (node) {
*node = search_node;
}
return SUCCESS_RETURN;
num++;
}
}
ERROR_PRINT("Device Not Found, productType: %s\n", productType);
return FAIL_RETURN;
return num;
}
int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN],time_t timestamp)
......
......@@ -88,7 +88,7 @@ int dm_mgr_search_device_by_pkdn( _IN_ char deviceCode[DEVICE_CODE_MAXLEN],_OU_
int dm_mgr_get_devicetype_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _OU_ int* deviceType);
int dm_mgr_get_device_shadow_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _OU_ kk_tsl_t **shadow);
int dm_mgr_get_device_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _OU_ dm_mgr_dev_node_t **node);
int dm_mgr_get_device_by_productType(_IN_ char *productType, _OU_ dm_mgr_dev_node_t **node);
int dm_mgr_get_deviceNum_by_productType(_IN_ char *productType);
int dm_mgr_update_timestamp_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN],time_t timestamp);
int dm_mgr_set_dev_onoffline(dm_mgr_dev_node_t *node,int isOffline);
int dm_mgr_check_heartbeat_timeout(time_t timestamp);
......
......@@ -83,6 +83,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors"
#define KK_THING_EVENT_POST "/post"
void kk_sendData2app(void *info, void *payload,int isAsync);
......
......@@ -861,6 +861,67 @@ static int kk_service_executeScene_handle(cJSON *param,cJSON *msgId)
return res;
}
/************************************************************
*功能描述:获取主机下安防设备及对应等级
*输入参数:params:云端下发数据,包含场景Id等
msgId:消息Id
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_getGuardSensors_handle(cJSON *param,cJSON *msgId)
{
int res = 0;
int i = 0,num = 0;
SensorType_t *pList = NULL;
if(param == NULL || msgId == NULL){
return INVALID_PARAMETER;
}
cJSON *deviceCode = cJSON_GetObjectItem(param, MSG_DEVICE_CODE_STR);
if(deviceCode == NULL){
return FAIL_RETURN;
}
cJSON *productCode = cJSON_GetObjectItem(param, MSG_PRODUCT_CODE_STR);
if(productCode == NULL){
return FAIL_RETURN;
}
cJSON *info = cJSON_CreateObject();
cJSON_AddStringToObject(info, MSG_TYPE_STR, "/thing/service/getGuardSensors_reply");
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, deviceCode->valuestring);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, productCode->valuestring);
char *infff=cJSON_Print(info);
cJSON *payload = cJSON_CreateObject();
cJSON_AddStringToObject(payload, "desc", "success");
cJSON_AddStringToObject(payload, "version", "1.0");
cJSON_AddStringToObject(payload, "code", "0");
cJSON_AddStringToObject(payload, "msgId", msgId->valuestring);
cJSON *paramArray = cJSON_CreateArray();
num = dm_mgr_get_deviceNum_by_productType("sensor");
pList = (SensorType_t*)malloc(sizeof(SensorType_t)*num);
if(pList == NULL){
ERROR_PRINT("MALLOC ERROR!!!");
return -1;
}
memset(pList,0x0, sizeof(SensorType_t)*num);
kk_subDev_getSensors_reply(pList);
for(i = 0; i < num; i++){
cJSON *Item = cJSON_CreateObject();
cJSON_AddNumberToObject(Item, "SensorType", pList[i].SensorType);
cJSON_AddStringToObject(Item, "DeviceCode", pList[i].deviceCode);
cJSON_AddItemToArray(paramArray, Item);
}
char *paramArray22=cJSON_Print(paramArray);
cJSON_AddItemToObject(payload, "params", paramArray);
char *payload11=cJSON_Print(payload);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
free(pList);
cJSON_Delete(payload);
cJSON_Delete(info);
return res;
}
/************************************************************
*功能描述:收到云端数据后的回调处理
*输入参数:type:数据类型
data:具体数据
......@@ -935,6 +996,20 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
cJSON *state = cJSON_GetObjectItem(paramStr, KK_TSL_CCU_ARMINGSTATE_IDENTIFIER);
if(state != NULL){
cJSON *RoomIds = cJSON_GetObjectItem(paramStr, "RoomIds");
if(RoomIds != NULL){
kk_room_reset_armingstate();
int array_size = cJSON_GetArraySize ( RoomIds );
for( int iCnt = 0 ; iCnt < array_size ; iCnt ++ ){
cJSON * pSub = cJSON_GetArrayItem(RoomIds, iCnt);
if(NULL == pSub ){continue ; }
char roomId[16] = {0};
sprintf(roomId,"%d",pSub->valueint);
INFO_PRINT("id [%d] : %s\n",iCnt,roomId);
kk_room_update_armingstate(1,roomId);
}
}
dm_mgr_search_dev_by_devid(KK_DM_DEVICE_CCU_DEVICEID,&node);
res = kk_tsl_set_value(kk_tsl_set_property_value,node->dev_shadow,KK_TSL_CCU_ARMINGSTATE_IDENTIFIER,NULL,state->valuestring);
if(res != SUCCESS_RETURN)
......@@ -1038,6 +1113,11 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_executeScene_handle(paramStr,msgId);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_GETGUARDSENSORS) == 0){
INFO_PRINT("get guardgensors \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
kk_service_getGuardSensors_handle(info_root,msgId);
}
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_NEGATIVE) == 0){
INFO_PRINT("negative service \n");
cJSON *paramStr = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
......
......@@ -648,6 +648,51 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:更新设备注册标记
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int kk_subDev_getSensors_reply(SensorType_t*list)
{
char *sqlCmd = NULL;
int rc = 0;
const char *searchCmd = "select * from SubDeviceInfo WHERE productType= '%s'";
char *zErrMsg = 0;
sqlite3_stmt *stmt;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
char *pDeviceCode = NULL;
dm_mgr_dev_node_t *node = NULL;
int currentValue = 0;
int count = 0;
//printf("kk_subDev_getSensors_reply----------------------start\n");
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(searchCmd,"sensor");
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
//printf("kk_subDev_getSensors_reply----------------------num\n");
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
rc = dm_mgr_get_device_by_devicecode(pDeviceCode,&node);
if (rc != SUCCESS_RETURN) {
ERROR_PRINT("ERROR res:%d\n",rc);
continue;
}
//printf("pDeviceCode:%s\n",pDeviceCode);
kk_property_db_get_value(pDeviceCode,"SensorType",&currentValue);
//printf("currentValue:%d\n",currentValue);
memcpy(list[count].deviceCode,pDeviceCode,strlen(pDeviceCode));
list[count].SensorType = currentValue;
count++;
}
//printf("kk_subDev_getSensors_reply----------------------end\n");
sqlite3_finalize(stmt);
_kk_subDb_unlock();
sqlite3_free(sqlCmd);
return SUCCESS_RETURN;
}
......@@ -2,6 +2,10 @@
#define _KK_SUBDEV_DB_H_
#include "kk_tsl_common.h"
typedef struct {
char deviceCode[DEVICE_CODE_MAXLEN];
int SensorType;
} SensorType_t;
int kk_subDb_init(void);
int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
char deviceCode[DEVICE_CODE_MAXLEN],char fatherMac[DEVICE_MAC_MAXLEN],char mac[DEVICE_MAC_MAXLEN], char version[DEVICE_VERSION_MAXLEN],int heartbeat);
......@@ -18,6 +22,7 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode);
int kk_subDev_check_scene_support(const char *deviceCode);
int kk_subDev_set_action_by_productType(const char *productType,const char *sceneId,const char *propertyName,const char *propertyValue,const char *type);
int kk_subDev_update_offline(int isOffline,const char *deviceCode);
int kk_subDev_getSensors_reply(SensorType_t*list);
enum{
DB_SUB_IDX = 0,
DB_SUB_ONLINE,
......
......@@ -200,6 +200,7 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
int value = 0;
char *propertiesbuf[64] = {0};
char propertiesTmp[64] = {0};
res = dm_mgr_get_device_by_devicecode((char*)deviceCode,&node);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
......@@ -207,6 +208,22 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
}
params = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
if(params != NULL){
//传感器安防等级设置
if(strcmp(node->productType ,"sensor") == 0){
cJSON* sensorType = cJSON_GetObjectItem(params, "SensorType");
if(sensorType != NULL){
int level = sensorType->valueint;
res = kk_tsl_set_value(kk_tsl_set_property_value,node->dev_shadow,"SensorType",&level,NULL);
if(res != SUCCESS_RETURN)
{
ERROR_PRINT(" error res:%d\n",res);
}
char tmpValue[16] = {0};
sprintf(tmpValue,"%d",level);
kk_property_db_update_value(deviceCode,"SensorType",tmpValue);
return SUCCESS_RETURN;
}
}
epNum = cJSON_GetObjectItem(params, "epNum");
if(epNum != NULL){
epNumInt = atoi(epNum->valuestring);
......@@ -497,6 +514,73 @@ void gw2mid_cb(void* data, int len, char* chalMark){
*返 回 值: 无
*其他说明:
*************************************************************/
static int kk_alarm_notify_handle(dm_mgr_dev_node_t *node,char *identifier)
{
int currentValue = 0;
char armingstate[16] = {0};
int ret = 0;
if(node == NULL || identifier == NULL){
return -1;
}
kk_property_db_get_value(node->deviceCode,"SensorType",&currentValue);
kk_property_db_get_value(s_ccuid,KK_TSL_CCU_ARMINGSTATE_IDENTIFIER,armingstate);
cJSON *info = cJSON_CreateObject();
cJSON_AddStringToObject(info, MSG_TYPE_STR, "/thing/event/alarmNotify");
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, node->deviceCode);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, node->productCode);
char *infff=cJSON_Print(info);
cJSON *payload = cJSON_CreateObject();
cJSON_AddStringToObject(payload, "method", "thing.event.alarmNotify");
cJSON_AddStringToObject(payload, "version", "1.0");
cJSON_AddStringToObject(payload, "identifier", "alarmNotify");
cJSON_AddStringToObject(payload, "msgId", "1");
//char timerStr[16] = {0};
//HAL_GetTime_s(timerStr);
cJSON_AddNumberToObject(payload, "time", time(NULL));
cJSON *param = cJSON_CreateObject();
if(strcmp(identifier,"BatteryAlarm") == 0){
cJSON_AddStringToObject(param, "LowBatteryState", "1");
}else{
cJSON_AddStringToObject(param, "CommonAlarmState", "1");
}
cJSON_AddItemToObject(payload, "params", param);
char *payload11=cJSON_Print(payload);
if(currentValue == 2)//24小时警戒
{
kk_sendData2app(infff,payload11,0);
}
else if(currentValue == 1 && atoi(armingstate) == 0) //离家布防
{
kk_sendData2app(infff,payload11,0);
}
else if(currentValue == 0 && atoi(armingstate) == 2) //在家布防
{
kk_sendData2app(infff,payload11,0);
}
else if(atoi(armingstate) == 3 && currentValue == 0 )
{
char roomId[16] = {0};
ret = kk_get_roomId_by_deviceCode(node->deviceCode,"1",roomId,sizeof(roomId));
INFO_PRINT("roomId: [%s] \n",roomId);
if(ret == 1){
int state = kk_get_room_armingstate(roomId);
INFO_PRINT("state: [%d] \n",state);
if(state){
kk_sendData2app(infff,payload11,0);
}
}
}
free(payload11);
free(infff);
cJSON_Delete(payload);
cJSON_Delete(info);
return 0;
}
void kk_platMsg_handle(void* data, char* chalMark){
int res = 0;
cJSON *json;
......@@ -640,70 +724,38 @@ void kk_platMsg_handle(void* data, char* chalMark){
kk_tsl_data_t *itemData = NULL;
for(index = 0; index < eventItem->output_data_number;index++){
itemStr = cJSON_GetObjectItem(jsonPay, eventItem->identifier);
itemData = eventItem->output_datas + index;
#if 0
if(itemStr != NULL){
itemData = eventItem->output_datas + index;
cJSON * itemDataIdentifier = cJSON_GetObjectItem(jsonPay, itemData->identifier);
if(itemDataIdentifier != NULL){
memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
if(itemData->data_value.type == KK_TSL_DATA_TYPE_INT||
itemData->data_value.type == KK_TSL_DATA_TYPE_ENUM||
itemData->data_value.type == KK_TSL_DATA_TYPE_BOOL){
sprintf(valueBuf,"%d",itemStr->valueint);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valueint,NULL);
sprintf(valueBuf,"%d",itemDataIdentifier->valueint);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valueint,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_FLOAT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(valueBuf,"%f",itemStr->valuedouble);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valuedouble,NULL);
sprintf(valueBuf,"%f",itemDataIdentifier->valuedouble);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valuedouble,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_TEXT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DATE){
sprintf(valueBuf,"%s",itemStr->valuestring);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,NULL,itemStr->valuestring);
}
INFO_PRINT("kk_platMsg_handle data: event post\n");
sprintf(valueBuf,"%s",itemDataIdentifier->valuestring);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,NULL,itemDataIdentifier->valuestring);
}
if(sensorDev){
kk_history_insert_sensor_info(info_dcode->valuestring,eventItem->identifier,valueBuf,HAL_GetTime());
}
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_alarm_notify_handle(node,eventItem->identifier);//告警信息处理
}
INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier,NULL);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
}
else
#endif
cJSON * itemDataIdentifier = cJSON_GetObjectItem(jsonPay, itemData->identifier);
if(itemDataIdentifier != NULL){
memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
if(itemData->data_value.type == KK_TSL_DATA_TYPE_INT||
itemData->data_value.type == KK_TSL_DATA_TYPE_ENUM||
itemData->data_value.type == KK_TSL_DATA_TYPE_BOOL){
sprintf(valueBuf,"%d",itemDataIdentifier->valueint);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valueint,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_FLOAT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DOUBLE){
sprintf(valueBuf,"%f",itemDataIdentifier->valuedouble);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valuedouble,NULL);
}
else if(itemData->data_value.type == KK_TSL_DATA_TYPE_TEXT ||
itemData->data_value.type == KK_TSL_DATA_TYPE_DATE){
sprintf(valueBuf,"%s",itemDataIdentifier->valuestring);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,NULL,itemDataIdentifier->valuestring);
}
if(sensorDev){
kk_history_insert_sensor_info(info_dcode->valuestring,eventItem->identifier,valueBuf,HAL_GetTime());
}
INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier,NULL);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
}
}
}
}
else if(strcmp(eventItem->identifier,MSG_PROPERTY_STR) != 0 &&
eventItem->output_data_number == 0){
......
......@@ -222,7 +222,7 @@ else
cp -rf $(TOP_DIR)/common/ev/libev.so $(TOP_DIR)/$(releaseDir)/lib
cp -rf $(TOP_DIR)/common/sqlite/libsqlite3.so $(TOP_DIR)/$(releaseDir)/lib
endif
cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/build/exe/Z3GatewayHost $(TOP_DIR)/$(releaseDir)/
#cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/build/exe/Z3GatewayHost $(TOP_DIR)/$(releaseDir)/
fromdos $(releaseDir)/*.sh
echo $(PWD)
......
......@@ -104,13 +104,13 @@ done
\$(Q)mkdir -p \$\$(dirname \$@)
\$(Q)S=\$\$(echo \$@|sed 's,${OUTPUT_DIR},${TOP_DIR},1'); \\
if echo \$\${S//.o/.c} | grep -q 'mbedtls\|HAL_\|hal-impl'; then \\
${CC} -c -fPIC\\
${CC} -std=c99 -c -fPIC\\
-o \$@ \\
\$(filter-out -ansi,\$(CFLAGS)) \\
\$(IFLAGS) \\
\$\${S//.o/.c}; \\
else \\
${CC} -c -fPIC\\
${CC} -std=c99 -c -fPIC\\
-o \$@ \\
\$(CFLAGS) \\
\$(IFLAGS) \\
......@@ -181,8 +181,8 @@ done)
\$(Q)mkdir -p \$\$(dirname \$@)
\$(Q)\$(call Brief_Log,"SO",\$\$(basename \$@),"...")
\$(Q)${CC} -fPIC -shared \$^ -o \$@
\$(Q)${CC} -std=c99 -fPIC -shared \$^ -o \$@
EOB
done
......
......@@ -11,7 +11,7 @@ CONFIG_LIB_EXPORT ?= static
# Default CFLAGS setting
#
CFLAGS += -ansi
CFLAGS += -Wdeclaration-after-statement
CFLAGS += -Wno-unused-result
CFLAGS += -DFORCE_SSL_VERIFY
# Default INCLUDE list
......
......@@ -63,6 +63,21 @@
}
}
},
{
"identifier": "SensorType",
"name": "安防等级",
"accessMode": "rw",
"required": true,
"dataType": {
"type": "enum",
"specs": {
"0": "在家安防",
"1": "室外安防",
"2": "24小时警戒",
"3": "无警戒"
}
}
},
{
"identifier": "Battery",
"name": "电池电量",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment