modify mqtt

This commit is contained in:
zhangsheng 2024-11-28 09:16:56 +08:00
parent 862b992c8c
commit 888bea8fa3
7 changed files with 56 additions and 41 deletions

View File

@ -257,6 +257,8 @@ 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"); execute_sql_file("/opt/configenv/receive_wave_status.sql");
execute_sql_file("/opt/configenv/reboot_record.sql");
} }
void SqliteDB::Createtable(const char *ptableName) { void SqliteDB::Createtable(const char *ptableName) {

View File

@ -227,6 +227,9 @@ std::string JsonData::JsonCmd_26(Param_26 &param) {
for (int j = 0; j < iResult; j++) { for (int j = 0; j < iResult; j++) {
Json::Value jsSensorData; Json::Value jsSensorData;
jsSensorData["dataNodeNo"] = arrRes[j][44]; jsSensorData["dataNodeNo"] = arrRes[j][44];
char NodeName[100]={0};
stringToHex(arrRes[j][1].c_str(),NodeName);
jsSensorData["dataNodeNameHex"] = NodeName;
jsSensorData["dataNodeName"] = arrRes[j][1]; jsSensorData["dataNodeName"] = arrRes[j][1];
jsSensorData["initFlag"] = atoi(arrRes[j][2].c_str()); jsSensorData["initFlag"] = atoi(arrRes[j][2].c_str());
jsSensorData["accFlag"] = atoi(arrRes[j][3].c_str()); jsSensorData["accFlag"] = atoi(arrRes[j][3].c_str());
@ -523,7 +526,9 @@ int JsonData::JsonCmd_30(){
for (int j = 0; j < iResult; j++) { for (int j = 0; j < iResult; j++) {
Json::Value jsSensorData; Json::Value jsSensorData;
jsSensorData["dataNodeNo"] = arrRes[j][44]; jsSensorData["dataNodeNo"] = arrRes[j][44];
jsSensorData["dataNodeName"] = arrRes[j][1]; char NodeName[100]={0};
stringToHex(arrRes[j][1].c_str(),NodeName);
jsSensorData["dataNodeName"] = NodeName;
jsSensorData["acc"] = atoi(arrRes[j][3].c_str()); jsSensorData["acc"] = atoi(arrRes[j][3].c_str());
jsSensorData["zigbee"] = atoi(arrRes[j][4].c_str()); jsSensorData["zigbee"] = atoi(arrRes[j][4].c_str());
@ -581,7 +586,7 @@ int JsonData::JsonCmd_30(){
std::vector<std::string> vParambattery; std::vector<std::string> vParambattery;
boost::split(vParambattery, arrRes[j][43], boost::is_any_of(","), boost::token_compress_on); boost::split(vParambattery, arrRes[j][43], boost::is_any_of(","), boost::token_compress_on);
if (vParambattery.size() > 1) { if (vParambattery.size() > 1) {
jsSensorData["battery"] = atoi(vParambattery[1].c_str())/atoi(vParambattery[0].c_str()); jsSensorData["battery"] = float(atof(vParambattery[1].c_str())/atof(vParambattery[0].c_str()));
} else { } else {
jsSensorData["battery"] = 0.99; jsSensorData["battery"] = 0.99;
} }
@ -700,16 +705,12 @@ void JsonData::DataNodeStatusCheck() {
char whereCon[32] = {0}; char whereCon[32] = {0};
sprintf(whereCon, "dataNodeNo='%s'", strDataNodeNo.c_str()); sprintf(whereCon, "dataNodeNo='%s'", strDataNodeNo.c_str());
sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), "status='0'", whereCon); sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), "status='0'", whereCon);
count++;
} else { } else {
char whereCon[32] = {0}; char whereCon[32] = {0};
sprintf(whereCon, "dataNodeNo='%s'", strDataNodeNo.c_str()); sprintf(whereCon, "dataNodeNo='%s'", strDataNodeNo.c_str());
sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), "status='1'", whereCon); sqlite_db_ctrl::instance().UpdateTableData(T_SENSOR_INFO(TNAME), "status='1'", whereCon);
} }
if (lTimeTemp > atoi(vetRes[i][21].c_str()) * 5 * 60) //判定传感器是否超过五次未传特征值
{
zlog_info(zct, "lTimeTemp = %d,featureInterVal = %d", lTimeTemp, atoi(vetRes[i][21].c_str()));
count++;
}
} }
} }
if (count == nSize && nodeOnline && count != 0) { if (count == nSize && nodeOnline && count != 0) {

View File

@ -142,7 +142,7 @@ int main(int argc, char *argv[]) {
// gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1); // gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 1);
// usleep(20000); // usleep(20000);
// gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 0); // gpio_set(GlobalConfig::GPIO_G.hardWatchDog, 0);
//WriteWatchDog(fd); // WriteWatchDog(fd);
sleep(20); sleep(20);
if (GlobalConfig::threadStatus == 0) { if (GlobalConfig::threadStatus == 0) {
count++; count++;

View File

@ -98,9 +98,10 @@ void CheckThread() {
#endif #endif
} }
} }
if (HardStatus == 3600) { // one hour 3600 if (HardStatus == 60) { // one hour 3600
JsonData jd; JsonData jd;
jd.JsonCmd_07(); jd.JsonCmd_07();
jd.JsonCmd_30();
HardStatus = 0; HardStatus = 0;
} }
if (mqttresend == 7200) { if (mqttresend == 7200) {
@ -137,12 +138,17 @@ void CheckThread() {
} }
if (7200 == Battery) { if (7200 == Battery) {
Battery = 0; Battery = 0;
zlog_info(zct, "Battery"); zlog_warn(zct, "Battery");
sqlite_db_ctrl::instance().CalculateBattery(); sqlite_db_ctrl::instance().CalculateBattery();
JsonData jd;
jd.JsonCmd_30();
jd.JsonCmd_07();
jd.JsonCmd_29();
jd.JsonCmd_31();
} }
if (3500 == loose_check) { if (3500 == loose_check) {
zlog_info(zct, "loosecheck\n"); zlog_warn(zct, "loosecheck\n");
loose_check = 0; loose_check = 0;
sqlite_db_ctrl::instance().CalculateDip(); sqlite_db_ctrl::instance().CalculateDip();
} }

View File

@ -209,15 +209,18 @@ void InitModule() {
#ifdef Q4G_MODULE #ifdef Q4G_MODULE
InitGpio(GlobalConfig::GPIO_G.commPower, 1); // 4G,5G模组供电 system("killall daemon_CM");
gpio_set(GlobalConfig::GPIO_G.commPower, 1); InitGpio(GlobalConfig::GPIO_G.commPower,1);//4G,5G模组供电
InitGpio(GlobalConfig::GPIO_G.commRest, 1); gpio_set(GlobalConfig::GPIO_G.commPower,1);
gpio_set(GlobalConfig::GPIO_G.commRest, 0); //高电平复位 InitGpio(GlobalConfig::GPIO_G.commRest,1);
sleep(10); gpio_set(GlobalConfig::GPIO_G.commRest,0);//高电平复位
char szquectel[100] = {0x00}; sleep(10);
std::string strAPN = ReadStrByOpt(SERVERCONFIG, "Server", "APN"); char szquectel[100]={0x00};
sprintf(szquectel, "/opt/quectel-CM/quectel-CM -s %s &", strAPN.c_str()); std::string strAPN = ReadStrByOpt(SERVERCONFIG, "Server", "APN");
system(szquectel); sprintf(szquectel,"/opt/quectel-CM/quectel-CM -s %s &",strAPN.c_str());
system(szquectel);
sleep(2);
system("/opt/Cidn/daemon_CM &");
#endif // Q4G_MODULE #endif // Q4G_MODULE
#ifdef WIFI_MODULE #ifdef WIFI_MODULE
zlog_info(zbt, "Init WiFi!"); zlog_info(zbt, "Init WiFi!");

View File

@ -183,7 +183,7 @@ public:
void DealWave(); void DealWave();
std::vector<float> DealData(int ichannel, float coe, unsigned int sampleRate, int ACCSampleTime, std::string strProduct); std::vector<float> DealData(int ichannel, float coe, unsigned int sampleRate, int ACCSampleTime, std::string strProduct);
float Calcoe(int ran, int iChannel, std::string& product, int range); float Calcoe(int ran, int iChannel, std::string& product, int range);
void WriteDatFile(int sampleRate, std::string& strMeasurementID, int iChannel, std::vector<float>& vecData,std::string &product); void WriteDatFile(int sampleRate, std::string& strMeasurementID, int iChannel, std::vector<float>& vecData,std::string &product,int ACCSampleTime);
float ScaleConvert(int highbit); float ScaleConvert(int highbit);
void DataExtract(RecvData *p, int id, unsigned int &lowbit, float &n); void DataExtract(RecvData *p, int id, unsigned int &lowbit, float &n);

View File

@ -25,7 +25,7 @@ std::map<std::string, WaveChannel> g_mapWaveChannel;
unsigned char data[96000] = {0x00}; unsigned char data[96000] = {0x00};
unsigned char outdata[96000] = {0x00}; unsigned char outdata[96000] = {0x00};
unsigned char dealdata[96000] = {0x00}; unsigned char dealdata[96000] = {0x00};
char mqttData[512000] = {0}; char mqttData[1024000] = {0};
void Uart::RecordBattery(std::string &strLongAddr, DataRecvStatic &dataStatic, std::string &nowTimetamp) { void Uart::RecordBattery(std::string &strLongAddr, DataRecvStatic &dataStatic, std::string &nowTimetamp) {
char insertSql[1024] = {0}; char insertSql[1024] = {0};
@ -802,7 +802,7 @@ void Uart::DealWave() {
zlog_info(zct, "m_waveCountX = %d,VecWaveData = %d", m_waveCountX, VecWaveDataX.size()); zlog_info(zct, "m_waveCountX = %d,VecWaveData = %d", m_waveCountX, VecWaveDataX.size());
coe = Calcoe(n, WAVE_X, strProduct, range); coe = Calcoe(n, WAVE_X, strProduct, range);
vecData = DealData(WAVE_X, coe, sampleRate, ACCSampleTime, strProduct); vecData = DealData(WAVE_X, coe, sampleRate, ACCSampleTime, strProduct);
WriteDatFile(sampleRate, strMeasurementID, WAVE_X, vecData,strProduct); WriteDatFile(sampleRate, strMeasurementID, WAVE_X, vecData,strProduct,ACCSampleTime);
m_waveCountX = 0; m_waveCountX = 0;
g_VecWaveDataX.clear(); g_VecWaveDataX.clear();
VecWaveDataX.clear(); VecWaveDataX.clear();
@ -811,7 +811,7 @@ void Uart::DealWave() {
zlog_info(zct, "m_waveCountY = %d,VecWaveData = %d", m_waveCountY, VecWaveDataY.size()); zlog_info(zct, "m_waveCountY = %d,VecWaveData = %d", m_waveCountY, VecWaveDataY.size());
coe = Calcoe(n, WAVE_Y, strProduct, range); coe = Calcoe(n, WAVE_Y, strProduct, range);
vecData = DealData(WAVE_Y, coe, sampleRate, ACCSampleTime, strProduct); vecData = DealData(WAVE_Y, coe, sampleRate, ACCSampleTime, strProduct);
WriteDatFile(sampleRate, strMeasurementID, WAVE_Y, vecData,strProduct); WriteDatFile(sampleRate, strMeasurementID, WAVE_Y, vecData,strProduct,ACCSampleTime);
m_waveCountY = 0; m_waveCountY = 0;
g_VecWaveDataY.clear(); g_VecWaveDataY.clear();
VecWaveDataY.clear(); VecWaveDataY.clear();
@ -820,7 +820,7 @@ void Uart::DealWave() {
zlog_info(zct, "m_waveCountZ = %d,VecWaveDataZ = %d", m_waveCountZ, VecWaveDataZ.size()); zlog_info(zct, "m_waveCountZ = %d,VecWaveDataZ = %d", m_waveCountZ, VecWaveDataZ.size());
coe = Calcoe(n, WAVE_Z, strProduct, range); coe = Calcoe(n, WAVE_Z, strProduct, range);
vecData = DealData(WAVE_Z, coe, sampleRate, ACCSampleTime, strProduct); vecData = DealData(WAVE_Z, coe, sampleRate, ACCSampleTime, strProduct);
WriteDatFile(sampleRate, strMeasurementID, WAVE_Z, vecData,strProduct); WriteDatFile(sampleRate, strMeasurementID, WAVE_Z, vecData,strProduct,ACCSampleTime);
m_waveCountZ = 0; m_waveCountZ = 0;
g_VecWaveDataZ.clear(); g_VecWaveDataZ.clear();
VecWaveDataZ.clear(); VecWaveDataZ.clear();
@ -845,7 +845,7 @@ float Uart::Calcoe(int ran, int iChannel, std::string &product, int range) {
return coe; return coe;
} }
void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChannel, std::vector<float> &vecData,std::string &product) { void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChannel, std::vector<float> &vecData,std::string &product,int ACCSampleTime) {
if (vecData.size() <= 0) return; if (vecData.size() <= 0) return;
std::string strFileName = ""; std::string strFileName = "";
char localtimestamp[32] = {0}; char localtimestamp[32] = {0};
@ -903,27 +903,31 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan
} }
} }
fclose(fp); fclose(fp);
if (product == "02" && sampleRate == 24000 && strMeasurementID == "8eff96feff141a88"){ if (product == "02" && sampleRate == 24000 && iChannel == WAVE_Z){
sampleRate = 25600;
zlog_info(zct, " sampleRate = %d,product = %s ", sampleRate,product.c_str());
size_t outSize = 25600; size_t outSize = 25600;
std::vector<float> outputData = Calculation::fftInterpolate(vecData, outSize); std::vector<float> outputData,outputData2;
if (ACCSampleTime == 1){
outputData = Calculation::fftInterpolate(vecData, outSize);
}else if(ACCSampleTime == 2){
std::vector<float> first_wave = std::vector<float>(vecData.begin(), vecData.begin() + vecData.size()/2);
std::vector<float> second_wave = std::vector<float>(vecData.begin() + vecData.size()/2, vecData.end());
outputData = Calculation::fftInterpolate(first_wave, outSize);
outputData2 = Calculation::fftInterpolate(second_wave, outSize);
for (size_t i = 0; i < outputData2.size(); i++)
{
outputData.push_back(outputData2[i]);
}
}
zlog_info(zct, " outputData_size %d ", outputData.size());
float mean = Calculation::mean(outputData); float mean = Calculation::mean(outputData);
memset(mqttData,0,sizeof(mqttData)); memset(mqttData,0,sizeof(mqttData));
id = 0; id = 0;
strFileName = strFileName + std::string(localtimestamp);
FILE *fp = fopen(strFileName.c_str(), "w");
fwrite(localtimestamp,sizeof(localtimestamp),1,fp);
for (size_t i = 0; i < outputData.size(); i++) { for (size_t i = 0; i < outputData.size(); i++) {
frTemp = outputData[i] - mean; frTemp = outputData[i] - mean;
memset(buf, 0x00, sizeof(buf)); memset(buf, 0x00, sizeof(buf));
sprintf(buf, "%.2f", frTemp); sprintf(buf, "%.2f", frTemp);
fwrite(&frTemp,sizeof(float),1,fp);
if (iChannel == WAVE_X){
wave_channel.WaveChannelX[i] = frTemp;
}else if (iChannel == WAVE_Y){
wave_channel.WaveChannelY[i] = frTemp;
}else if (iChannel == WAVE_Z){
wave_channel.WaveChannelZ[i] = frTemp;
}
if(i != outputData.size() -1){ if(i != outputData.size() -1){
strncpy(mqttData + id ,buf,strlen(buf)); strncpy(mqttData + id ,buf,strlen(buf));
id = id + strlen(buf); id = id + strlen(buf);
@ -933,7 +937,6 @@ void Uart::WriteDatFile(int sampleRate, std::string &strMeasurementID, int iChan
strncpy(mqttData + id ,buf,strlen(buf)); strncpy(mqttData + id ,buf,strlen(buf));
} }
} }
fclose(fp);
} }
zlog_info(zct, "fopen FIle vecData.size : %d end ", vecData.size()); zlog_info(zct, "fopen FIle vecData.size : %d end ", vecData.size());