add web and fix RSSI bugs

This commit is contained in:
zhangsheng 2024-11-12 20:04:43 +08:00
parent 01e7838b90
commit a36142bcf8
12 changed files with 175 additions and 61 deletions

View File

@ -1507,14 +1507,14 @@ void IniWriteValue(const char *section, const char *key, char *val, const char *
} }
int writeStringVlaue(const char *section, const char *key, char *val, const char *file) { int writeStringVlaue(const char *section, const char *key, char *val, const char *file) {
// char sect[SECTION_MAX_LEN]; char sect[SECTION_MAX_LEN];
zlog_debug(zct, "section = %s, key = %s, file = %s", section, key, file); zlog_debug(zct, "section = %s, key = %s, file = %s", section, key, file);
if (section == NULL || key == NULL || val == NULL || file == NULL) { if (section == NULL || key == NULL || val == NULL || file == NULL) {
zlog_error(zct, "input parameter(s) is NULL!"); zlog_error(zct, "input parameter(s) is NULL!");
return -1; return -1;
} }
// memset(sect, 0, SECTION_MAX_LEN); memset(sect, 0, SECTION_MAX_LEN);
// sprintf(sect, "[%s]", section); sprintf(sect, "[%s]", section);
IniWriteValue(section, key, val, file); IniWriteValue(section, key, val, file);
return 0; return 0;
} }

View File

@ -335,5 +335,12 @@ struct Param_61 {
int mPackageFlag; int mPackageFlag;
Param_61() : mMode(0),MeasurementID(""),straxis(""),mPackageFlag(0){}; Param_61() : mMode(0),MeasurementID(""),straxis(""),mPackageFlag(0){};
}; };
struct Param_62 {
std::string MeasurementID;
std::string timeStart;
std::string timeEnd;
int mPackageFlag;
Param_62() : MeasurementID(""),timeStart(""),timeEnd(""),mPackageFlag(0){};
};
#endif // PARAMETER_DEFINATION_HPP_ #endif // PARAMETER_DEFINATION_HPP_

View File

@ -37,7 +37,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
//创建传感器信息存储表 //创建传感器信息存储表
memset(sql_exec, 0, 2048); memset(sql_exec, 0, 2048);
sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);", sprintf(sql_exec, "create table if not exists %s(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);",
T_SENSOR_INFO(TNAME), T_SENSOR_INFO(TNAME),
T_SENSOR_INFO(DATANODENO), T_SENSOR_INFO(DATANODENO),
T_SENSOR_INFO(DATANODENAME), T_SENSOR_INFO(DATANODENAME),
@ -82,8 +82,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
T_SENSOR_INFO(RSSI), T_SENSOR_INFO(RSSI),
"UpdateFlag", "UpdateFlag",
"LooseValue", "LooseValue",
"batteryPower", "batteryPower");
"upgradeStatus");
CreateTable(sql_exec); CreateTable(sql_exec);
int iRet = GetTableRows(" sqlite_master "," name = 't_sensor_info' and sql LIKE '%LooseValue%' "); int iRet = GetTableRows(" sqlite_master "," name = 't_sensor_info' and sql LIKE '%LooseValue%' ");
@ -247,6 +246,7 @@ void SqliteDB::SqliteInit(const char *pDbName) {
execute_sql_file("/opt/configenv/firmware_upgrade.sql"); execute_sql_file("/opt/configenv/firmware_upgrade.sql");
execute_sql_file("/opt/configenv/receive_wave_status.sql");
} }
void SqliteDB::Createtable(const char *ptableName) { void SqliteDB::Createtable(const char *ptableName) {

View File

@ -67,6 +67,7 @@ public:
std::string JsonCmd_Cgi_59(Param_59 &param); std::string JsonCmd_Cgi_59(Param_59 &param);
std::string JsonCmd_Cgi_60(Param_60 &param); std::string JsonCmd_Cgi_60(Param_60 &param);
std::string JsonCmd_Cgi_61(Param_61 &param); std::string JsonCmd_Cgi_61(Param_61 &param);
std::string JsonCmd_Cgi_62(Param_62 &param);
std::string JsonCmd_Cgi_default(); std::string JsonCmd_Cgi_default();
private: private:

View File

@ -44,7 +44,6 @@ std::string JsonData::JsonCmd_20(Param_20 &param) {
std::string boardtype = GetFileContent(BOARDTYPE, 1); std::string boardtype = GetFileContent(BOARDTYPE, 1);
std::string ip = IpAddrInit(); std::string ip = IpAddrInit();
std::string sn = GetFileContent(SN, 1);
jsonVal[JSON_FIELD_CMD] = "20"; jsonVal[JSON_FIELD_CMD] = "20";
jsonVal[JSON_FIELD_dataNodeGatewayNo] = GlobalConfig::MacAddr_G; jsonVal[JSON_FIELD_dataNodeGatewayNo] = GlobalConfig::MacAddr_G;
jsonVal["cmdSerial"] = param.mCmdSerial; jsonVal["cmdSerial"] = param.mCmdSerial;
@ -67,7 +66,6 @@ std::string JsonData::JsonCmd_20(Param_20 &param) {
jsSystemInfo[JSON_FIELD_ADDEDDATE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedDate"); jsSystemInfo[JSON_FIELD_ADDEDDATE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedDate");
jsSystemInfo[JSON_FIELD_DEVICETYPE] = boardtype; jsSystemInfo[JSON_FIELD_DEVICETYPE] = boardtype;
jsSystemInfo[JSON_FIELD_IPADDRESS] = ip; jsSystemInfo[JSON_FIELD_IPADDRESS] = ip;
jsSystemInfo[JSON_FIELD_SN] = sn;
jsSystemInfo[JSON_FIELD_VERSION] = GlobalConfig::Version; jsSystemInfo[JSON_FIELD_VERSION] = GlobalConfig::Version;
jsSystemInfo[JSON_FIELD_TIMEZONE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "timezone"); jsSystemInfo[JSON_FIELD_TIMEZONE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "timezone");
jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID; jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID;

View File

@ -386,7 +386,6 @@ std::string JsonData::JsonCmd_Cgi_20(Param_20 &param) {
} }
std::string ip = IpAddrInit(); std::string ip = IpAddrInit();
std::string sn = GetFileContent(SN, 1);
jsonVal[JSON_FIELD_CMD] = "20"; jsonVal[JSON_FIELD_CMD] = "20";
jsonVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G; jsonVal["dataNodeGatewayNo"] = GlobalConfig::MacAddr_G;
jsonVal["success"] = true; jsonVal["success"] = true;
@ -402,7 +401,6 @@ std::string JsonData::JsonCmd_Cgi_20(Param_20 &param) {
jsSystemInfo[JSON_FIELD_ADDEDBY] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedBy"); jsSystemInfo[JSON_FIELD_ADDEDBY] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedBy");
jsSystemInfo[JSON_FIELD_ADDEDDATE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedDate"); jsSystemInfo[JSON_FIELD_ADDEDDATE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "dataNodeGatewayAddedDate");
jsSystemInfo[JSON_FIELD_IPADDRESS] = ip; jsSystemInfo[JSON_FIELD_IPADDRESS] = ip;
jsSystemInfo[JSON_FIELD_SN] = sn;
jsSystemInfo[JSON_FIELD_VERSION] = GlobalConfig::Version; jsSystemInfo[JSON_FIELD_VERSION] = GlobalConfig::Version;
jsSystemInfo[JSON_FIELD_TIMEZONE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "timezone"); jsSystemInfo[JSON_FIELD_TIMEZONE] = ReadStrByOpt(SYSTEMINFOFILE, "SystemInfo", "timezone");
jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID; jsSystemInfo["zigbeePanId"] = GlobalConfig::ZigbeeInfo_G.PanID;

View File

@ -829,3 +829,80 @@ std::string JsonData::JsonCmd_Cgi_61(Param_61 &param){
} }
return show_value_.write(jsonVal); return show_value_.write(jsonVal);
} }
std::string JsonData::JsonCmd_Cgi_62(Param_62 &param){
Json::Value jsonVal;
jsonVal.clear();
jsonVal[JSON_FIELD_CMD] = "61";
jsonVal["success"] = true;
jsonVal["message"] = " ";
vec_t vetRes = sqlite_db_ctrl::instance().GetDataMultiLineOfOneColumn(T_SENSOR_INFO(TNAME), T_SENSOR_INFO(DATANODENO), NULL);
int nSize = vetRes.size();
if (nSize > 0) {
char szTableName[100] = {0x00}, whereCon[256] = {0x00};
sprintf(szTableName, " receive_wave_status ");
sprintf(whereCon, " data_nodeno = '%s' and timeStamp < '%s' and timeStamp > '%s' ", param.MeasurementID.c_str(), param.timeEnd.c_str(), param.timeStart.c_str());
int rows = sqlite_db_ctrl::instance().GetTableRows(szTableName, whereCon);
int packgeNo = param.mPackageFlag;
int packgeMax = 0;
int packgeNum = 0;
jsonVal["package"] = packgeNo;
int lastSize = rows % 550;
int index = rows / 550;
if (lastSize > 0 && index > 0) {
packgeMax = index + 1;
if (packgeNo + 1 == packgeMax) {
packgeNum = rows - lastSize;
jsonVal["packageMax"] = index + 1;
} else {
packgeNum = (packgeNo)*550;
jsonVal["packageMax"] = index + 1;
}
} else if (lastSize == 0 && index > 0) {
packgeNum = (packgeNo + 1) * 550;
packgeMax = index;
jsonVal["packageMax"] = index;
} else if (lastSize > 0 && index == 0) {
packgeNum = 0;
packgeMax = index + 1;
jsonVal["packageMax"] = index;
}
memset(whereCon, 0x00, sizeof(whereCon));
sprintf(whereCon, "data_nodeno = '%s' and timeStamp < '%s' and timeStamp > '%s' order by timeStamp asc LIMIT %d OFFSET %d", param.MeasurementID.c_str(), param.timeEnd.c_str(), param.timeStart.c_str(), 550, packgeNum);
array_t vecRes;
vecRes = sqlite_db_ctrl::instance().GetDataMultiLine(szTableName, "*", whereCon);
zlog_info(zct, "vecRes = %d", vecRes.size());
if (vecRes.size() > 0) {
Json::Value jsStaticData;
for (size_t i = 0; i < vecRes.size(); i++) {
Json::Value iTem;
iTem.append(vecRes[i][2]);
iTem.append(vecRes[i][4]);
iTem.append(vecRes[i][5]);
jsStaticData.append(iTem);
}
if (jsStaticData.size() == 0) {
jsonVal["success"] = false;
jsonVal["content"].resize(0);
} else {
jsonVal["content"] = (jsStaticData);
}
zlog_info(zct, "vecRes = %d,channelID = %s", vecRes.size(), vecRes[0][0].c_str());
} else {
jsonVal["success"] = false;
jsonVal["content"].resize(0);
}
} else {
jsonVal["success"] = false;
jsonVal["content"].resize(0);
}
return show_value_.write(jsonVal);
}

View File

@ -223,9 +223,6 @@ void PlatformInit::SystemInfoInit() {
Systeminfo["dataWatchIpAddress"] = GlobalConfig::IpAddr_G; Systeminfo["dataWatchIpAddress"] = GlobalConfig::IpAddr_G;
Systeminfo["softVersion"] = GlobalConfig::Version; Systeminfo["softVersion"] = GlobalConfig::Version;
std::string strSerialNumber = GetFileContent(SN, 1);
Systeminfo["serialNumber"] = strSerialNumber;
Json::StyledWriter sw; Json::StyledWriter sw;
std::ofstream os; std::ofstream os;
os.open(SYSTEMINFOFILE); os.open(SYSTEMINFOFILE);

View File

@ -352,15 +352,10 @@ void int2bytes(int i, unsigned char *bytes, int size) {
bytes[2] = (unsigned char)((0xff0000 & i) >> 16); bytes[2] = (unsigned char)((0xff0000 & i) >> 16);
bytes[3] = (unsigned char)((0xff000000 & i) >> 24); bytes[3] = (unsigned char)((0xff000000 & i) >> 24);
} }
int Uart::GetLocalZigbeeRSSI(uint16_t ushortAdd){ void Uart::GetLocalZigbeeRSSI(uint16_t ushortAdd){
zlog_info(zct, "Local Zigbee Signal !\n"); zlog_info(zct, "Local Zigbee Signal !\n");
int Times = 0;
mssleep(20000); mssleep(20000);
while (Times < 3) { getZigbeeSignal(ushortAdd);
getZigbeeSignal(ushortAdd);
Times++;
mssleep(20000);
}
mssleep(10000); mssleep(10000);
} }
int Uart::DealAskTask(uint16_t ushortAdd){ int Uart::DealAskTask(uint16_t ushortAdd){
@ -488,7 +483,7 @@ int Uart::DealSensorRSSI(const char *pData,uint16_t ushortAdd){
sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd)); sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd));
vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " MeasurementID,RSSI ", whereCon); vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " MeasurementID,RSSI ", whereCon);
sprintf(insertSql, "'%s','%s-S','','','','', '%02d','','%s','','','','','' ", vecDataNodeNo[0].c_str(),vecDataNodeNo[0].c_str(),atoi(sensor_rssi),localtimestamp); // zigbeeRSSIType = 0 传感器获取网关信号强度 sprintf(insertSql, "'%s','%s-S','','','','', '','','%s','','','%02d','','' ", vecDataNodeNo[0].c_str(),vecDataNodeNo[0].c_str(),localtimestamp,atoi(sensor_rssi)); // zigbeeRSSIType = 0 传感器获取网关信号强度
sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str()); sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str());
sqlite_db_ctrl::instance().InsertData(tableName, insertSql); sqlite_db_ctrl::instance().InsertData(tableName, insertSql);
@ -503,6 +498,23 @@ int Uart::DealSensorRSSI(const char *pData,uint16_t ushortAdd){
} }
return 0; return 0;
} }
int Uart::DealUpgrade(uint16_t ushortAdd,int status){
char updateSql[100] = {0};
char wherecon[100] = {0};
memset(wherecon,0,sizeof(wherecon));
memset(updateSql,0,sizeof(updateSql));
sprintf(wherecon," zigbeeShortAddr = '%02x%02x' ",UINT16_HIGH(ushortAdd), UINT16_LOW(ushortAdd));
sprintf(updateSql, " upgradeStatus = %d", status);
sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), updateSql,wherecon);
memset(updateSql,0,sizeof(updateSql));
memset(wherecon,0,sizeof(wherecon));
sprintf(wherecon," short_addr = '%02x%02x' order by start_timestamp DESC",UINT16_HIGH(ushortAdd), UINT16_LOW(ushortAdd));
sprintf(updateSql, " status = %d",status);
sqlite_db_ctrl::instance().UpdateTableData(" firmware_upgrade ", updateSql,wherecon);
return 0;
}
void Uart::DealRecvData(const char *pData) { void Uart::DealRecvData(const char *pData) {
uint16_t ushortAdd = BUILD_UINT16(pData[3] & 0xFF, pData[4] & 0xFF); uint16_t ushortAdd = BUILD_UINT16(pData[3] & 0xFF, pData[4] & 0xFF);
@ -529,9 +541,11 @@ void Uart::DealRecvData(const char *pData) {
break; break;
case UPGRADE: case UPGRADE:
if (recvcode == 0){ if (recvcode == 0){
DealUpgrade(ushortAdd,2);
scheduler::instance().UpgradeResult(ushortAdd,0); scheduler::instance().UpgradeResult(ushortAdd,0);
zlog_info(zbt, "[UPGRADE SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); zlog_info(zbt, "[UPGRADE SUCCESS] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
}else{ }else{
DealUpgrade(ushortAdd,3);
scheduler::instance().UpgradeResult(ushortAdd,recvcode); scheduler::instance().UpgradeResult(ushortAdd,recvcode);
zlog_error(zbt, "[UPGRADE FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode); zlog_error(zbt, "[UPGRADE FAILED] shortAdd = %02x%02x,command = %d,recvcode = %d ",UINT16_HIGH(ushortAdd),UINT16_LOW(ushortAdd),command,recvcode);
} }
@ -971,7 +985,8 @@ void Uart::ZigbeeParameterConfig() {
} }
int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) { int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) {
std::string strTime = GetLocalTimeWithMs(); char localtimestamp[32] = {0};
GetTimeNet(localtimestamp, 1);
char head1[] = {0xAB, 0xBC, 0xCD}; char head1[] = {0xAB, 0xBC, 0xCD};
char head2[] = {0xDE, 0xDF, 0xEF}; char head2[] = {0xDE, 0xDF, 0xEF};
int lastSize = 0; int lastSize = 0;
@ -1021,6 +1036,15 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) {
strcat(tmp2, tmp); strcat(tmp2, tmp);
} }
zlog_error(zct, "error str = %s", tmp2); zlog_error(zct, "error str = %s", tmp2);
char insertSql[100] = {0x00};
char whereCon[50] = {0x00};
sprintf(whereCon, "zigbeeShortAddr='%s'",strShortAddr.c_str());
std::string strDataNodeNo = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " dataNodeNo ", whereCon);
memset(whereCon, 0x00, sizeof(whereCon));
sprintf(insertSql, "'%s','%s','%s',%d,'%d','%s' ", strDataNodeNo.c_str(),strShortAddr.c_str(),localtimestamp,bytesRead,1,"Index error");
sqlite_db_ctrl::instance().InsertData(" receive_wave_status ", insertSql);
break; break;
} }
@ -1043,6 +1067,14 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) {
g_VecWaveDataX.clear(); g_VecWaveDataX.clear();
g_VecWaveDataY.clear(); g_VecWaveDataY.clear();
g_VecWaveDataZ.clear(); g_VecWaveDataZ.clear();
char insertSql[100] = {0x00};
char whereCon[50] = {0x00};
sprintf(whereCon, "zigbeeShortAddr='%s'",strShortAddr.c_str());
std::string strDataNodeNo = sqlite_db_ctrl::instance().GetData(T_SENSOR_INFO(TNAME), " dataNodeNo ", whereCon);
memset(whereCon, 0x00, sizeof(whereCon));
sprintf(insertSql, "'%s','%s','%s',%d,'%d','%s' ", strDataNodeNo.c_str(),strShortAddr.c_str(),localtimestamp,bytesRead,2,"Crc error");
sqlite_db_ctrl::instance().InsertData(" receive_wave_status ", insertSql);
break; break;
} }
mlastSize = 0; mlastSize = 0;
@ -1173,11 +1205,11 @@ int Uart::FindRecvPackage(int bytesRead, char *mUartRecvBuf, char *head) {
char tableName[100] = {0x00}; char tableName[100] = {0x00};
char insertSql[100] = {0x00}; char insertSql[100] = {0x00};
bZigbeeSinal = false; bZigbeeSinal = false;
sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UartRecvBuf[i + 3] & 0xFF, UartRecvBuf[i + 4] & 0xFF); sprintf(whereCon, "zigbeeShortAddr='%02x%02x'", UINT16_HIGH(wave_shortAddr),UINT16_LOW(wave_shortAddr));
vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " dataNodeNo,LooseValue,RSSI ", whereCon); vec_t vecDataNodeNo = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " dataNodeNo,LooseValue,RSSI ", whereCon);
memset(whereCon, 0x00, sizeof(whereCon)); memset(whereCon, 0x00, sizeof(whereCon));
sprintf(insertSql, "'%s','%s-S','','','','', '','','%s','','','%02d','','' ", vecDataNodeNo[0].c_str(),vecDataNodeNo[0].c_str(),localtimestamp,UartRecvBuf[i + 6] & 0xFF); // zigbeeRSSIType = 0 传感器获取网关信号强度 sprintf(insertSql, "'%s','%s-S','','','','', '%02d','','%s','','','','','' ", vecDataNodeNo[0].c_str(),vecDataNodeNo[0].c_str(),UartRecvBuf[i + 6] & 0xFF,localtimestamp); // zigbeeRSSIType = 0 传感器获取网关信号强度
sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str()); sprintf(tableName, "t_dataStatic_%s", (char *)vecDataNodeNo[0].c_str());
sqlite_db_ctrl::instance().InsertData(tableName, insertSql); sqlite_db_ctrl::instance().InsertData(tableName, insertSql);

View File

@ -172,7 +172,8 @@ public:
int DealConfig(uint16_t ushortAdd); int DealConfig(uint16_t ushortAdd);
int DealWaveCompress(const char *pData,uint16_t ushortAdd); int DealWaveCompress(const char *pData,uint16_t ushortAdd);
int DealSensorRSSI(const char *pData,uint16_t ushortAdd); int DealSensorRSSI(const char *pData,uint16_t ushortAdd);
int GetLocalZigbeeRSSI(uint16_t ushortAdd); int DealUpgrade(uint16_t ushortAdd,int status);
void GetLocalZigbeeRSSI(uint16_t ushortAdd);
// feature parse // feature parse
void DealDataNodeFeature(const char* pData, int flag); void DealDataNodeFeature(const char* pData, int flag);

View File

@ -154,26 +154,8 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
memset(whereCon, 0x00, sizeof(whereCon)); memset(whereCon, 0x00, sizeof(whereCon));
sprintf(szTableNameData, "t_data_%s", strMeasurementID.c_str()); sprintf(szTableNameData, "t_data_%s", strMeasurementID.c_str());
///////////////////////////////////////////////////////////// for V2.0.3 upgrade to V3.0 ///////////////////////////////////////////////////////////// for V2.0.3 upgrade to V3.0
std::string strTmp = "";
char sztmp[100] = {0x00};
strTmp = "name = '" + std::string(szTableNameStatic) + "' and sql LIKE '%nodeResend%' ";
int row = sqlite_db_ctrl::instance().GetTableRows(" sqlite_master ", strTmp.c_str());
zlog_info(zct, "row1 = %d", row);
if (row == 0) {
memset(sztmp, 0x00, sizeof(sztmp));
sprintf(sztmp, "ALTER TABLE %s ADD COLUMN 'nodeResend'", szTableNameStatic);
sqlite_db_ctrl::instance().CreateTable(sztmp);
}
strTmp = "name = '" + std::string(szTableNameData) + "' and sql LIKE '%nodeResend%' ";
row = sqlite_db_ctrl::instance().GetTableRows(" sqlite_master ", strTmp.c_str());
zlog_info(zct, "row2 = %d", row);
if (row == 0) {
memset(sztmp, 0x00, sizeof(sztmp));
sprintf(sztmp, "ALTER TABLE %s ADD COLUMN 'nodeResend'", szTableNameData);
sqlite_db_ctrl::instance().CreateTable(sztmp);
}
////////////////////////////////////////////////////////////更换电池判断 ////////////////////////////////////////////////////////////更换电池判断
// sprintf(whereCon, " dataNodeNo = '%s' and StaticIndex > 0 order by StaticIndex desc LIMIT 0 , 1 ", strLongAddr.c_str()); // sprintf(whereCon, " dataNodeNo = '%s' and StaticIndex > 0 order by StaticIndex desc LIMIT 0 , 1 ", strLongAddr.c_str());
@ -199,16 +181,35 @@ void Uart::DealDataNodeFeature(const char *pData, int flag) {
// } // }
// } // }
zlog_info(zct, "nowTimetamp = %s", nowTimetamp.c_str()); zlog_info(zct, "nowTimetamp = %s", nowTimetamp.c_str());
// save dataStatic of 7 days
char selectCon[128] = {0};
sprintf(selectCon, "channelID='%s' ORDER BY timeStamp ASC LIMIT 0,1", (strMeasurementID + "-S").c_str());
std::string strTime = sqlite_db_ctrl::instance().GetData(szTableName, "timeStamp", selectCon);
sprintf(whereCon, "channelID='%s' ", (strMeasurementID + "-S").c_str()); sprintf(whereCon, "channelID='%s' ", (strMeasurementID + "-S").c_str());
int Count = sqlite_db_ctrl::instance().GetTableRows(szTableName, whereCon); int Count = sqlite_db_ctrl::instance().GetTableRows(szTableName, whereCon);
if (Count == -1) { if (Count == -1) {
sqlite_db_ctrl::instance().CreatedataStatictable(szTableName); sqlite_db_ctrl::instance().CreatedataStatictable(szTableName);
sqlite_db_ctrl::instance().Createtable(szTableNameData); sqlite_db_ctrl::instance().Createtable(szTableNameData);
} }
std::string strTmp = "";
char sztmp[100] = {0x00};
strTmp = "name = '" + std::string(szTableNameStatic) + "' and sql LIKE '%nodeResend%' ";
int row = sqlite_db_ctrl::instance().GetTableRows(" sqlite_master ", strTmp.c_str());
zlog_info(zct, "row1 = %d", row);
if (row == 0) {
memset(sztmp, 0x00, sizeof(sztmp));
sprintf(sztmp, "ALTER TABLE %s ADD COLUMN 'nodeResend'", szTableNameStatic);
sqlite_db_ctrl::instance().CreateTable(sztmp);
}
strTmp = "name = '" + std::string(szTableNameData) + "' and sql LIKE '%nodeResend%' ";
row = sqlite_db_ctrl::instance().GetTableRows(" sqlite_master ", strTmp.c_str());
zlog_info(zct, "row2 = %d", row);
if (row == 0) {
memset(sztmp, 0x00, sizeof(sztmp));
sprintf(sztmp, "ALTER TABLE %s ADD COLUMN 'nodeResend'", szTableNameData);
sqlite_db_ctrl::instance().CreateTable(sztmp);
}
char selectCon[128] = {0};
sprintf(selectCon, "channelID='%s' ORDER BY timeStamp ASC LIMIT 0,1", (strMeasurementID + "-S").c_str());
std::string strTime = sqlite_db_ctrl::instance().GetData(szTableName, "timeStamp", selectCon);
zlog_info(zct, "strLongAddr = %s,strTime = %s", strLongAddr.c_str(), strTime.c_str()); zlog_info(zct, "strLongAddr = %s,strTime = %s", strLongAddr.c_str(), strTime.c_str());
long lTime = atol(nowTimetamp.c_str()) - atol(strTime.c_str()); long lTime = atol(nowTimetamp.c_str()) - atol(strTime.c_str());
zlog_info(zct, "lTime = %ld,OneWeek = %d", lTime, OneWeek); zlog_info(zct, "lTime = %ld,OneWeek = %d", lTime, OneWeek);
@ -752,9 +753,9 @@ void Uart::DealWave() {
std::string strProduct = ""; std::string strProduct = "";
std::vector<float> vecData; std::vector<float> vecData;
if (wave_trans_) { //对每个传感器的每个通道进行遍历然后处理数据例如传感器1x轴的数据处理完后再去处理y轴的。传感器1的所有数据处理完后再处理传感器2的 if (wave_trans_) { //对每个传感器的每个通道进行遍历然后处理数据例如传感器1x轴的数据处理完后再去处理y轴的。传感器1的所有数据处理完后再处理传感器2的
char getLongAddr_sql[32] = {0}; char getzigbeeShortAddr[32] = {0};
sprintf(getLongAddr_sql, "zigbeeShortAddr='%02x%02x'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF); sprintf(getzigbeeShortAddr, "zigbeeShortAddr='%02x%02x'", (wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF);
vec_t res = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " * ", getLongAddr_sql); vec_t res = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " * ", getzigbeeShortAddr);
if (res.size() < 0) if (res.size() < 0)
{ {
wave_trans_ = false; wave_trans_ = false;
@ -809,6 +810,14 @@ void Uart::DealWave() {
g_VecWaveDataZ.clear(); g_VecWaveDataZ.clear();
VecWaveDataZ.clear(); VecWaveDataZ.clear();
} }
char localtimestamp[32] = {0};
GetTimeNet(localtimestamp, 1);
char insertSql[100] = {0x00};
char whereCon[50] = {0x00};
sprintf(whereCon, "MeasurementID='%s'",strMeasurementID.c_str());
memset(whereCon, 0x00, sizeof(whereCon));
sprintf(insertSql, "'%s','%02x%02x','%s',0,'0','%s' ", strMeasurementID.c_str(),(wave_shortAddr >> 8) & 0xFF,wave_shortAddr & 0xFF,localtimestamp,"");
sqlite_db_ctrl::instance().InsertData(" receive_wave_status ", insertSql);
wave_trans_ = false; wave_trans_ = false;
} }
} }
@ -988,6 +997,7 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan
} else { } else {
zlog_info(zct, "send data , filename %s,size = %d\n", strFileName.c_str(), vecData.size()); zlog_info(zct, "send data , filename %s,size = %d\n", strFileName.c_str(), vecData.size());
} }
#ifdef G2UL_GATEWAY //存储6条波形数据 #ifdef G2UL_GATEWAY //存储6条波形数据
char whereCon[1024] = {0x00}; char whereCon[1024] = {0x00};
char updateSql[1024] = {0x00}; char updateSql[1024] = {0x00};

View File

@ -170,7 +170,7 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
GetTimeNet(localtimestamp, 1); GetTimeNet(localtimestamp, 1);
char insertSql[100] = {0}; char insertSql[100] = {0};
char wherecon[50] = {0}; char wherecon[50] = {0};
sprintf(wherecon," shortAddr = '%02x%02x' order by start_timestamp DESC",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); sprintf(wherecon," short_Addr = '%02x%02x' order by start_timestamp DESC",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
std::string spend_count = sqlite_db_ctrl::instance().GetData(" firmware_upgrade ","spend_count",wherecon); std::string spend_count = sqlite_db_ctrl::instance().GetData(" firmware_upgrade ","spend_count",wherecon);
if (atoi(spend_count.c_str()) >= 10){ if (atoi(spend_count.c_str()) >= 10){
zlog_warn(zbt, "UpdateWirelessNode spend_count %d,shortAddr = %02x%02x", atoi(spend_count.c_str()), UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); zlog_warn(zbt, "UpdateWirelessNode spend_count %d,shortAddr = %02x%02x", atoi(spend_count.c_str()), UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
@ -179,13 +179,12 @@ void Uart::UpdateWirelessNode(uint16_t shortAdd) {
if (spend_count == "")spend_count = "0"; if (spend_count == "")spend_count = "0";
memset(wherecon,0,sizeof(wherecon)); memset(wherecon,0,sizeof(wherecon));
sprintf(wherecon," shortAddr = '%02x%02x' order by submit_timestamp DESC",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); sprintf(wherecon," short_Addr = '%02x%02x' order by submit_timestamp DESC",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
std::string firmware_name = sqlite_db_ctrl::instance().GetData(" firmware_upgrade ","firmware_name",wherecon); std::string firmware_name = sqlite_db_ctrl::instance().GetData(" firmware_upgrade ","firmware_name",wherecon);
memset(wherecon,0,sizeof(wherecon)); memset(wherecon,0,sizeof(wherecon));
sprintf(wherecon," zigbeeShortAddr = '%02x%02x' ",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); sprintf(wherecon," zigbeeShortAddr = '%02x%02x' ",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " hardVersion,softVersion,ProductNo,upgradeStatus ", wherecon); vec_t vecResult = sqlite_db_ctrl::instance().GetDataSingleLine(T_SENSOR_INFO(TNAME), " hardVersion,softVersion,ProductNo,upgradeStatus ", wherecon);
if (vecResult[3] == "2") if (vecResult[3] == "2"){
{
zlog_warn(zbt, "UpdateWirelessNode already ,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd)); zlog_warn(zbt, "UpdateWirelessNode already ,shortAddr = %02x%02x", UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
return; return;
} }
@ -398,12 +397,6 @@ endUpdate:
sprintf(updateSql, " end_timestamp = '%s',spend_time = %ld,status = %d",localtimestamp_end,atol(localtimestamp_end)-atol(localtimestamp), upgrade_status); sprintf(updateSql, " end_timestamp = '%s',spend_time = %ld,status = %d",localtimestamp_end,atol(localtimestamp_end)-atol(localtimestamp), upgrade_status);
sqlite_db_ctrl::instance().UpdateTableData(" firmware_upgrade ", updateSql,wherecon); sqlite_db_ctrl::instance().UpdateTableData(" firmware_upgrade ", updateSql,wherecon);
memset(wherecon,0,sizeof(wherecon));
memset(updateSql,0,sizeof(updateSql));
sprintf(wherecon," zigbeeShortAddr = '%02x%02x'",UINT16_HIGH(shortAdd), UINT16_LOW(shortAdd));
sprintf(updateSql, " upgradeStatus = %d", upgrade_status);
sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), updateSql,wherecon);
free(buffer); free(buffer);
tcflush(fd, TCIFLUSH); tcflush(fd, TCIFLUSH);
sleep(1); sleep(1);