| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277 |
- #include "coreobject.h"
- #include <unistd.h>
- //公司这边生产环境的内网和外网ip
- #define iServerIP "172.19.198.166"
- #define oServerIP "47.103.74.123"
- //伍继158对应的内网和外网ip
- //#define iServerIP "192.168.0.31"
- //#define oServerIP "124.70.160.158"
- //伍继91对应的内网和外网ip
- //#define iServerIP "192.168.0.149"
- //#define oServerIP "124.71.175.91"
- #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
- #define GET_YEAR(_time_) (((_time_)>>26) + 2000)
- #define GET_MONTH(_time_) (((_time_)>>22) & 15)
- #define GET_DAY(_time_) (((_time_)>>17) & 31)
- #define GET_HOUR(_time_) (((_time_)>>12) & 31)
- #define GET_MINUTE(_time_) (((_time_)>>6) & 63)
- #define GET_SECOND(_time_) (((_time_)>>0) & 63)
- extern BOOL CALLBACK RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser);
- extern BOOL CALLBACK fnPREVIEW_NEWLINK_CB(LONG lPreviewHandle, NET_EHOME_NEWLINK_CB_MSG *pNewLinkCBMsg, void *pUserData);
- extern void CALLBACK fnPREVIEW_DATA_CB(LONG lPreviewHandle, NET_EHOME_PREVIEW_CB_MSG *pPreviewCBMsg, void *pUserData);
- extern BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iDataLen);
- extern BOOL CALLBACK AlarmMSGCallBack (LONG lHaldle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData);
- extern QDateTime getFullTime(FullTime fTime);
- extern void setFullTime(FullTime *fTime, QDateTime qTime);
- extern QString getNewId();
- uint start_time;
- bool had_reg;
- int nopic_count;
- MyEHomeShm *ytShm;
- MyEHomeMQShm *ytMqShm;
- CoreObject::CoreObject(QObject *parent) :
- QObject(parent)
- {
- infomqttIdx=1;
- alarmmqttIdx=1;
- statusIdx=1;
- statusStr="";
- hour = 255;
- nopic_count = 0;
- processList.clear();
- sqlList.clear();
- reportList.clear();
- companyphoneList.clear();
- isWorking = false;
- alarmListenHandle = -1;
- start_time = QDateTime::currentDateTime().toTime_t();
- had_reg = false;
- netAccessManager = new QNetworkAccessManager(this);
- connect(netAccessManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(finishedSlot(QNetworkReply*)));
- timer = new QTimer();
- //公司187生产环境对应的数据库配置
- db = QSqlDatabase::addDatabase("QMYSQL","conf_db");
- db.setDatabaseName("jdxf");
- db.setHostName("47.98.201.187");
- db.setUserName("root");
- db.setPassword("Yt2018IoT");
- //伍继158环境对应的数据库配置
- // db = QSqlDatabase::addDatabase("QMYSQL","conf_db");
- // db.setDatabaseName("smart_electricity");
- // db.setHostName("124.70.160.158");
- // db.setUserName("root");
- // db.setPassword("Y48hD&Eg");
- //伍继91环境对应的数据库配置
- // db = QSqlDatabase::addDatabase("QMYSQL","conf_db");
- // db.setDatabaseName("smart_electricity");
- // db.setHostName("192.168.0.206");
- // db.setUserName("electric");
- // db.setPassword("Y48hD&Eg");
- QString ip="",port="",name="",passwd="";
- db.open();
- QSqlQuery mqttqry = db.exec("select ip, port, username, passwd from yt_dataprocessservice_mqtt where type = 'YtCam';");
- while(mqttqry.next()){
- ip = mqttqry.value(0).toString();
- port = mqttqry.value(1).toString();
- name = mqttqry.value(2).toString();
- passwd = mqttqry.value(3).toString();
- }
- printf("ip= %s ,port= %s,username= %s,passwd= %s \n",ip.toUtf8().data(),port.toUtf8().data(),name.toUtf8().data(),passwd.toUtf8().data());
- db.close();
- m_client = new QMQTT::Client(QHostAddress(ip),static_cast<quint16>(port.toInt()),this);
- m_client->setUsername(name);
- m_client->setPassword(passwd.toLatin1());
- connect(m_client,&QMQTT::Client::connected,this,&CoreObject::mqconnected);
- m_client->connectToHost();
- //v1.2摄像机版本
- NET_ESTREAM_Init();
- NET_EALARM_Init();
- NET_ECMS_Init();
- if(shm_load()){
- QDateTime zeroTime = QDateTime::fromTime_t(0);
- for(int i=0;i<DEVICES_COUNT;i++){
- alarmTime[i]=0;
- ytShm->eHomeDevice[i].LoginId = -1;
- ytShm->eHomeDevice[i].SessionId = -1;
- ytShm->eHomeDevice[i].listen_preview_handle = -1;
- ytShm->eHomeDevice[i].listen_alarm_handle = -1;
- ytShm->eHomeDevice[i].lLinkHandle = -1;
- ytShm->eHomeDevice[i].previewId = -1;
- ytShm->eHomeDevice[i].Connected = 0x00;
- ytShm->eHomeDevice[i].Inited = 0x00;
- ytShm->eHomeDevice[i].onLined = 0x00;
- ytShm->eHomeDevice[i].savetmp = 0x00;
- ytShm->eHomeDevice[i].transed = 0x00;
- for(int j=0;j<7;j++)
- ytShm->eHomeDevice[i].io[j] = 0x00;
- ytShm->eHomeDevice[i].time[0]=0;
- ytShm->eHomeDevice[i].time[1]=0;
- ytShm->eHomeDevice[i].tmpfile = NULL;
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
- setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
- QProcess *process = new QProcess(this);
- connect(process,SIGNAL(finished(int)),this,SLOT(process_stop()));
- connect(process,SIGNAL(destroyed()),this,SLOT(process_stop()));
- connect(process,SIGNAL(aboutToClose()),this,SLOT(process_stop()));
- processList.append(process);
- }
- printf("processList.length = %d\n",processList.length());
- for(quint16 i=0;i<8;i++){
- wxThreads[1][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/GeneralPush/voice_alarm");
- wxThreads[0][i] = new WechartThreads(this,i,"47.98.201.73","/jdxf/wxapp2.php/Home/GeneralPush/voice");
- wssThread[i] = new ttsThreads(this,i,"47.98.201.73","/report",55125);
- spThread[i] = new ttsThreads(this,i,"47.98.201.187","/report",55335);
- // connect(wxThreads[i],&WechartThreads::wxchart,this,&CoreObject::chartlog);
- // connect(wssThread[i],&ttsThreads::ttslog,this,&CoreObject::chartlog);
- // connect(spThread[i],&ttsThreads::ttslog,this,&CoreObject::chartlog);
- wxThreads[1][i]->start();
- wxThreads[0][i]->start();
- wssThread[i]->start();
- spThread[i]->start();
- }
- repcur = 0;
- wxcur = 0;
- }
- logThread = new LogThread(this);
- logThread->start();
- chkPhoneList();
- connect(timer,SIGNAL(timeout()),this,SLOT(time_out()));
- time_out();
- }
- CoreObject::~CoreObject()
- {
- for(int i=0;i<processList.length();i++){
- if(processList.at(i)->pid()>0)
- processList.at(i)->close();
- if(ytShm->eHomeDevice[i].listen_preview_handle>=-1){
- NET_ESTREAM_StopListenPreview(ytShm->eHomeDevice[i].listen_preview_handle);
- }
- }
- if(alarmListenHandle>-1)
- NET_EALARM_StopListen(alarmListenHandle);
- NET_ECMS_Fini();
- NET_ESTREAM_Fini();
- NET_EALARM_Fini();
- netAccessManager->deleteLater();
- }
- void CoreObject::mqconnected()
- {
- printf("mqtt connected\n");
- }
- void CoreObject::chkPhoneList()
- {
- if(db.open()){
- QList<Company_Phone> tmpList;
- QSqlQuery qry = db.exec("select owner_code, phone from sp_owner_phone where phone<>''");
- while (qry.next()) {
- tmpList.append(Company_Phone(qry.value(0).toString(),qry.value(1).toString()));
- }
- db.close();
- companyphoneList.clear();
- if(tmpList.length()>0)
- companyphoneList.append(tmpList);
- synchour = QTime::currentTime().hour();
- }
- }
- void CoreObject::chartlog(quint16 idx, QDateTime t, QString data, bool dirflag){
- if((idx<DEVICES_COUNT)&&(QString(ytShm->eHomeDevice[idx].deviceID).length()>0))
- {
- QString log;
- if(dirflag)
- log = QString("[ %1 (%2) >>> ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[idx].deviceID).arg(data);
- else
- log = QString("[ %1 (%2) >>> ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[idx].deviceID).arg(data);
- logThread->appendData(log);
- }
- }
- bool CoreObject::shm_load()
- {
- int shmid;
- key_t key;
- if((key = ftok(SHM_PATH,(int)SHM_PORT))==-1)
- return false;
- if((shmid = shmget(key,sizeof(MyEHomeShm),IPC_CREAT|0666))==-1)
- return false;
- ytShm = (MyEHomeShm *)shmat(shmid,NULL,0);
- if((key = ftok(SHM_PATH,(int)(SHM_PORT+10)))==-1)
- return false;
- if((shmid = shmget(key,sizeof(MyEHomeMQShm),IPC_CREAT|0666))==-1)
- return false;
- ytMqShm = (MyEHomeMQShm *)shmat(shmid,NULL,0);
- return true;
- }
- QString getNewId()
- {
- return QUuid::createUuid().toString().replace("{","").replace("}","");
- }
- BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dwOutLen, void *pInBuffer, DWORD dwInLen, void *pUser)
- {
- printf("enter into RegisterCallBack\n");
- int i,idx=0;
- bool found = false;
- had_reg = true;
- CoreObject *obj = (CoreObject *)pUser;
- QDateTime zeroTime = QDateTime::fromTime_t(0);
- QDateTime t_now = QDateTime::currentDateTime();
- ytShm->workingTime[0] = t_now.toTime_t();
- if (ENUM_DEV_ON == dwDataType)
- {
- NET_EHOME_DEV_REG_INFO *pDevInfo = (NET_EHOME_DEV_REG_INFO *)pOutBuffer;
- printf("pDevInfo = : %s\n",(char*)(pDevInfo->byDeviceID));
- // qDebug()<<"RegisterCallBack: "<<(char*)(pDevInfo->byDeviceID);
- if(pDevInfo!=NULL)
- {
- for(i=0;i<DEVICES_COUNT;i++){
- if(strcmp(ytShm->eHomeDevice[i].deviceID,QString((char*)(pDevInfo->byDeviceID)).replace(" ","_").toUtf8().data())==0){
- found = true;
- memcpy(ytShm->eHomeDevice[i].devIp,(char *)(pDevInfo->struDevAdd.szIP),sizeof(ytShm->eHomeDevice[i].devIp));
- obj->appendLog(QString("[ %1 (%2) online ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
- ytShm->eHomeDevice[i].LoginId = lUserID;
- ytShm->eHomeDevice[i].Connected = 0x00;
- ytShm->eHomeDevice[i].Inited = 0x01;
- ytShm->eHomeDevice[i].onLined = 0x00;
- ytShm->eHomeDevice[i].savetmp = 0x00;
- // if(ytShm->eHomeDevice[i].tmpfile!=NULL)
- // fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].tmpfile = NULL;
- ytShm->eHomeDevice[i].transed = 0x00;
- ytShm->eHomeDevice[i].io[15]=0x00;
- ytShm->eHomeDevice[i].io[14]=0x03;
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
- setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
- idx=i;
- break;
- }
- }
- if(!found){
- return FALSE;
- }
- //输入参数
- NET_EHOME_SERVER_INFO *pServerInfo = (NET_EHOME_SERVER_INFO *)pInBuffer;
- pServerInfo->dwTimeOutCount = 6; //心跳超时次数
- pServerInfo->dwKeepAliveSec = 15; //心跳间隔
- memcpy(pServerInfo->struUDPAlarmSever.szIP, oServerIP, sizeof(oServerIP));
- memcpy(pServerInfo->struTCPAlarmSever.szIP, oServerIP, sizeof(oServerIP)); //报警服务器IP地址(TCP协议)
- pServerInfo->struUDPAlarmSever.wPort = 7669; //报警服务器端口(UDP协议),需要和报警服务器启动监听的端口一致
- pServerInfo->struTCPAlarmSever.wPort = 7668;
- pServerInfo->dwAlarmServerType = 1; //报警服务器类型:0- 只支持UDP协议上报,1- 支持UDP、TCP两种协议上报
- }
- }else if (ENUM_DEV_OFF == dwDataType){
- for(int i=0;i<DEVICES_COUNT;i++){
- if(ytShm->eHomeDevice[i].LoginId==lUserID){
- ytShm->eHomeDevice[i].io[15]=0x00;
- ytShm->eHomeDevice[i].io[14]=0x02;
- ytShm->eHomeDevice[i].LoginId = -1;
- obj->appendLog(QString("[ %1 (%2) offline ]").arg(t_now.toString("yyyy-MM-dd HH:mm:ss")).arg(ytShm->eHomeDevice[i].deviceID));
- if(ytShm->eHomeDevice[i].SessionId>=0){
- if(NET_ECMS_StopGetRealStream(lUserID,ytShm->eHomeDevice[i].SessionId)){
- ytShm->eHomeDevice[i].SessionId = -1;
- if(ytShm->eHomeDevice[i].previewId>=0){
- if(NET_ESTREAM_StopPreview(ytShm->eHomeDevice[i].previewId)){
- ytShm->eHomeDevice[i].previewId = -1;
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename);
- QFile(tmpfile).remove();
- ytShm->eHomeDevice[i].Connected = 0x00;
- // bzero(ytShm->eHomeDevice[i].deviceID,sizeof(ytShm->eHomeDevice[i].deviceID));
- ytShm->eHomeDevice[i].Inited = 0x00;
- ytShm->eHomeDevice[i].onLined = 0x00;
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
- setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
- ytShm->eHomeDevice[i].savetmp = 0x00;
- // if(ytShm->eHomeDevice[i].tmpfile!=NULL)
- // fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].tmpfile = NULL;
- ytShm->eHomeDevice[i].transed = 0x00;
- if(ytShm->eHomeDevice[i].lLinkHandle>0){
- if(NET_ESTREAM_StopListenPreview(ytShm->eHomeDevice[i].lLinkHandle)){
- ytShm->eHomeDevice[i].lLinkHandle = -1;
- }
- }
- }
- }
- }
- }else{
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename);
- QFile(tmpfile).remove();
- ytShm->eHomeDevice[i].io[15]=0x00;
- ytShm->eHomeDevice[i].Connected = 0x00;
- // bzero(ytShm->eHomeDevice[i].deviceID,sizeof(ytShm->eHomeDevice[i].deviceID));
- ytShm->eHomeDevice[i].Inited = 0x00;
- ytShm->eHomeDevice[i].onLined = 0x00;
- ytShm->eHomeDevice[i].LoginId = -1;
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),zeroTime);
- setFullTime(&(ytShm->eHomeDevice[i].transtime),zeroTime);
- ytShm->eHomeDevice[i].lLinkHandle = -1;
- ytShm->eHomeDevice[i].savetmp = 0x00;
- // if(ytShm->eHomeDevice[i].transed==0x01)
- // fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].tmpfile = NULL;
- ytShm->eHomeDevice[i].transed = 0x00;
- }
- break;
- }
- }
- NET_ECMS_ForceLogout(lUserID);
- }
- return TRUE;
- }
- BOOL CALLBACK fnPREVIEW_NEWLINK_CB(LONG lPreviewHandle, NET_EHOME_NEWLINK_CB_MSG *pNewLinkCBMsg, void *pUserData)
- {
- ytShm->workingTime[0] = QDateTime::currentDateTime().toTime_t();
- for(int i=0;i<DEVICES_COUNT;i++){
- if((ytShm->eHomeDevice[i].LoginId>-1)&&(ytShm->eHomeDevice[i].listen_preview_handle>-1)){
- if(strcmp(ytShm->eHomeDevice[i].deviceID,QString((char *)pNewLinkCBMsg->szDeviceID).replace(" ","_").toUtf8().data())==0){
- // if(ytShm->eHomeDevice[i].SessionId == pNewLinkCBMsg->iSessionID){
- // printf("fnPREVIEW_NEWLINK_CB:%s\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].lLinkHandle = lPreviewHandle;
- NET_EHOME_PREVIEW_DATA_CB_PARAM struDataCB = {0};
- struDataCB.pUserData = &(ytShm->eHomeDevice[i]);
- struDataCB.fnPreviewDataCB = fnPREVIEW_DATA_CB;
- struDataCB.byStreamFormat = 0;//封装格式:0- PS
- if (!NET_ESTREAM_SetPreviewDataCB(lPreviewHandle, &struDataCB))
- {
- ytShm->eHomeDevice[i].SessionId = -1;
- ytShm->eHomeDevice[i].Connected = 0x00;;
- printf("NET_ESTREAM_SetPreviewDataCB set failed(%s)\n",ytShm->eHomeDevice[i].deviceID);
- return false;
- }
- printf("NET_ESTREAM_SetPreviewDataCB set pass(%s)\n",ytShm->eHomeDevice[i].deviceID);
- return true;
- }
- }
- }
- return false;
- }
- bool CoreObject::checkAlarmDevTime(QString deviceid){
- // return true;
- uint t = QDateTime::currentDateTime().toTime_t();
- for(int i=0;i<DEVICES_COUNT;i++){
- QString devId = QString(ytShm->eHomeDevice[i].deviceID);
- if(QString::compare(devId,deviceid)==0){
- if((t-alarmTime[i])>180){
- alarmTime[i] = t;
- return true;
- }
- }
- }
- return false;
- }
- void CoreObject::finishedSlot(QNetworkReply *reply)
- {
- QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
-
- if(status_code == 200){
- if(reply->error() == QNetworkReply::NoError){
- QString message = QString::fromUtf8(reply->readAll());
- QByteArray data = message.toLatin1();
- QJsonParseError json_err;
- QJsonDocument jsondoc(QJsonDocument::fromJson(data,&json_err));
- //printf("json_err.error = %d\n ",json_err.error);
- if(json_err.error==QJsonParseError::NoError){
- QJsonObject root = jsondoc.object();
- QJsonObject obj = root.value("RESULT").toObject();
- QString num = "";
- int t = 0;
- QJsonValue list_value = obj.value("LIST");
- if(list_value.isArray()){
- QJsonArray list_array = list_value.toArray();
- for(int i=0;i<list_array.size();i++){
- QJsonObject obj1 = list_array.at(i).toObject();
- QString devid = obj1.value("DEVICE").toString();
- int linevalue = obj1.value("ALIVEVALUE").toInt();
- printf("[%d] devid: %s, linevalue: %d\n",i,devid.toUtf8().data(),linevalue);
- QString companyCode="",deviceType="",deviceName="",value="";
- for(int i=0;i<DEVICES_COUNT;i++){
- QString devicecode = QString(ytShm->eHomeDevice[i].deviceID);
- if(QString::compare(devid,devicecode)==0){
- companyCode = QString(ytShm->eHomeDevice[i].rtsppath);
- //deviceType.append(QString("%1").arg((ytShm->eHomeDevice[i].io[8]&0xff),2,16,QChar('0')));
- //deviceName = QString(ytMqShm->eHomeDeviceMq[i].deviceName);
- //value = QString(ytShm->eHomeDeviceFtp[i].filePath);
- if(linevalue == 3){
- if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- }
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":0,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(devid).arg(QDateTime::currentDateTime().toTime_t()));
- QString topic1 = QString("/usky/ytCamCore/%1/%2/status").arg(companyCode).arg(devid);
- m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
- statusStr.clear();
- if(statusIdx>9999)
- statusIdx = 1;
- }
- }else{
- if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED)||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- }
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- statusStr.append(QString("{\"devId\":\"%1\",\"devicestatus\":75,\"type\":\"STATUS\",\"timestamp\":\"%2\"}").arg(devid).arg(QDateTime::currentDateTime().toTime_t()));
- QString topic1 = QString("/usky/ytCamCore/%1/%2/status").arg(companyCode).arg(devid);
- m_client->publish(QMQTT::Message(statusIdx++,topic1,statusStr.toUtf8()));
- statusStr.clear();
- if(statusIdx>9999)
- statusIdx = 1;
- }
- }
- break;
- }
- }
- }
- }
- }
- }else{
-
- }
- }else{
-
- }
- reply->abort();
- reply->close();
- reply->deleteLater();
- }
- void CALLBACK fnPREVIEW_DATA_CB(LONG lPreviewHandle, NET_EHOME_PREVIEW_CB_MSG *pPreviewCBMsg, void *pUserData)
- {
- ytShm->workingTime[0] = QDateTime::currentDateTime().toTime_t();
- if (NULL == pPreviewCBMsg)
- {
- return ;
- }
- EHomeDevice *dev= (EHomeDevice *)pUserData;
- dev->Connected = 0x01;
- dev->previewId = lPreviewHandle;
- InputStreamData(QString(dev->deviceID).replace(" ","_"), pPreviewCBMsg->byDataType, (char*)pPreviewCBMsg->pRecvdata, pPreviewCBMsg->dwDataLen);
- }
- void ProcessHttpAlarmInfo(void *pXml, unsigned long dwLen, void *pUrl, unsigned long dwUrllen,void *pUserData){
- if((pXml==NULL)&&(pUrl==NULL))
- return;
- UN_REFERENCED_PARAMETER(dwLen);
- UN_REFERENCED_PARAMETER(pUrl);
- UN_REFERENCED_PARAMETER(dwUrllen);
- char deviceID[32] = {0};
- char eventTime[20] = {0};
- char eventType[128] = {0};
- char eventState[20] = {0};
- char pic[2][256]={0};
- CoreObject *obj = (CoreObject *)pUserData;
- LPNET_EHOME_ALARM_ISAPI_INFO pISAPIAlarm = (NET_EHOME_ALARM_ISAPI_INFO *)(pXml);
- NET_EHOME_ALARM_ISAPI_INFO struISAPIAlarm = {0};
- memcpy(&struISAPIAlarm,pISAPIAlarm, sizeof(NET_EHOME_ALARM_ISAPI_INFO));
- obj->appendLog(QString("{ligangceshi5:%1}")
- .arg(struISAPIAlarm.pAlarmData));
- if(struISAPIAlarm.pAlarmData)
- {
- if(struISAPIAlarm.byDataType==2){
- QByteArray data = QByteArray((const char *)(struISAPIAlarm.pAlarmData));
- QXmlStreamReader reader;
- int cur = data.indexOf("--boundary");
- reader.addData(data.mid(0,cur));
- while(!reader.atEnd()){
- if(reader.isStartElement()){
- if(reader.name()=="eventType"){
- sprintf(eventType,"%s",reader.readElementText().toUtf8().data());
- }else if(reader.name()=="deviceID"){
- sprintf(deviceID,"%s",reader.readElementText().toUtf8().data());
- }else if(reader.name()=="dateTime"){
- sprintf(eventTime,"%s",reader.readElementText().replace("T"," ").mid(0,19).toUtf8().data());
- }else if(reader.name()=="eventState"){
- sprintf(eventState,"%s",reader.readElementText().toUtf8().data());
- }
- }
- reader.readNext();
- }
- obj->appendLog(QString("{ligangceshi3:%1}")
- .arg(deviceID));
- }else if(struISAPIAlarm.byDataType==1){
- QByteArray data = QByteArray((const char *)(struISAPIAlarm.pAlarmData));
- int cur = data.indexOf("--boundary");
- if(cur>0){
- QXmlStreamReader reader;
- reader.addData(data.mid(0,cur));
- while(!reader.atEnd()){
- if(reader.isStartElement()){
- if(reader.name()=="eventType"){
- sprintf(eventType,"%s",reader.readElementText().toUtf8().data());
- }else if(reader.name()=="deviceID"){
- sprintf(deviceID,"%s",reader.readElementText().toUtf8().data());
- }else if(reader.name()=="dateTime"){
- sprintf(eventTime,"%s",reader.readElementText().replace("T"," ").mid(0,19).toUtf8().data());
- }else if(reader.name()=="eventState"){
- sprintf(eventState,"%s",reader.readElementText().toUtf8().data());
- }
- }
- reader.readNext();
- }
- obj->appendLog(QString("{ligangceshi4:%1}")
- .arg(deviceID));
- }
- }
- if(obj->checkAlarmDevTime(deviceID)){
- if(struISAPIAlarm.byPicturesNumber>0){
- time_t t = QDateTime::currentDateTime().toTime_t();
- for(int i=0;i<struISAPIAlarm.byPicturesNumber;i++){
- char fname[128];
- sprintf(fname,"/usr/local/nginx/html/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
- if(i<2)
- sprintf(pic[i],"http://47.103.74.123/VideoAlarmPics/pic_%d_%s_%d.jpg",t,deviceID,i);
- FILE *f = fopen(fname,"w");
- fwrite(((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].pPicData,1,((NET_EHOME_ALARM_ISAPI_PICDATA *)struISAPIAlarm.pPicPackData)[i].dwPicLen,f);
- fclose(f);
- }
- }
- obj->reportList.append(Alarm_Report(deviceID,eventTime,QString::fromUtf8("200001"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','火点/高温检测告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(deviceID).arg(eventTime).arg(1)
- .arg(2).arg(eventState).arg(pic[0]).arg(pic[1])));
- for(int k=0;k<DEVICES_COUNT;k++){
- QString devid = QString(ytShm->eHomeDevice[k].deviceID);
- if(QString::compare(deviceID,devid)==0){
- sprintf(ytShm->eHomeDeviceFtp[k].filePath,"%s",pic[0]);
- break;
- }
- }
- }
- }
- }
- BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, void *pUserData)
- {
- int i,idx;
- QDateTime dt = QDateTime::currentDateTime();
- CoreObject *obj = (CoreObject *)pUserData;
- DWORD dwType = pAlarmMsg->dwAlarmType; //不同的报警类型(dwAlarmType),pAlarmInfo对应不同的报警信息类型
- ytShm->workingTime[0] = dt.toTime_t();
- if(pAlarmMsg->pHttpUrl!=NULL)
- dwType = EHOME_ISAPI_ALARM;
- switch(dwType)
- {
- case EHOME_ALARM_UNKNOWN://未知报警信息
- NET_EHOME_ALARM_INFO struAlarmInfo;
- obj->appendLog(QString("{ligangceshi1:%1,%2,%3}")
- .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.szDeviceID));
- break;
- case EHOME_ALARM://基本报警信息:移动侦测、视频遮盖、视频丢失、PIR报警、人脸侦测、区域入侵等
- {
- NET_EHOME_ALARM_INFO struAlarmInfo;
- memcpy(&struAlarmInfo, pAlarmMsg->pAlarmInfo, sizeof(NET_EHOME_ALARM_INFO));
- if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_LEFT)||(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE))
- {
- QString devId = QString(struAlarmInfo.szDeviceID);
- if(obj->checkAlarmDevTime(devId)){
- obj->appendLog(QString("[ %1 alm(%2) ] Basic Alarm: Device ID[%3], szAlarmTime[%4], Alarm Type[%5], Action[%6], VideoChannel[%7]!")
- .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(obj->alarmList.length())
- .arg(struAlarmInfo.szDeviceID).arg(struAlarmInfo.szAlarmTime).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.dwAlarmAction).arg(struAlarmInfo.dwVideoChannel));
- for(idx=0;idx<DEVICES_COUNT;idx++){
- if((strcmp(ytShm->eHomeDevice[idx].deviceID,(char*)(struAlarmInfo.szDeviceID))==0)
- &&((ytShm->eHomeDevice[idx].io[8]==0x02)||(ytShm->eHomeDevice[idx].io[8]==0x04)||(ytShm->eHomeDevice[idx].io[8]==0x08)||(ytShm->eHomeDevice[idx].io[8]==0x84))){
- for(i=0;i>obj->alarmList.length();i++){
- if(obj->alarmList.at(i).Device_Code.compare(devId)==0){
- if((struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)&&(struAlarmInfo.dwAlarmAction!=0))
- obj->alarmList.removeAt(i);
- else if(struAlarmInfo.dwAlarmType==ALARM_TYPE_TAKE)
- obj->alarmList.removeAt(i);
- break;
- }
- }
- QString time1 = QString(struAlarmInfo.szAlarmTime);
- QString time2 = time1.mid(0,10)+" "+time1.mid(11,8);
- if(struAlarmInfo.dwAlarmType==ALARM_TYPE_INTRUSION)
- obj->alarmList.append(AlarmEvent(devId,time2,(struAlarmInfo.dwAlarmAction==0?1:0),dt.toTime_t()));
- else
- obj->alarmList.append(AlarmEvent(devId,time2,1,dt.toTime_t()));
- ytShm->eHomeDevice[idx].io[6]=0x01;
- }
- }
- }
- }else{
- obj->appendLog(QString("{ligangceshi2:%1,%2,%3}")
- .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo.dwAlarmType).arg(struAlarmInfo.szDeviceID));
- }
- }
- break;
- case EHOME_ISAPI_ALARM:
- ProcessHttpAlarmInfo(pAlarmMsg->pAlarmInfo,pAlarmMsg->dwAlarmInfoLen,pAlarmMsg->pHttpUrl,pAlarmMsg->dwHttpUrlLen,pUserData);
- break;
- default:
- NET_EHOME_ALARM_INFO struAlarmInfo1;
- obj->appendLog(QString("{ligangceshi:%1,%2,%3}")
- .arg(dt.toString("yyyy-MM-dd HH:mm:ss")).arg(struAlarmInfo1.dwAlarmType).arg(struAlarmInfo.szDeviceID));
- break;
- }
- return TRUE;
- }
- BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iDataLen)
- {
- int i;
- uint t = QDateTime::currentDateTime().toTime_t();
- ytShm->workingTime[0] = t;
- printf("InputStreamData test \n");
- if(iDataLen>0){
- nopic_count = 0;
- for(i=0;i<DEVICES_COUNT;i++){
- if(QString(ytShm->eHomeDevice[i].deviceID).compare(deviceid)==0){
- if(ytShm->eHomeDevice[i].io[0]==0x01){
- ytShm->eHomeDevice[i].time[0] = t;
- if(ytShm->eHomeDevice[i].savetmp==0x00){
- if(ytShm->eHomeDevice[i].tmpfile!=NULL){
- fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].tmpfile = NULL;
- }
- QString tmpfile = QString("/tmp/%1.mp4").arg(ytShm->eHomeDevice[i].deviceID).replace(" ","_");
- sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),QDateTime::currentDateTime());
- ytShm->eHomeDevice[i].savetmp = 0x01;
- ytShm->eHomeDevice[i].tmpfile = fopen(tmpfile.toUtf8().data(),"wb");
- fwrite(pBuffer,iDataLen,1,ytShm->eHomeDevice[i].tmpfile);
- }else{
- if(ytShm->eHomeDevice[i].tmpfile!=NULL){
- fwrite(pBuffer,iDataLen,1,ytShm->eHomeDevice[i].tmpfile);
- }else{
- QString tmpfile = QString("/tmp/%1.mp4").arg(ytShm->eHomeDevice[i].deviceID).replace(" ","_");
- sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),QDateTime::currentDateTime());
- // ytShm->eHomeDevice[i].savetmp = 0x01;
- ytShm->eHomeDevice[i].tmpfile = fopen(tmpfile.toUtf8().data(),"wb");
- fwrite(pBuffer,iDataLen,1,ytShm->eHomeDevice[i].tmpfile);
- }
- }
- }else{
- NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId);
- }
- return true;
- }
- }
- }
- return false;
- }
- void setFullTime(FullTime *fTime, QDateTime qTime){
- fTime->YEAR = qTime.date().year()&0xffff;
- fTime->MONTH = qTime.date().month()&0xff;
- fTime->DAY = qTime.date().day()&0xff;
- fTime->HOUR = qTime.time().hour()&0xff;
- fTime->MINUTE = qTime.time().minute()&0xff;
- fTime->SECOND = qTime.time().second()&0xff;
- fTime->TIMESTAMP = qTime.toTime_t();
- }
- QDateTime getFullTime(FullTime fTime){
- if((fTime.YEAR==0)||(fTime.MONTH==0)||(fTime.DAY==0))
- return QDateTime::fromTime_t(fTime.TIMESTAMP);
- else
- return QDateTime(QDate((int)fTime.YEAR,(int)fTime.MONTH,(int)fTime.DAY),QTime((int)fTime.HOUR,(int)fTime.MINUTE,(int)fTime.SECOND));
- }
- void CoreObject::appendLog(QString log)
- {
- logThread->appendData(log);
- }
- void CoreObject::start()
- {
- //预览监听参数
- timer->start(3000);
- NET_EHOME_LOCAL_GENERAL_CFG struGeneralCfg = {0};
- struGeneralCfg.byAlarmPictureSeparate = 1;
- if(!NET_EALARM_SetSDKLocalCfg(LOCAL_CFG_TYPE_GENERAL,&struGeneralCfg)){
- printf("NET_EALARM_SetSDKLocalCfg falied\n");
- NET_ECMS_Fini();
- return;
- }
- printf("NET_EALARM_SetSDKLocalCfg pass!\n");
- //报警监听参数
- NET_EHOME_ALARM_LISTEN_PARAM struTcpAlarmListenParam = {0};
- memcpy(struTcpAlarmListenParam.struAddress.szIP, iServerIP, sizeof(iServerIP));
- struTcpAlarmListenParam.byProtocolType = 0;
- struTcpAlarmListenParam.struAddress.wPort = 7668;
- struTcpAlarmListenParam.fnMsgCb = AlarmMSGCallBack;
- struTcpAlarmListenParam.pUserData = this;
- struTcpAlarmListenParam.byUseCmsPort = 0;
- struTcpAlarmListenParam.byUseThreadPool = 0;
- if((alarmListenHandle=NET_EALARM_StartListen(&struTcpAlarmListenParam))<-1){
- printf("NET_EALARM_StartListen TCP failed, error code: %d\n", NET_EALARM_GetLastError());
- NET_ECMS_Fini();
- NET_ESTREAM_Fini();
- NET_EALARM_Fini();
- exit(1);
- }
- printf("NET_EALARM_StartListen TCP!\n");
- //报警监听参数
- NET_EHOME_ALARM_LISTEN_PARAM struListen = {0};
- memcpy(struListen.struAddress.szIP, iServerIP, sizeof(iServerIP));
- struListen.struAddress.wPort = 7669; //报警服务器监听端口
- struListen.fnMsgCb = AlarmMSGCallBack; //报警回调函数
- struListen.pUserData = this;
- struListen.byUseCmsPort = 0;
- struListen.byUseThreadPool = 0;
- struListen.byProtocolType = 1; //0- TCP方式(保留,暂不支持),1- UDP方式
- //启动报警监听
- LONG lHandle = NET_EALARM_StartListen(&struListen);
- if(lHandle< -1)
- {
- printf("NET_EALARM_StartListen failed, error code: %d\n", NET_EALARM_GetLastError());
- NET_ECMS_Fini();
- NET_ESTREAM_Fini();
- NET_EALARM_Fini();
- exit(1);
- }
- printf("NET_EALARM_StartListen!\n");
- NET_ECMS_SetLogToFile(1,QString("/var/log/usky/").toUtf8().data(),true);
- for(int i=0;i<DEVICES_COUNT;i++){
- printf("NET_ESTREAM_StartListenPreview\n");
- ytShm->eHomeDevice[i].previewport = 58000+i;
- ytShm->eHomeDevice[i].listen_alarm_handle = lHandle;
- NET_EHOME_LISTEN_PREVIEW_CFG struListen = {0};
- memcpy(struListen.struIPAdress.szIP,iServerIP, sizeof(iServerIP));
- struListen.struIPAdress.wPort = ytShm->eHomeDevice[i].previewport; //流媒体服务器监听端口
- struListen.fnNewLinkCB = fnPREVIEW_NEWLINK_CB; //预览连接请求回调函数
- struListen.pUser =&(ytShm->eHomeDevice[i]);
- struListen.byLinkMode = 0; //0- TCP方式,1- UDP方式
- lHandle = NET_ESTREAM_StartListenPreview(&struListen);
- if(lHandle<-1){
- }else{
- ytShm->eHomeDevice[i].listen_preview_handle = lHandle;
- }
- }
- NET_EHOME_CMS_LISTEN_PARAM struCMSListenPara = {0};
- memcpy(struCMSListenPara.struAddress.szIP, "0.0.0.0", sizeof("0.0.0.0"));
- struCMSListenPara.struAddress.wPort = 7660;
- struCMSListenPara.fnCB = RegisterCallBack;
- struCMSListenPara.pUserData = this;
- printf("NET_ECMS_StartListen begin\n");
- LONG lListen = NET_ECMS_StartListen(&struCMSListenPara);
- if(lListen < -1)
- {
- printf("NET_ECMS_StartListen fail\n");
- NET_ECMS_Fini();
- NET_ESTREAM_Fini();
- NET_EALARM_Fini();
- exit(1);
- }
- printf("NET_ECMS_StartListen end\n");
- // qDebug()<<"start core";
- }
- void CoreObject::process_stop()
- {
- printf("process_stop \n");
- QProcess *p = (QProcess *)sender();
- for(int i=0;i<DEVICES_COUNT;i++){
- if(p==processList.at(i)){
- if(ytShm->eHomeDevice[i].Connected==0x01){
- ytShm->eHomeDevice[i].io[0]=0x00;
- }
- break;
- }
- }
- }
- void CoreObject::AlarmReport(QString addr, QString type, QString time, QString companyCode, quint64 insertid)
- {
- // if(type.toInt()==200104)
- // type="占道侦测报警";
- // else if(type.toInt()==200001)
- // type="火点侦测报警";
- // QString rep2 = QString("{\"SubType\":16,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":0,\"alarm_time\":\"%5\"}")
- // .arg(addr).arg(insertid).arg(companyCode).arg(type).arg(time);
- // printf("%s\n",rep2.toUtf8().data());
- // repcur++;
- // repcur &= 0x07;
- // wssThread[repcur]->appendData(rep2);
- }
- QString CoreObject::getCompanyCode(QString addr){
- for(int i=0;i<DEVICES_COUNT;i++){
- QString devid = QString(ytShm->eHomeDevice[i].deviceID);
- if(QString::compare(addr,devid)==0){
- return QString(ytShm->eHomeDevice[i].rtsppath);
- }
- }
- return "";
- }
- void CoreObject::clear_devalarm(AlarmEvent devAlarm,bool isFtp)
- {
- for(int i=0;i<DEVICES_COUNT;i++){
- if(devAlarm.Device_Code.compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
- if(processList.at(i)->pid()>0)
- processList.at(i)->close();
- ytShm->eHomeDevice[i].io[6]=0x00;
- ytShm->eHomeDevice[i].io[0]=0x00;
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename);
- if(ytShm->eHomeDevice[i].tmpfile!=NULL)
- fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].savetmp = 0x00;
- ytShm->eHomeDevice[i].tmpfile = NULL;
- QFile(tmpfile).remove();
- ytShm->eHomeDevice[i].transed = 0x00;
- sprintf(ytShm->eHomeDevice[i].filename,"");
- if(isFtp){
- if(ytShm->eHomeDevice[i].io[8]==0x08){
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
- .arg(104).arg(devAlarm.Event_Status).arg(ytShm->eHomeDeviceFtp[i].filePath).arg("")));
- }else if(ytShm->eHomeDevice[i].io[8]==0x84){
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
- .arg(106).arg(devAlarm.Event_Status).arg(ytShm->eHomeDeviceFtp[i].filePath).arg("")));
- }
- }else{
- if(ytShm->eHomeDevice[i].io[8]==0x02||ytShm->eHomeDevice[i].io[8]==0x08){
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200104"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
- .arg(104).arg(devAlarm.Event_Status).arg("").arg("")));
- }else if(ytShm->eHomeDevice[i].io[8]==0x04||ytShm->eHomeDevice[i].io[8]==0x84){
- reportList.append(Alarm_Report(devAlarm.Device_Code,devAlarm.Event_Time,QString::fromUtf8("200105"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(devAlarm.Device_Code).arg(devAlarm.Event_Time).arg(1)
- .arg(106).arg(devAlarm.Event_Status).arg("").arg("")));
- }
- }
- break;
- }
- }
- for(int i=0;i<alarmList.length();i++){
- if(alarmList.at(i).Device_Code.compare(devAlarm.Device_Code)==0){
- alarmList.removeAt(i);
- // break;
- }
- }
- }
- void CoreObject::time_out()
- {
- printf("time_out start\n");
- uint ChkTime = 0;
- QDateTime t = QDateTime::currentDateTime();
- ytShm->workingTime[0] = t.toTime_t();
- if(!had_reg){
- if((ytShm->workingTime[0]-start_time)>30)
- exit(1);
- }
- if(isWorking)
- return;
- isWorking = true;
- if(synchour!=t.time().hour())
- chkPhoneList();
- if(hour != t.time().hour()){
- hour = t.time().hour();
- QByteArray post_data;
- post_data.append(QString("queryJson={\"CMD\":%1}").arg(1));
- QNetworkRequest *req = new QNetworkRequest();
- req->setUrl(QUrl("https://fire.usky.cn:8443/YtIoT/cgi-bin/demo2.cgi"));
- req->setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
- req->setHeader(QNetworkRequest::ContentLengthHeader,post_data.length());
- QNetworkReply* reply = netAccessManager->post(*req,post_data);
- }
- t = QDateTime::currentDateTime();
- ytShm->workingTime[0] = t.toTime_t();
- for(int i=0;i<DEVICES_COUNT;i++){
- if(ytShm->eHomeDevice[i].Inited==0x01){
- t = QDateTime::currentDateTime();
- ytShm->workingTime[0] = t.toTime_t();
- if(ytShm->eHomeDevice[i].Connected==0x00){
- if(ytShm->eHomeDevice[i].io[8]==0x01)
- ytShm->eHomeDevice[i].io[0] = 0x01;
- else if(ytShm->eHomeDevice[i].io[7]==0x01){
- if((ytShm->eHomeDevice[i].time[1]>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].time[1])>300)){
- printf("%s time over close\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[0] = 0x00;
- ytShm->eHomeDevice[i].io[7] = 0x00;
- ytShm->eHomeDevice[i].time[1]=0;
- }else if(ytShm->eHomeDevice[i].io[0]==0x00){
- printf("%s io7 on\n",ytShm->eHomeDevice[i].deviceID);
- // ytShm->eHomeDevice[i].io[7] = 0x00;
- ytShm->eHomeDevice[i].io[0] = 0x01;
- }else if(ytShm->eHomeDevice[i].io[0]==0x01){
- if(ytShm->eHomeDevice[i].io[15]>2){
- printf("%s NET_ECMS_StopGetRealStream\n",ytShm->eHomeDevice[i].deviceID);
- if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
- // ytShm->eHomeDevice[i].io[0] = 0x00;
- // ytShm->eHomeDevice[i].io[7] = 0x00;
- }
- ytShm->eHomeDevice[i].time[1]=0;
- ytShm->eHomeDevice[i].SessionId=-1;
- }
- }
- }else if(ytShm->eHomeDevice[i].io[6]==0x01){
- printf("%s io6 on\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[0] = 0x01;
- if(ytShm->eHomeDevice[i].io[8]==0x08||ytShm->eHomeDevice[i].io[8]==0x84){
- ytShm->eHomeDevice[i].io[0] = 0x00;
- QDateTime zeroTime = QDateTime::fromTime_t(0);
- uint t1 = QDateTime::currentDateTime().toTime_t();
- QDateTime start = QDateTime::currentDateTime();
- QDateTime now;
- do{
- now=QDateTime::currentDateTime();
- }while(start.secsTo(now)<=5);
- QString filePath = QString("/var/ftp/pub/%1").arg(QString(ytShm->eHomeDevice[i].deviceID));
- QDir qd(filePath);
- QFileInfo subFileList = qd.entryInfoList(QDir::Files | QDir::CaseSensitive).last();
- QString filePath1 = QString("%1/%2").arg(filePath).arg(subFileList.fileName());
- QString filePath2 = QString("/usr/local/nginx/html/VideoAlarmPics/%1_%2.jpg").arg(QString(ytShm->eHomeDevice[i].deviceID)).arg(t1);
- QFile file2(filePath1);
- uint fileTime = subFileList.created().toTime_t();
- file2.copy(filePath2);
- QFile::remove(filePath1);
- QString picturePath = QString("http://47.103.74.123/VideoAlarmPics/%1_%2.jpg").arg(QString(ytShm->eHomeDevice[i].deviceID)).arg(t1);
- uint timeDiff = t1-fileTime;
- appendLog(QString("{filePath1:%1,%2,%3,%4}").arg(filePath1).arg(timeDiff).arg(t1).arg(fileTime));
- if(timeDiff>120){
- for(int j=0;j<alarmList.length();j++){
- if(alarmList.at(j).Device_Code.compare(ytShm->eHomeDevice[i].deviceID)==0){
- AlarmEvent ftpae = alarmList.at(j);
- clear_devalarm(ftpae,false);
- break;
- }
- }
- }else{
- ytShm->eHomeDevice[i].io[0] = 0x00;
- if(QString(ytShm->eHomeDeviceFtp[i].deviceID).compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
- sprintf(ytShm->eHomeDeviceFtp[i].fileName,"%s",subFileList.fileName().toUtf8().data());
- sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",picturePath.toUtf8().data());
- setFullTime(&(ytShm->eHomeDeviceFtp[i].alarmTime),zeroTime);
- }else{
- sprintf(ytShm->eHomeDeviceFtp[i].deviceID,"%s",QString(ytShm->eHomeDevice[i].deviceID).toUtf8().data());
- sprintf(ytShm->eHomeDeviceFtp[i].fileName,"%s",subFileList.fileName().toUtf8().data());
- sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",picturePath.toUtf8().data());
- setFullTime(&(ytShm->eHomeDeviceFtp[i].alarmTime),zeroTime);
- }
- for(int j=0;j<alarmList.length();j++){
- if(alarmList.at(j).Device_Code.compare(ytShm->eHomeDevice[i].deviceID)==0){
- AlarmEvent ftpae = alarmList.at(j);
- clear_devalarm(ftpae,true);
- break;
- }
- }
- }
- }
- }
- if(ytShm->eHomeDevice[i].io[0]==0x01){
- if(ytShm->eHomeDevice[i].SessionId>-1){
- NET_EHOME_PUSHSTREAM_IN struPushStreamIn = {0};
- struPushStreamIn.dwSize = sizeof(struPushStreamIn);
- struPushStreamIn.lSessionID = ytShm->eHomeDevice[i].SessionId; //SessionID,预览请求会话ID
- //预览请求推流输出参数
- NET_EHOME_PUSHSTREAM_OUT struPushStreamOut = {0};
- if(!NET_ECMS_StartPushRealStream(ytShm->eHomeDevice[i].LoginId, &struPushStreamIn, &struPushStreamOut)){
- printf("%s NET_ECMS_StartGetRealStreamV11 failed.\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[15]++;
- }else{
- printf("%s start push real stream\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[15]=0x00;
- }
- }
- else
- {
- ytShm->eHomeDevice[i].previewport = 58000+i;
- printf("actice %s at %d(loginId:%d)\n",ytShm->eHomeDevice[i].deviceID,ytShm->eHomeDevice[i].previewport,ytShm->eHomeDevice[i].LoginId);
- NET_EHOME_PREVIEWINFO_IN_V11 struPreviewIn = {0};
- struPreviewIn.iChannel = 1; //通道号
- struPreviewIn.dwLinkMode = 0; //0- TCP方式,1- UDP方式
- struPreviewIn.dwStreamType = 1; //码流类型:0- 主码流,1- 子码流, 2- 第三码流
- memcpy(struPreviewIn.struStreamSever.szIP, oServerIP, sizeof(oServerIP));//流媒体服务器IP地址
- struPreviewIn.struStreamSever.wPort = ytShm->eHomeDevice[i].previewport;
- //预览请求输出参数
- NET_EHOME_PREVIEWINFO_OUT struPreviewOut = {0};
- if(!NET_ECMS_StartGetRealStreamV11(ytShm->eHomeDevice[i].LoginId, &struPreviewIn, &struPreviewOut)){
- printf("%s NET_ECMS_StartGetRealStreamV11 failed.\n",ytShm->eHomeDevice[i].deviceID);
- }else{
- printf("active %s lSessionID:%d\n",ytShm->eHomeDevice[i].deviceID,struPreviewOut.lSessionID);
- ytShm->eHomeDevice[i].SessionId = struPreviewOut.lSessionID;
- NET_EHOME_PUSHSTREAM_IN struPushStreamIn = {0};
- struPushStreamIn.dwSize = sizeof(struPushStreamIn);
- struPushStreamIn.lSessionID = struPreviewOut.lSessionID; //SessionID,预览请求会话ID
- //预览请求推流输出参数
- NET_EHOME_PUSHSTREAM_OUT struPushStreamOut = {0};
- if(!NET_ECMS_StartPushRealStream(ytShm->eHomeDevice[i].LoginId, &struPushStreamIn, &struPushStreamOut)){
- printf("%s NET_ECMS_StartGetRealStreamV11 failed.\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[15]++;
- }else{
- printf("%s start push real stream\n",ytShm->eHomeDevice[i].deviceID);
- ytShm->eHomeDevice[i].io[15]=0x00;
- }
- }
- }
- }
- }else if((ytShm->eHomeDevice[i].time[1]>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].time[1])>300)){
- if((ytShm->eHomeDevice[i].io[7]==0x01)||(ytShm->eHomeDevice[i].io[8]==0x01)){
- if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
- ytShm->eHomeDevice[i].io[0] = 0x00;
- ytShm->eHomeDevice[i].io[7] = 0x00;
- ytShm->eHomeDevice[i].time[1]=0;
- ytShm->eHomeDevice[i].SessionId =-1;
- }
- }
- }else if((ytShm->eHomeDevice[i].Connected==0x01)&&(ytShm->eHomeDevice[i].io[0]==0x00)){
- if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
- ytShm->eHomeDevice[i].Connected=0x00;
- ytShm->eHomeDevice[i].SessionId=-1;
- ytShm->eHomeDevice[i].time[0]=0;
- ytShm->eHomeDevice[i].time[1]=0;
- if(processList.at(i)->pid()>0){
- processList.at(i)->close();
- }
- // qDebug()<<QString("%1 will close.(%2)").arg(ytShm->eHomeDevice[i].deviceID).arg(i).toUtf8().data();
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename).replace(" ","_");
- if(ytShm->eHomeDevice[i].tmpfile!=NULL)
- fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].savetmp = 0x00;
- ytShm->eHomeDevice[i].tmpfile = NULL;
- QFile(tmpfile).remove();
- if(ytShm->eHomeDevice[i].io[8]==0x01){
- tmpfile = QString("/tmp/%1.mp4").arg(ytShm->eHomeDevice[i].deviceID);
- sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
- ytShm->eHomeDevice[i].tmpfile = fopen(tmpfile.toUtf8().data(),"wb");
- setFullTime(&(ytShm->eHomeDevice[i].onLinetime),t);
- sprintf(ytShm->eHomeDevice[i].filename,"");
- }
- ytShm->eHomeDevice[i].transed = 0x00;
- }
- }else if((ytShm->eHomeDevice[i].savetmp==0x01)&&(ytShm->eHomeDevice[i].transed==0x00)&&(ytShm->eHomeDevice[i].onLinetime.TIMESTAMP>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].onLinetime.TIMESTAMP)>3)){
- if(ytShm->eHomeDevice[i].io[6]==0x01){
- ytShm->eHomeDevice[i].io[6]=0x00;
- ytShm->eHomeDevice[i].io[0]=0x00;
- for(int j=0;j<alarmList.length();j++){
- if(alarmList.at(j).Device_Code.compare(QString(ytShm->eHomeDevice[i].deviceID))==0){
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename).replace(" ","_");
- QString pic1name = QString("http://47.103.74.123/VideoAlarmPics/pic_%1_%2_0.jpg").arg(QDateTime::fromString(alarmList.at(j).Event_Time,"yyyy-MM-dd HH:mm:ss").toTime_t()).arg(QString(alarmList.at(j).Device_Code).replace(" ","_"));
- QString picname = QString("/usr/local/nginx/html/VideoAlarmPics/pic_%1_%2_0.jpg").arg(QDateTime::fromString(alarmList.at(j).Event_Time,"yyyy-MM-dd HH:mm:ss").toTime_t()).arg(QString(alarmList.at(j).Device_Code).replace(" ","_"));
- QString cmd1 = QString("ffmpeg -ss 00:00:00 -i \"%1\" -f image2 -y \"%2\"").arg(tmpfile).arg(picname);
- if(ytShm->eHomeDevice[i].io[8]==0x02){
- reportList.append(Alarm_Report(alarmList.at(j).Device_Code,alarmList.at(j).Event_Time,QString::fromUtf8("200104"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','消防占道告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(alarmList.at(j).Device_Code).arg(alarmList.at(j).Event_Time).arg(1)
- .arg(104).arg(alarmList.at(j).Event_Status).arg(pic1name).arg("")));
- sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",pic1name.toUtf8().data());
- }else if(ytShm->eHomeDevice[i].io[8]==0x04){
- reportList.append(Alarm_Report(alarmList.at(j).Device_Code,alarmList.at(j).Event_Time,QString::fromUtf8("200105"),
- QString::fromUtf8("insert into sp_video2017 (id,port,device_code,time,status,address,ncmd,data1,data2,data3,data4,data5,clsj,clr,clnr,clwb,cllxr,cldh,clzt,cllx,video) values (NULL,'%1','%2','%3','%4','','%5','%6','%7','%8','电动车禁入/区域入侵告警','','1970-01-01 08:00:00','','','','','',0,'','')")
- .arg(2).arg(alarmList.at(j).Device_Code).arg(alarmList.at(j).Event_Time).arg(1)
- .arg(106).arg(alarmList.at(j).Event_Status).arg(pic1name).arg("")));
- sprintf(ytShm->eHomeDeviceFtp[i].filePath,"%s",pic1name.toUtf8().data());
- }
- if(processList.at(i)->pid()>0)
- processList.at(i)->close();
- processList.at(i)->start(cmd1);
- alarmList.removeAt(j);
- break;
- }
- }
- }else{
- setFullTime(&(ytShm->eHomeDevice[i].transtime),t);
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename).replace(" ","_");
- ytShm->eHomeDevice[i].transed = 0x01;
- sprintf(ytShm->eHomeDevice[i].filename,"%s",tmpfile.toUtf8().data());
- system(QString("rm -f /usr/local/nginx/html/hls/%1*").arg(ytShm->eHomeDevice[i].deviceID).toUtf8().data());
- QString cmd1 = QString("ffmpeg -re -i \"%1\" -c:v libx264 -an -strict -2 -s 352x278 -g 15 -f flv -v quiet \"rtmp://%2/hls/%3\" -c:v libx264 -an -strict -2 -s 352x278 -g 15 -f flv -v quiet \"rtmp://%4/live/%5\" ").arg(tmpfile).arg(iServerIP).arg(ytShm->eHomeDevice[i].deviceID).arg(iServerIP).arg(ytShm->eHomeDevice[i].deviceID);
- if(processList.at(i)->pid()>0)
- processList.at(i)->close();
- processList.at(i)->start(cmd1);
- ytShm->eHomeDevice[i].time[1] = t.toTime_t();
- }
- }else if((ytShm->eHomeDevice[i].transed==0x01)&&(ytShm->eHomeDevice[i].time[1]>0)&&((t.toTime_t()-ytShm->eHomeDevice[i].time[1])>600)){
- if(NET_ECMS_StopGetRealStream(ytShm->eHomeDevice[i].LoginId,ytShm->eHomeDevice[i].SessionId)){
- ytShm->eHomeDevice[i].Connected=0x00;
- ytShm->eHomeDevice[i].SessionId=-1;
- ytShm->eHomeDevice[i].time[0]=0;
- ytShm->eHomeDevice[i].time[1]=0;
- // qDebug()<<QString("%1 will close.(%2)").arg(ytShm->eHomeDevice[i].deviceID).arg(i).toUtf8().data();
- processList.at(i)->close();
- QString tmpfile = QString(ytShm->eHomeDevice[i].filename);
- if(ytShm->eHomeDevice[i].tmpfile!=NULL)
- fclose(ytShm->eHomeDevice[i].tmpfile);
- ytShm->eHomeDevice[i].savetmp = 0x00;
- ytShm->eHomeDevice[i].tmpfile = NULL;
- QFile(tmpfile).remove();
- ytShm->eHomeDevice[i].transed = 0x00;
- }
- }
- }
- }
- if(reportList.length()>0){
- if(db.open()){
- while (reportList.length()>0) {
- t = QDateTime::currentDateTime();
- ytShm->workingTime[0] = t.toTime_t();
- QString phonelist = "";
- Alarm_Report rep = reportList.first();
- appendLog(QString("[ %1 sql(%2) ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(rep.Sql));
- printf("[ %s sql(%d) ] %s\n",t.toString("yyyy-MM-dd HH:mm:ss").toUtf8().data(),alarmList.length(),rep.Sql.toUtf8().data());
- QSqlQuery qry = db.exec(rep.Sql);
- quint64 insertId = qry.lastInsertId().toULongLong();
- QString type="",point="";
- //QString companyCode = getCompanyCode(rep.Device_Code);
- QString companyCode="",deviceType="",deviceName="",value="";
- for(int i=0;i<DEVICES_COUNT;i++){
- QString devid = QString(ytShm->eHomeDevice[i].deviceID);
- if(QString::compare(rep.Device_Code,devid)==0){
- companyCode = QString(ytShm->eHomeDevice[i].rtsppath);
- //deviceType.append(QString("%1").arg((ytShm->eHomeDevice[i].io[8]&0xff),2,16,QChar('0')));
- deviceName = QString(ytMqShm->eHomeDeviceMq[i].deviceName);
- value = QString(ytShm->eHomeDeviceFtp[i].filePath);
- break;
- }
- }
- if(rep.Event_Name.toInt()==200104){
- type=QString::fromUtf8("占道侦测报警");
- point.append("1602");
- }else if(rep.Event_Name.toInt()==200001){
- type=QString::fromUtf8("火点侦测报警");
- point.append("1601");
- }else if(rep.Event_Name.toInt()==200105){
- type=QString::fromUtf8("电动车禁入/区域入侵告警");
- point.append("1603");
- }
- printf("device code:%s\nget company code:%s\n",rep.Device_Code.toUtf8().data(),companyCode.toUtf8().data());
- if(companyCode.length()>0){
- QString alarmTopic = QString("/usky/ytCamCore/%1/%2/alarm").arg(companyCode).arg(rep.Device_Code);
- QString alarmStr = "";
- alarmStr.append(QString("{\"devId\":\"%1\",\"connType\":\"G\",\"deviceName\":\"%2\",\"alarams\":[{\"dp\":[{\"property\":\"%3\",\"serial\":\"%4\",\"value\":\"%5\",\"status\":\"0\"}],\"deviceName\":\"%6\",\"timeStamp\":\"%7\",\"deviceModel\":\"\",\"deviceType\":\"16\",\"devId\":\"%8\"}],\"type\":\"ALARM\",\"timeStamp\":\"%9\"}").arg(rep.Device_Code).arg(deviceName).arg(type).arg(point).arg(value).arg(deviceName).arg((QDateTime::fromString(rep.Event_Time,"yyyy-MM-dd hh:mm:ss")).toTime_t()).arg(rep.Device_Code).arg((QDateTime::fromString(rep.Event_Time,"yyyy-MM-dd hh:mm:ss")).toTime_t()));
- if((m_client->connectionState()==QMQTT::STATE_DISCONNECTED) ||(m_client->connectionState()==QMQTT::STATE_INIT)){
- m_client->connectToHost();
- }
- if(m_client->connectionState()==QMQTT::STATE_CONNECTED){
- m_client->publish(QMQTT::Message(alarmmqttIdx++,alarmTopic,alarmStr.toUtf8()));
- if(alarmmqttIdx>9999)
- alarmmqttIdx=1;
- }
- QString rep1 = QString("{\"SubType\":16,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":false}").arg(rep.Device_Code).arg(insertId);
- spThread[repcur]->appendData(rep1);
- QString rep2 = QString("{\"SubType\":16,\"DeviceId\":\"%1\",\"InsertId\":%2,\"Confirmed\":0,\"CompanyCode\":\"%3\",\"evt_name\":\"%4\",\"evt\":\"%5\",\"alarm_time\":\"%6\"}")
- .arg(rep.Device_Code).arg(insertId).arg(companyCode).arg(type).arg(value).arg(rep.Event_Time);
- printf("1234 --- %s\n",rep2.toUtf8().data());
- wssThread[repcur]->appendData(rep2);
- for(int i=0;i<companyphoneList.length();i++){
- if(QString::compare(companyphoneList.at(i).CompanyCode,companyCode)==0){
- if(phonelist.length()==0)
- phonelist = companyphoneList.at(i).Phone;
- else
- phonelist.append(","+companyphoneList.at(i).Phone);
- }
- }
- repcur++;
- repcur &= 0x07;
- if(phonelist.length()>0){
- QString data = QString("evt_name=%1&device_code=%2&time=%3&insert_id=%4&phone=%5&bz=%6").arg(type).arg(rep.Device_Code).arg(rep.Event_Time).arg(insertId).arg(phonelist).arg(type)
- .replace(",","%2C").replace(":","%3A").replace(" ","+");
- wxThreads[1][wxcur]->appendData(data);
- wxThreads[0][wxcur]->appendData(data);
- wxcur++;
- wxcur &= 0x07;
- }
- }
- reportList.removeFirst();
- }
- db.close();
- }
- }
- if(sqlList.length()>0){
- if(db.open()){
- while(sqlList.length()>0){
- db.exec(sqlList.first());
- appendLog(QString("[ %1 sql ] %2").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(sqlList.first()));
- sqlList.removeFirst();
- }
- db.close();
- }
- }
- int a_count=0;
- t = QDateTime::currentDateTime();
- if((t.toTime_t()-ChkTime)>60)
- {
- ChkTime = t.toTime_t();
- QListIterator<AlarmEvent> AlaList(alarmList);
- while(AlaList.hasNext()){
- AlarmEvent ae = AlaList.next();
- if((t.toTime_t()-ae.t_stamp)>120){
- nopic_count++;
- a_count++;
- appendLog(QString("[ %1 out(%2:%3) ] %4 %5").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(a_count).arg(ae.Device_Code).arg(ae.Event_Time));
- clear_devalarm(ae,false);
- if(nopic_count>5)
- exit(1);
- }
- }
- }
- isWorking = false;
- }
|