Browse Source

update by yaoqiang

yaoqiang 4 years ago
parent
commit
f7dfd17079
5 changed files with 99 additions and 36 deletions
  1. 80 18
      CamCore/coreobject.cpp
  2. 1 0
      CamCore/coreobject.h
  3. 1 1
      CamCore/logthread.cpp
  4. 12 12
      CamDog/dogobject.cpp
  5. 5 5
      YtCam.pro.user

+ 80 - 18
CamCore/coreobject.cpp

@@ -1,10 +1,10 @@
 #include "coreobject.h"
 
-//#define iServerIP "172.19.198.166"
-//#define oServerIP "47.103.74.123"
+#define iServerIP "172.19.198.166"
+#define oServerIP "47.103.74.123"
 
-#define iServerIP "172.19.198.168"
-#define oServerIP "101.133.214.75"
+//#define iServerIP "172.19.198.168"
+//#define oServerIP "101.133.214.75"
 
 #define UN_REFERENCED_PARAMETER(x) {(x) = (x);}
 
@@ -162,6 +162,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
     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;
@@ -172,7 +173,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                 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));
+//                    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;
@@ -210,7 +211,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
                 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));
+//                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;
@@ -268,6 +269,7 @@ BOOL RegisterCallBack(LONG lUserID, DWORD dwDataType, void *pOutBuffer, DWORD dw
 
 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){
@@ -310,6 +312,7 @@ bool CoreObject::checkAlarmDevTime(QString deviceid){
 
 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 ;
@@ -387,7 +390,7 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
     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)
@@ -402,8 +405,8 @@ BOOL CALLBACK AlarmMSGCallBack(LONG lHandle, NET_EHOME_ALARM_MSG *pAlarmMsg, voi
         {
             QString devId = QString(struAlarmInfo.szDeviceID);
             if(obj->checkAlarmDevTime(devId)){
-                obj->appendLog(QString("[ %1 alm] Basic Alarm: Device ID[%2], szAlarmTime[%3], Alarm Type[%4], Action[%5], VideoChannel[%6]!")
-                               .arg(dt.toString("yyyy-MM-dd HH:mm:ss"))
+                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)
@@ -444,6 +447,7 @@ BOOL InputStreamData(QString deviceid, BYTE byDataType, char* pBuffer, int iData
 {
     int i;
     uint t = QDateTime::currentDateTime().toTime_t();
+    ytShm->workingTime[0] = t;
     for(i=0;i<DEVICES_COUNT;i++){
         if(QString(ytShm->eHomeDevice[i].deviceID).compare(deviceid)==0){
             if(ytShm->eHomeDevice[i].io[0]==0x01){
@@ -622,8 +626,46 @@ QString CoreObject::getCompanyCode(QString addr){
     return "";
 }
 
+void CoreObject::clear_devalarm(AlarmEvent devAlarm)
+{
+    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(ytShm->eHomeDevice[i].io[8]==0x02){
+                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){
+                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("")));
+            }
+        }
+    }
+    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()
 {
+    uint ChkTime = 0;
     QDateTime t = QDateTime::currentDateTime();
     ytShm->workingTime[0] = t.toTime_t();
     if(!had_reg){
@@ -640,7 +682,7 @@ void CoreObject::time_out()
     for(int i=0;i<DEVICES_COUNT;i++){
         if(ytShm->eHomeDevice[i].Inited==0x01){
             t = QDateTime::currentDateTime();
-                ytShm->workingTime[0] = t.toTime_t();
+            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;
@@ -817,7 +859,7 @@ void CoreObject::time_out()
                     ytShm->workingTime[0] = t.toTime_t();
                 QString phonelist = "";
                 Alarm_Report rep = reportList.first();
-                appendLog(QString("[ %1 sql ] %2").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(rep.Sql));
+                appendLog(QString("[ %1 sql(%2) ] %3").arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(alarmList.length()).arg(rep.Sql));
                 QSqlQuery qry = db.exec(rep.Sql);
                 quint64 insertId = qry.lastInsertId().toULongLong();
                 QString type="";
@@ -872,13 +914,33 @@ void CoreObject::time_out()
     }
     int a_count=0;
     t = QDateTime::currentDateTime();
-    QListIterator<AlarmEvent> AlaList(alarmList);
-    while(AlaList.hasNext()){
-        AlarmEvent ae = AlaList.next();
-        if((t.toTime_t()-ae.t_stamp)>120){
-            a_count++;
-            if(a_count>8)
-                exit(1);
+    if((t.toTime_t()-ChkTime)>60){
+        ChkTime = t.toTime_t();
+//        foreach(auto ae,alarmList){
+//            if((t.toTime_t()-ae.t_stamp)>120){
+//                a_count++;
+//                appendLog(QString("[ %1 tmo(%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));
+//                if(a_count>8){
+//                    sleep(5);
+//                    exit(1);
+//                }
+//                clear_devalarm(ae);
+//                alarmList.removeOne(ae);
+//            }
+//        }
+        QListIterator<AlarmEvent> AlaList(alarmList);
+        while(AlaList.hasNext()){
+            AlarmEvent ae = AlaList.next();
+            if((t.toTime_t()-ae.t_stamp)>120){
+                a_count++;
+                appendLog(QString("[ %1 tmo(%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));
+                if(a_count>8){
+                    sleep(5);
+                    exit(1);
+                }
+                clear_devalarm(ae);
+//                alarmList.removeOne((const AlarmEvent)ae);
+            }
         }
     }
     isWorking = false;

+ 1 - 0
CamCore/coreobject.h

@@ -82,6 +82,7 @@ public:
     void appendLog(QString log);
     QString getCompanyCode(QString addr);
     bool checkAlarmDevTime(QString deviceid);
+    void clear_devalarm(AlarmEvent devAlarm);
 
     QStringList sqlList;
     QList<AlarmEvent> alarmList;

+ 1 - 1
CamCore/logthread.cpp

@@ -33,7 +33,7 @@ void LogThread::stop()
 void LogThread::run()
 {
 //    printf("log thread start\n");
-    QString log = QString("ytCamCore start at %1.\r\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"));
+    QString log = QString("================================================\r\n[ %1 +++ ] ytCamCore start\r\n").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss"));
     printf("%s\n",log.toUtf8().data());
     if(file->open(QIODevice::ReadWrite|QIODevice::Append|QIODevice::Text)){
         file->write(log.toUtf8());

+ 12 - 12
CamDog/dogobject.cpp

@@ -116,17 +116,17 @@ void DogObject::time_out()
                 break;
             }
         }
-        if(QString(ytShm->eHomeDevice[i].filename).length()>0){
-            QFileInfo f_info(QString(ytShm->eHomeDevice[i].filename));
-            if((f_info.exists())&&((t-f_info.lastModified().toTime_t())>60)){
-                system("killall ytCamCore");
-                system("rm -f /usr/local/nginx/html/hls/*");
-                system("rm /tmp/*.mp4");
-                system("ytCamCore &");
-                ytShm->workingTime[0]=t;
-                break;
-            }
-        }
+//        if(QString(ytShm->eHomeDevice[i].filename).length()>0){
+//            QFileInfo f_info(QString(ytShm->eHomeDevice[i].filename));
+//            if((f_info.exists())&&((t-f_info.lastModified().toTime_t())>120)){
+//                system("killall ytCamCore");
+//                system("rm -f /usr/local/nginx/html/hls/*");
+//                system("rm /tmp/*.mp4");
+//                system("ytCamCore &");
+//                ytShm->workingTime[0]=t;
+//                break;
+//            }
+//        }
         if(ytShm->eHomeDevice[i].Inited==0x01){
             if(ytShm->eHomeDevice[i].io[1]==0x01)
                 ytShm->eHomeDevice[i].io[0]=0x00;
@@ -142,7 +142,7 @@ void DogObject::time_out()
         }
     }
     t = QDateTime::currentDateTime().toTime_t();
-    if((t-ytShm->workingTime[0])>15){
+    if((t-ytShm->workingTime[0])>30){
         system("killall ytCamCore");
         system("rm -f /usr/local/nginx/html/hls/*");
         system("rm /tmp/*.mp4");

+ 5 - 5
YtCam.pro.user

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.7.2, 2021-05-27T08:28:02. -->
+<!-- Written by QtCreator 4.7.2, 2021-05-27T17:45:53. -->
 <qtcreator>
  <data>
   <variable>EnvironmentId</variable>
@@ -192,7 +192,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">CamCore/CamCore.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/CamCore</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -249,7 +249,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">CamDog/CamDog.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/CamDog</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -306,7 +306,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">cgi/cgi.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/cgi</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
@@ -363,7 +363,7 @@
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ytDHCamCore/ytDHCamCore.pro</value>
     <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
-    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default"></value>
+    <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/yt/Qt2/build-YtCam-Qt_5_9_7-Release/ytDHCamCore</value>
     <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
     <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
     <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>