#include "elecfilecore.h" #include "efire.h" #include "../ytUserInfoProcess/userinfo.h" #include "../DataPrecessDog/dataprecess.h" #define UN_REFERENCED_PARAMETER(x) {(x) = (x);} ElecFileCore::ElecFileCore(QObject *parent) : QObject(parent) { mqttIdx = 1; mqttinfoIdx =1; timer = new QTimer(this); logThread = new LogThread(this); dbThread = new DatabaseThread(this); // mThread = new MqttThread(this); msgList.clear(); logThread->start(); // wxThreads = new WeChart2Thread(this,0,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_electrical"); // connect(wxThreads,&WeChart2Thread::wxchart,this,&ElecFileCore::wxchart); // connect(wxThreads,&WeChart2Thread::finished,this,&ElecFileCore::quit); // wssThread = new Tts2Thread(this,0,"47.98.201.73","/report",55125); // connect(wssThread,&Tts2Thread::ttslog,this,&ElecFileCore::ttslog); // connect(wssThread,&Tts2Thread::finished,this,&ElecFileCore::quit); // wxThreads->start(); // wssThread->start(); for(quint16 i=0;i<8;i++){ wxThreads[i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/Waterwarn/message_electrical"); connect(wxThreads[i],&WechartThreads::wxchart,this,&ElecFileCore::wxchart); wssThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55125); connect(wssThread[i],&ttsThreads::ttslog,this,&ElecFileCore::ttslog); wxThreads[i]->start(); wssThread[i]->start(); } wxcur = 0; repcur = 0; connect(timer, &QTimer::timeout, this, &ElecFileCore::timeout); connect(dbThread, &DatabaseThread::AlarmReport, this, &ElecFileCore::AlarmReport); connect(dbThread, &DatabaseThread::SqlLog, this, &ElecFileCore::SqlLog); connect(dbThread, &DatabaseThread::MqttInfo, this, &ElecFileCore::MqttConnect); dbThread->start(); server = new ElectricFireServer2(this); connect(server,&ElectricFireServer2::CommData,this,&ElecFileCore::CommData); connect(server,&ElectricFireServer2::getOnLine,this,&ElecFileCore::getOnLine); connect(server,&ElectricFireServer2::getAlarm,this,&ElecFileCore::getAlarm); connect(server,&ElectricFireServer2::getAnalogValue,this,&ElecFileCore::getAnalogValue); eServer = new ElectricFireServer(this); connect(eServer,&ElectricFireServer::CommData,this,&ElecFileCore::CommData); connect(eServer,&ElectricFireServer::getEAlarm,this,&ElecFileCore::getEAlarm); connect(eServer,&ElectricFireServer::getEAnalogValue,this,&ElecFileCore::getEAnalogValue); connect(eServer,&ElectricFireServer::getERealtimeValue,this,&ElecFileCore::getERealtimeValue); server_yada = new ElectricFireServer_Yada(this); connect(server_yada,&ElectricFireServer_Yada::CommData,this,&ElecFileCore::CommData); connect(server_yada,&ElectricFireServer_Yada::getOnLine,this,&ElecFileCore::getOnLine); connect(server_yada,&ElectricFireServer_Yada::getAlarm,this,&ElecFileCore::getAlarm); connect(server_yada,&ElectricFireServer_Yada::getAnalogValue,this,&ElecFileCore::getYDAnalogValue); syncInterface = new SyncInterface(this); // connect(syncInterface,&SyncInterface::comm_data,this,&ElecFileCore::CommData); wssServer = new WssServer(this); wssServer->start(); timer->start(1000); } ElecFileCore::~ElecFileCore() { logThread->stop(); dbThread->stop(); } void ElecFileCore::MqttConnect(QString ip,QString port,QString name,QString passwd) { printf("mqtt init\n"); printf("ip = %s, port = %s, name = %s, passwd = %s\n",ip.toUtf8().data(),port.toUtf8().data(),name.toUtf8().data(),passwd.toUtf8().data()); m_client = new QMQTT::Client(QHostAddress(ip), static_cast(port.toInt()), this); m_client->setUsername(name); m_client->setPassword(passwd.toLatin1()); connect(m_client,&QMQTT::Client::connected,this,&ElecFileCore::mqconnected); m_client->connectToHost(); } void ElecFileCore::mqconnected() { printf("mqtt connected\n"); // m_client->publish(QMQTT::Message(mqttIdx++,"/usky/ytDP0007/10012/60001/alarm",QByteArray("mq alarm start"))); // if(mqttIdx>9999) // mqttIdx = 1; // m_client->publish(QMQTT::Message(mqttinfoIdx++,"/usky/ytDP0007/10012/60002/info",QByteArray("mq info start"))); // if(mqttinfoIdx>9999) // mqttinfoIdx = 1; } void ElecFileCore::wssclose() { wssServer->start(); } void ElecFileCore::start() { server->start(); eServer->start(); server_yada->start(); } void ElecFileCore::quit() { exit(1); } void ElecFileCore::timeout() { QDateTime dt = QDateTime::currentDateTime(); uint t = dt.toTime_t(); dataProcessShm->processStatus[11].upTime[0].Enabled = 0x01; dataProcessShm->processStatus[11].upTime[0].t_time = t; if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){ m_client->connectToHost(); } if(m_client->connectionState()==QMQTT::STATE_CONNECTED){ //msgList.append(QString("{\"devId\":\"00003215010189\",\"connType\":\"G\"}")); if (msgList.length()>0){ int h1 = msgList.first().indexOf(":",0); int t1 = msgList.first().indexOf(",",h1); QString d1 = msgList.first().mid(h1+2,(t1-h1-3)); alarmDevice = d1.toUtf8().data(); for(int i=0;i<10240;i++){ if(QString::compare(eFireList->devs[i].Device_Code,alarmDevice)==0){ alarmCompany = QString(eFireList->devs[i].Company_Code); break; } } QString topic = QString("/usky/ytDP0007/%1/%2/alarm").arg(alarmCompany).arg(alarmDevice); m_client->publish(QMQTT::Message(mqttIdx++,topic,msgList.first().toUtf8())); msgList.removeFirst(); if(mqttIdx>9999) mqttIdx = 1; } } for(int i=0;i<10240;i++){ if(eFireList->devs[i].Enabled==0x01){ if(eFireList->devs[i].Online_Flag!=0x00){ if((t-eFireList->devs[i].LastCommtime)>21600){ // eFireList->devs[i].Online_Flag=0x00; // dbThread->appendSql(QString("update sp_devices_status set devicestatus=75, true_status=75, statustime='%1', lastcommtime='%1' where deviceid='%2'") // .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[i].Device_Code))); // dbThread->appendAlarm(AlarmRep(QString(eFireList->devs[i].Device_Code), // QString("insert into sp_ef2017 (id, port, device_code, time, data1, data2, data3, data4) values (NULL,%1,'%2','%3','%4','%5','%6','%7')") // .arg(9).arg(QString(eFireList->devs[i].Device_Code)).arg(dt.toString("yyyy-MM-dd HH:mm:ss")) // .arg(QString("EF%1").arg(9)) // .arg("") // .arg("") // .arg(""), // QString("EF%1").arg(9), // dt.toString("yyyy-MM-dd HH:mm:ss"))); } } } } } void ElecFileCore::CommData(QString deviceID, int dir, QString data) { logThread->appendData(data); wssServer->subReport(deviceID,dir,false,false,data); } void ElecFileCore::SqlLog(QString log) { logThread->appendData(log); wssServer->subReport("",0,true,false,log); } void ElecFileCore::getOnLine(int deviceidx, bool flag, QDateTime t) { if(eFireList->devs[deviceidx].Enabled!=0x01) return; if(flag) { // eFireList->devs[deviceidx].LastCommtime = t.toTime_t(); if(eFireList->devs[deviceidx].Online_Flag!=0x01) { eFireList->devs[deviceidx].Online_Flag=0x01; dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where device_id='%2'") .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else{ dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where device_id='%2'") .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); } } } void ElecFileCore::getEAlarm(QString DeviceCode, int point, bool aflag, float v1, float v2, float v3, QDateTime t) { logThread->appendData(QString("[ %1 getEAlarm ] 55126 %2, %3, %4, %5, %6, %7 ") .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode).arg(point).arg(aflag) .arg(v1).arg(v2).arg(v3)); for(int i=0;i<10240;i++){ if(eFireList->devs[i].Enabled==0x01){ if(QString::compare(QString(eFireList->devs[i].Device_Code),DeviceCode)==0){ // eFireList->devs[i].LastCommtime = t.toTime_t(); if(DeviceCode.indexOf("8000")!=0){ if((eFireList->devs[i].Point[point].Status==0x00)&&aflag){ eFireList->devs[i].Point[point].Status=0x01; getAlarm(i,point,aflag,v1,v2,v3,t); }else if((eFireList->devs[i].Point[point].Status==0x01)&&(!aflag)){ eFireList->devs[i].Point[point].Status=0x00; getAlarm(i,point,aflag,v1,v2,v3,t); } }else{ // if(aflag) if((eFireList->devs[i].Point[point].Status!=(aflag?0x01:0x00)) ||((t.toTime_t()-eFireList->devs[i].LastCommtime)>1800) ){ eFireList->devs[i].Point[point].Status=(aflag?0x01:0x00); getAlarm(i,point,aflag,v1,v2,v3,t); } eFireList->devs[i].LastCommtime=t.toTime_t(); } break; } } } } void ElecFileCore::getAlarm(int deviceidx, int point, bool aflag, float v1, float v2, float v3, QDateTime t) { // eFireList->devs[deviceidx].LastCommtime = t.toTime_t(); if(aflag){ QString pointName; switch(point){ case 1: pointName = "供电过压";break; case 2: pointName = "供电低压";break; case 3: pointName = "供电过流";break; case 4: pointName = "漏电报警";break; case 5: pointName = "A相线缆温度超高";break; case 6: pointName = "B相线缆温度超高";break; case 7: pointName = "C相线缆温度超高";break; default: break; } msgList.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\"}],\"deviceName\":\"%6\",\"timeStamp\":\"%7\",\"deviceModel\":\"\",\"deviceType\":\"%8\",\"devId\":\"%9\"}],\"type\":\"ALARM\",\"timeStamp\":\"%10\"}").arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointName).arg(point).arg(QString::number(static_cast(v1),'f',3)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t())); AlarmRep rep = AlarmRep(QString(eFireList->devs[deviceidx].Device_Code), QString("insert into sp_ef2017 (id, port, device_code, time, data1, data2, data3, data4) values (NULL,%1,'%2','%3','%4','%5','%6','%7')") .arg(point).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString("EF%1").arg(point)) .arg(QString::number(static_cast(v1),'f',3)) .arg(point<4?QString::number(static_cast(v2),'f',3):"") .arg(point<4?QString::number(static_cast(v3),'f',3):""), QString("EF%1").arg(point), t.toString("yyyy-MM-dd HH:mm:ss")); dbThread->appendAlarm(rep); } dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code='%4'") .arg(aflag?1:0).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point)); if((point==1)||(point==2)){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=65;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=66;") .arg(QString::number(static_cast(v2),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=67;") .arg(QString::number(static_cast(v3),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else if(point==3){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=68;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=69;") .arg(QString::number(static_cast(v2),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=70;") .arg(QString::number(static_cast(v3),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else if((point==4)&&(v1>0)){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=75;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else if(point==5){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=71;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else if(point==6){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=72;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); }else if(point==7){ dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=73;") .arg(QString::number(static_cast(v1),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code))); } } void ElecFileCore::AlarmReport(QString addr, quint64 insertid, QString type, QString time) { UN_REFERENCED_PARAMETER(time); QString phonelist = ""; QString companyCode = ""; for(int i=0;i<10240;i++){ if(QString::compare(QString(eFireList->devs[i].Device_Code),addr)==0){ companyCode = QString(eFireList->devs[i].Company_Code); break; } } QString name = ""; if(type.compare("EF1")==0) name = "欠压报警"; else if(type.compare("EF2")==0) name = "过压报警"; else if(type.compare("EF3")==0) name = "过流报警"; else if(type.compare("EF4")==0) name = "漏电报警"; else if(type.compare("EF5")==0) name = "1号线缆温度超高"; else if(type.compare("EF6")==0) name = "2号线缆温度超高"; else if(type.compare("EF7")==0) name = "3号线缆温度超高"; QString rep2 = QString("{\"SubType\":7,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}") .arg(addr).arg(insertid).arg(companyCode).arg(name).arg(time); wssThread[repcur]->appendData(rep2); repcur++; repcur &= 0x07; if(companyCode.length()>0){ for(int i=0;i<102400;i++){ if(companyCode.compare(QString(sysConfShm->userInfo[i].CompanyCode))==0){ QString phone = QString(sysConfShm->userInfo[i].CellPhone); if(phone.trimmed().length()>0){ if(phonelist.length()==0) phonelist = phone; else phonelist.append(","+phone); } } } if(phonelist.length()>0){ QString evtType = type; QString unique_number = QString("%1%2").arg(addr).arg(type.remove(0, 2)); QString data = QString("evt=%4&device_code=%1&phone=%3&insert_id=%2&unique_number=%5&time=%6").arg(addr).arg(insertid).arg(phonelist).arg(evtType).arg(unique_number).arg(time) .replace(",","%2C").replace(":","%3A").replace(" ","+"); wxThreads[wxcur]->appendData(data); wxcur++; wxcur &= 0x07; } } } void ElecFileCore::wxchart(quint16 idx, QDateTime t, QString data, bool dirflag) { UN_REFERENCED_PARAMETER(idx); logThread->appendData(QString("[ %1 47.98.201.73 (wx) %2 ] %3") .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")) .arg(dirflag?">>>":"<<<") .arg(data.replace('\n',"\\n").replace('\r',"\\r"))); } void ElecFileCore::ttslog(quint16 idx, QDateTime t, QString data, bool dirflag) { UN_REFERENCED_PARAMETER(idx); logThread->appendData(QString("[ %1 47.98.201.73 (wss) %2 ] %3") .arg(t.toString("yyyy-MM-dd HH:mm:ss.zzz")) .arg(dirflag?">>>":"<<<") .arg(data.replace('\n',"\\n").replace('\r',"\\r"))); } void ElecFileCore::getERealtimeValue(QString DeviceCode, int point, float rtv, QDateTime t) { dbThread->appendSql(QString("update sp_devices_status set devicestatus=0, true_status=0, statustime='%1', lastcommtime='%1' where deviceid='%2'") .arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode)); dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4") .arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(DeviceCode).arg(point)); dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')") .arg(DeviceCode).arg(point).arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))); } void ElecFileCore::getAnalogValue(int deviceidx, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint) { // eFireList->devs[deviceidx].LastCommtime = t.toTime_t(); QString pointName; switch(point){ case 65: pointName = "A相电压";break; case 66: pointName = "B相电压";break; case 67: pointName = "C相电压";break; case 68: pointName = "A相电流";break; case 69: pointName = "B相电流";break; case 70: pointName = "C相电流";break; case 71: pointName = "A相线缆温度";break; case 72: pointName = "B相线缆温度";break; case 73: pointName = "C相线缆温度";break; default: break; } pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(point).arg(QString::number(static_cast(rtv),'f',3))); if(point == 73){ if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){ m_client->connectToHost(); } if(m_client->connectionState()==QMQTT::STATE_CONNECTED){ QString infoList; // QString devPtr; // if(eFireList->devs[deviceidx].Enabled==0x01){ // QString pointStr; // for(int j=0;j<256;j++){ // if(eFireList->devs[deviceidx].Point[j].Enabled==0x01){ // QString pointName; // switch(j){ // case 1: pointName = "供电过压";break; // case 2: pointName = "供电低压";break; // case 3: pointName = "供电过流";break; // case 4: pointName = "漏电报警";break; // case 5: pointName = "A相线缆温度超高";break; // case 6: pointName = "B相线缆温度超高";break; // case 7: pointName = "C相线缆温度超高";break; // case 65: pointName = "A相电压";break; // case 66: pointName = "B相电压";break; // case 67: pointName = "C相电压";break; // case 68: pointName = "A相电流";break; // case 69: pointName = "B相电流";break; // case 70: pointName = "C相电流";break; // case 71: pointName = "A相线缆温度";break; // case 72: pointName = "B相线缆温度";break; // case 73: pointName = "C相线缆温度";break; // default: break; // } // if(j == 73) // { // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(QString::number(static_cast(rtv),'f',3))); // }else if(eFireList->devs[deviceidx].Point[j].Type == 0x01){ // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(eFireList->devs[deviceidx].Point[j].IoValue==0x01?1:0)); // }else{ // pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(j).arg(QString::number(static_cast(eFireList->devs[deviceidx].Point[j].CurrentValue),'f',3))); // } // } // } pointStr=pointStr.left(pointStr.length()-1); infoList.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[%3],\"deviceName\":\"%4\",\"timeStamp\":\"%5\",\"deviceModel\":\"\",\"deviceType\":\"%6\",\"devId\":\"%7\"}],\"type\":\"INFO\",\"timeStamp\":\"%8\"}").arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointStr).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t())); QString infoTopic = QString("/usky/ytDP0007/%1/%2/info").arg(QString(eFireList->devs[deviceidx].Company_Code)).arg(QString(eFireList->devs[deviceidx].Device_Code)); //2021/11/15 山东党校需求 电气火灾推漏电和故障电弧,温度超高 m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,infoList.toUtf8())); if(mqttinfoIdx>9999) mqttinfoIdx = 1; pointStr.clear(); // } } } QString sql; dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4") .arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point)); dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')") .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point).arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))); dbThread->appendSql(QString("insert into sp_e%1 (id, device_id, point_code, point_data, data_time, max_data, max_time, min_data, min_time, ave_data, content) values (NULL, '%1', %2, %3, '%4', %5, '%6', %7, '%8', %9, '')") .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point) .arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(maxv),'f',3)).arg(maxt.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(minv),'f',3)).arg(mint.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(ave),'f',3))); } void ElecFileCore::getEAnalogValue(QString DeviceCode, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint) { if(point==70) return; for(int i=0;i<10240;i++){ if(eFireList->devs[i].Enabled==0x01){ if(QString::compare(QString(eFireList->devs[i].Device_Code),DeviceCode)==0){ // eFireList->devs[i].LastCommtime = t.toTime_t(); logThread->appendData(QString("55126 deviceCode:%1, point:%2, ave:%3, max:%4, min:%5").arg(DeviceCode).arg(point).arg(ave).arg(maxv).arg(minv)); getAnalogValue(i,point,ave,rtv,t,maxv,maxt,minv,mint); break; } } } } void ElecFileCore::getYDAnalogValue(int deviceidx, int point, float ave, float rtv, QDateTime t, float maxv, QDateTime maxt, float minv, QDateTime mint) { // eFireList->devs[deviceidx].LastCommtime = t.toTime_t(); QString pointName; switch(point){ case 65: pointName = "A相电压";break; case 66: pointName = "B相电压";break; case 67: pointName = "C相电压";break; case 68: pointName = "A相电流";break; case 69: pointName = "B相电流";break; case 70: pointName = "C相电流";break; case 71: pointName = "A相线缆温度";break; case 72: pointName = "B相线缆温度";break; case 73: pointName = "C相线缆温度";break; default: break; } pointStr.append(QString("{\"property\":\"%1\",\"serial\":\"%2\",\"value\":\"%3\"},").arg(pointName).arg(point).arg(QString::number(static_cast(rtv),'f',3))); if(point == 73){ if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){ m_client->connectToHost(); } if(m_client->connectionState()==QMQTT::STATE_CONNECTED){ QString infoList; pointStr=pointStr.left(pointStr.length()-1); infoList.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"devs\":[{\"dp\":[%3],\"deviceName\":\"%4\",\"timeStamp\":\"%5\",\"deviceModel\":\"\",\"deviceType\":\"%6\",\"devId\":\"%7\"}],\"type\":\"INFO\",\"timeStamp\":\"%8\"}").arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(pointStr).arg(QString(eFireList->devs[deviceidx].Device_Name)).arg(t.toTime_t()).arg(QString(eFireList->devs[deviceidx].Device_Type)).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(t.toTime_t())); QString infoTopic = QString("/usky/ytDP0007/%1/%2/info").arg(QString(eFireList->devs[deviceidx].Company_Code)).arg(QString(eFireList->devs[deviceidx].Device_Code)); //2021/11/15 山东党校需求 电气火灾推漏电和故障电弧,温度超高 m_client->publish(QMQTT::Message(mqttinfoIdx++,infoTopic,infoList.toUtf8(),0)); if(mqttinfoIdx>9999) mqttinfoIdx = 1; pointStr.clear(); } } QString sql; dbThread->appendSql(QString("update sp_owner_status set point_data=%1, data_time='%2' where device_id='%3' and point_code=%4") .arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point)); dbThread->appendSql(QString("insert into sp_owner_sync_data (id, native_id, device_id, point_code, point_data, data_time, content) values (NULL,0,'%1',%2,%3,'%4','')") .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point).arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss"))); dbThread->appendSql(QString("insert into sp_e%1 (id, device_id, point_code, point_data, data_time, max_data, max_time, min_data, min_time, ave_data, content) values (NULL, '%1', %2, %3, '%4', %5, '%6', %7, '%8', %9, '')") .arg(QString(eFireList->devs[deviceidx].Device_Code)).arg(point) .arg(QString::number(static_cast(rtv),'f',3)).arg(t.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(maxv),'f',3)).arg(maxt.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(minv),'f',3)).arg(mint.toString("yyyy-MM-dd HH:mm:ss")) .arg(QString::number(static_cast(ave),'f',3))); }